Thinking About Software
This is a list of books we've found that help readers reason about the mathematical and human aspects of software development.
Dealing With Humans
-
Originally published in 1957, this text by Fred Brooks is a classic of the genre. There is a reason it is listed first. It is one of the few texts on managing software teams that has it's own wikipedia page.
If you have heard of (or have experienced) the idea that adding software developers to late software projects causes them to be even later, this is an affect that was first identified in this text. This is the "Mythical" Man-Month measure from the title. It is not a long text and can easily be read in a week, reading a chapter at a time and then pausing to consider what was read.
-
Peopleware : Productive Projects and Teams
Described as "Mythical Man-Month for the 1990s", this is another "must-read" for anyone interested in how groups of humans collaborate on technical projects. It can also easily be read in a week of evenings, taking a chapter at a time and reflecting on the material.
Constructing Software
-
Structure and Interpretation of Computer Programs (SICP)
This text by Abelson, Sussman, et al. was the text for the introductory programming course at MIT for at least a decade. Code examples in the text are provided in Scheme (the programming language) which can frighten readers unfamiliar with functional programming. Yet it is one of the clearest explanations of software engineering concepts which transcend language. A JavaScript focused edition was recently released, but reviewers found it lacking in comparison to the original.
The text is available as an online download. Scheme is not a difficult language to learn and understanding concepts it exposes will only improve the professional developer's understanding of the craft. Scheme.Org maintains a list of Scheme implementations for most modern platforms.