I was thrown into a Flutter project as a junior developer. Here’s how it went.

My journey to Flutter started after 2 weeks of working at Codemate. My supervisor came to me and asked to make a simple mobile application with straightforward requirements. I got the freedom to choose language/SDK myself, and for some odd – still unknown reason – I decided to pick Flutter. The first version of AC Oulu football club fan application was born.

Who is this guy?

My name is Jussi-Tapio “Jusu” Lamminheimo and I work at Codemate as a software engineer. I also study for my Bachelor of Engineering degree at Oulu University of Applied Sciences in Information and communications study programme, with a focus on software development. Before joining the Codemate-family, I’ve worked with native Android and done a little bit of test automation. But mobile development has always been my dream, passion and a hobby.

Road to Flutter

The app requirements were simple: a carousel view with custom items, and the items needed to be tappable. Even though the specs were very simple and sounded easy, as a two weeks old junior developer my legs started to shake anyway. I studied Flutter for two days, and after that started searching for solutions. I found Iiro Krankka’s Page Transformer -package from Github and started to build an application around it. At this time UI looked like this:

So yeah.. You have to start somewhere.

Fast forward to the result

After struggling a bit with this new thing called Flutter, things got better. And this is what we achieved: The development of the AC Oulu app started in May, and we got this bad boy launched in June. Shout-out to Iiro Krankka, who was working as my sensei at the time.

I was secretly very proud of this Flutter achievement, even though it was a very simple and relatively easy application to make. Also, I was amazed at how easy it was to build PoC with Flutter. In the end, everything worked like a charm, and everything looked just the same on both platforms; Android and iOS. I also developed a beautiful UI with Flutter, and it was much faster than on iOS + Android.

Jusu, do more Flutter

The iPad version of the application was tested for a month in the AC Oulu football matches, minor bug fixes were done and I studied more Flutter. On July 5th of 2018, product owner Vesa-Matti Suorsa messaged me on Slack:

“Jusu, we need a mobile application for everyone.”

So I did more Flutter.

We started planning the mobile app and I got some plans and UI specs from our designer Olli – read all about the app’s design from here. I did a lot of things with our backend-guy Ville during late summer and I got another mobile dude to help me in the project. The plan was to do a proper branded fan application for Finnish football club AC Oulu.

We had a lot of feature ideas: a few little ones, a few big ones. The main feature of the first app version was “Rönkä Voimapelaajaäänestys”, which basically was MVP-vote for ongoing matches. The voting system had to stay the same as in the iPad version but it needed a lot of work. My confidence level with Flutter had multiplied about 100x and I was ready for the challenge.

In a week this was the situation:

So yeah, looks horrible. Placeholders everywhere. Nothing in the right place.

But FIFTEEN WORKING HOURS later the AC Oulu fan application looked like this:

So this is what you can do with Flutter in about 15 hours. I was amazed. Everyone was amazed. This new SDK really did show its potential.

Fast forward about 3 weeks

The new app needed a marketing campaign. The application was still work in progress and we had unfinished features, so this gave us a good “motivation boost” to get things done in time. I posted first .apk to our project group in Slack on September 5th, which was two months after we started planning and 3 weeks after I started developing. Flutter made it possible.

The big day

On September 10th we decided to release the application in stores as beta. On the same day application was live in GooglePlay, and a day after in App Store. This was actually my first time ever releasing anything, and I kinda didn’t sleep on those days because of how nervous I was. And again, everything went well.

My lil’ baby.

Jusu, we have to go global

In one of our daily meetings we got a bright idea: we have such a good application which everyone should be able to enjoy, so why not make it possible? So the localization began.

Making of the English localization and some other minor updates took about 2 weeks with Flutter. It was a totally new thing for me, and I needed to take some time to study and understand the libraries I was working with. But now it’s done, and now everyone around the world can download the AC Oulu -application done with Flutter.

So yeah, this is basically the very short summary of how AC Oulu fan app was born. From a test concept to a big application and a bigger audience. And everything was done with Flutter, which I had only heard of when the project started.

What I think about Flutter?

There are pretty much the same questions all the time in the air around Flutter and people who want to try Flutter and are unsure should they or not. Questions like “is Flutter better than X?”, “Can Flutter do things like Y”, “How I get my Z-person to accept Flutter to project” etc.

I say, just try it. Do something with it. Document it. Show proof-of-concept to customer/boss/anyone. See if they like it. For this project Flutter was totally the right choice, and I was able to prove it with hard work. It was relatively easy to jump from Java/Kotlin/Swift-world to Dart-world.

My thinking went from “Yeah sure, again new cross-platform which will die in a year” to “Oh my god this is the best thing ever happened in the world”.

But Flutter isn’t even nearly perfect. As an example, my personal opinion about localization is that it is made way too rough and slow. It wasn’t hard at all, but it just took way too much time. There are also a lot of small issues, but they are getting fixed one by one.

Thankfully Flutter is open source and the community is pretty active implementing new packages for doing native things on Flutter-side. But because everything is open source, there are a lot of packages that A) doesn’t have support for iOS or B) are not maintained. It will be interesting to see where Flutter goes from here when the community starts to grow and more people join helping others.

On December 4th, at Flutter Live event in London, the Flutter 1.0 was announced. Tim Sneath’s post about the release summarizes well the aspects why also I have found Flutter interesting: tool to build a beautiful app, fast, productively and with open source mentality.