mokacoding

unit and acceptance testing, automation, productivity

How To Sharpen Your Software Developer Tools

My grandfather was a farmer. You wouldn't have referred to his shed as tidy or neatly organised, but he always knew where to find what. All his tools where always kept sharp and ready to use. His hoe in particular, had been used so long that the handle had been made smooth and shiny, fitting his grip perfectly.

As software developers our hoes and shovels are the tools we use every day: text editors and IDEs, version control, web browser, Sketch, etc. And like a good farmer would do, we have to keep them sharp.

But how do you sharpen your IDE? You certainly cannot get a wet stone and pass it through the Mac...

For us to keep our tools sharp means to be constantly tweaking their configuration to better suit our needs and current workflow, and to always be learning new ways to use them properly.

Here's some practical advices on how to sharpen your tools as a software developer:

  • Track what you are doing
  • Explore the menus
  • Learn keyboard shortcut
  • Use snippets, aliases, and scripts
  • Research new tools

Track what you are doing

The very first step is to track the way you work, and the tool you use. In order to know where to start sharpening.

My recommendation on this is RescueTime, a little app that will run in the background and keep track of the software you use. At the end of the day, or the week, you'll be able to see how long you've spent on any programs on your machine, and much more.

Another useful thing to do is to keep a list of the tasks you do during the day. It could be a notebook on the side of your desk, or a Trello board.

Once you've gathered this data, and please note that you can do it in just a day, so there's no excuse to put this off, you can have a look at it in the search of the most used apps, recurrent tasks, or places where you spend more time that you though, or ought to.

These are all good candidates to apply the following tips.

Explore the menus

We don't know what we don't know, you might be using the most powerful IDE in the world, but if you don't know what it can do for you, you are not leveraging it properly.

A good way to get to know what your app has to offer is to go through its menus and simply read all the options. It doesn't take long.

Pro tip for Mac users, most advanced apps show different options in the menu if you go through them holding the option (alt) key.

The same goes for command line tools, make sure you go through their --help or man.

Learn keyboard shortcuts

I am a big fan of keyboard shortcuts. All the time saved by pressing keys while your fingers are already on the keyboard rather than having to carry the mouse around is time saved. And they all add up.

If you are a Mac user and you've been exploring the menus like suggested in the previous tip you might have already noticed that most options have and associated shortcut shown next to them.

You can also map actions that don't have a shortcut to new ones that you define.

Use snippets, aliases, and scripts

If you find yourself writing similar constructs often, like if <this> { <do this> } else { <do that> }, consider writing a snippet for them instead. This way you will be able to print them on screen with just a couple of keystrokes.

And what about all those time wasted typing bundle exec or git commit, why not making an alias for those? Mine are be and gc.

Finally, nothing is more powerful then the terminal when it comes to tooling. There are a myriad of command line tools that you can pipe or script together. You can write scripts to automate any kind of mundane task. When it comes to automation your imagination is the limit.

Research new tools

If through your tracking you notice that there are some tasks that are taking you longer that they should look into ways to smooth them.

Take git diffing for example, once you find the app that works for you everything will be clearer and easier.

And if you cannot find a tool that suits you... build it!

This is a marathon not a sprint

An important thing to realize is that you are going to be writing code for a very long time, and that that's why a lot of little improvements becomes relevant. Certainly running your app with Cmd + R instead of moving the mouse to the Run button, or setting gp as an alias for git pull is not going to save you that much time as a single instance, but how many time do you execute those commands during a day? And during a year? And how many similar little improvements can you make in your workflow?You will soon realise how powerful this is.

This interview with Ben Orenstein is packed with good tips. He suggests to spend the first 15 minutes of your work day on sharpening your tools. I've been doing this (more or less) for a while, and I'm very happy with the results.

I'd love to know what are you favourite tools and hacks, and how you keep the sharp. Get in touch on Twitter @mokagio, or leave a comment below.

Vote on Hacker News