These aren’t similes, but they’re often taken as such. I don’t think I’ve worked on a project 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.
Quite apart from catering for resource levelling, adding a sickness / holiday buffer, catering for pre-sales / training requirements / all the other stuff, you probably shouldn’t be shooting for a point estimate anyway. Ideally you make a range-based estimate, and aim your commitment at a fairly 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 put 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. Eagerly 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-Point-Of-Contact
Critical to have a single business owner, yes? So we can just have one person to ask all our questions to? Wrong.
The business owner is the owner of the project, and the arbiter of the decisions. But that doesn’t let you off the hook from talking to all the other stakeholders in the project. They may, and often will, have very different opinions. If you can’t keep them all happy, the owner decides, but if you don’t even ask them you’re relying on your owner to be the single source of all domain knowledge. That’s a fairly dangerous road to be walking down, even before your owner flips out due to project-overload and goes postal in a feature workshop. Canvas more than one opinion.