The root of the IT industry mess is the expert bias syndrome. True, everyone is entitled to their own opinion but if we leave the subjective part of opinion to each individual, what is left must be subjected to Karl Popper’s criterion of demarcation: falsifiability.
And that is where the problem lies. Everyone has a tendency to blur subjectivity from objectivity.
The symptoms of the IT industry mess:
- standards war – see xkcd
- myopic vision – implementation-specific vs implementation-agnostic
- old habits are hard to change (class-based OOP)
- failure to recognize individual creativity (at the individual level, it’s anything goes – Paul Feyerabend)
- one-programming-paradigm-to-rule-them-all (imperative programming)
- leaky abstraction (ORM, PaaS, MVC frameworks, RPC)
- confusion between engine and interface (monolithic software)
- confusion between script and program (failure to use programming language by virtue of its design)
- confusion between data and code (why OOP sucks?)
- failure to separate social norms vs market norms (open source vs commerce)
- UML (software design is better diagrammed with graphs)
- Agile Manifesto and all software development methodologies (do I need to repeat it’s anything goes?)
The list goes on.
I’d like to rehash my earlier blog post because this summed up why the IT industry is a mess.
At the individual level, it’s anything goes (Paul Feyerabend). An individual solving a problem on his/her own is more important than any development methodology.
Once the individual is slowly pondering upon the problem and coming up with custom solutions, it’s incremental development or evolutionary process (see Karl Popper).
Now when the community is sorting out all the experience of individuals, at the collective level, we are coming up with paradigm shift (Thomas Kuhn). This is not the sort of paradigm shift that is found in the natural world. Rather, computing science is more of psychology and sociology than the natural sciences. To be specific, class-based OOP is ceding ground to prototype-based OOP or interface-based OOP. There are other programming paradigms that must be utilized based on proper context.
So having outlined a high level overview of the IT industry mess, why not go to https://github.com/ibmendoza/it-framework and see for yourself if this all makes sense.