21 August 2022
Every software project starts with the first line of code. The code design, implementation, and architecture for your very first release are what I call, Genesis Code, which will determine how far your software can live without refactoring and rebuilding it.
It doesn't really matter whether you are building an MVP or an actual production-ready product, Genesis Code is very important. Moving on after your first release, there are three main areas of concern that I think is really important.
The number one concern for me is always how scalable the current code is. Often time, most businesses and startups started MVP and ended up continuously introducing more features. It is just so costly to rebuild it, isn't it? So, might as well just build it right from the beginning. If developers follow standard guidelines and frameworks, it really just costs the same amount of time and money to build an MVP that can be scaled to production-ready code. Without a well-structured code and design, it is just really not too easy to implement new features and functionalities. The chances of breaking the system are very high. So, you would probably be paying more for developers' time to fix bugs and make sure it doesn't break the system.
That leads to another concern, which is how maintainable the code is. Badly written code can break the software easily and it can be very hard to fix. It introduces Tech Debt in the future. It costs businesses a lot of time and money to try and fix it. Sometimes, engineers may propose to completely rewrite the code. I had a client whose mobile app was built in Ionic Angular by other freelance developers. The code was written just to make the app work and it was totally out of standard. Among all other issues, the entire code wasn't implemented properly to handle timezone around the world. So, it took almost 2 weeks to completely fix that issue. Most of the time, fixing one issue breaks other parts. Trust me, it was not so pleasant.
Last but not least, you want to make sure your team of developers is very productive when working on the project. For most people, they only see how it works and looks on the screen. They can test functionalities and see that beautiful UI. It's awesome when it does what they expected. But, for developers, we mostly stare at the screen with a bunch of code. Sometimes we compile code in our head and visualize how it looks. So, just imagine, if the code was written as good as a poem, whoever is working on that will enjoy working on every single line of code. It's just going to be amazing.
If you really think about it, technology today is a lot better than 10 years ago. We now have a coding standard that thousands of engineers around the world have developed, improved, and shared on the Internet. We have a framework that is being maintained by hundreds of thousands of engineers all over the world that can help us build any software project really fast and scalable. So, I think there is no real reason to think “Let's make it work for now, and we will do it properly later”.