re: Why Your Software Development Process Is Broken
My take on development is that programmers have to interact with end users to the point they become experts, if just for a day, to understand the requirements and then use their knowledge of software systems to transcend the requirements. As Steve Jobs once said, if Henry Ford had asked the customers what they wanted, they would have asked for a faster horse. Many times the requirements that come my way are mired in manual processes. In effect they want to pave the cow path, because it is the only thing they know. Understanding the end result will allow you to take things to the next level that the end user has no concept of. It gets past the incremental requests because the end user didn't know you could do something so they pitch their requests low and you find yourself writing (and rewriting) code that would have been much more efficient if they had asked you for what they wanted in the first place. I tell them to tell me their wildest fantasy, I say we will scale it back to what can be done and in a reasonable amount of time, with an eye towards the future. To use an architectural analogy (I studied to be an architect before being seduced by the dark side of programming), don't tell me you will want a wet bar on the other side of the room AFTER I've laid the concrete floor. Software is plastic, but as systems get built, they start to develop rigidity. I've inherited systems that had to be rewritten because the previous system had developed the rigidity of concrete.