We all know from painful experience that modifying and extending existing software is far more expensive than creating software from scratch. Whether you call it “refactoring” or “maintenance” or something else, once a software system goes live, suddenly changes become significantly more challenging. However, we don’t often talk about why, so permit me to indulge in an analogy.
Read more »
One of my colleagues blindsided me the other day with a question about software architecture that I should’ve been able to answer on the spot: “Are singletons really all that bad?”
Read more »
Every software system, from simple Python packages to huge enterprise-grade systems spanning massive clusters, has a build—a set of steps that must be followed to go from a source tree or a checked-out project to a ready-to-use build product. A build system’s job is to automate these steps.
Build systems are critical to software development.
They’re also one of the most common avoidable engineering failures.
Read more »