In the past weeks, I started upgrading a bunch of third-party libraries I use in my side project.
This had been long overdue, and something I had entirely forgotten about. If it wasn't for another team at work going through the same exercise, it probably would have slipped my mind for another year or two, if not more.
Two thoughts came to mind when I was having my morning coffee yesterday.
First, the upgrade process for a single library gets more difficult the more your code relies on it. The backend of my project, for example, is written with the Ruby on Rails framework; it's fundamentally coupled. Upgrading versions there definitely gets challenging (although to their credit, the Ruby on Rails Release Notes are fantastic). Minor and patch versions (which are supposed to not introduce any breaking changes) are supposed to be simple, but you can't guarantee that.
The lesson learned here for me is that this requires continuous, ongoing maintenance just like a garden, but also the more that I take on (libraries, other services I maintain, a new car), the more ongoing maintenance there is. Having less to maintain means more time in my day.
Secondly, I would have fewer library upgrades to do if I just wrote the code myself. If there's no third party libraries, then there's no library upgrades, right?
Any developer who's worked on a project of any notable size can relate to how ridiculous that statement is in a vacuum. At some point, you need to rely on something that a third party has developed.
A framework like Rails, Django, or Spring Boot. A programming language like Ruby, Python, or Java. The instruction set for communicating with the hardware. The operating system on your computer. The hardware in the computer. The electricity that powers that hardware.
“I’d like corn for dinner.”
So, six months ago, you’ll need to plant the corn so you can harvest it today and cook it tonight.
At some point, third parties get involved. We must rely on others. To what extent is a perpectual balancing act with no one right answer, only a plethora of tradeoffs we must accept.