Building a product is different than building something only for you to use. I find this true in many things that I have built. When building a software application for a single need, you can write the code with specific logic with the known problem at hand. You know the flow and the parameters.
Sometimes you can get a product by continuing to mature your specific application. Most often, you need to have the mindset that this will be a product from the beginning. You need to have a few best practices in mind: never break old clients, use parameters, new features are turned off by default, and documentation.
After going through the product development cycle many times, I find that by starting with the vision of a product – is often better in the long run due to change. Any application that is more than a single run, one off, will need updates. If you write your application for a specific need, you will break old clients or incur a costly “no going back” scenario. Also, who knows, you may have the next killer app on your hands. Sure, it requires more effort and requires you to develop a strategy – but shouldn’t we all strive for this.
So the next time your asked to create a new application, put your product thinking cap on. Can you add a configuration layer, how about the option to include or not include features, and is there an existing product that I can start from?
Thank You for listening.