Friday, September 21, 2007

Institutionalising Excellence

Rumela


"Quality" or "Excellence" is something intangible - that results in customer satisfaction or better still customer delight. The software world has seen many models and standards that assure clients of a delivery organisation's commitment to quality. However, there are no dearth of troubled projects even in mature organisations. So how does one go about ensuring delivery excellence in the true spirit ?

I suppose one can either use the reward and/or punishment approach. An analogy with society and the instruments of making people walk on the right path would be

1. Law : Police, Court, Legislation
>> more resource intensive, Cost of Quality is high
>> prime motivation = fear of punishment
>> Quality Assurance & Reviews

2. Religion: Evangelists/Missionaries/Priests/Self Help experts who cite practices, rituals and ceremonies for people to follow
>> prime motivation = desire for the rewards (health, wealth, peace of mind) of practising discipline in daily life
>> Methods, Tools, Processes

3. Philosophy: Self awareness
>> prime motivation = a desire to work for the pleasure of work itself without caring for the result
>> self-motivation, pride in workmanship

If we look at any software delivery organisation, I would associate
# 1 with the SQA function,
#2 with the Software Engineering Process Group function
And as usual # 3 is the tough nut to crack. It is learning and awareness on the part of an invidividual more than Training that is of importance.


And if # 3 is enabled, then automatically # 2 will be practised and # 1 will be needed only on an exception basis.

Saturday, September 15, 2007

Straight from the Gut – The True Story of Estimation

Straight from the Gut – The True Story of Estimation

- Arunabha


“So let’s start,” my sprightly eager young voice, with all of four years of experience in the industry, echoed enthusiastically around the room and died a dismal death as it tried in vain to bounce off the lethargic, pathologically bored countenance of my manager, Shyamal.

We were sitting in the plush conference room of the small, elegant office of my erstwhile firm. The anticlimax of the parochial pastures of Chhattisgarh after the lofty lustre of New York City had not really taken the wind out of my youthful intensity. As I have often realized since, work obtained within the bounds of the country, though lacking in the lure of green-backed dollars, was nonetheless infinitely more satisfying than its onsite counterpart. While I had spent three months in Manhattan, retrofitting an application from one version of COBOL to another, a torture that could not have been tolerated without the magical attractions of a New York summer; the work in the hinterlands of India consisted of architecting a consolidated software system for the Police Department of the state of Chhattisgarh, including neat stuff like GIS/GPS and Case Profiling.
And the big cherry on the cake for me was the process of Estimating for the project that I was supposed to do with Shyamal, a veteran of sixteen years in the industry, who looked on with a lazy, benevolent smile as I fidgeted to unleash my golden nuggets of IFPUG based wisdom on the requirement specifications.

“Okay,” my senior agreed, seeming unable to find even a remotest opportunity to get away, as we sat with a list of systems and subsystems in front of us. “So, the Case Register system. How much would you say? 30 Function Points?”
I winced. “30? How can you say that?”
“How many FP then?” Shyamal asked, accommodating, affable and anxious to get it done as quickly as possible.
I frowned. The long hours of perusal of the IFPUG web site and associated documents rebelled in me. “Let us at least look at the transactions, otherwise how can we say how many FPs it will be?”
I took up an architecture diagram. “So, if this is the application boundary, let’s focus on what the External Inputs are …”
Shyamal chuckled. “You want to do all that?”
“What other way is there?”
He gave in, in an accommodating and avuncular way. I fiddled around with the system diagrams, jotting down the external inputs and external outputs, furiously debating whether something or the other was a query or a report. Shyamal did not really stop me. On the contrary he lent me a helping hand in jotting down all the figures I came up with in an excel sheet, though he did not deign to rename into anything else from Book1.xls. He nodded with that perpetual tolerant smile as I feverishly debated on the number of Data Element Types and File Types Referenced. He even put in an experienced word or two when I tried to figure out whether a system should be a Logical Internal File or an External Interface. And I was grateful when he stepped in and clarified a minor confusion about File Types Referenced.

