Is SOLID Keeping Us Employed?

I just had a crazy conspiracy theory - what if the point of SOLID, Clean Code, Clean Architecture and so on, is to keep programmers employed?

Now, hear me out - mainstream OOP, especially in the enterprise, started from very verbose languages like Java (let’s ignore Smalltalk for a second). They required a ceremony to do the simplest things, and this is where abstract factories of factories of factories originated. At the same time, proponents of the functional paradigm were always looking down on the so-called “Design Patterns” and the whole OOP sing and dance. Ask any Lisp fan, and they’ll tell you that any problem can be solved by adding more parentheses.

This is also the time when Uncle Bob & Co revealed to the world their ideas. Born in the corporate halls of the America’s 90s, these principles fit nicely into the established paradigm. Instead of the concise, basic fundamentals, some vague and convoluted constructs became popularized. If you know the fundamentals of the OOP and some common sense, you don’t need SOLID. You already naturally use most of its good ideas, and ignore the contrived ones (good luck finding a bunch of programmers who would agree on, for example, what Open/Closed principle actually means in practice. Is it the same as using Strategy pattern? It’s whatever you want it to be! Just don’t touch the original code. Until you do, because of course you do).

But now, when spelled out, it introduces more ceremony - Single Responsibility is violated? Let’s refactor. Let’s forget that we don’t even use the same definition as Uncle Bob originally used. Let’s forget that it is wholly a matter of opinion and almost any “single” responsibility could be further atomized (moving data to a register would probably be single enough?).

And bam! Instead of having simple and understandable code, easy to read and change, we have a bunch of interfaces and 1-line functions. Thus, creating more job for the programmer without doing much. Or maybe even creating more jobs for the future, when it turns out that the abstractions were picked incorrectly. Or even more more jobs, because every letter is concrete enough to mean something, but vague enough to mean nothing at the same time, leading to infinite amount of jobs, because nothing is ever SOLID enough - even code examples from those books themselves.

But hey, that’s just a theory!