We as developers, designers, managers, product owners, CTOs, CEOs, CIOs, etc, always tend to focus on improving the user experience/customer experience in a product, but are mostly missing the fact that a bigger part of the productivity and quality product lies behind the quality of the Developer Experience (DX) of building the product.
Flutter has largely transformed the DX to a level that positively & potentially affects the development time and product quality.
There is one thing that I learnt about learning curve. It is inversely proportional to a good documentation.
Unlike any other platform, Flutter has a very extensive and composed official documentation. A new learner doesn’t need to go anywhere to learn Flutter, he/she can directly jump to Flutter official docs and start coding.
Running a local community in Karachi, I arranged multiple events related to Flutter in the past year, one of them was a 4-hour codelab. The codelab was related to building a complete Flutter application, and the participants were mostly people who didn’t know Flutter/Dart. Within 4 hours of coding, almost every one was being able to build a running Flutter application, consisting of network calls, navigations and intermediate level widget hierarchy. One of those developers was from an electrical/electronics background!
After this experience, I was pretty sure that one of the major reasons why developers feel so delighted by the experience is because of the easiness of learning the platform!
I have heard developers say this:
Literal cross platform
If we talk about cross-platform applications, we have seen that generally cross-platform is referred to as something which compiles on iOS and Android. From my personal experience I can define Flutter as a LITERAL cross-platform UI toolkit. Being literal, meaning it compiles on iOS, Android, web, desktop and for the embedded, with single code-base (with a few config changes).
Flutter takes care of the underlying architecture and lets the developer actually build an experience.
Delightful DX helps in building a better UX.
Hot reload (state maintained)
Let’s suppose you are standing on a screen that took you 5 screen navigations, each with a network call. And you updated some padding of a component in that screen and you want to view the change now.
The above case in Flutter is so seamless that you don’t even need to load the data populated from the network call again, the changes reflect then and there without the need of navigating to the 5th screen from the beginning and that happens within a span of max 500 milliseconds. That’s stateful hot reload for you!!!
While creating complex UIs, it is sometimes difficult to track the UI component within the lines of code. Flutter inspector lets you jump to the widget inside your code just by tapping on the component in the mobile screen! It shows you a comprehensive widget hierarchy along with highlighting where you stand inside the code.
Great performance (painting custom UI on GPU)
Flutter runs like games do. It paints its own graphics using Skia, which is a graphics engine. All the UI is directly rendered on the GPU and communicates bridgelessly with the platform. Because of this you have the access and control to each and every pixel on the screen and it is blazingly performant!
Pub dev is the best place to find things you need to embed in your Flutter application. Be it maps, notifications, social sign in, or internationalisation, you will find everything created and posted by the community on the pub. The plugins have health which tells the overall rating of the plugin in terms of popularity and maintenance with respect to the latest Dart and Flutter versions.
While working in Flutter, my overall experience compared to other cross-platform tech stacks was amazingly different in terms of the time, the cost, the minimal frustration that sometimes pops up while you are stuck into nitty gritties. You just need to care about coding the actual experience and not get into platform specific configurations for every other feature you want to add. From excellent IDE plugin support to awesome widget hierarchy, everything about Flutter is just so delightful that it attracts developers to code beautiful experiences.
Flutter enables you to actually think about developing experiences without worrying about the possibility of getting it done in code!