Software development is a complex activity, and it can become even more so if we don’t avoid waste. Several decisions must be made along the way, such as:
- What problem are we solving?
- Who is the final user?
- Which programming language should we use?
- Which frameworks?
- Should we use our own layout or bootstrap templates?
- Which database?
And how to avoid continuous increase of the complexity level?
Avoid waste. Say NO!
Although we have learned to make choices on technology and work methods, we still feel nervous when we need to say NO.
Saying yes is very easy. Saying no requires becoming unafraid of confrontations. So we end up saying yes to an unrealistic deadline, yes to a new functionality one day before delivery, yes to a mediocre hiring. You know where this is going, don’t you?
“People avoid saying no because confrontation makes them uncomfortable. But the alternative is even worse. You drag things out, make things complicated, and work on ideas you don’t believe in.” Jason Fried & DHH
We are bombarded with tight deadlines, requirements we don’t believe in, and instead of taking a professional stance, we avoid the discomfort of NO. Then we suffer in building things nobody wants and working on something where we see no value. We think that saying NO shows lack of commitment or interest. However, saying YES to everything takes the focus away from the job that really needs to be done.
Saying NO is, above all, an exercise in prioritization!
Regardless of the discomfort, it’s important to make use of NO. As our friend Rodrigo de Toledo said, “The plague of the 21st century is that the demand is always much higher than our ability to deliver.” NO is a way to ensure that we focus our capacity on the most important demands. Using NO generates important discussions to refine the product and the role of the professionals involved.
Developing software products requires many NOs. They are necessary in order to develop lean products and avoid waste!