When I had done the computations, I thought I heard him release a long pent up sigh of relief, which was perhaps re-inhaled as a gasp as I proceeded to work on the fourteen Value Adjustment Factors. However, he was still smiling when I had completed the whole series of computations and was looking on with paternal pride at the Cell AB27 of Book1.xls which gave me the adjusted function point count in red and bold.
“Are you done?” he asked with a fervent glance at his wristwatch. It irked me somewhat. I knew he was quite fastidious about leaving office at six, but we had completed the huge task well ahead of his personal and, in my opinion, selfish deadline. Why was he hurrying along without enjoying the job? I had just done an estimation I was proud of and given a chance I would have liked to pit my calculations against a couple of Estimation Experts from IFPUG and see whether I could hold my own as a member of that elite league.
With a scornful look at my superior, I opened the Baseline Report on the intranet which had the productivity figures. As I scanned the table looking for the Java/Oracle combination, Shyamal entered the Visual Basic/SQL Server figure in Cell AB28.
“Hey, I thought we were supposed to use EJB and JSP and ...”
For the first time Shyamal became a trifle authoritative. “Better to keep the figures low. VB has the highest productivity figure …”
“But, we are not developing this in VB …”
“How does it matter? Do you think the productivity that we finally manage to come up with in this project will be anywhere close to any of the figures in this Baseline?”
“But, Java …”
“You know how productivity figures are computed, don’t you? Does this FP per man hour have any meaning in our organization? Or in any other organization for that matter?” he paused and looked at me. “You had your fun in estimating, didn’t you? Now let’s get down to work. There is more fun on the way…”
Soon, having cast his lethargy away like a shell, he had come up with the costing in Cell AB29. The figure was somewhere around 96 lakhs. For the ones unfamiliar with the Indian system of counting, it is Rs. 9600000. Shyamal smiled to himself and shook his head as he mailed the document across to the Project Director.

“Brace yourself now,” he remarked with a wink as within a couple of minutes our Project Director had made a furious journey from his cubicle and had stormed in to the room.
“Have you guys gone crazy?” he bellowed as the smile I had tried to conjure to my lips to greet him died an ephemeral death. “You call this an estimate?”
Shyamal surprised me with his equanimity. His expression did not lose the laid back demeanour, the cordial smile … in fact the smile became more sympathetic.
“How much are they willing to pay?”
The PD threw his hands about in exasperation.
“TCS will definitely bid sub ten. There’s Infosys in the running too. We definitely have to come up with something under eight.”
“Eight, is it?” Shyamal calmly jotted the figure in a notepad.
“Yes, not a penny more.”
I was finding this complex encrypted language beyond me, especially the last semi Archerian phrase. The units seemed to have been muddled up beyond recognition. However, I thought I had got the gist.
“But, sir, if we need to quote less, we need to cut down on the features …”
“Cut down on the features?” PD bellowed again. “We need each and every feature, believe me … we won’t survive if we cut down features to meet estimates. Heavens, what an idea! TCS will give more …,” he was too worked up to speak any further. “Shyamal, please explain it to the rookie and email me the new estimate in fifteen minutes. I have to send it across by five.”
He stormed out as he had stormed in, having no problem in complying to the tempestuous standards he had set for his locomotion, always working towards continuous improvement.
Shyamal chuckled. “Now we are having fun, aren’t we?”

I looked after the blurred image the PD had left in his wake, a tumultuous bump in the eternal map of space-time – which I have come to recognize in later years as black-holes in the upper echelons of corpo-reality. Slowly I turned towards my senior for guidance.
“What is eight?”
“Eight? You mean as in the number?”
“Yes, I am also getting number by the minute. What on earth is eight? He told us to quote below eight.”
“The very same number. The same one that is between seven and nine,” Shyamal laughed. “Come let’s get this over with.”
“What do you mean? We just came close to 96 lakhs. Do we have to bring our estimates down to eight lakhs?”
“That’s right,” he smiled. “Come, let’s do it …”
I was still struggling with the insanity.
“But, but …”
“It’s simple really. We will divide all the calculated FPs for the different subsystems by 12. That should do it. That’s why I wanted to start with FPs straight away. For the minor adjustments, we can play around with the VAFs.” He was already typing in 12 in cell AB30.
“But, what about the transactions? I mean all the EI, EO, EQ, ILF, EIF …”
Shyamal patted my back.
“No one needs to know. You and I know you did a good job, and it’ll be our little secret. Now let’s forget that and come up with something that will sell.”
“Sell?” I mouthed. I had the sinking feeling of missing something critical. “And what do we do when the client comes back at us and tells us to deliver within …”
“That’s something we’ll consider when we come to it … You’ll get to know the workings from estimates to actuals later. The numbers you came up with were the estimates of estimates, and now by dividing this by 12 we will get the actual estimates … and when we get down to work we will come up with the estimated actuals and whatever will go down in the metrics sheet will be the actual actuals … well it’s sort of complicated.”
“You bet it is,” my head swam.
Shyamal’s smile became broader. “All this will become clearer with experience… But, for now, let’s get down to dividing by the dozen …”