Reinventing the Wheel — #CowboyDeveloper Edition

Mahesh Paolini-Subramanya
2 min readSep 17, 2018

--

Those who don’t remember the past are condemned to repeat it”.
You hear this all the time, usually in jest, ironically, or sometimes even sarcastically. The thing is, this is practically an Existence Condition when it comes to the software industry, which suffers — aggressively — from Not Invented Here (NIH) syndrome. Follow the bouncing ball on this thought process in your typical #CowboyDeveloper’s head
• I’m smart
• Therefore, I know everything worth knowing
• Therefore, if I don’t know it, it isn’t worth knowing
• Therefore any precedent that I’m unaware of, is worthless

Makes sense, doesn’t it?

The wonderful thing about this approach is that it allows for any amount of Head-In-The-Sand activity, with the following behaviors being pretty run of the mill wherever #TechBros congregate

  1. Don’t Look Stuff Up. I mean, seriously, “google-ing” is practically a verb, is it really that hard to look something up? But nooooooo, you’ll find #CowboyDevelopers around you inventing it all over again, from first principles. And, while you’d like to believe that this allows them to build stuff without all the accumulated baggage & cruft of the years, the reality is that what they end up re-inventing all the mistakes of the past!
    Exhibit A here is load-management, with most everybody running through the same sequence of adding queues, discovering buffer-bloat, emergent issues, and whatnot. Sigh.
  2. Deny the Past. If, against all odds, you manage to get them to actually pay attention to a precedent (to dream the impossible dream!!), the odds are that they won’t actually learn from it. After all, the precedent is from the past, which means that it is old, and old stuff is not worth learning stuff. Because, after all, it’s old!!!
  3. There is Nothing New Under The Sun. Sometimes reality intrudes. I know, it’s strange, but sometimes it becomes impossible for the #CowboyDeveloper to avoid the unpleasant reality that there is actually something out there that is better. In these unpleasant circumstances, they will, always end up somehow concluding that it is exactly the same thing as what they’re already doing. Examples I have seen include
    • “Project and Product Management are the same” (it’s all just managing timelines)
    • “Functional programming is just programming with functions” (and they were doing it in Java way back before Lambda’s became cool).

I’ve always felt that “Software development is the art of reinventing the wheel, and more importantly taking credit for it

(This article also appears on my blog)

--

--