These aren’t similes, but they’re often taken as such. I don’t reflect I’ve worked on a machinate that hasn’t mixed up at least one of these pairs. Sometimes it takes a heap of suffering before you realise what you’ve done…

Estimates vs. Commitments

The estimate is how long you say it’ll take. The commitment is when you say it’ll be done by. These are not the same thing.

Reasonably apart from catering for store levelling, adding a sickness / celebration buffer, catering for pre-sales / training requirements / all the other stuff, you probably shouldn’t be shooting for a top estimate anyhow. Ideally you make a range-based estimate, and aim your commitment at a honestly high confidence interval within that (bearing in mind even 95% means you are missing your dates 1-in-20 times). Mistaking these concepts can, alone, be the root cause of all your delivery problems. See Software Estimating (McConnel)

Domain Invariants vs. Validation

If you place all your validation in your domain model you probably just made them all domain invariants. Congratulations. Now try and implement ‘god mode’, privileged system operations, or special-case this one screen where the logic has to be different…

Validation is often highly contextual. What’s valid in the context of one transaction (one screen) may not be in another, so sometime you’ll have to accept the reality that some validation belongs to the operation, not to the domain. Keenly promote all validation to domain invariants at your peril.

(This is one of the things that scares me about frameworks like Naked Objects)

Business Owner vs Single-Top-Of-Contact

Critical to have a single business owner, yes? So we can just have one person to question all our questions to? Incorrect.

The business owner is the owner of the machinate, and the arbiter of the decisions. But that doesn’t let you off the hook from talking to all the other stakeholders in the machinate. They may, and often will, have very different opinions. If you can’t keep them all pleased, the owner decides, but if you don’t even question them you’re relying on your owner to be the single source of all domain knowledge. That’s a honestly perilous road to be walking down, even before your owner flips out due to machinate-overload and goes postal in a feature workshop. Canvas more than one opinion.


Check it out:Cup(Of T)