DEV Community

Cover image for Tackling side projects and Sunday football with OutSystems

Tackling side projects and Sunday football with OutSystems

This post was written by Luís Marques. Luís Marques is a Mechanical Engineer turned Solution Architect at OutSystems, where he has been nurturing his inner developer since his early days as a Technical Support Engineer.

How I started “playing” with OutSystems

People hear about OutSystems for the first time under different contexts and in various circumstances. Some start working at a company that already uses the platform, or because they’re evaluating it as the next technology for their teams to adopt, or they simply read about it or some friend told them how easy and quick it is to build a meaningful application with OutSystems.

In my case, to put it simply, it was because I started working at OutSystems. I learned what the high-level platform capabilities were while studying for the interview (as one should do for any interview). Although I got pretty comfortable with the capabilities of OutSystems, it was only on my first day that I had my first contact with the platform and Service Studio.

I started exploring Service Studio and I quickly realized that I could build anything that I wanted with OutSystems. The training that OutSystems offers, to anyone who wants to start learning the platform, is incredibly rich, detailed, and easy to follow. And please note that my background is in Mechanical Engineering and my experience with software development was close to zero. After doing the training, I couldn’t wait to start developing more applications.

Then I realized that, in order to keep using the platform and keep that enthusiasm high, you need to have a use case that really excites you and makes you want to go back to Service Studio every day. Once you have that, it’s very easy to keep the excitement because the platform allows you to make so much progress in such a short amount of time without having to do all the tedious tasks that developers usually have to face.

I felt that anything was possible with OutSystems, but sometimes that actually makes it harder to find that exciting use case. So, I decided to start putting a lot of my ideas — simple, complex, sometimes a bit stupid — into OutSystems applications. I’ve created a flight tracker application, an app to keep track of my expenses, multiple apps to increase my productivity at work, and more recently, the “Sunday Football” app. This last one is the one I want to talk to you about, to show that anyone can really put any idea into practice and start building something that is exciting while learning all the ins and outs of the OutSystems platform.

The Sunday Football application

Why did I create the “Sunday Football” app?

After reading what I just wrote above, one could think that I’m always behind a screen building my next OutSystems application. But, surprise surprise, that is not true. I have a few hobbies and playing football with friends (or soccer, as my fellow American colleagues would say) is one of them. I play on a regular basis on Sundays, in London (yes, even when it’s raining).

One of the regular players started putting all the results in an Excel sheet and we ended up being quite competitive about it, always trying to reach the top of the table. Obviously, we were constantly pushing him to keep the Excel file up-to-date, which sometimes would take weeks (some people don’t understand the competition spirit!) because he was the only one keeping it on his own computer.

After one of those matches, I asked my friend to send me that Excel file and decided to start my new project — the “Sunday Football” application.

“Started from the bottom”

For the ones who are familiar with the platform, you would know that from an Excel file, you can very quickly import/bootstrap the data into an OutSystems application and create a base data model for the app. That’s how I started. From the Excel file I extracted the matches’ data (with all the past results) and the players’ data (the player information and what matches each one already played). Two days later, I had the first version of the web application running and I could share it with the whole group.

The funny thing is, when you start developing one of these applications that have no planning and no clear end goal defined, you have the freedom to continuously explore any ideas and features that you want to implement as you go.

Quickly we started having more ideas and everyone started giving feedback and challenging me to add more features.

One of the first improvements added was the mobile Progressive Web App, which allows all the players to easily access the app from their mobile phones. This is particularly important as it allows us to consult and change the teams when we arrive at the pitch and it also keeps things exciting because immediately after the match we can submit the score and see the updated table instead of having to wait weeks like we used to!

The initial goal was to simply mimic what we had in the Excel file. Therefore, the first iteration of both web and mobile apps only included a table screen with a list of all players and their statistics, and a screen with a list of all matches.

A list of all players and their statistics. Web and Mobile

Adding Features

Following the feedback and enthusiasm from the group, I kept developing new functionality on a daily basis. The next was the creation of a detail screen which, by clicking on the name of the player on the table, allows anyone to track the progress of that individual player. This included the history of all goals for and against, the history of the points per match, list of all matches played, etc. — which keeps players focused on improving their numbers.

While gathering and consolidating all this individual data, I also decided to create a Player Performance Index. This is a metric that compares all the players and gives them a rating based on their statistics. This was something new because before, we were simply tracking the amount of points that each player had, which is not as relevant when players don’t have the same amount of matches played. This way, we can now compare the different players based on a fairer calculation.

On top of that, I’ve implemented the match registration functionality. This allows us to register ourselves for the next match using the app. We have around 50 people in the group, but obviously, only 14 can play (we play 7-a-side) at a time. The registration process was basically a WhatsApp message in the group, with a list of the available players. Whoever wanted to join the next match would have to copy that list, add the name to it, and message the whole group with the updated list again, which was a bit cumbersome. Now, we just need to go to the app, search by our own name and click “Register”.

Match registration

Weekend after weekend, more people started realizing the value that “Sunday Football” was bringing, and also saw how much we could do and improve in such a short period of time. This really opened the door for more ideas to start flowing.

We realized that with the data we had and with the creation of the Performance Index, it would probably be a good idea to start selecting the players for each team based on their statistics. Up until that point, we would get to the pitch and two players would choose the teams. The goal was to try to have more balanced teams and more exciting matches. Indeed, the app now includes a team generation engine and we’re using the suggested teams every Sunday. And, I’m not sure whether it’s a coincidence or not (no, it’s not), but we started having a lot more draws. In fact, prior to the creation of the app, there was never a draw.

“Now we here”

Match information detail, with the teams and players

A couple of weeks after I started its development, the “Sunday Football” application ended up with the following functionality:

  • Web and Mobile (PWA) applications;
  • Championship table screen;
  • Screen with a list of all past and future matches;
  • Screen detail with statistics of each individual player;
  • Player registration for upcoming matches;
  • Player Performance Index;
  • Team generation engine, based on each player’s performance;

The best thing is that, what started as another OutSystems personal project allowing me to further improve my development skills and to keep interacting with Service Studio, ended up having a real impact on our Sunday Football matches. Everyone is now a bit more competitive and putting more effort on their performances, without losing the friendly spirit and fair play. All the matches are more balanced and exciting, which makes it more fun… after all, that’s why we play every weekend.

And that’s how I’m still playing with OutSystems and playing football every Sunday.

Create your own free personal environment to start building with OutSystems.

Top comments (0)