11 Days of Flutter - Day 9
Flutter represents a sea of change in app development. If your C-suite or engineering leadership isn’t considering Flutter, now is the time to bring it to their attention.
Below we provided a hypothetical conversation, based on countless similar conversations we’ve had at Very Good Ventures, to help prepare you for the discussion.
What is Flutter?
TLDR; Flutter is a framework for creating natively compiled iOS, Android, desktop and web apps from a single codebase.
Flutter is Google’s UI toolkit for building beautiful, natively compiled applications for mobile, web, and desktop from a single codebase. We write apps in Dart and build them in Xcode or Android Studio and deploy them like we would a normal app. Think of it as an engine — like Unity, but for 2D UI instead of 3D games. At the end of the day, we get real iOS, Android, macOS, Windows, and web apps, but consolidated around a single high-performance Dart codebase.
Why Does Flutter Matter for Our Company?
TLDR; Flutter is a competitive advantage that will enable us to do more, faster than our competition.
Flutter enables us to create, deploy and manage apps from a single codebase. The benefits of that are obvious in terms of developer efficiency. From a purely mobile point of view, it’s a two-for-one deal!
But there are real efficiencies to be gained in supporting disciplines and departments, such as design, product management, and QA. Since there is less duplicated code, and generally less code overall, there is less to manage, less to test, and less that can go wrong. Flutter is a developer’s superhero!
In short, it helps teams focus on what matters, build terrific UI, and create added value rather than duplication. We’re talking about at least a 2x gain in productivity. Instead of focusing on copying features, we can focus on building new features that make a difference for our customers.
Who’s Using Flutter?
TLDR; Major companies are already using Flutter in production.
Flutter was officially released as version 1.0 in Dec. 2018, so while it’s still under active development, it’s stable for use in production. Flutter has really taken off over the last year, as evidenced by the rapidly growing list of companies with Flutter apps as well as the burgeoning developer community.
But We Have Complicated Existing Native Apps. How do We Transition Them to Flutter?
TLDR; Flutter plays nice with native.
While the best long-term benefit comes from a fresh start with Flutter, we can certainly get Flutter into existing apps. It’s possible to embed Flutter experiences inside an existing native app, using the “Add-to-App” functionality of the framework. It’s currently a “preview” feature but many companies have successfully integrated Flutter as a component of their existing native apps.
Flutter also has something called “platform channels” and “plug-ins” that allows Flutter to communicate and leverage native code. So, it’s possible we could leverage a good deal of our existing native logic and functionality in a Flutter app.
What Don’t We Know About Flutter?
TLDR; What we don’t know, we can figure out with our extra time.
There’s a lot to learn. It’s a different approach to creating apps, and we will need to consolidate our teams and processes. But that’s a good thing as we can focus more on features rather than operational overhead.
One thing to consider is that Flutter is still relatively new, so the number of packages and third-party SDKs don’t rival native just yet. But, it’s growing rapidly. Any hardware or device integrations that are required are easily overcome by using plug-ins and platform channels. Additionally, native code can easily coexist with Flutter code in the same app.
Will Google Abandon Flutter?
TLDR; Google has been aggressively growing Flutter and the developer community is exploding.
This is a common concern, but perhaps an irrational fear. We’re not talking about Google+ here — we’re talking about a rapidly maturing developer framework and SDK. Flutter already has achieved version 1.9 as of Sept. 10, 2019. More than 250,000 developers are using Flutter, and it’s one of the top 15 most starred repositories on Github. The sheer size and volume of the project and the community inspires confidence.
We can also look at the growth of the Flutter team itself as an indicator. The Flutter team has grown massively since 2017. They have a strong presence at global conferences and developer events. Flutter was onstage during the tech keynote of Google IO 2019, which implies it has support from the highest levels. There was also a massive event in London in Dec. 2018, called Flutter Live, and another one is planned this year in Brooklyn on Dec. 11, 2019.
There’s even a new operating system that Google is working, called Fuchsia (some say it may be the next generation of Android) and you build apps for it solely with Flutter. All in all, looking at how Google is growing internal support for Flutter, it’s hard to imagine them pulling back any time soon.
Lastly, Flutter is also open source. So, while Google created and maintains Flutter, it’s very much a community project.
How Will Our Engineering Team Feel About a Transition to Flutter?
TLDR; Most will love Flutter, and Flutter is the fastest-growing engineering skill on LinkedIn.
Flutter developers tend to be former native developers that are looking for a better way. It’s hard to find someone that started working with Flutter and didn’t love it. It solves a ton of pain points in the development process with features such as hot-reload. Its declarative syntax is also just much easier for building layouts — even Apple is going in this direction with SwiftUI.
A lot of Flutter developers say it makes mobile development “fun again.” The tooling and ecosystem for developing with Flutter is best-of-breed, including strong IDE support (IntelliJ, VSCode), command-line tools, good linters, test runners, formatters, code completion, etc. Also, the library ecosystem is growing rapidly both in terms of volume and quality. In fact, there are a number of first-party packages maintained by the Flutter team, and Google just announced Verified Publishers to add more trust to the landscape.
But, not everyone will love it. Some will be resistant and worried about deprecating the expertise they’ve built in Swift, Kotlin, etc. while having to learn something new. However, Flutter is growing rapidly — it is the fastest-growing skill among software engineers according to LinkedIn. At the moment, great Flutter developers are still somewhat rare, which means there’s a huge opportunity to get ahead of the curve now.
Crucially, our team won’t lose our identity as mobile engineers — we will just be adding a new tool to our skillset. In fact, it’s an opportunity for our engineers that previously specialized in, say Android, to also be able to create for iOS, Mac, Windows, and Web!
Ok, How do We Get Started?
TLDR; Identify a new app or feature, start building with Flutter, and maybe bring in an expert.
Perhaps the best way to get started is to build a new product. But, it’s equally viable to pick an underperforming platform (for instance, if an Android app gets less love than the iOS), rebuild it in Flutter. Then, eventually, we can transition to using the new Flutter app on both platforms.
There are a ton of excellent tutorials, training sites, and code labs we can use to quickly get up to speed. The Flutter community is also very strong, there are meetups we can go to, and online content is robust. Stack Overflow is already full of answers.
If we really want a boost, there are some consultancies with strong teams deeply experienced with Flutter. For instance, I’ve heard of companies like Policygenius bringing in Very Good Ventures to help accelerate their learning and expertise.
At the end of the day, Flutter is a strategic advantage for our company. So, let’s pick an app or feature and get started.