Four years is not long in the lifespan of humans, but a programming language could be born, mature, and go extinct in that period. Or it can become the future.
Back in 2017, Flutter was new and developers were keen to experiment with a novel technology. Some curious engineers decided to learn about it in their free time, while others heard about it through the grapevine.
The common theme? It was love at first try.
From native to cross-platform
Not many Flutter job opportunities were available back then, so engineers at Infinum were given the freedom to experiment with Flutter in addition to their “day jobs” as Android or iOS developers.
It wasn’t long before Infinum scored the first real Flutter project, and eventually formed a fully-functional and independent Flutter team, which is now further expanding.
I was building one app in native Android and native iOS separately and I thought to myself, this is far from ideal. I’m writing a large portion of the app twice, there has to be a better way. It was around that time that I learned about Flutter.
What motivated the switch?
When discussing their reasons for switching to Flutter, all of our four engineers agree that its main advantage is cross-functionality, and because it’s cross-functional, it saves time. There is no need to write separate sets of code for different platforms; a single codebase works for iOS, Android, web, and desktop.
That means that development time for a mobile app can practically be cut in half, which reduces the total costs and some organizational hurdles. Also, an app made in Flutter is completely customizable with minimum effort, while code writing itself is no problem at all.
As iOS engineers, we mostly used storyboards, but with Flutter every piece of UI is written down and not drag-and-dropped. That also changes the way business logic connects with the UI.
When it comes to testing out new code, Flutter excels in cutting down wait time and general testing speed. All the results are visible immediately, there is no need to wait to find out how something works.
Flutter vs. iOS & Android
The main difference is in the programming language. When I was working with Android, we were using Java, and Kotlin was still not official. Dart felt more modern and much easier to understand.
Allowing for a little subjectivity, the developers seem to be much happier with their overall work experience, switching to Flutter. When asked about the main differences between Flutter and their previous technology, they mention that getting used to other IDE is definitely a challenge after many years of XCode.
But even so, they are still impressed by Flutter’s hot run and hot reset features, great tool usability, and not worrying about different iOS/Android versions. All these features combined lead to better productivity and consequently better results.
Nothing but praise for Flutter?
Flutter is still very young, and sometimes issues do and will come up. For example, animations can be slower, and there are some difficulties correlating them with the native keyboard. Also, some functionalities can only be achieved in native platforms, so developers need to work around this issue, either by introducing communication with the native platform or using a third-party package.
Possibly the biggest downside is the scarcity of libraries supporting it. Still, our team is diligently working on adding more of those to the Flutter universe, having already published several packages, including a library for logging in Flutter.
Flutter at Infinum (Best of both worlds)
Troubleshooting is easier when you have a strong team. Because Flutter is a new technology, nobody was a ready-made Flutter expert when they joined Infinum’s team, even though they had years of experience in software engineering.
The developers have either iOS or Android backgrounds, but what they might have lacked in knowledge and experience, they made up with mutual support and the desire to learn. It actually helps to have team members of different backgrounds because they complement each other. For example, when there is no other way but to implement something on a native platform, an Android engineer can help out an iOS one and vice versa.
Education and research are the team’s top priorities and the onboarding process reflects that. New team members can benefit from all the knowledge their colleagues compiled. In other words, they have the advantage of learning from others’ mistakes instead of their own, at least to some extent.
The Flutter team has a handbook ready and is constantly updating their open source libraries. Currently, they are working on upgrading their onboarding process to make it more practical. Instead of just offering reading materials to a new member, they will have them do a demo/test app from scratch.
What’s the future of Flutter?
As mentioned before, Flutter’s star feature is cross-functionality, and it could be its main advantage moving forward. It’s possible even now to make a single-codebase app and run it across multiple platforms, web, Windows, Mac, Linux. However, these still need some time to be completely production-ready. In practice, Flutter is still primarily used for mobile development.
The consensus among developers is that Flutter still hasn’t reached its prime, but it has great potential to be completely on par with native development. Success is not measured only by results but progress, and Flutter has come a long way in a very short time, growing together with its developers.
It’s already easy to use and very versatile. I believe it just needs a little more polishing to become truly great and sweep the competition.
Our Flutter team recommends
If you’re actively looking for a Flutter job opportunity, you’re in luck.
Or if you see the potential in this technology and want to get started, here are some resources and learning materials that can help you:
Vlaho, Josip, Maroje, and Luka recommend it 10/10, would do it again.