There are many rumors surrounding Uncle Bob’s clean architecture. Many believe it’s a silver bullet that will solve every problem. This sounds great for anyone who wants to write a new application, but how do you safely transition a code base with ~100k lines of code and 5 years of history?
The story I am going to tell is about an Android application with over 100 million installs, used by millions of people everyday and is very profitable. The journey started with legacy code, then grew and transitioned into clean architecture. This was implemented all while working in a high pressure environment with tough deadlines, constant changes and a lot at stake.
It all started as a j2me application, which rapidly grew, becoming legacy. It then required changes overall for improvement and maintenance. On top of the complications we faced, we then had to split the application, creating several new ones. Through this process we managed to improve our code by experimenting a lot, having many discussions, internal tech talks and also restructuring our team. Overall we learned a great deal!
I hope sharing these experiences will inspire other teams to start experimenting with architecture in a safe way.