Of all the monsters that fill the nightmares of our folklore, none terrify more than werewolves, because they transform unexpectedly from the familiar into horrors. For these, one seeks bullets of silver that can magically lay them to rest. – Brooks
Thats the opening from Fred Brooks seminal paper “No Silver Bullet: Essences and Accidents of Software Engineering”. The werewolf is the mess that many projects and pieces of software development turn into. Some of the approaches described in the paper are a little dated but the core messages remain.
The hardest single part of building a software system is deciding precisely what to build. No other part of the conceptual work is as difficult as establishing the detailed technical requirements, including all the interfaces to people, to machines, and to other software systems. No other part of the work so cripples the resulting system if done wrong. No other part is more difficult to rectify later.
I would go a step further and assert that it is really impossible for a client, even working with a software engineer, to specify completely, precisely, and correctly the exact requirements of a modern software product before trying some versions of the product.
There are lessons here that are decades old that we still refuse to learn. Read the whole thing. And next time someone tells you they have a “silver bullet” for you remember their gun in pointed directly at you and it fires werewolves.