Chapter 10. Ancient Philosophers
It may seem odd to find a chapter about ancient philosophers in a book about programmer productivity, yet here it is. It turns out that some of the general discoveries made by ancient (and not so ancient) philosophers have direct bearing on building quality software. Let’s see what a few philosophers have to say about code.
Aristotle’s Essential and Accidental Properties
Aristotle founded many of the branches of science we know today. In fact, the study of science pretty much traces back to him. He categorized, cataloged, and defined entire fields of thought about the natural world. He also built the foundations of logic and formal thinking.
One of the logical principles Aristotle defined was the distinction between essential and accidental properties. Let’s say you have a group of five bachelors, all of whom have brown eyes. Unmarriedness is the essential property of the group. Brown eyes is an accidental property. You can’t make the logical deduction that all bachelors have brown eyes because the eye color is really just coincidental.
OK, so what does this have to do with software? Extending this concept a little further leads us to the idea of essential and accidental complexity. Essential complexity is the core of the problem we have to solve, and it consists of the parts of the software that are legitimately difficult problems. Most software problems ...
Get The Productive Programmer now with the O’Reilly learning platform.
O’Reilly members experience books, live events, courses curated by job role, and more from O’Reilly and nearly 200 top publishers.