Software applications (like homes, cars, and nearly everything else) need maintenance. Even when the software itself doesn’t change, the systems/devices it runs on and the larger software environment are always moving forward. This is called Software Rot. Most software maintenance falls into one of these categories: Updating Dependencies – Upating the frameworks, libraries, etc. that […]
Software rots if not maintained. The longer it sits on the shelf, the harder it becomes to work on it. It may even stop working on its own one day. This surprises my clients frequently, so I wanted to talk a bit about why this happens and how to plan for it.
On my current project, many of the tools we use are shared across projects. We’ve made good use of Azure DevOps pipelines and private package feeds to easily and automatically publish and share the artifacts. Most of the time, things have worked really smoothly. Until recently, when I had a package that depended on a […]
Most software projects have an established visual design: colors, layout, typography, etc. It’s typically one of the first things to be set up. But the product is going to change and evolve. Maybe a new button needs to be added. Or a link, or a metric, or some other widget. While a designer often leads […]
As we decide where to focus, figure out the best way to implement things, or evaluate costs on any project, we hear the same questions: “How much will this cost?” Or “When will it be done?” Or even technical questions like, “How many records can this process per second?” We need to make decisions and […]
Okay, that’s a bit grandiose, I admit. But I often see tweets or posts about how people don’t “get” capital-A Agile. Tweets like this and this point out common faults. Everything they say is technically correct but not especially useful. Pointing out all of the not-get-its in the wild won’t make people “get it” better, […]
I just returned from traveling and wanted to highlight some good design I saw: the mobile ticket display for Chicago’s Metra (suburb commuter) trains.
Every project eventually hits a point where a big change needs to be made, and it’s going to break everything. And you’re going to be the one stuck putting it back together. Whether it’s a language or tool change that causes your application to no longer compile, a third-party SaaS service change that breaks features […]
Some error messages, like C++ template errors, are inscrutable, and some, like the venerable favorite “segmentation fault,” are uselessly vague. But the merely unhelpful messages aren’t the worst. It’s the misleading error messages that take the prize.
Over a recent weekend, I installed a new faucet in a bathroom. Aren’t I handy? Well, not especially—I heard the same joke from the employees at three separate hardware stores: “Well, it’s not a real house project until you’ve gone back to the store at least twice.”