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...
Software Development
Articles, guides and tutorials on software development, covering methodologies, tools, languages and best practices for building production-grade software.
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...
Software maintenance cost is the number that turns a successful project into a difficult conversation eighteen months later. The build was budgeted, approved and delivered. What happens after it goes live was described as “support” and given a figure somebody guessed at, and that figure was almost always too small. The...
Technical due diligence is not a code quality competition, and teams preparing for one usually spend their time on the wrong thing. Nobody buying a company is grading your abstractions. They are trying to work out what it will cost to own this system, and how badly it can go wrong after the money changes hands. That...
Database performance work usually begins with someone proposing a bigger instance, and it usually ends with the discovery that one query was doing a sequential scan over four million rows on every page load. The hardware was never the constraint. The plan was. That pattern is consistent enough to be worth stating as a...
Software testing strategies are usually described in terms of coverage, and coverage is the least informative number in the whole discipline. A codebase at ninety per cent can ship a bug on its most-used path, because coverage measures which lines executed during a test run, not whether anything meaningful was asserted...
Fintech software development is priced and scheduled like ordinary software development right up until somebody asks who is authorised to hold the money. At that point the project stops being an engineering exercise and becomes a regulatory one with an engineering component, and the timeline you had in mind stops being...
MVP software development goes wrong at the scoping meeting, not during the build. Somebody says “minimum viable product”, everybody nods, and then the feature list arrives containing user accounts, an admin panel, billing, notifications, a dashboard and a mobile app. That is not a minimum viable product. That is a...
Most teams treat API security as an authentication problem. They add tokens, check them on every route, and consider the job done. Then a tester changes one number in a URL and reads another customer’s invoice. That gap between “authenticated” and “authorised” is where the majority of real API breaches live, and it is...