The impact of mastering our day to day tools


Would you like to be a more effective software developer? Do you see some of your teammates delivering feature after feature, and you wonder how they do it?

When I faced this dilema many years I thought just by coding I would be able to achieve this. Although this is in part true, later in life I discovered that that’s not all there is to it. There are a few things that we can do about this, but today I will focus on one in particular.

Master the tools.

If I hire someone to renovate my house, someone with experience doing similar jobs will probably do a better or quicker job. Nonetheless, I would expect that whoever I hire will know how to use a hammer, a saw, screw driver, etc., irrespective of their experience, and proficiency.

The same applies to us. We may be experts in the programming language that we use and how to solve problems, but I have noticed a pattern of neglecting the other tools that we use to do our job, like version control systems, command line commands, or our favourite IDE.

What I’ve observed over time is that engineers just learn the bare minimum needed to do their jobs. I think that that is fine, until it is not. There’s a point of inflection when we need to know more, but sadly the blind eye is normally turned to this, preventing software engineers from being as productive as they could.

I once worked with an engineer that wouldn’t do Ctrl-C/Ctrl-V: instead, he did copy/paste with the mouse, using the context menu. This wouldn’t be an issue if he was fast with the mouse, which he wasn’t. He decided to not use a keyboard shortcut to be more effective, and instead waste valuable time that he could have spent on actual work.

Although that is a bit of a extreme example, I see similar behaviours regularly. For example, many engineers type git commit many times a day instead of using a short alias like git co. That is 4 characters that you save typing, which over time leads to many seconds or hours, depending on how often you do it. Whether this is worth doing or not depends on how fast you type, and how often you run the command, but you get the idea.

If you know what you want to optimise you could probably just google it and find exactly how to do that. For the example above, you can google git alias. However, some of the tools we use provide several features that could have a positive impact in our performance if we just knew about them.

For example, during many years I exclusively used Vim to write code. Despite this, I only used a couple of fundamental commands to get the job done. I wasn’t as productive as I could have been until I decided to master the tool. I read a book and other online material that helped me be aware of all the features that Vim provides, and learn those that I could take advantage of. As I became more productive there were other features I could take advantage of, and since I knew that they existed I just needed to learn or remind me how to use them.

My advise to you is simple: identify the tools that you use the most to do your job and how they slow you down. Then, learn about them. Don’t let the tools control you, instead, master your tools.

Jose Miguel


2 responses to “The impact of mastering our day to day tools”

  1. Awesome post.

    A speaker I admired once referred to this as tool sharpening (https://www.youtube.com/watch?v=AlP-ESzWYh4) – and I love that idea of dedicating a little time each day to just improving your workflow.

    I didn’t use to care as much about this for others, but I find that beyond just efficiency, the more manual workflows can tend to get in the way of our thinking or coding, as opposed to just being able to “write code at the speed of thought” as a good Vim workflow often provides.

    The trouble with these sorts of habits, is that our brain is hardwired to persist with them, over learning the new approach. I’d encourage folks however to persist with that momentary pain and discomfort, and before long it too will be a positive habit all of its own.

Leave a Reply

Your email address will not be published. Required fields are marked *