Know your tools – and hone them

Software development is much more than churning out code and learning new programming languages or frameworks, which is a fact I'm also trying to prove with this book.

All good craftsmen know their tools inside out. We, software developers, are craftsmen, too, and should do likewise.

Tools everywhere

Have you considered how much of your time at work you spend using the tools of the profession?

You wouldn't get far just by thinking about how to write code for implementing features, refactoring code, or fixing bugs. You must translate your idea into the language computers understand and make it work reliably. For that, you need a multitude of tools.

First and foremost, you must write the incantations using a text editor, which is an essential tool for software developers, but you must also master several other non-coding tools.

You'll frequently use the shell for file operations, searches, and short, one-line scripts, so it's worth investing the time to learn it well.

It's worth getting really good at version control systems (mostly git) to deliver your work, save your state, and cooperate with others.

Expanding the set of the things you can do with the browser's developer tools (or some other IDE if you don't work in the browser) is also a force multiplier.

Learning touch typing and improving your typing speed can increase your productivity.
Even though AI is writing more and more code, typing faster still lets you get more done and write more AI prompts in the same amount of time.

You'll use several online services, CI servers, team communication apps, project management apps, issue trackers, and graphing software. Not to mention all the possible ways you can leverage the ever-increasing set of LLMs for coding and debugging.

Sharpening your tools

If you add all of the above, you realize it's where you spend all of your time, except the time you spend purely thinking about problems (which is negligible, in my experience).

Since you spend so much of your working time with them, the investment in getting to know them profoundly pays off very quickly. Not only will you be able to do your job quicker (or to be able to do it all!), but tools can automate many monotone tasks, increasing your level of enjoyment.

If you know shell shortcuts, you'll type less and make fewer errors. If you know some basic commands and can write shell scripts, you'll be a wizard with files, processes, and the network.

If you wield command-line git powers, you can do most of your version tracking without leaving the shell and produce consistent commits that are easy to revert or apply.

Mastering the browser's developer tools will reduce the time you spend writing and debugging CSS or JavaScript, finding memory leaks, improving performance, and so on.

Customizing your tools

Contrary to craftsmen who use physical tools, we have a huge leg-up: we're not constrained by the physical world and can more easily and widely customize our tools.

The most apparent customization is the text editor. We select our plugins, decide where we put the sidebar (or we can hide it completely), define our keyboard shortcuts, and choose which font and theme we use.

In the shell, we can define our aliases and write short functions to make recurring tasks easier to do or remember.

The more time you spend with a tool, the better investment customizing it becomes.

Learning from others

I've always liked to glimpse at what tools other developers use and how they use them. Even after more than two decades of developing software, I still get a kick out of seeing my colleague's setup during a pairing session and then asking questions about it.

Don't be shy about this. Most developers like to talk about apps, plugins, commands, aliases, and workflows they use and are happy to share their knowledge.

Watching and asking others is how I learned about most of the tools I use and love.

Summary

  • As software engineers, we spend almost all of our work time using tools, so spending time to know them better is a wise investment
  • The more time you spend using a tool, the more time it's worth spending to know it better
  • Not being confined to physical materials, we have the luxury of being able to customize our tools easily
  • Learn from other developers: watch what they use and how during pairing sessions, or ask them directly.