Jun 30, 2009

How to release software and how to release software

After my tryst with Product Management over the past 28 months and my 9-6 work involving the PM concepts, I think I am now capable of penning my thoughts on the 2 ways software should be built and released. These are more of my personal views (and of some friends and colleagues too ;-)) and should not be considered as the final say. You are free to think/opine/contradict it and I would love to know more than 2 ways of doing the above task.

To begin with, I think writing a software is bullshit. Software is never written, it evolves from someone's idea. What goes in is not just the if, else or the {}. It is the end user's requirement, his pain points, and his suggestions. This is the only way we can look at software. From an end user's point of view. Hence the first and most important thing to do before building any product, is to get the customer's suggestion. After all, if you have a product and no customer you might as well throw it out of the window (needless to say, you might consider using the documents and the presentations created as emergency tissue papers). The following should be the motto of the day for any person working in the software industry:
"In Our Business The Customer Is The King". You should make each developer, product manager, solution manager, development manager, head clerk (???), admin, HR, every link in the chain, to say this 100 times before starting to code. This is one of the ways to get to know who is the boss. (I still wonder how some of the projects/products which came up without any customer focus made it to the market and survived for a week).

OK. So now back to what I started with. The 2 ways to release a software. The first methodology is outlined here.

"I give You Take":
(Should be read as I give you my idea, you take my idea). This is another way of saying "I give a damn to your ideas"
  1. The LOB head comes up with an idea.
  2. The idea is shared with design, architecture, and solution managers.
  3. Solution Management tries to find internal stakeholders (read as internal customers) (we still do not have customers anywhere here)
  4. Architecture comes up with the design document.
  5. Technology is deliberated on.
  6. Plans are communicated to development and timelines are created.
  7. Development is still unaware of why it is doing what it is doing. (Point 2 never flows till here. It is not hidden in those design documents and MRDs which were created in point 3 and point 4. If you want you could understand from there)
  8. Repeat steps 5-8
  9. By now it is close to 8 months and 50% of development is still not aware of what they are doing. The rest know something because, they are in the process of updating their resume and need to show what they have done in this timespan since the project started.
  10. When all the testing and validation and product standards and bug fixing and internal releases are completed, the product is ready to be released for a few select customers who showed interest in a similar idea.
  11. When this is finally taken to the market, you find a host of products which are cheaper and easier to deploy with better service network.

Then we go back to step 1 and the process repeats. The reason why this would be a 95% failure is that there is no customer interaction at any point. Even if a customer is unfortunate enough to buy this product (which would be costly as hell because of the huge effort spent so far), the UI, interaction, and flow would not be to his taste. So now the development is loaded with the task of customized development for this customer. (The remaining 5% would be for the internal customers who do not have an option but use it as a pressure from the upper management)

The major pit-fall here is that every single person in the food chain is unsure of the market demands. There is just no customer in the whole thread, from whom you could get their views.

The other route (and my most fav one) is:

"You give I take"

Should be read as "You give me the requirements, I take your requirements"

For this I would say the first point of contact is the field. Get the field sales people to check with their buddy-buddy customers about what they have, what they would like to have in what they have, and what they would not like to have in what they have. This is more of a bottom-up approach and would flow as below:

  1. Field approaches customer with what they want.
  2. Customer gives his requirements.
  3. Field talks to Solution Management
  4. Solution Management prepares MRD and shares with Field
  5. Field ensures if things are understood (and if required, check and cross check with customer)
  6. If things are fine, Field requests for commitment from SM.
  7. SM checks with management and provides a breakdown result structure (more of SCRUM except that at the end of each Sprint, the actual audience would be the Field and Customer and not peer developers)
  8. Signoff from Field and customer
  9. Communication of MRD/PRD from SM to Architecture.
  10. Architecture prepares blue print. Discuss with Field (and if required the customer). Make sure if this is what the BOSS wants.
  11. Communication to Development and Project Management.
  12. PM plans for short sprints and development executes.
  13. End of each sprint, check with customer if the requirements are being implemented right.
  14. Close the project ahead of schedule.

