dont choose boring technology
A couple of days ago I came across an article titled “Choose Boring Technology”. A few of my friends had shared this on Linkedin and since it was also referenced in some of the mailing lists I am a member of, I felt compelled to write up a response.
McKinley Paradigm of Boredom
In his article, McKinley argues that a software engineer’s “function in a nutshell is to map business problems onto a solution space that involves choices of software” and argues that best tool for the job will inevitably lead to a mess. The thesis makes the assumptions that choosing from very well-known technologies correlates with easier/cheaper maintenance in the future, so we should naturally be biased towards them.
McKinley offers a sort of answer to the ‘best tool for the job’ approach, by substituting global tool optimization, conceptualized as choosing the single stack which least poorly addresses the whole of the business’s global processes. Another implicit presumption in his article is that classic technologies are more likely to perform across the breadth of processes demanded by the business’s project(s) globally.
Further on, the article talks about boredom as something to be embraced - which I have a feeling comes from facing a rebellious team who is struggling to have fun with the current stack.
Boredom, Polyglotism And “The Best Tool For The Job”
Before I start my rant I have to say I cannot go so far as categorizing any of the good old relational database system as boring, or as far as calling simple usage of MongoDB, Redis or any industry-proven nosql db as innovation. No technology is boring, except PHP! The best reason to cherish “best tool for the job” thinking is, at the very least, it gives some brain stimulation and some fun conversations. During which you might very-well reach a new found love of Postgres seeing how it perfectly fits in the puzzle. You will then embrace your current stack and ‘unboringify’ the technologies you already use. It’s only through consideration of different technologies that you might correctly evaluate your long-term costs of keeping a system working reliably. A meaningful “Best Tool For The Job” argument looks into the bigger picture and always considers all the costs: Not only it includes costs of operation, training and any extra baggage, but also, it considers the human costs where boredom is going to cost you dearly. It never assumes anything beforehand. It cannot presume old and very well-tested reduces the cost of operation without a solid argument. This would create that sense of boredom, and it will increase the human cost. And it can’t be taken as a given that, as your business grows, these classics will age well, better than the currently younger and lest tested choices. What proves that they will fit better with other ecosystems and expertise of available personnel?
The human mind is not meant to embrace boredom. The weight of depression and stagnancy it brings upon will crush you to death. “Boring” should be conflated with “bad.” Java, MySql or any other good technology should not be conflated with “Boring”. Boring happens only when we close our mind to ‘the new’ with a dogmatic view of working traditions. Being one-sided is a bad thing. For people to not embrace their experimental and innovative mindset is a very risky thing. It’s might pay off better in the long term to go for “the desirable middle between two extremes, one of excess and the other of deficiency.”
“Your hand opens and closes, opens and closes. If it were always a fist or always stretched open, you would be paralysed. Your deepest presence is in every small contracting and expanding, the two as beautifully balanced and coordinated as birds’ wings.” Rumi, The Essential Rumi
McKinley goes on, saying “Polyglot programming is sold with the promise that letting developers choose their own tools with complete freedom will make them more effective at solving problems.” This way of defining polyglotism is naive at best and motivated reasoning at worst. There is nothing inherently wrong or right about polyglotism. The very basic idea is only to harness the power of multiple languages in their respective areas of strength. There are many successful companies that embrace polyglot world, Google being one. I don’t believe thinking software is capturable by the rigidity of axiomatic systems as presented in McKinley’s Paradigm of Boredom. It all depends on time, space and problem at hand!
Normal problem solvig is as described in McKinley Paradigm of Boredom; you stay in the paradigm and follow the traditional methods of solving problems. There is nothing to back the claim up that this is a formula for success. These very methods, now called mature, did not appear out of nowhere. Someone, somewhere was being a clever cowboy and decided to try things differently. Industry is full of those examples. This is where revolutionary science comes in. Of course a lof of these innovations - like any innovation - can fail miserably. But if it wasn’t for all the failures we would never have the successes that change us and got us to the technologies we use now. Some worlds are meant to be chaotic. Imperfect.