Simplicity relies on knowledge
After an Interview the other day, I was wandering: “Should developers really need to have deep knowledge of a specific programming language, complex design patterns, syntactical tricks, etc. If 50% of developers*, that stumble upon the project later, have no knowledge about these concepts, isn’t it counterproductive? To make sure the project can be maintained by the greatest number, shouldn’t we build software only with basic constructs?”
Here is the result of my thoughts ^^.
Why complex systems require shared knowledge to be manageable, or why achieving simplicity is hard?
Mathematicians and Physicists have always developed new technics to work with models of an ever-increasing complexity. It allows them to work on upper layers of abstraction and reach elegant and powerful solution like the famous E = mc2. It is clear that this simple formula requires a tremendous amount of knowledge to be deeply understood, but it’s the price of simplicity.
It applies also in our daily life too. Let’s says we remove the knowledge of streets’ and cities’ names, if someone ask you the direction of the closest shop, it would be manageable. But what about the direction of the shop on the other side of the city, what about how to get to the other side of the country… The farthest the destination, the thicker should be our common dictionary.
The same goes for the Software world. To work with complex systems, we need to share a common vocabulary and technics to create solutions that are powerful, yet manageable (and apply them).
Recommended by LinkedIn
So no, we can’t achieve simplicity without this common knowledge, we can’t build large systems out of simple constructs only.
Next time, we will see why achieving simplicity is the ultimate goal for a developer.
*It is commonly admitted that the number of developers double every 5 years, so at any point in time half of the developers have less than 5 years of XP.