Software Development - The stark raving reality
According to The American Heritage Dictionary of the English Language, the definition for the term 'Deadline' is twofold:
Ironically, there couldn't be a better way to pair these terms
together, at least with regards to software development, or as Douglas
Adams accurately stated: "I love deadlines. I like the whooshing sound
they make as they fly by."
You might come to expect that when missing a deadline, somebody will get
fired, perhaps not literally as was the case if you were a prisoner in
Civil War camps back in 1864, but at least in modern days terms.
somebody has to pay, right? This expectation, much like the essence of
Deadlines themselves, has another crucial dimension - Time.
We would like to believe that the easy explanation for projects going overtime is all grounded in the science of Algebra. An in depth look at the problem, steeped in psychology and evolutionary biology lights the issue as more complex than simple calculus.
Evolutionary psychology is a new scientific psychology branch, in which knowledge and principles from cognitive psychology and evolutionary biology are put to use in research on the structure of the human mind. Evolutionary psychology is equipped with tools that can explain much of the constraints that causes us to behave in a way that contradicts our best interests.
Evolutionary psychology theory suggests that deadlines play to certain mental tendencies that have been "hardwired" into our brains eons ago.
The Evolution theory explains two paramount principals that dictates
human behavior: Survival, and Reproduction.
Reproduction may seem like a more interesting subject to discuss but
have little to do with deadlines so we will focus on survival instead.
Survival, is the evolutionary principal that dictate our brain to
continuously search for possible threats. The ability of the prehistoric man to rapidly spot danger, was often the decisive factor between life
and death.
Fast Forward some thousands of years, the importance of survival
as it was imprinted in our brains a long time ago, is disrupting our
ability to make decisions in the dynamic environment of our modern days.
Researches show that our brain deduct negative meanings out of
patterns, twice as much as it deduct positive ones.
Psychologist and behavioral economists suggests that we add an
additional adjustment factor to apply subjective weights. It is no
surprise than, that we weigh costs (or losses) and benefits (or gains)
differently, with prospective losses looming more influential, and
having a greater weight than prospective benefits. Hence, people can be
expected to be cost, loss, and risk averse (if only because "cost",
"loss", and "risk" carry negative subjective evaluation).
While economists are inclined to discount future costs and benefits by some constant instant rate, psychologist, by the way of contrast, argue differently.
There is no reason to believe, psychologists insist, that people's weights applied to cost over time need to move in lockstep with the weights applied to gains. This means, that the costs incurred immediately can be given a higher subjective value relative to gains than is the case for costs incurred in the future, and beyond some point in time, the weighted value begins to fade while the weighted costs escalate as they become more immediately pressing.
By all accounts, procrastination is common, and rising. More than quarter of surveyed Americans admit to being frequent procrastinators, with men being slightly more inclined to procrastinate than women. In 2006, the percentage of Americans inclined to procrastinate was 28%, up from 5% back in 1978.
According to economist George Akerlof, present effort are unduly salient in comparison with future effort, leading individuals to postpone tasks until tomorrow without foreseeing that when tomorrow comes, the required action will be delayed yet again.
Surprisingly, procrastination can also have a positive effect. By repeatedly delaying the incurrence of effort that is immediate at each time period, people can quite rationally make the delays pay. At present time, programmers may only have a vague idea of the true effort and deliverables of undertaking any particular action at various future points in time. As time goes by, programmers can often reasonably expect to be able to gather more and better information on what the relative effort is, hence, what they should do.
Akerlof argues that individuals can, in misjudging effort over time, all too often exhibit preferences that are "time inconsistent", resulting eventual outcomes that stand contrary to the procrastinator's own long term interests and welfare. Much like overweight people who gain weight while supposedly dedicated to diets, and savers who continually postpone saving time period by time period until they enter retirement with inadequate income streams.
Though we would like to think otherwise, we are all overweight in the sense that we are dedicated to our diets, but on our own terms. There is a better way to put our software skills into good use, and that always seems to be somewhat different than the task at hand.
The unfavorable balance between the force of immediate and future weighted effort at the start of each time period can force an unwanted long term outcome - unless a deadline is set.
It is understandable how drawing the end of an iteration period closer can, beyond some point, increase the implementation effort, as researchers found to be the case. And research has shown that extending the deadline into the future can lead to less code being generated at any given time.
Given both the scientific evidence and psychological reasoning noted earlier, one would expect deadlines will only be scheduled in one direction over the time axis, that is, closer to the current point in time.
Paradoxically, this is not the case. In paraphrase on Brooks's law, which says that "adding manpower to a late software project makes it later" we can make an even stronger deduction that : "Extending a deadline to a late software project only makes it later".
Of course, if software projects schedules were only estimated
correctly in the first time, deadlines would never be as stronger tools
they are.
Software cost estimation will be the subject of my next article,
and have less to do with costs than you may think. After all, It is not
called "estimation" for nothing.