Evaluation: How We Decided To Move To Flutter
Learn how we approached the transition, how we evaluated different platforms, and why we chose Flutter.
In our previous article, we discussed the strategic decision to move towards a cross-platform development approach at Choco.
Our ambition to integrate the world's food supply chain and eradicate food waste demands efficiency. It calls for reduced coordination costs, a collaborative culture, and a consistent product by design.
This article answers, how did we approach this significant transition? How did we evaluate different platforms? Most importantly, why did we decide on Flutter? Join us on this journey!
The task force
In our pursuit of an efficient cross-platform solution, we formed a Cross-Platform Task Force, following NuBank’s example. The Task Force was assigned a clear directive:
Regardless of specialization, teams should be autonomous and productive in developing mobile and web applications using a unified architecture and conventions, and deliver continuous value to our customers.
The Evaluation Process
With a clear goal, the Task Force dove headfirst into evaluating potential platforms. The primary contenders were Flutter, React Native, and Ionic.
We followed a rigorous evaluation process, revolving around five main criteria:
- DX (Developer Experience): What is it like for developers to build with this technology?
- Long Term: How sustainable is the technology for long-term use?
- Migration: What would the transition to this technology look like?
- Design: How well does the technology support our design system?
- QA: How does the technology affect the quality assurance process?
We established a dedicated room in our office just for the Task Force team to facilitate focused collaboration and fast iteration. This space became a haven for innovative ideas, lively debates, and collective decision-making.
The team got divided into three groups, each responsible for one of the platforms - Flutter, React Native, and Ionic. Each team was assigned an established set of essential features to implement using a cross-platform technology and integrate with Choco's existing native application. This approach provided a tangible means of testing and comparing the capabilities of each platform directly against our main evaluation criteria.
Our way of working
We had five weeks to come to a decision. The journey was divided into four weeks of diligent work on each platform, collecting data, and assessing criteria. The final week was reserved for reflecting on the findings, aligning scores for each criteria, and forming a recommendation to guide our decision.
During the evaluation phase, our journey went beyond the confines of the Task Force room. We made a point to ensure that everyone at Choco was not just informed but felt included in this transformative process.
We put into practice a series of strategies to foster unity and keep the company engaged:
- Company-wide Updates: Weekly updates were shared across the entire company, keeping everyone abreast of the progress and allowing them to provide feedback.
- Midpoint Demos: We scheduled midpoint demos specifically for the EPD team (Engineering, Product, and Design), allowing them to witness the transformation first-hand.
- Open Communication: These practices reinforced our belief in open communication and inclusivity. We welcomed everyone into discussions, having an open channel for everyone to ask questions and make suggestions, thus making every individual part of the journey, regardless of their role.
In addition to this, we established a dynamic work environment:
- Energetic Atmosphere: Our space was buzzing each day with vibrant energy. It was filled with enthusiastic discussions, an exchange of ideas, and constructive debates around code.
- Collective Drive: Above all, there was a collective drive to find the best solution for Choco, reflecting our commitment to teamwork, innovation, and continuous improvement.
As part of this process, the Task Force diligently worked on each platform, constantly collecting notes and sharing insights. By the final week, the development phase ended, giving way to a period of reflection and evaluation. We organized multiple sessions to discuss the pros and cons of each technology, score them based on each criteria, and consolidate our findings.
Observations
Our extensive evaluation led to a wealth of data on each platform's performance, strengths, and weaknesses. This data guided us to our final decision.
For a closer examination of this process, we've provided several screenshots below. These images provide an overview of how each platform—Flutter, React Native, and Ionic—scored in our set criteria.
Why Flutter
After rigorous evaluation, the task force selected Flutter. The platform's ease of learning, the resistance-free path for both web and native engineers, and long-term potential owing to Google's robust support made it a winner. Here's a brief rundown of the pros and cons that led us to this decision:
Main benefits
- Support, adoption, and long-term: Flutter is backed by Google, with a clear vision and roadmap, and is increasingly being adopted in the industry. It is the most popular cross-platform framework, overtaking React Native in 2020/2021.
- Capabilities: Flutter's standout hot reload functionality allows for quick iteration and debugging. The documentation is thorough, and the code generation tools for Dependency Injection, Persistent storage, and testing are practical.
- One Chapter: Flutter enables the formation of leaner teams - a single team for cross-platform development.
Main risks
- Discontinued Google support: This potential risk was considered but deemed unlikely given the current popularity and growth of Flutter.
- Web integration & developer’s involvement: Ensuring seamless integration with existing web frameworks can present a challenge when adopting a new platform like Flutter. Flutter Web is not mature as mobile. This is a challenge but one that the team felt confident they could navigate.
The task force recommended Flutter, citing its ability to align our current application architecture, build future applications, and empower Choco in the long term.
Conclusion
Through this evaluation process, we've reached a decision that aligns with Choco's needs and culture. Our cross-functional task force allowed us to approach the problem from multiple angles, ensuring a holistic consideration of all aspects.
Here are the key takeaways:
- Decision: After thorough deliberation, Flutter emerged as our chosen platform, in perfect alignment with our vision and needs.
- Impact: Adopting Flutter is expected to streamline our development process, enhance team collaboration, and ultimately, help us serve our customers better.
- Vision: We anticipate fully utilizing this platform's potential as we continue our journey to integrate the world's food supply chain and end food waste.
If you have any questions about our journey to cross-platform or any other aspect of our work at Choco, please feel free to contact us at contact@choco.com. We enjoy discussing our processes and would be happy to provide more details.
In our upcoming article, "Learning: Equipping our Engineers for Success," we will delve into the concrete steps we're taking to ensure our team is fully equipped to excel with Flutter. We have carefully curated a wide range of courses, training materials, resources, and partnerships to enable our engineers to reach new heights.
Be sure to stay tuned for more exciting details (and check out our open roles here!)
Discover Life at Choco
WE'RE HIRING GLOBALLY!
Ready to combine your love of tech with your passion for a healthy planet? Now's your chance. Join our mission!