Mostly this mantra is followed by most development teams (in particular startups) & it certainly makes sense as long as it gets understood completely.
In my nearly two decades of experience, I have seen teams strive tirelessly to "Make it work" and deliver a minimum viable product. But are indirectly forced to skip the "Make it better" part due to lack of time/lousy estimation.
Why?
Because once the minimal viable product is delivered, people start pulling resources out of that, start assigning the next module so that they can "Make it work". The assumption was we can work on refactoring the code tomorrow or the day after, which in reality never happens. Ultimately the development folks don't find time to "refactor" their initial code to "Make it better".
"The problem with waiting until tomorrow is that when it finally arrives, it is called today." - Jim Rohn
So what? It is already working anyway!
"Make it work," which is not followed by refactoring sessions to "Make it better" will undoubtedly break down when we start to scale. Over some time code base would become complicated & the cost of the change would be too high, which might even jeopardize the business altogether.
Make it work
- If need be, do research and implement a solution to achieve the desired behavior/result.
- The solution might not be having a good design,
- Code will not be optimized and
- It won't be easily maintainable.
Make it better
- Now that desired result is in hand refactor the code.
- Organize the code base properly to have a good design and
- Make sure it's maintainable.
- Optimize the code to achieve the desired performance goals of the application.
Comments