Pragmatism, Elitism, Crapism
I had a conversation with a programmer about some of the concepts of object-orientation such as the SOLID principles, and the kind of code that triggers alarm bells. Their response to it all was that it was elitism.
I am typically a pragmatic guy. I’m happy to write code that is “good enough” up-front and then make it better by refactoring it. I’m also a firm believer in letting the code show you the patterns that are required to clean it up, which means allowing the code to look bad on days one through five in order to see where it leads you. If you started on day one brandishing the state-pattern, who is to say that you made the correct choice. Waiting for the code to reveal the problem that a pattern can solve means you’ll choose the right one.
On the other hand, I’m not happy to just “make it work”. I don’t believe that writing code that runs is the aim of the game. I want to be able to quickly add new features without being encumbered by crap.
So my world view is that elitism is the act of denouncing crappy code and making people feel bad about what they have written – which is a bad thing. Elitism excludes people who theoretically “aren’t good enough”. Instead of elitism, you sit down and lead people onto the correct path so they can make things better, feel valued and know how to write better code later.
So I don’t think SOLID is elitist. I think if you can’t see the value in it, it is more likely that you are following the path of crapism, not pragmatism. If you are really determined to hold this view, I think that is fine – as long as you aren’t listing object-oriented programming on your résumé.
So if you don’t really believe in the value of something, be it OOP, TDD, or Agile – don’t list it on your LinkedIn profile, don’t pretend you are doing it. Accept that you shouldn’t be searching for a role in a company who places a high value on these things.