Difference between revisions of "Books/Code Complete"

(First two chapters)
(No difference)

Latest revision as of 13:15, 28 June 2020

Author: Steve McConnell

Edition: 2

I haven't ever seen a book on software receive so much praise as Code Complete by Steve McConnell. I bought this book a long time ago but didn't really appreciate it until I had a good number of years of software engineering experience under my belt.

Software Construction

There are many activities associated with the development of software systems. But the most time-consuming one and the one that cannot be avoided, unlike others is software construction. This is where the rubber hits the road; the state of the art meets the state of the practice.

Software construction is the main topic of this book.


Since software is a relatively young field, there are many metaphors about the activity of software development. Most metaphors though correct to an extent are usually inadequate and misleading. Software development methodology of the 70s is distinctly different from that in the 90s and 00s. This is an era where there was a shift in thinking from waterfall to agile methodology. The metaphors of Fred Brooks' time are no longer relevant. Metaphors like writing, farming etc. fail to cover the diverse range of activities that software covers. Software is being developed in an incremental, iterative and even evolutionary fashion. The author believes that the right metaphor is "accretion", but prefers to use a building construction analogy for software construction throughout the book. One metaphor cannot cover every aspect of software development. The building construction analogy seems to represent most activities done in software development. The author compares construction of small software to building a kennel for a dog but also points out that some of the software built these days is the building construction equivalent of the Empire State Building. The way construction is approached in building a kennel vs. a skyscraper is vastly different, as it is in software construction as well.