A long time back (when I had more hair on my head), one of my managers remarked - "You know guys, I just met an old friend of mine who now works for ABC Corp as a Project Manager and he said that he delivered a 18 months fixed price project right on time and right on schedule. We need to have the same capabilities as ABC Corp."
I sat dumbfounded, I wanted to scream out "He was just lucky or he was lying or you should talk to the team members who worked in that team", but I didn't say anything because pesky "juniors" aren't looked upon very nicely in hierarchical organizations.
I now imagine myself having a conversation with the same manager in that same room, which goes something like this.
Me - "Lets play a game. Please indulge me. Can you tell me in exact seconds, the time you will take to reach the nearest door in this room."
Manager - "Yes, around 10 seconds."
Me - "Good. How can you say that?"
Manager - "Coz its 15 feet and I think I can cover 15 feet in 10 seconds."
Me - "Fair enough. Now can you tell me the time it will take for you to reach London from Delhi in exact number of seconds. Forget seconds, tell me in minutes."
Manager - (after a pause) "Well, depending on flight time and the distance to airport approx 600 minutes."
Me - "I have to tell you that even if there is one minute of delay, there is a huge penalty and what if your taxi is late or the flight is delayed ?"
Manager - "One cannot say for sure. In fact, no one can tell you with exact certainty because too many un-predictable things can happen."
Me - "How many times have you been to London?"
Manager - "More than 8 times ."
Me - "So you cannot say for certainty the exact time you will take for something which you have done for more than 8 times. But you could tell me the exact time you will take to reach for a nearby door. Why is that?"
Manager - "Coz I can see the door. Geez, are you thick or something."
Me - "Yes, I have always been a bit thick. But let us apply this analogy to software. You want me to tell you for sure the exact time it will take for me to develop a software which is unique in its own way and which no-one has developed before. But you yourself cannot tell me the exact time you will take to reach London although you have done it more than 8 times."
Manager - "Hmmm … what are you getting at?"
Me - "What I am saying is, as you increase the distance or time horizon, uncertainty increases."
Manager - "That is quite true."
Me - "Yes, so what I can only say with a fair degree of certainty is where we will be in this project after 1-2 weeks."
Manager - "You maybe right, but that is not how it works. The customer asks how long will it take to build the whole thing."
Me - "Why do think they do that?"
Manager - "I guess they feel safe this way, they can allocate a budget to it."
Me - "Again, I am a bit thick. So a customer looks at a project, lets say a Reporting System and thinks this work should take 6 months to build for 4 people ergo the time is 6 months and budget is $10,000 or something like that. Do they have the expertise to make this call?"
Manager - "Hmmm .. maybe they have the expertise or maybe they don't and sometimes they even ask us to do this."
Me - "I am not getting it, why do they do this every single time if it is so error prone and they do not trust even themselves."
Manager - "Coz maybe they feel safe."
Me - "Ok. So they allocate a budget and outsource to project to someone, asking them to complete it in 6 months or give a penalty. They can sleep easy this way."
Manager - "Yes. I think that's it!"
Me - "But if I say, I will give it my best and give you a commitment for only the next two weeks of work and see how it goes from there. What would a customer say."
Manager - "I don't think he would agree."
Me - "Why?"
Manager - "Coz he doesn't know when his project will end ?"
Me - "But I am working hard and in the best way I can. Which is in no way different than the 6 months commitment I make."
Manager - "But he wants a deadline, what if you are slacking?"
Me - "Bingo!! Its because the work is done somewhere in a different location and you cannot trust someone is why you want deadlines."
Manager - "Yes, I guess that is what outsourcing is about."
Me - "But if you trust me as your partner who is fully committed to the project, does the two week commitment sound good."
Manager - "Yes. I think so. But I still don't buy it. We have delivered many projects on time after giving a long term commitment."
Me - "We all know how that happens. People spend nights in office and quality goes for a toss. Giving the same international travel analogy you put a gun to the pilots head and ask him to fly fast coz you made a commitment to reach London in 10 hours. Except you cannot do that on a plane but you can do it with us developers. Geez… and then people complain about the high rate of software project failures and late bug discovery."
Manager - "Hmmm…"
Me - "If I say there is a clause that no-one will work beyond 9 hours, how many of your so called successful commitments be successful ?"
Manager - "Not a lot."
Me - "Just because you can do it, doesn't mean you should."
Manager - "I kinda agree, I remember my days when I had to spend 3 nights in the office to deliver a project and I can tell you the code we wrote was shit."
Me - "And yet it continues. Why is that?"
Manager - "You are irritating me. I say its again its because the customer wants a deadline. He cannot give us a free hand to deliver the project when we say its ready. They don't trust us that much."
Me - "Yes. And that my friend is the problem. Trust. If you can monitor each and every second of my day I guess you would be very comfortable with the 2 week work schedule, lets call it a Sprint."
Manager - "Yes. Good idea."
Me - "If I give you a daily status report, put cameras in my working area and give you a working software demo every two weeks this trust can be built."
Manager - "Sounds good. Maybe we can try it."
Me - "Yes, lets build that trust by delivering high quality software regularly without making the team slog and lets make our customers really happy."
Manager - "And what's there in it for the customer apart from your so called high quality?"
Me - "We hear a lot of time, why isn't my software as reliable as my car or as reliable as the house I live in. I think the answer lies here. If I ask a car maker to make a car for me no matter what in 6 months or I ask a builder to build my house, flood or rain in 3 months before a brick is laid, I wouldn't be so comfortable in that car or house later. Software programming is even harder, there are new technologies, the user keeps changing his mind and numerous other un-certainties. Maybe if we follow this model, more software projects would be successful. Lets give it a shot."