The good thing in this approach is, even if you slip a month or so past the deadline, it is not a big deal since you have got the customer and field's confidence in your work. They would be ready to wait for your result.

The only con here is, it requires 3 steps more to release (the first needed just 11) and requires to disturb the customer time and again (with your questions and suggestions and ideas). But what the hell, I think customers like to talk to development about the proposal. At the end of the day, who would like to spend money on a piece of code which they never wanted.

This is a longer route, but one which is guaranteed to get you that 5 * from the customer. Afterall 5* is always better than a dissatisfied customer. Think about it.

Jun 28, 2009

My most complex creation

I woke up a bit late. It was a Monday morning. I had worked all night on Sunday, trying to figure out what was missing. What...what...what is it that is not in place? All the pieces fit together perfectly in the puzzle. Except one. There was a small gap, but it was the most important part, since it fell right in the center. I did not care to get out of the bed. I lay there and looked hard at the missing place in the puzzle; I had stuck the jigsaw to the roof, so that I could look at it when I lay down. Enough of this. I was tired and needed a stroll. I got out of the bed, took my walking stick and climbed down. From where I stood, I could see what I had made, my painting. The grass looked beautiful, lush green with mist settled on the tip, the serene blue pond in the center, the trees surrounding it, which had the first set of flowers just beginning to bloom, all the animals in circle around the lake and quenching their thirst, without bothering to disturb one another. I took a deep breath. This is what life is about, the satisfaction of seeing your work look so beautiful, so comforting. Still the nagging in my head did not stop. What is it that I need to do, to make this beautiful paint exquisite? I sat on a rock near the pond wondering, what to place in the puzzle to complete the painting. At that moment, my cane fell down near the foot of the rock. I stooped down to pick it up and it struck then. I looked at myself in the water and found out what was missing. Myself. All that the painting needed was an intelligent organism, a wise creature which could think and act. Something with the sixth sense, something which is capable of making wise decisions. I sketched the painting with the new creature, two legs, two hands, a face and a body, sitting on the rock. I stood away from the painting to inspect my work. It looked splendid and fit perfectly in the picture. I noticed this creature needed 2 final things; A name, and a companion. Name to separate it from the other living and non-living beings, and a companion to make sure it does not feel lonely. So I thought I shall name it source: Man and named the companion Woman (same source ;)) Now it was complete. Just like I had given the other "animals" the ability to multiply, I gave man too the power so that Man would not be the last one on earth, but many generations. I marveled at my creation, that I had made the near perfect invention.

I admit, I made one mistake. I gave a feeling called desire in man (more desire in woman). Man started growing his family, just like I wanted him to, Man gained knowledge and power and money, just like I wanted him to. Everything was fine for a few years. Then desire came in man to have one community, have a leader, give the leader more power. Desire led to anger and envy. Then man started fighting with man to become leader. Woman fought with woman for more desire and envy. The fight between 2 men grew into a fight between 2 communities. I saw my creations killing one another, Oh! my children lay in a pool of blood and it was all my fault. I thought I will give a few more million years so that they would live happily. However, I was wrong. Man can never live happily with another man. As long as 2 men are together, there will always be hatred, jealousy, pain and suffering.

I thought, enough is enough, I will put an end to this misery, I will use Man's own creation against him. I waved my cane and there was a lightning, a flash, a cloud and everything went silent. Absolute silent darkness everywhere. When the dust settled down, I stroll once again to inspect the end. The grass is all dried up and burnt, the trees stand naked, thin leafless branches jutting out, the pond is dried up and has carcass of animals and man lying there, there is a stench everywhere. To put an end to man's sufferings, I had destroyed all my creations.

I knew I had miscalculated, I knew I had a bigger task at hand to cleanup this mess, I knew I had one more weekend to spend trying to create the perfect creation.