Scott Rosenberg: What Makes Software So Hard
The hardest part is not making software but explaining to Managers on why software development is hard.
Recently, I took over maintenance and enhancement of a piece of software from a junior developer who left the organization. He had made less than reasonable decisions on where to store some options. His decision was based partly on the business Manager's input and partly on lack of experience and guidance. The business guy had wanted a page in which he would be able to enter gifts that we recommend for various occasions. The developer chose to keep the occasion information at page level and have corresponding numbers attached to the product set at the database level. This is not the best decision, but considering the time crunch and the push from the Manager, the developer went with this decision. Over the next few weeks, the requirements got more complex - there are occasions where you need to get the age of the person involved, where the person lives and so on. The developer kept patching it up and then left the job. I hope this project wasn't the reason.
When I had to maintain the system, I did some cleanup and moved the occasion information maintained at the code behind level. Now comes the next request. It is to add a new occasion. The business guy thinks that adding an element to a drop-down is all that we need to do. He is not able to think in abstract to define requirements. The usual way he works is, I show a UI and then he wants changes. This time I decided to move the information further behind to the database level. Before I do that, I am waiting on what more information should we look for and do a total redesign.
That's how software development works.