This months book is subtitled Guerilla Tactics for an Imperfect World. The author clearly has enjoyed extensive experience of systems development and suffered all the stupidity that users and managers can muster yet lived to tell the tale. While, in this book, he explores lots of reasons why software projects get difficult what comes across clearly is that he sees inadequate understanding of the requirements (ie a detailed understanding of what the system is supposed to do) is what lies at the root of many failures. This he has in common with one of my other favourite authors of software related material Steve McConnell. I agree with them both.
If you were to ask me how many projects I’ve done in the last 25 years where the customer has understood properly at the outset what he needed the answer would, sadly, be none. A big fat zero.
Duncan explores the consequences of this and a lot more besides. Many of the other ills are born out of the same attitude that spawns inadequate requirements definition and, as well as having a good rant he does also explore answers and methods of avoiding the dangers too.
Many working programmers are people who concentrate on the technical aspects of what they’re doing and think that that’s enough to get the job done. Duncan blows that idea apart in the first chapter and the whole book is full of good advice on how to survive in a world where, as well as coding problems, you have to deal with those horrible inconveniences – people. Among the gems covered are……
The corporate world is not logical
Species of programmers
Unrealistic deadlines
Poor company management
Controlling your time
Improving interaction
Identifying requirements
Estimating effort
Testing & quality assurance
Corporate self defence
Controlling your career
Flying solo – running your own business/contracting
Job security
I guess there are two kinds of people who will benefit greatly from this – one is the obvious audience of programmers. However, as there’s virtually no technical content here there’s an awful lot that would benefit a manager/business owner who’s about to commission a software project or computer system. Even if you don’t read everything, a few hours spent on the key topics will easily be repaid by then avoiding the mistakes you’ll otherwise make.