I am googling around as I find myself in this turmoil of whether rewriting the web application again for my startup. It seems the clients want something different from what I was originally thinking. While I really appreciate that my client has given me enough feedback to let me know what they really want, I find the codebase harder and harder to maintain when changes of requirements come through.
At this moment, I have been postponing to launch it as late as possible to test the market and see the feedbacks, as I want to product to be usable to multiple clients. Writing bad codes to attract early users is never a good idea, because I am afraid that I will end up with unmaintainable codes which is hard to respond to further changes in the future. My clients are mostly senior people in their industry. They understand their problems, but they do not understand technology. The only way that I can see if the software fits their requirements is not through piles of documentations and many official meetings – something that most big companies would definitely fail in what they call themselves as “project management” skills. The only correct way to see whether the client likes the software is through producing it, showing it to the client, let them use it and listen to their feedbacks afterwards. Customers do not just want to see the product presentation, they want to have a feel of using it, but they also want to control what is happening despite the fact that they are horrible at explaining what they want in a tone and with the amount of details that developers understand.
At this moment, I will do whatever it takes to get my product fits their needs, even if I have to throw all the codebases and rewrite the entire thing, I will do it! The reason is that, if I do not do it right now, I will need to spend twice or even thrice the efforts to make the changes after the product has launched in the coming few months. These several months are going to be critical.
Here is a blog post by Steve Blank on http://steveblank.com/2011/01/25/startup-suicide-–-rewriting-the-code/. It’s a bit old but I think it’s a good article. I do not completely agree with his viewpoint, as there are always costs, benefits and risks involved in every decision. The discussions underneath the blog post is worth reading. Their arguments present a good general perspective to whether rewrite the codes or not.
No good engineers would work with old codebase, because they believe they can reinvent a better wheel. This is probably true.
