While working with a new client who had some green developers, it struck me that they only knew about 20% (totally arbitrary for this example) of the features of the tool they were using daily. For example, when asking them if they preferred merge vs rebase, I was often met with blank stares. Similarly, when using their editor, I would often find them manually searching and replacing renamed variables, rather than using the built-in feature of the editor.

As an automation specialist, I have a natural drive to find the best solution to simplify the tasks I perform regularly, and it surprises me when others do the same. Here’s a list of the things I do daily to ensure I master the tools and technologies of my trade:

  1. Order the tools and tech by their most used. For example, I use Git everywhere, followed by VS Code for editing. My editor is situational; VS Code for more substantial edits, or Vim for commit messages/smaller edits, so it goes second. Then in third place will probably be my programming language. I change this more frequently (depending on the client). For a developer, the development language may be first.
  2. Read, at a minimum, the introduction documentation. Mastery will only come from reading all of the literature. I have learnt the hard way that when I experience some odd behaviour, there will be documentation discussing the nuance, somewhere.
  3. Start reading new and old release notes for said technology. This will ensure you stay up-to-date with new features, and you can often find undocumented features too. This is especially true of open source technology where documentation isn’t always as current as the code.
  4. Subscribe to blogs that discuss said technology. This is where I often learn tips and tricks that even the developers may not be aware of. People are very creative and often use tools in ways the developer never intended; sometimes bad, but mostly good.
  5. Practice. Without practice, you will never find problems that need a more creative solution. Experience is merely another word for “time using/doing”.