Immediate and delayed satisfaction in software development
All our lives we're told a mantra that keeps repeating itself. We hear it as children when we want an ice cream, and we hear it as adults when we want that brand new car, or that holiday vacation:
Have some patience
But in the software world - things become a bit chaotic. Your boos wants things done now. The customer wants things done now. Not later, not tomorrow.
So what do we tell our customer?
Have some patience (and these changes you wanted tomorrow can wait 6 months)
What do we tell our boss, though?
Um, OK. I think we might be able to do that!
That's right. We succumb to our own feelings that we want to be able to do anything quickly, so we say we will (but we never do, do we?)
Why don't we ever get to that point where things can be done now in software?
There's a simple answer:
We are letting ourselves be patient with our development process and tools. We allow waste of time when we build the things that we promised our boss we'll deliver now.
- When we want to release a product we get told that it will take 3 weeks to make sure everything works - so what do we tell ourselves?
Have patience
- When our machine has bluescreened for the 3rd time today, our source control takes 10 minutes to get the latest version of 2 files and our team keeps finding bugs manually by debugging - we say one thing to ourselves:
Have patience
Somehow, we have convinced ourselves that in software, like real like, there are certain things you must take for granted (death and taxes). things you can't fight, so you shouldn't even try.
We fail to realize that in software, like in The Matrix, rules can be bent. Things that take a long time can be automated. Things that are hard to do can be made easier with tools (or by removing tooling!)
People who cannot live with delayed satisfaction in the real world, suffer from the environment, since some things, they learn, are simply going to have to wait. they may feel more negative about things, they may seem pushy, abrasive and ill mannered, but they are just troubled by a built in lack of what psychologists call "Optimal Frustration" - the ability to wait for what you really want, and still feel OK about it.
Funnily enough, in Software, those same people can be tremendously successful team lead, due to that exact lack of ability to endure delayed satisfaction. Thos eare the people that keeps asking qustions like these:
- "Why can't I have a working build with installer at the push of a damn button?"
- "Is there a reason you invited me to this meeting? you're wasting my time"
- "Why do I have to login to my computer to see how the team is doing?"
- "WHy are we still doing this manually?"
and so on.
eventually, what these people drive is the ability for an organization to not delay its satisfactions - when they want to release something, they can do it on a whim. When they want to fix a bug and send a patch to a customer, they can do it without a hassle.
if they really want to, they can fix something that just came in as high priority in the middle of an iteration and not even flinch.