Buffer for Android was first made in 2012 - and since then it's seen a range of iterations and features. Whilst it's important for a product to grow in-order to meet the needs of users, it's easy for code to become unclean and lose any sense of architecture. This legacy code makes it difficult for us to maintain our product and build new features without the fear of breaking the app.
But there is light! At Buffer we've just started to re-architect and refactor our application for Android using a clean architecture approach. Re-crafting our application feature by feature with the help of RxJava, Dagger and tests in the form of jUnit and Espresso has begun to result in a more stable, better architected and maintainable codebase. Together with our new continuous Integration flow this all helps in providing a better Buffer experience on Android.
In this talk we will explore the journey we took through refactoring from legacy code to a clean architecture. Starting with heart of our app, the Composer, we'll share our learnings and findings discovered on our journey and the benefits from doing so.
The talk will consist of several sections to demonstrate our learnings. We'll be looking at:
The original state of the app . Here we'll look at the original architecture and state of the Android Application, the hurdles it created for us and the reasons why we decided it was time for change
Adding CI to the mix. We will go into our CI structure and how everything is setup and helps us keeping a reliable building and testing environment.
Rebuilding with a clean architecture . In this section of the talk we'll look at beggining of the rebuild journey, starting with the composer. Here we'll look at the transofrmation of the codebase and architecture of the app, applying SOLID principles and how we're creating a more maintainable and extensible codebase
Rebuilding with a clean architecture . In this section of the talk we'll look at beggining of the rebuild journey, starting with the composer. Here we'll look at the transofrmation of the codebase and architecture of the app, applying SOLID principles and how we're creating a more maintainable and extensible codebase
A summary of our learnings . Finally, we'll look at the overall impact these changes have had on the android app as a whole, the increase in code quality and what this holds in place for the future of our app - allowing the listeners to take away some influence to achieve similar implementations.
YOU MAY ALSO LIKE:
- Keynote: Building An Accessible Smart Guitar For The Deaf, Blind and Mute (SkillsCast recorded in October 2019)
- Sociotechnical Domain-Driven Design with Kacper Gunia (Online Course on 18th - 19th February 2021)
- iOS Architecture with Jorge Ortiz-Fuentes (Online Course on 1st - 3rd March 2021)
- Accelerated Software eXchange Forum (Online Conference on 18th February 2021)
- μCon: The Microservices eXchange (Online Conference on 13th - 14th April 2021)
- Evolutionary Architecture (SkillsCast recorded in January 2021)
- What an Architect Can Learn from Retrospective Failures (SkillsCast recorded in December 2020)
On the journey from legacy code to clean architecture
Marcus Wermuth
Marcus is super passionate about Android and the whole architecture behind it. He loves to discuss clean architecture, testing principles and CI Integrations.He also loves to think about Design and User Interfaces, while also thinking about the product development.
Joe Birch
Joe is an Android Engineer and Google Developer Expert for Android, based in Brighton, UK and is working on the Android team at Buffer. He's passionate about coding and loves creating robust, polished and exciting projects for mobile, the web, TV, wearables and he’ll probably be toying with whatever the new thing is at the time you’re reading this – Joe loves to be constantly learning. He is also a keen writer as he loves to share his learnings and experiences with others.d writer sharing all of his experiences in the Android world, also currently working on a Firebase Book