Since software is easy to change, management will change the target often at the slightest whim of the customer. Mechanical or electical managers are much better at telling upper level management “we’ve already had the dies made. Your ‘little tweak’ will cost $30,000 and set us back six weeks. Are you sure you really want this?” Software’s flexibility is used as an excuse to skip the design phase or to throw aside the design when the code is being written.
Ding ding ding. We have a winner.
Lots of non-programmers do this. In my experience, it’s been primarily managers and visual designers.
I had a manager who thought it would be a good idea to refactor my requirement satisfying enhancement after deadline (which I did meet by the way), because he thought it would easy and it would be cleaner that way. He disregarded my advice and turned a 2 day assignment turned into a 5 day one.
I also had a visual designer decide to not use Android’s UI element designed for what we wanted, because he didn’t like the way it looked. I explained to him that it is not in our best interests to create customized UI components for trivial reasons. Future versions of the OS could come out and easily break it (That happened to our iOS team A LOT)..
He just said do it and delayed the project for days.