NO and YES are two simple words, yet practice shows that professionals often have difficulties in using them. Actually it’s very easy, certainly when you want to work in an agile way. Dare to say NO when you are unsure if you can do what’s requested. When you say YES it means that you will deliver the product, on time with the right quality.
In the book The Clean Coder Bob Martin makes clear that YES and NO are often not used correctly when agreeing upon delivering software. The book describes many examples on (mis)communication between managers and programmers, on the estimation, planning and development of software.
A professional must dare to say NO. Say NO, when (s)he cannot guarantee that a deadline can be met, or when a proposed solution for a problem is not doable. As Bob states in his book:
Professionals speak truth to power. Professionals have the courage to say no to their managers.
Giving hope by saying “I’ll try” is not an acceptable answer. Bob gives a nice example of this:
When your manager tells you that the login page has to be ready by tomorrow, he is pursuing and defending one of his objectives. He’s doing his job. If you know full well that getting the login page done by tomorrow is impossible, then you are not doing your job if you say “OK, I’ll try.” The only way to do your job, at that point, is to say “No, that’s impossible.”
This is how a manager that I worked with would react to me when I would use the word “hope”:
When I would say to my manager that I would hope to get something done he would say “hope is postponing disappointment” (in Dutch: Hoop is uitstel van teleurstelling”).
He wanted to know if a delivery date could or could not be met. YES or NO. Not maybe, trying or hoping. And he expected to hear about any delays as soon as the first signals were there.
If you came to him late in the project announcing a delay, then his first answer would be that he assumed that you had already cancelled all of your plans for the coming evenings and weekend to keep your commitment.
If you informed him early, meaning as soon as you knew that there was a problem, then there was always a solution to be found.
Saying YES means commitment, also in agile. It means that you will deliver on time, or that your software will not have defects, no matter what. You say it, you mean it and you do it. Sounds simple, but it’s not always easy.
Of course you have already said NO to the things that you can’t do, so when you say YES you should be convinced that it is doable. Which means that it is within your control. And that you will do everything that is needed to keep your commitments.
If it turns out along the way that you cannot do it, take action. Don’t wait, take action once you find out by saying NO and making clear that you can’t keep your commitment. And then look for a solution on how to deal with that.
One last thing: If the test team finds a defects in your software, then you haven’t lived up to your commitment to deliver software without defects. My advice: apologize, solve the issue, and learn from it.