A CMS migration is one of the few projects where the technical work can go perfectly and the outcome still be a disaster. The site launches on time, looks better, loads faster, and traffic falls by half, because a few hundred URLs changed shape and nobody built the map. The traffic loss is not caused by the new...
Software Development
Articles, guides and tutorials on software development, covering methodologies, tools, languages and best practices for building production-grade software.
A postmortem is easy to hold and hard to make useful. The meeting happens, a document is written, four action items are recorded, and six months later the same failure occurs and somebody finds the old document while searching for something else. The word “blameless” gets most of the attention in discussions of this,...
Password storage is one of the few areas in software with a genuine right answer, published, maintained and free. It is also one of the most consistently got wrong, because the wrong answers were correct at some point and nobody revisited them. The failure is rarely exotic. It is a system built in 2016 against advice...
Supply chain security sounds like a problem for organisations with a security function, and the framing is misleading. A small team running a handful of services typically depends on hundreds of packages it has never read, pulled at build time from registries it does not control, executing installation scripts on...
Technical documentation fails in a specific and predictable way. Somebody writes a great deal of it during a quiet fortnight, the system changes, nobody updates it, and within a year the document is confidently wrong. At that point it is worse than nothing, because a reader who trusts it acts on information that no...
Developer onboarding is usually measured in how long the induction takes, which is the wrong end of the problem. The number that matters is how long before a new engineer can change something and be confident they have not broken anything else, and in most teams that is measured in months rather than days. The delay is...
Software escrow exists to answer a reasonable fear: the supplier who built and runs your critical system goes out of business, and you are left with something you depend on and cannot maintain. An escrow agreement puts the source code with a third party who releases it to you if that happens. The fear is legitimate....
The choice between a fixed price contract and time and materials is usually framed as a choice about risk, which is correct, and then immediately mishandled, because both sides assume the risk goes away rather than moving. It does not go away. In a fixed price arrangement the supplier carries the risk of the estimate...
API versioning arguments usually start at the wrong end, with where the version number goes. That is the least consequential decision in the whole subject. What matters is which changes require a new version at all, and most teams get that wrong in the direction of complacency: they ship something they believe is...
A software RFP is supposed to make suppliers comparable. Most achieve the opposite, because they specify a solution in enough detail to constrain the answer while leaving out the information anybody would need to price it. The result is five quotes spanning an order of magnitude, all technically responsive, none of...