DEV Community


Discussion on: On the Occasional Misdiagnosis of "Not Invented Here Syndrome"

kspeakman profile image
Kasey Speakman • Edited

Great article!

I think the key point you touched on is that the the core of your business should always be invented there. Otherwise, your business has no reason to exist over another constructed from the same commodity pieces.

I also find that I reinvent a few lower-level things simply because the big name options that exist out there have created too complex and/or too opinionated of an abstraction. For example, I wrote my own libraries for:

  • Event Storage in Postgres - 5 files 337 loc 2 complexity
    • SQL wrapper (SlimSql) - 9 files 300 loc 7 complexity
  • Validation - 4 files 171 loc 10 complexity
  • URI Routing (server side) - 7 files 667 loc 22 complexity

These numbers are from scc.

All of these projects started on the weekend at home out of frustration with the tools available to do the same job. I started working on it just to see if I could do better. The end result turned out useful enough that we use it at work.

Reinventing a wheel works well as an analogy because using a wheel is simple. You bolt it on and it works. If it breaks, you get another one off the shelf and bolt that on. It is the manufacturing of it that is more complicated. But it's already done for you. If wheels start needing significant investment to use correctly, they should be reinvented. Which is what I did with the libraries mentioned above.