
Wednesday, May 10 is Google I/O 2023. One aspect of the event
includes updates on major open source projects developed within Google. One
very popular project within Google is called Flutter.
Below, VMblog chats with David DeRemer, CEO of Very Good Ventures, the leading experts in
Flutter app development. Of note, Very Good Ventures built the very first
commercial Flutter app in 2018 - the Hamilton app (yes, the famous musical)!
VMblog: For our readers, can you provide a brief background of
what Flutter is along with its primary benefits?
David DeRemer: Flutter is an
open-source framework that is focused on multi-platform UI development - that
means you can build apps for mobile (iOS/Android), web, desktop (Windows,
macOS), and embedded (Linux) from a single codebase. While the Flutter
framework itself is mainly developed by a team at Google, the open source
community contributes to it as well and there is a rich ecosystem of packages
and support libraries. Flutter has become the best way to create beautiful and
expressive user interfaces for any screen. This means that a company or team
can build a product with consistent look and feel across many devices with
little to no code duplication and the overhead that usually comes with multiple
codebases. It's a massive efficiency in terms of the cost and effort to build
applications with no sacrifice in quality or capability.
VMblog: With respect to Flutter, please describe what Very
Good Ventures offers? Can you list some of the organizations that have worked
with Very Good Ventures to create Flutter-based applications?
DeRemer: Very Good Ventures
has been specializing in Flutter since 2018 when we started to work with the
Hamilton application, which was the first major commercial app built with
Flutter outside of Google, and also partnered with the Flutter team at Google
to showcase what's possible with Flutter. Since then we have worked with many organizations
to shift their development efforts to be more focused on Flutter and in turn
evolve their own standards and practices for their engineering and product
development teams. We have been able to work with companies such as Betterment,
American Airlines, Dow Jones, and Toyota over the past few years to help them
through their Flutter journey. While we excel at building high quality scalable
applications with Flutter - after all, we have more Flutter engineers and more
experience than anyone out there - we've really focused on building
consistent scalable patterns, processes, and developer values. Many of our
clients benefit as much from the cultural impact we have on their teams as they
do from the code we deliver.
VMblog: Can you elaborate more specifically about Very Good
Ventures processes and best practices when it comes to Flutter development?
DeRemer: At Very Good
Ventures we have a very opinionated way of developing applications, and Flutter
multi-platform nature really helped us hone our values and practices. Our team
can build apps for almost any screen with the same programming language and
developer tooling, so this means we can really focus on how and why we do
things. Our best practices have been honed over many different projects to
ensure that they can scale from a single developer on a single application all
the way up to a global organization with developments spread across many
different continents. As a consulting team, the need to scale our people but
also have high skill portability so that teammates can move between different
projects is extremely important. For instance, we commit to 100% test coverage
and have tools to ensure our teams maintain that. The practices we follow
ensure each team delivers the quality we expect consistently, and that all
teammates know what is expected. As it turns out, the best practices we've
developed to help our team grow and scale are just as valuable to our clients.
A lot of our process
revolves around the idea that a codebase should be boring. The reason behind this is
due to the nature of application development and the fact that apps are a
living and evolving product. With our approach it's easier for any developer to
join a product team and be up to speed and contribute to a codebase on the same
day rather than requiring a long ramp up period to familiarize themselves with
the patterns and operating rules of the project.
One thing that sets
Very Good Ventures apart is that we do not keep this opinionated and "boring"
approach locked in a drawer: it is part of our core DNA to work in the open,
following Flutter's principle of being open source. We have a dedicated team
working precisely on this philosophy (see vgv.dev), turning our opinionated approach
into developer tools, many of which are open sourced, that can be reused and
applied in any project. Our goal is to not only make our team better and
deliver better results for our clients, but also improve the Flutter community
by sharing our tools and methods. By elevating the quality of any Flutter
product around the world, we make Flutter a more confident option for
businesses, which increases the total addressable market for our skills and
services.
VMblog: How does the use
of Flutter impact a software development team's culture?
DeRemer: We've worked with
so many different companies and products that we have seen one consistent
change during our time with them - a change in culture to be more focused
on collaboration and consistency. Typically, a software organization is split
up by platform or codebase in order to drive efficiency. For instance, there
may be a dedicated iOS team and a dedicated Android team, and in some cases
they might be completely siloed. With a Flutter-based approach, these walls
don't exist and instead development teams can be less focused on the platform
they develop for and more focused on the product that they are developing. We
have seen organizations completely re-orient their development teams, and often
their other teams (e.g., design, QA, PM, etc), to be organized around the
product or specific feature areas instead of the technology. As a result, a
team has more control over the product's experience across device types or
touchpoints to a level that has not been typical in the past. It also means
that the product can iterate and evolve faster because teams can focus on
implementing features rather than coordinating and aligning multiple renditions
of what ultimately aims to be the same product. The cultural re-alignment then
drives other organizational changes as the bottleneck changes from engineering
implementation to some other factor that then needs to be addressed to fully
respond to customer and business needs.
VMblog: If an organization
is considering a Flutter based application, what are a few tips you would offer
them?
DeRemer: Have an open
discussion with your engineering team on the topic and lay out the drivers for
the decision. In Engineering organizations there tends to be tribes of people
that identify with a certain technology choice that may have been made long ago
and is now not fulfilling the need. This will be a hard change for some teams
but allowing them to hear and understand the need for the change is typically
what can get everyone aligned on the new way forward. On top of that, carving
out some time for development teams to actually spend a day or two playing
around with Flutter and getting them to see the power it provides first hand is
a sure trick to convince someone that the change is worth it. We have seen
skeptics turn into believers in a matter of days once they sit down, try it out,
and realize that a tough problem they have had to solve in the past has become
a simple thing to do in a more modern UI framework. Making a technology change
can be a career shift for the team, so it's vital that the team sees for
themselves that Flutter gives them even more abilities and opportunities than
they had before.
Also, it's vital to
get some help in the early stages. As great as Flutter is, a team can still
architect a terrible codebase that performs poorly. Often times teams try to
build a Flutter app with patterns they are familiar with and perhaps borrowed
from other platforms - this can lead to serious problems. The community
has a lot of great resources and tools to help companies get started, and of
course there are companies like VGV that can help set up a codebase and a team
effectively to scale from the first commit.
VMblog: Why should an
organization who is considering building Flutter application(s) consider Very
Good Ventures rather than go it alone?
DeRemer: If your
organization is thinking about moving to a Flutter based development path then
bringing in Very Good Ventures would be a boost of confidence not just to
stakeholders but development teams as well. With our team's extensive
experience there are not many problems that we haven't had to tackle already
when it comes to a Flutter implementation. We often joke that we've made the
mistakes already and learned so that our clients don't have to. We also have a
large team of Flutter engineers - far more than most companies will be able to
hire or have access to - so that means that if we face an issue, we can
usually find someone who has seen or tackled it already.
Most importantly, our
designers, product managers, and engineers are there not just to write code,
but also to improve the client's team by working with them hand in hand on
implementations. We see ourselves as strategic partners that build products,
but also help shape teams, process, and culture. Our goal is to ensure that our
clients are building the right thing, building it the right way for long term
sustainability, and setting up the team itself to be successful long after our
engagement.
##