Developers have a plethora of tools available to them. Maybe more so than any profession. New potential tools pop up monthly, perhaps daily.
Most developers I know are passionate about some of their tools. IDEs and editors tend to be a hot topic, filled with religious battles. But there are a lot of other tools we use on a daily basis that we may not think about as tools of the trade
As craftsman (yes, developers are craftsman, I’ll fill another blog post with some thoughts on that another time), we should take great care with our tools. You should be selective in the tools you use, weighing the trade offs of them versus the tools currently in your belt. You should freshen them up, keep them up to date and make sure to choose the correct versions. You should customize them, crafting configurations for them that serve your purpose. You should even create some tools, specifically for yourself but which may help others.
Choosing your tools
In Cal Newport’s “Deep Work”, the author recounts the story of a farmer outside of D.C. analyzing the value of a hay baler. It seems clear that there are obvious benefits to the hay baler for a farmer. With a hay baler, a farmer no longer has to purchase hay, and can instead produce it himself.
The farmer does an in-depth analysis. While the hay baler represents an opportunity, there are costs associated with it. Fuel, repairs, storage, to name a few. Additionally, there are opportunity costs the hay baler prevents the farmer from undertaking.
The point of referencing the story is to drive home the effort a traditional craftsman goes through in choosing his tools. Software developers should do the same.
Every tool we use comes with trade offs, and we shouldn’t take our choices in this realm lightly.
For a concrete example, let’s look at something obvious, IDEs. A classic debate in the Java world is IntelliJ vs Eclipse. I’m not going to enter that debate here, but instead use it as an example as to how you might evaluate tools.
It’s easy to go online and find comparisons of these two applications. Weighing the pros and cons of each. Software Development is a unique field in that the cost to try a tool is generally very low. I think it is worth giving each one a run through, and really exploring the pros and cons yourself. Additionally, where one tool may work for one person, that same may not be ideal for you.
Caring for your tools
I think its also important to care for our tools. That may seem an odd statement, but even computer tools need care.
There are obvious ways to do this. Updating your applications such as your editors, your programming languages, even your operating system. But there are likely less obvious ways.
Customization is an important trait of many good development tools. Many developers are passionate about their various customizations they apply to many different tools. Bashrc files, vimrc files, and others all play a prominent role.
I don’t know how everyone else uses these, but my rc (Run Commands) files and other customization files tend to pile up with stuff that I try out. I’m advocating here for a cleaning of these files.
A regular “check-up” of the health of these files should really help to streamline them. Making them publicly available will also force your to tidy these up a bit.
Plugins are another area that could use some cleaning. Any eclipse developer likely has oodles of plugins installed at any given time. They tend to hang around. Clean out the ones you aren’t using. This probably makes an even bigger difference than rc type config files. Loaded, unused plugins tend to slow an application down considerably.
Creating your own tools
You may have heard that if you ever do something three times, you should automate it. The type of automations this results in are perfect candidates for tools.
These can take a lot of forms. A great one is building your own CLI. If you have a series of common things you do in the terminal, craft your own CLI to execute these tools. Evolve it over time.
The before mentioned plugins are another great way to do this. Many developers create plugins to fix problems for themselves. It just happens that other developers have the same problem. In creating plugins to solve your own problem, you know you’re at least addressing a need.
The importance of tools
The tools you use to support your craft are easily overlooked. But they play a critical role. They are the conduit of producing valuable software. One thing I love about software development is that the output of our craft is typically tools for others in their own crafts. Sometimes its even tools for other developers!
I’ll leave you with one oft said thought. You’re only as good as your tools. Make them count.
If you liked this post, please like or share it on your social media platform of choice. I’d also love to hear your feedback. If you have time, drop a comment below.