Skip to content

tobloef/wheel-reinventors-principles

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

14 Commits
 
 

Repository files navigation

Wheel Reinventors Principles Banner

Why reinvent?

The Wheel Reinventor enjoys reinventing wheels. A lot of wheels have been invented before, some are even very popular. So why does the Wheel Reinventor make new ones?

  • Learning: By reinventing the wheel, the Wheel Reinventor learns much. Not only about how to create new wheels, but also about how existing wheels work.
  • Specificity: No one wheel fits all. When creating their own wheel, the Wheel Reinventor can tailor it for their exact use case, whether that's a wheelbarrow or a monster truck.
  • Innovation: Although popular, some existing wheels are quite bad. While reinventing, the Wheel Reinventor has the opportunity to explore new possibilities in a way that existing solutions cannot.
  • Enjoyment: Wheel reinvention does, in truth, not need much of a reason. It can simply be out of love of the craft and the satisfaction of work well done.

Challenges

The Wheel Reinventor must however be careful. Reinventing wheels can be time-consuming and the end product may be inferior to existing solutions. The Wheel Reinventor also tends to fall into infinite rabbit holes. To create a wheel, must they also create the hammer that they need? Must they fell a tree for the hammer's handle? If the Wheel Reinventor begins by planting a forest, they will not be building vehicles any time soon.

The Wheel Reinventor must therefore first and foremost be deliberate. They must consider whether it is appropriate for a given wheel to be reinvented, especially when accountable to others. They must also consider the scope of what is being reinvented (and crucially, what is not), as to not get needlessly sidetracked.

Likewise, the Wheel Reinventor must be honest with themself. They must keep in mind why they're reinventing a particular wheel and not lose sight of that. A wheel reinvented for learning looks different than a wheel reinvented for innovation.

Technical Principles

  • Minimize third-party dependencies. Master the platform's built-ins and accumulate your own toolbox over time.
  • Embrace the strengths of DYI. Create what you need and little more. Be wary of abstractions made for fabricated use cases.
  • Avoid magic where possible. Try to stay close to the metal, preferring simple tools and not losing touch with the underlying technology.
  • Share your work. Open-source your code where possible. Write about your approach and let others learn from your experiences.

Projects

Some of my projects that explicitly follow these principles are listed below:

  • Build Tool: Modular build system for web projects, written in Node.js
  • Putpix 3D: 3D software rasterizer, written in TypeScript

About

Why and how I sometimes write stuff from scratch

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published