Back to Articles

Tools are Important

Tools are important

The early history of mankind was largely defined by the materials of the tools which were used: bronze age, iron age, etc. We each use tools, such as computers, vehicles, appliances, etc.

In software engineering (and perhaps other disciplines), there is perhaps a spectrum of three different kinds of tools:

  • Tools you buy
  • Tools you can get freely
  • Tools you create yourself

Which is best? Which is most efficient on time, money or resources? Which creates software that is high quality, reliable, extensible, etc?

I’m finding great value in tools I create.


My Attempts at Being a Toolsmith

Within the past 6 months, I’ve worked on several tools. I’d like to name three.

1. A personal productivity server helps me keep a daily planner and journal. It helps me track notes like a wiki on work and other things.

2. Version 5 of the website helps me post articles like this one, host games and a bio, and help tutor dozens of students in programming.

3. Developer scripts I've built on my machine have helped me automate regular tasks I do on my machine, such as creating files, starting projects, keeping files organized, or documenting projects. It has saved me so much time.

Each of these tools is in production, and can be used or is in use. They are not perfect, but I can continually improve them.


Purchased Tools

Tools take time to develop, why not just buy some of these tools?

I find some tools for purchase to have several disadvantages. And cost is often not the issue.

  • Purchased tools are generic. I’ve tried several personal planning apps, and none of them fit my requirements for a needed daily planner.
  • Purchased tools are easy to use at first, but often lack the ability to customize their functionality. While it may be fast to get a website up and running, the moment you want some custom functionality, one can waste so much time searching for how to do it. I’d rather just build it from scratch.
  • You must learn how to use a purchased tool. It also costs a lot of time to search for said tool.
  • Code becomes coupled with the solution. I’m at the mercy of a platform’s changes in the future.

With that being said, there are very good tools nonetheless out there for purchase. I think when purchasing a tool, I want for the tool to support my use case. I want for said tool to not waste my time. I also want to be able to move to another tool if needed.

Some tools, like open source software, are an entirely other category for separate analysis.


Some Tips

When beginning to build a software tool, start small and simple. Try to find low-hanging fruit. Is there something I do all the time I can automate with a couple simple commands? Tools take time to create, but this question can help maximize output and minimize input.

Test and start using tools. Ensure tools function properly before using on critical assets. Daily use of tools becomes an enormous opportunity to test tools for reliability and acceptance.


The more I build tools, the more I want my machine to work the way I want it to. The more I build tools, the more I become productive and organized.

Alexander Farrell

August 29, 2023 - Programming Courses