8 Compromising Wisely
8.1 How to Fight Schedule Pressure
Time-to-market pressure is the pressure to deliver a good product quickly. It is
good because it reects a _nancial reality, and is healthy up to a point. Schedule
pressure is the pressure to deliver something faster than it can be delivered and
it is wasteful, unhealthy, and all too common.
Schedule pressure exists for several reasons. The people who task programmers
do not fully appreciate what a strong work ethic we have and how much
fun it is to be a programmer. Perhaps because they project their own behavior
onto us, they believe that asking for it sooner will make us work harder to get it
there sooner. This is probably actually true, but the e_ect is very small, and the
damage is very great. Additionally, they have no visibility into what it really
takes to produce software. Not being able to see it, and not be able to create it
themselves, the only thing they can do is see time-to-market pressure and fuss
at programmers about it.
The key to _ghting schedule pressure is simply to turn it into time-to-market
pressure. The way to do this to give visibility into the relationship between the
available labor and the product. Producing an honest, detailed, and most of
all, understandable estimate of all the labor involved is the best way to do this.
It has the added advantage of allowing good management decisions to be made
about possible functionality tradeo_s.
The key insight that the estimate must make plain is that labor is an almost
incompressible uid. You can't pack more into a span of time anymore than you
can pack more water into a container over and above that container's volume.
In a sense, a programmer should never say \no", but rather to say \What will
you give up to get that thing you want?" The e_ect of producing clear estimates
will be to increase the respect for programmers. This is how other professionals
behave. Programmers' hard work will be visible. Setting an unrealistic schedule
will also be painfully obvious to everyone. Programmers cannot be hoodwinked.
It is disrespectful and demoralizing to ask them to do something unrealistic.
Extreme Programming ampli_es this and builds a process around it; I hope
that every reader will be lucky enough to use it.
37
8.2 How to Understand the User
It is your duty to understand the user, and to help your boss understand the
user. Because the user is not as intimately involved in the creation of your
product as you are, they behave a little di_erently:
_ The user generally makes short pronouncements.
_ The user has their own job; they will mainly think of small improvements
in your product, not big improvements.
_ The user can't have a vision that represents the complete body of your
product users.