Rebuilding the Wheel is Ok

Being unique will paralyze you

When learning a new skill in software development, coupled with our new skill are grandiose ideas of what we can create. Then the million dollar question appears, “Has someone done this before?” The need to be unique cuts the legs off a great project/idea and relinquishes the excitement of using new skills. Early in my career I feared my ideas, if they weren’t unique, lacked value and purpose. Only when I worked through that fear did I discover the journey is the reward (yes, very cliche).

Software Products are Frankenstein’s Monster not Zeus

In software not only is this obvious, but it is celebrated. A great example of this, is Spotify. If you go to Settings -> Scroll to the bottom -> Tap “Third Party Software”, you will be presented with an array of open source software utilized by the biggest music streaming service in the world. It is apparent that software is patched together to make something great. Software isn’t just a single entity born with inherent value and greatness (i.e Zeus). Think about all of the software that goes into building out a REST API. If you’re using any mainstream frameworks (Spring, ExpressJS, Ruby on Rails), you’re collaborating with code decades old to handle http request. Even with these frameworks, they are just pieces of the greater software product.

My own wheel

I am an avid Esports tournament watcher, former professional competitor, and often sponsor tournaments for the games I love. You can watch one of my favorites, House of Chaos, here. With my hands being older and less able to participate, I use my software skills to contribute to the Esports scene anyway I can. One idea was to integrate tournament bracketing and orchestration (reporting match results, recording active participants, etc.) with Javascript. The most popular tournament orchestration website is Challonge. They were missing an official Javascript SDK and I wanted to change that.

NPM has everything…everything

With my idea ready to be acted on, I headed to NPM and searched if anyone had created a Javascript SDK. Turns out there were quite a few people who had the same idea as me. Even in my seasoned time as a developer, I was discouraged that others had found fire first, however I didn’t let that stop me. First thing is to write down technical specifications for your package and here is what I came up with:

  • Typescript – I am new to this language and was interested in learning it
  • Axios – This seemed like the best Http client of choice for NodeJS projects and 3rd party API integration
  • NPMJS – Hosting my package on the largest Javascript package repository seems like a good idea
  • Github Actions – Since this project would require updates as I integrated more of the Challonge API, adding CI/CD around package releases made the most sense.
  • Sonar – Reporting test coverage
  • NYC – NodeJS package to build test metrics
  • Mocha – NodeJS package to write test

The giant list above is all the technologies, languages, and practices I learned building the SDK out. If I had given up before because someone else had the same idea, what would I have learned? This isn’t my first time releasing open source software, it is one of my goals for 2021, but this project was different. I had to release a package that could be used by others. The amazing, and frightening, thing about Open Source Software is the customer has capabilities to build your project, peeking under the hood, and suggesting how things can be better (a pull request). With all that in mind, my project was officially released 2 months ago. All links to the repository and npmjs will be provided at the end of this article.

Always move forward

Forward is the momentum that has made the tech industry what it is. Great developers are the exact same way. Rebuilding the wheel isn’t just about getting over fear, it is harnessing that fear to keep learning. Learning, failing, learning, succeeding, learning is the only infinite loop great developers refuse to exit. It is a needed drive for evolution that brings out new generations of thought leaders, software practices, and frameworks. So go build that wheel, fail because it is square, and don’t give up until its round.

Source Code

Github: https://github.com/Farosoft-Open-Source/challonge-js-sdk

NPMJS: https://www.npmjs.com/package/challonge-api-js

Leave a comment