2 min read

Building a better developer experience

It’s just about 2020 and it’s high time we re-evaluate the way that we, as developers, improve our workflow. When I first began using Linux, before modern package managment really existed, most everything was written in C; installation of a particular program went pretty much the same way every time: ./configure && make && make install. If you were lucky you already had all the needed libraries and tools installed that the program depended on and, after some wait time depending on how fast your computer was, you would have some new binaries in /usr/local/bin. This worked well when much of the world depended on only a few core libraries but quickly became unmanageable by mortals and was replaced with tools such as RPM and APT. Even in the early days of RPM, when installing a new package, I would frequently be faced with a dependency I didn’t have downloaded and so I would need to hunt for it and then wait while my 28.8 modem painstakingly copied the bits to my computer (crossing my fingers that someone didn’t pick up the phone in the middle of the download). Eventually APT and RPM gained tooling for downloading dependencies, the Internet became faster, and these problems largely went away.

Fast forward to today and developers still suffer a very similar story - the explosion of languages, build tools, and other technologies has produced a very rich ecosystem of libraries and programs but at a cost. If I want to contribute to a project these days chances are good that I will need to install a new version of something hoping that it does not conflict with whatever is installed on my machine currently.


Containers do a good job of providing developers with pre-packaged components. They