Dreaming in Code
I recently picked up Dreaming in Code which chronicles the Chandler project while investigating the general difficulties of building software on time and under budget. I'll give the book an enthusiastic two thumbs up, with the caveat that the intended audience is the lay public, not those of us who write software daily.
My favorite chapter, Engineers and Artists, opens thusly:
From a panel of experts assembled at a conference on software engineering, here are some comments:
"We undoubtedly produce software by backward technologies."
"Particularly alarming is the seemingly unavoidable fallibility of large software, since a malfunction in an advanced hardware-software system can be a matter of life and death."
"We build systems like the Wright brothers built airplanes -- build the whole thing, push it off a cliff, let it crash, and start over again."
"Production of large software has become a scare item for management. By reputation, it is often an unprofitable morass, costly and unending."
"The problems of scale would not be so frightening if we could at least place limits beforehand on the effort and cost required to complete a software task... There is no theory which enables us to calculate limits on the size, performance, or complexity of software. There is, in many instances, no way event to specify in a logically tight way what the software product is supposed to do or how it is supposed to do it."
...
"Some people opine that any software system that cannot be completed by some four or five people within a year can never be completed."
I nodded along in agreement with each quotation. The author goes on to explain that the conference that produced the words above took place in, ... wait for it... 1968. The event was organized by NATO to address, in their words, "The Software Crisis".
Depending upon how your coding went today, you'll either be heartened by that, or depressed at the state of the field.
I take back my caveat, the book will entertain and provide solice to professional software people. And it should be required reading for anybody thinking about getting into software.
In case you didn't know it already, Rosenberg reminds us, software is hard. Yes it is, yes it is.
Technorati tags for this post: Tech programming