Not invented here must die

AKA: You are not a special snowflake: Someone else has probably already written software to solve your problems

I don’t always reinvent the wheel, but when I do…

We’ve all done it. With the best of intentions:

  • Hit a ‘big’ problem
  • Spring into action writing some ill-scoped ‘software’
  • That is little more than an untested, undocumented, marginally functional widget

Only to find that a little googling would have revealed 2–3 promising free and open source candidates from folks who have already properly solved the same or similar problem.

An hour of playing / evaluation to select the go-ahead solution. Another hour for integration. Days of dev time now available for more productive pursuits, like bikeshedding your linting config.

We see far because we stand on the shoulders of other talented developers. It is indefensible that not invented here so hamstrings the community in an age where package managers (npm, yum, pip, gem) and plugin/addon ecosystems for most every major component of the modern full-stack have so dramatically lowered the cost of code reuse, especially on the web.

So, the next time you’re tempted to write a widget for giggles, even though we all know it’ll scope creep into shyte software…pause. Take a deep breadth. Chuckle at a not invented here meme. Then:

  • Identify reasonable separation of concerns
  • Decomposed the task into constituent problems
  • Remember you’re not a special snowflake. Google, github and stackoverflow are your friends.
  • Defeat in detail using FOSS software

And save yourself and the folks on your team a world of heartache.