Master Your Tools

There are many skills necessary to be a successful software developer: language skills, mathematics, problem analysis, procedural thinking, patience, among many others. And for an area of specialization there are specific technologies to learn: Javascript, Hibernate, EE4J, etc.

All of these skills are essential to be able to perform as a competent software developer. But mastery in the craft of software development only comes with time and practice. Yes, each new technology takes time to learn, but to really master it one must understand it at a deeper level. There are hundreds of “micro-skills” that a developer needs to know to really stand out as a high performer.

Just as a carpenter has special tools for the job that differ from the tools of a plumber or a mechanic, software developers have tools that they need to master as well.

Consider the lowly text editor. Yes, everyone uses an IDE nowadays, but sometimes it’s better to quickly open a text file and make a few edits, and the IDE is just too cumbersome. Or you are switching between languages, and a different editor can do the job better. Or you need to quickly edit a configuration file. There are dozens of reasons one might use a basic text editor. But knowing that only comes with experience.

So which editor is best? Atom is so extensible. But so many people swear by Sublime Text. And now Visual Studio Code is gaining in popularity. Of course Vim and Emacs will run almost anywhere. Each of these has advantages and shortcomings, and once a developer settles on a tool, it rarely changes. Like a carpenter’s favorite plane, or a mechanic’s socket set, the tool becomes so familiar and dependable, any new sexy tools just won’t work as well.

Experienced developers know the special control keys to make changes quickly. They know the steps to open a new file without thinking about it. They know how to undo changes, copy, paste, turn on line numbers, enable word wrap and keyword coloring. They know how to add useful extensions and which ones to avoid. And they know where to go when they need help. Picking up the new sexy toy that comes out every couple of weeks will be a huge hit to productivity while all those features and capabilities have to be relearned.

All of this with a simple text editor. Then there are diff tools, source code control, SQL query front ends, remote access, search engines… each with their own special features and quirks. A high-performing developer will know the nuances of each tool, and be able to quickly use each to do the job it was designed to do.

Many developers can work just fine with Notepad or whatever tool is around. Others like to try out new toys and see what makes them special. But the high performing developer will choose a set of tools that are dependable and get the job done quickly, and master those.