I’ve watched software developers argue about the right way to do things for most of my career. Sometimes it’s around the technologies or patterns that are acceptable to use. Sometimes it’s around the right things to have as part of the interview process for candidates.
Why does this happen? I’ve been nagged by this question for years.
Why do people argue about what programming languages are right? Or are just plain wrong?
Matthew Crawford, who has a PhD in political philosophy, is a senior fellow at the Institute for Advanced Studies in Culture at the University of Virginia, and is a motorcycle mechanic, wrote about this topic in his book, Shop Class As Soulcraft. I recommend everyone who does knowledge work read this book.
First, let’s consider the case of someone who makes something, such as a machinist. When they make something you can measure it. You can check if it meets the design, if it is within tolerances, and have concrete measures to the quality of the work. Doesn’t matter how they dress or how they talk. You can see if they do a good job.
This same thing holds true for many of the skilled trades where you can measure and assess the quality of the work.
But with knowledge worker jobs, such as software, how do you measure the work. There are no direct measures. So, people make them up. Do people have the right degrees? Do they use the right patterns? Is the software written in the right language? These end up getting layered on.
Rarely have I heard anyone justify why one pattern or technology is right or question who gets to choose who gets to decide what’s right.
When there isn’t a way to measure the quality of ones work we try to fill that in with made up measures.
This is why someone can create something really useful in PHP or create a profitable application that’s a monolith and have a bunch of people looking down on them for doing it that way.