Wednesday, July 3, 2019

The Programmer's Toolchest

The Programmer's Toolchest

Created on 2019-07-02 14:33

Published on 2019-07-03 16:14

No alt text provided for this image

One of the most inspiring images is the above from the "Fine Woodworking" book back cover. It is emblematic to illustrate the attention for quality tools that ease the work professionals in some domain have. On my home DIY attempt I also tend to buy better tools as I find them easier to use, I got spare parts and they generally last longer in workshop conditions.

When it comes to software the things get more complicated as there the expensive tooling is not necessarily the best one. Clearcase or TFS although expensive do not do a better job than Git that is free. Neither MSVC compiler does a better job than GCC. So it becomes hard to choose a good tool for one's toolchest.

I generally select software tools after some time playing with them and I always weight up both the qualities and the price of the tool. I have many free tools in my collection but there are also some that cost, although there are also free alternatives for them. I have worked many years with some free tools before changing to non-free ones or to other free tools. Among the qualities I appreciate in a tool are:

Jacques Carelman - Teapot for Masochists
  1. Ease of use - It makes no sense to have a tool you cannot operate or if yo can operate it is not comfortable for longer usage. It would be like continuously using Jacques Carelman's contraptions. So before adopting a new tool I play with it a couple of weeks to check how it works on my system, maybe on another operating system. Then I try accomplishing both a simple, routine task with it as well as a more complicated one. Sometimes the decision is easy: VS vs. Rider but sometimes is damn hard: Eclipse vs. Idea, HG vs. GIT. In every situation have a tool that you know well and handle it perfectly. Know it's options, config files, keyboard shortcuts.
  2. Community - the more people are using it the better is it. Most of the time this is true, although there can be some more obscure tools or libraries that accomplish the job better or cheaper. Sometimes is wiser to keep a look on the second runner and also make some investments on them just to protect from the hype. AngularJS anyone today? It was great some years ago. Flash? Crowd is generally right but it can be also manipulated. So again, testing the tool and comparing it with alternatives helps a lot. If one can also read the source code, there are some important hints about the heath of the project.
  3. Coverage - I have my favourite tools for every aspect of software development: design, coding, testing, packing, operating. In every aspect I like to have a handy tool that ease my work and that, ideally, can be used to automate tasks.
  4. Specialized/Generic - as with power tools there are some tools that can, as a cordless drill can drill and screw, do several things. One of these tools is VS Code - you can do almost anything in it, a feature that only Emacs had. But VS Code still lacks behind other specialised tools, for example PyCharm when it comes to managing projects, libraries, virtual environments. So it's good to have both in portfolio and use them according to the actual needs.
  5. Extendable - I have mentioned Emacs before. It was the first true extensible tool. It could be customised from a Tetris game to a high end Prolog environment. Nowadays most of the tools follow the same trend and they can be adapted to get more functionality that initially designed for. I'd rather use VS Code to VS as the former one can be customised in so many ways while the latter one is quite rigid.
  6. Self-contained and small - I do not want to install 32 Gigabytes of libraries and frameworks just to run a single application. And I also do not want that the system gets bloated and unstable just because I had to install a design tool.

In the end how much should one developer invest in the tools used? To make again an analogy with the tools one buys for himself I consider that it would be fair to invest the same percentage of money in software tools as in DIY. If one can use the tools for freelancing or project work then this expenses can be deducted so in the end it really make sense to have a rich tool chest. Buying software or making a donation to an open source project really helps the creation of better/nicer tools as the money covers the countless hours of research we generally take for granted. Think about the quantity of research behind LLVM or Eclipse's EMF...

No comments:

Post a Comment