Yesterday, I talked about the many types of errors in software and how you can categorize them strategically. Now let’s talk about how you can capture and represent errors in a useful way.
Errors are under-appreciated. I discovered that on a greenfield project when it occurred to me that I had essentially no tools in my developer utility belt for architecting them.
My latest project uses a framework that I wasn’t familiar with at the start of the engagement. It’s not the first time this has happened, but in the past, I’ve always had teammates as tour guides — at least one person on the team had worked in the codebase or with the language before I […]
I just saw a great Twitter thread by Phil Lord, one of the writers of The Lego Movie and Spider-Man: Into the Spider-Verse. I’ve written before about parallels between software and TV/movie production, and the analogy continues to be relevant. There are a few lessons from Phil that can definitely apply to software. 1. No […]
I always feel a tension between the idea of building more foundation code upfront and waiting until it’s needed. If we spend all our time building framework and foundation, then we’ll never get around to actually building the product. But of course, if we plow ahead without planning, we can end up with an unmaintainable […]
Use Docker and Docker Compose to manage your local dev environment. I’ve worked on backend infrastructure for almost 20 years. In the early 2000s, Atomic Object’s web server was hosted on a physical 1U pizza box server at a local datacenter. I regularly visited this server in-person, as well as a few of its neighbors, […]
Doing maintenance work on a codebase isn’t very glamorous, and it isn’t always much fun, but it’s an important piece of building lasting software. Everyone loves working on so-called greenfield projects because they can let their creativity run wild. Adding features and fixing bugs in a system that’s already been built doesn’t seem to generate […]
I’ve completed a few projects that involved prototyping software in a very short timeframe. This situation can differ drastically from the normal pace of agile projects because results and certainty have to be prioritized above long-term considerations. If you find yourself in a situation where you need to push code out quickly (and won’t be […]
Recently, one of my teammates noted that our project’s codebase doesn’t have a lot of classes. The observation wasn’t framed positively or negatively. It was just an observation about a particular code style of the team as a whole. I didn’t think much about it at the time. But looking back, this observation has lead […]
Software developers are great at recognizing patterns. Maybe it’s an inherent skill that draws us to this profession. Or maybe it’s the process of writing software that develops this skill. Either way, “don’t repeat yourself” (DRY) is a natural application of this skill. However, repetition in itself is not the enemy that this principle makes […]