Let's say I have something valuable that I'd like to keep secure. As a result, I give you two requirements:
- Lock the box to keep the contents inside secure
- Put the keys to the lock somewhere they won't get lost.
Of course, there's an implicit 3rd requirement that went unspoken which is that I'd like to also be able to retrieve the contents at some point.
I find this box so interesting because this kind of thing can happen on software teams too.
It's easy to get hung up on meeting requirements when making software, but they are always only part of the story.
There is always a bigger picture that needs to be understood by everyone. It's this understanding, and the ability to anticipate unspoken requirements, that separate good software teams from great software teams.'