A few books about software development

Michel Blancard
3 min readJan 25, 2019

--

Bibliothèque Nationale de France, Salle Labrouste. Author: Adelphilos

Vous préférez lire en Français ?

Everything can be learned by oneself, but one life is too short to make all possible mistakes and learn from them. I am grateful to the authors of the following books, who took the time to structure the knowledge they gained from many years of practice, so that their readers could move faster.

This catalog of 23 technical patterns is famous to the point that it’s not even a requirement to read it to be familiar with most of its patterns.

This is an excellent introduction, clear and concrete, to agile methods. A salutary reading, especially if you have never heard of anything but SCRUM.

The programmer’s common sense. This book is a relatively easy read, so it’s a good starting point.

Writing code that works is not the hard part. It’s all about writing code that is manageable and can survive the inevitable changes of requirements. This book deals comprehensively with the problem of maintainability of computer code.

Extreme Programming (XP) is not really a method, but rather a set of practices from which a technical team can draw to build its own method.

No, Test Driven Development (TDD) is not a software quality method. It is a software development method whose objective is to increase productivity. Tests are only a by-product. This book is a refutation of the (widespread but rarely acknowledged) hypothesis that writing tests is done at the expense of development time.

Refactoring is improving the internal structure of a code without changing its apparent behavior, in small elementary steps (otherwise the appropriate term is: “redesign”). Refactoring requires a “test harness”.

This book contains both a catalog of high-level patterns to model a business domain, and tools to think about the articulation between the “model” and its implementation.

It is a catalog of architectural patterns (but what is “architecture”?). For example, there is a description of the pattern “Model — View — Controller”, a term often misused. Its reading is quite demanding, I recommend starting with Domain-Driven Design.

Yet another catalog of software architecture patterns, often cited.

From the above list, we can reconstruct the history of software engineering over the past 30 years. First, we observe the birth and then the evolution of the agile movement, in contrast to the methods still called “traditional” (or more negatively, “waterfall”) today. The V-model is inherited from the gigantic military projects of the Western bloc powers¹. On the contrary, the agile movement draws its inspiration from the East: from the Toyota Production System² developed from the 1950s onwards. The coherence of the movement is ensured by the evangelization effort of the signatories of the agile manifesto.

The pattern language movement is the second essential movement in the world of modern software development. Patterns, gathered in catalogs that the developer keeps handy on his desk, are general solutions to problems that occur frequently. Together, they form a common language for the developer community. This school of thought recognizes architect Christopher Alexander as its spiritual father. However, it owes a lot to the Smalltalk community of Xerox PARC in the 1980s, in which it developed and acquired its reputation.

Like all true classics, these books are rarely read, especially since universities do not require their reading. The damage to the software industry is substantial: some practices (e.g. TDD, DDD) are still in the minority. Others have been downright misappropriated.

Notes

¹ See the wikipedia article about the V-model.
² Kent Beck claims the TPS legacy in Extreme Programming Explained

--

--