Things have a way of growing more complex the more they’re used. Minimalist text documents eventually gave way to colors, layouts, movement and blinking animations. CSS handled the print-like styles of fonts, colors, borders and more.
At the same time, the web was lacking some sort of logical, programmatic language. Like traditional, computer-science programming, web development needed a way to run math, logic, or instructions on a web page. Until then, a page loaded based on the content, and then it was done.
It’s also become the poster child for a growing issue in web development.
The web is a unique meeting place of technical variety and low barriers to entry. While this can be a great boon to creativity and opportunity it makes the web something of a wild west.
Now, weird, bad, and absurd coding processes can be found everywhere. Development as a whole is an industry in its infancy. Unless you’re talking about cutting edge work, though, most development processes are considerably more settled.
Web developers attempt to apply as much of that applicable knowledge to ourselves as possible. One message that has been received loud and clear is “not to reinvent the wheel”. Across all kinds of development, redundant wastes of effort and program space are despised.
Does not reinventing the wheel excuse not knowing how to make the wheel in the first place?
However, when an open source developer felt he had been betrayed by the team behind NPM, he deleted the code he contributed and deleted his account.
What started as a small dispute suddenly had a world-wide impact. One particular contribution this developer made, called “left-pad”, was 17 lines long. It’s a pretty fundamental wheel if there ever was one, and so was included in a LOT of projects. Even more important, it was a included in projects that were then included in OTHER projects.
The end result? Thousands of developers working on projects of every size, suddenly unable to run their programs. Whether they had included “left-pad” themselves, or unknowingly used any other code that referred to it instead, they all came to a standstill.
The resolution was fairly swift, once the issue had been identified. But in an industry where you learn the methods to avoid wheel-inventing before you learn how to make the wheel in the first place, how long will it be before we have a repeat incident, or something worse?
There are already some safeguards and ideas in place to help solve this problem. Most developers who seem aware of them, though, are those already at the top of the industry and ahead of the problem. Spreading that information reliably and uniformly will be a huge step forward.