As programmers, we’re used to leveraging all kinds of tools that help us to do our jobs be it something such as a debugger to something that helps us standardize our code to something that helps us to deploy our code to whatever platform we’re releasing our product.

And there seems to be a pattern that emerges for many of us as we work through our career:

  • We often try to write everything we can for ourselves (we have the time, energy, and desire to do so).
  • We start leveraging tools that helps us to achieve our primary goal (we have the know-how to use pre-existing, high quality utilities that help us to write better code or work with a larger project).
  • We develop a work flow for working in our niche and outsourcing all of the things that can be automated to third-party tools (we know what we need to focus on and leave the rest to other tools).

But do these tools that are part of our workflow always help us get our work done on a small scale? In other words, why don’t we remember to build tools for ourselves to use?

Remember to Build Tools

In Letters to a New Developer: Learn How To Build Tools, Jamie writes:

If not, a good start would be to write a shell function or alias to make it shorter to write git add or git commit.

Then, write a tool that takes a JSON file and pretty-prints it to the terminal.

I’m sure many of us have done something similar to this already but the reason for my sharing this is so that we don’t forget that we have the ability to do this.

Back in My Day

Early in our career or in our day-to-day, it’s easy to get excited about writing everything from scratch but I think that can burn us out to the point where we just want to write the things we need to write for our job and let other tools help us.

There’s nothing inherently wrong with that and pre-existing tools designed for developers should be used. Of course.

To this day, though, I find opportunities for little things that I want to streamline:

  • There are small utility plugins that I write to help be when writing in WordPress,
  • There are a list of small programs or scripts I want to write to help automate certain, repetitive tasks I do on a monthly basis I’d like to automate (such as using ImageMagick and HEIC to JPEG converters for backing up my photos),
  • There are things I’d love to have set up and run on a small machine like a Raspberry Pi to help with having a smart home.
  • And on the list goes.

My point being that we don’t always have to think about writing something that has to be #BuiltInPublic or something that we’re trying to write for others to use.

As I’m writing this, there’s a contractor working on a project on the house next door. He has his truck, his trailer, a tool box filled with things we’d all be able to recognize. He also has a few things he’s fashioned himself to help hold lumber or wood for measuring and cutting.

He’s not selling them, he’s not marketing them, he’s just built them for his own use and he takes them with him from job to job.

And that’s what I’m talking about: Sometimes, we can just build things that help us to do our own thing.