## Monday, November 26, 2007

### Life is an equation you balance all the time

I had an interesting thought the other day - why can't we look at life like an equation that needed to be balanced all the time. On the left hand side of the equation the coefficients represent the priorities and the variables represent the commitments that exist. On the right hand side of the equation you can either use the constant for 24 hours for a day, 7 days for a week, 30/31 days for a month, 365 days for a year - but it is always a constant. The equation may look something like this

3x + 4y + 7z + 2a + 4b + 5c + ... = 24

The commitments never really go away they keep going down in priority and come up again and so the variables always stay in the equation its just that the priorities of the commitments keep changing and so the coefficients keep moving themselves up and down. Life is all about balancing this equation. The key is to never get any one coefficient so high that it gets out of hand. You need to always manage all the coefficients within manageable levels as they keep getting higher and lower based on the situation.

The problem with us humans is that we never keep the equation simple - we always like adding new variables into the equation without understanding what the new variable would do to the fragile balance that exists already. Its like any system as soon as you add something new there is always a period of uncertainty and instability which has to be dealt with. So the key is to have control over the variables being added to the equation. There is a constant on the right hand side that is not going to move - so giving priority to one variable will always guarantee that something else does not get the attention needed which usually happens when we add something new to the equation.

Another thing that we need to do but never really do is remove variables from the equation - this can be done in 2 ways - finish the commitment and take the variable out. We always tend to leave things half done that keeps the variable there all the time or we never really accept that we can't take care of the commitment even though we accepted it. We need to learn to say no or tell the person as soon as possible that it won't be possible as i have a 100 other variables that need to be taken care of. If we say this early enough I am sure most people will understand and appreciate it.

Another funny thing about this equation is that you do not have control over the coefficients in the equation. They are dependent on the other parties involved in the commitment. So the more control you have over the numbers the easier it would be to manage the equation. But this is much harder to accomplish.

Imagine what would happen if you did not even have control over the variables (commitments) being added to the equation. Adding it yourself causes instability - if someone else adds it - sure shot way to chaos. So do not give up this power to anyone else at any cost.

It is always necessary to know what are all the variables in the equation since you do not want to ignore a variable so long that it gets out of control. People do this through task lists or reminders. But it is important to always be aware of all the variables.

So the bottom line is
- Complete the ones that are already there
- Remove the ones that you feel you can not close out
- Try controlling the numbers

Do this and take control of your life.

## Thursday, November 22, 2007

### An organization’s journey to CMM Level 3

This is an article I wrote more than 4 years ago to describe the journey of an organization to become CMM Level 3 compliant – I was part of the team working on it and this is my view of all that happened.

It all started around September 2001 when it was decided that the organization would look at implementing the Capability Maturity Model (CMM). A formal Software Engineering Process Group (SEPG) was formed to achieve this. The SEPG conducted a Gap Analysis of the templates and guidelines in the Quality Management System that existed at that point of time, and updated them so that they complied with the CMM Level 2 Key Process Areas (KPA). There were then training sessions conducted for the members who were Project Leads and above on the QMS. The first audits were conducted on the projects to assess their compliance with the newly defined standards.

Once we were comfortable that the projects were following the standards defined the team set a goal of reaching Level 3 by December 2002 and also used the services of an external Consultant.

In the last week of June 2002, the external consultant conducted a Gap Analysis called CMM Based Abridged Assessment. This assessment is an abridged version of a regular assessment where the members of the organization were interviewed, and the gaps in the process that is followed by the organization and the CMM framework were identified. As part of this exercise, he interviewed 60 members in 9 group sessions. Altogether, about 40 weaknesses were identified. Subsequent to this, the SEPG, along with the external consultant, came up with an action plan for closing these weaknesses.

It was at this point of time that new members were added to the SEPG group. All the members of the SEPG underwent a full day training course on Process Writing, where the finer aspects of defining a process were explained at length. In the next couple of months, i.e. July and August, the entire QMS was revamped to be compliant with Level 3. At the end of August, the external consultant did a review of the QMS and identified the gaps that were still there with respect to the CMM Framework. In September, all these gaps were closed. This QMS was subsequently published in the QMS web site as QMS 1.0.

Simultaneously, the SEPG was also preparing the training material on the QMS. Every technical member of the organization had to be trained in the process. In order to accomplish this, SEPG delivered a total of 52 hours of training in 11 sessions and trained 215 members of the organization. Once the training was completed, all the projects were asked to start implementing the process and to come up with their respective Software Development Plans. It was during this time that the Software Quality Assurance (SQA) team was formed.

The objective of the SQA team was to help the projects in documenting their process and plans and to then audit the projects to ensure that they were following the process that was defined by the projects. The SQA team consisted of practicing Project Leads from the organization. The SQA team underwent training by the external consultant. Every project in the organization was allocated an SQA Representative who would perform the SQA activities of the project. The SQA Group worked according to a published calendar and performed the audits approximately once in 3 weeks. Since its inception in November 2002, the SQA group has conducted 163 audits in 8 rounds.

At the end of November, the SEPG, realizing that the quantum of work to be done was immense and the fact that we were already behind schedule, decided to go for the assessment in March 2003.

In January, the SEPG, along with the Training Group and other members of the organization, prepared a Peer Review Training Course and a Software Configuration Management Training course and trained all the technical members of the organization. In the Peer Review Training, a total of 181 members were trained in nine 4 hour long sessions. In the SCM training, 158 members were trained in eight 4 hour long sessions. With this, the mandatory training that every technical member of the organization had to receive was completed.

In February 2003, a team along with the external consultant conducted a pre assessment. A pre assessment is conducted just like an assessment but in an abridged manner in order to find out the readiness of the organization to go for the complete assessment. It also aims at finding out any gaps that exist so that they can be closed before the final assessment. The pre assessment consisted of the assessment team interviewing 55 members of the organization playing an assortment of technical and managerial roles from various levels in the organization. These members were interviewed in nine different sessions and they were asked questions on the processes that they were following on the various technical and managerial tasks that they were performing. At the end of the pre assessment, the assessment team came out with a Findings Report containing the strengths and the weaknesses of the organization, along with an action plan for the SEPG to strengthen the weaknesses that were identified. A total of 25 weaknesses were identified in this report.

Looking at the gaps that were identified in the pre assessment, it became apparent that we could not go for the final assessment in March 2003 and so the SEPG rescheduled the date for the final assessment to May 2003. This time it was final and the SEPG decided that it would go in for the assessment in May, irrespective of what the result was going to be.

Based on the action plan that was decided between the pre assessment team and the SEPG team, all the process gaps in the QMS were closed and the SEPG rolled out the last version of the QMS, Version 1.4 on the 28th of March 2003. The SEPG froze this version of the QMS as the final version that would be used in the assessment. The QMS went through four revisions in all, and the inputs for these changes came from sources other than the action plans of the CMM-based activities with the consultant. The SQA conducted the audits and, based on the feedback they were giving the SEPG, made changes to the QMS. There was also a QMS Request System created, and members of the organization were requested to post their queries and suggestions to it.

The following table illustrates the quantum of change that the QMS has undergone since being initially defined.

 Type of Document Legacy QMS QMS 1.4 Procedures 0 23 Standards and Guidelines 10 17 Templates 13 28 Checklists 1 19 Others 3 0 Documents 27 87 Words 95 113864 Pages 351 733

In the month of April 2003, the preparation for the final assessment began in earnest. The first task that was performed was to select 14 members of the organization from which a team of 6 would be chosen to be part of the final assessment team. Over a period of five and a half days, this team of 14 underwent a course in the CMM Framework and also the Assessment Team Member (ATM) training.. Once these training sessions were completed, the final assessment team was chosen with the external consultant being the Lead Assessor.

The assessment consisted of two phases: the pre-onsite activities and the onsite activities. The pre-onsite activities consisted of every project completing a questionnaire about the project. The SEPG also completed a questionnaire about the organization, detailing the number of people in the organization, the types of projects, the business goals the structure of the organization and other related information. Based on this information there were four projects that were selected which were a representative sample of the projects that were being done in the organization. The Project Managers of these projects were then requested to fill up a questionnaire called the Maturity Questionnaire that asked them questions on the process that was being followed in the projects. Using the results of the Maturity Questionnaire, and the review results of the QMS, the ATM team came up with the questions that they wished to ask in the interviews.

The onsite activities of the assessment consisted of the opening meeting where the Sponsor of the assessment the head of the organization and the Lead Assessor described the process and the activities of the assessment to the participants of the assessment. After this, there were a series of interviews conducted. First, the Senior Management was interviewed on the policies and the support and checks that they do for the smooth and efficient functioning of the projects. Next, the Project Manager and Project Lead of each of the short listed projects were interviewed in-depth on the process that was followed by them. Once these interviews were completed, there were about eight representatives from various functional areas that were selected and interviewed in groups. These functional areas were Project Leads, SEPG, SQA, Training and Support, SCM, Testers, Team Members.

On completion of all the interviews, the ATM team then consolidated all the data and presented the findings to the participants of the assessment and got their feedback. This feedback was then discussed and the necessary modifications and follow up verification took place. Once all the issues were discussed and resolved, the rating exercise commenced. Once the decision of the rating was taken, the ATM team prepared the Final Findings Presentation which was presented to the organization in May 2003 when the organization was assessed to be Level 3 compliant.

### A better understanding of the Capability Maturity Model

Having been a programmer for the first few years of my career - I moved to quality assurance some years ago to get a better understanding of processes around building quality software products. My first assignment was to work with an external consultant and ensure that a 500+ member organization was assessed to be at Level 3 of the Capability Maturity Model (CMM). As a programmer my typical lifecycle was to get requirements over the phone, come up with my own design in my head, code it, unit test it and move it into system and integration testing. There was not much planning or process to the whole thing - just churn out as much as you could in the shortest amount of time and system and integration testing done by the client would tell you all your defects. So when I entered the world of quality assurance it was a whole new world.

One of the first things I learnt was the necessity of having a Quality Control (QC) Function and a Peer Review Activity to validate the fitness of the product being built but what I never figured out was why was the QC Function part of Level 2 and Peer Reviews part of Level 3. As part of that organization we really did not go through being assessed at level 2 before we went for level 3. We implemented all the process like Level 2 and Level 3 were all compressed into one big Level. So both the functions got implemented together and we found it very hard to actually get both working seamlessly.

Subsequent to the successful implementation of CMM for that organization I moved on to start a team of my own. We started to build products but they were getting killed at the User Acceptance Testing phase. So we built a sound requirements management practice and a testing (QC) practice and we ensured that what we delivered met the expectations of the clients. And these two practices happen to be Level 2 practices. Once we had this working very well we realised after that is that this is only one aspect of quality in software and that is the functional aspect of it. There was a completely different aspect and that was the quality of code and the QC practice was not able to address this need. It is at this point of time we started looking at peer reviews and ensuring that the code met certain benchmarks. We are now seeing our testing cycles come down and the code starting to perform better and thus improving the overall level of quality.

Another example was initially we did not have much historical data or experience in giving estimates or managing the project within the estimates and it was not unusual to go over the estimate many times over (Level 1). This forced us to come up with better estimation techniques and project management practices for individual projects (Level 2). Having done this for a couple of years we are now trying to consolidate all the good practices that we have gathered over time into a single place to implement in future projects so as to standardise the way we do things and to make it easy to implement projects (Level 3).

I am now realising that even though we are not implementing the CMM model we can actually relate our experiences to the various levels and the practices within the levels. It is very important to let one practice become institutionalized before the next practice is put in place and over time all of this comes very naturally. So I don't think agendas of a lot of organizations to achieve a certain level in short pre defined intervals of time is sustainable to actually see the benefits of it. It is important to allow the practice to develop and mature to become useful. The practitioners need to be enlightened about the usefulness of a practice and enlightenment takes time and effort - it does not happen over a training. But then will the economics behind getting CMM or CMM(I) assessed allow things to mature and take its time - I don't think so. So anyone wanting to get assessed to become CMM (I) should ask themselves are we getting assessed for marketing reasons or to actually improve things.

## Monday, November 19, 2007

### Are all services in India bad - Now its Hyundai

Based on my recent run-ins with various organizations for their services my experience seems to be going from bad to worse. Now its the turn of Hyundai when it came to servicing my car.

Here is what happened - I took my car for servicing about a couple of weeks ago and as always I dropped it off in the morning at about 9:30 AM and I was told to come and pick it up in the evening at 5:00 PM. So I gave them a call just before leaving to go and pick it up and was told that there was some part in the steering wheel that was spoilt and so they have to change it and my car won't be ready till 7:00 PM. So I leave to go and pick it up at around 6:30 PM and was made to wait till 8:30 PM before my car got done. I drive it home, all seems fine at first until I realise that the central locking is not working any more. Since it was not a very serious problem I decided that I will get it fixed if and only if I drove in the direction of the service center.

A couple of days later I got a call from the Hyundai Service station enquiring how the service was and if my car had any problems - so I told the lady on the line that my central locking was not working after the servicing. She said OK - so I said is there something you can do about it now that you asked me - she told me to drive the car to the service station or to call the mobile servicing van. So I asked her will I get charged for it and she says yes you will - that did it for me. I had just given my car for a full servicing and had spent close to Rs. 5000 on it and wasted almost half a day dropping and picking my car and when they call to find out if there is an issue and I tell them about it they point me in the direction of a paid service that I could have got even without her help.

So I asked her why did she call and she tells me she called to just get my feedback about the service and to note it. Looks like she did not note down my feedback as there was no response from Hyundai after I told them of my problem after the service. I think if the call did not help in solving my problem then it was a call that just wasted my time and this is not what I expected from Hyundai.

As I said earlier it looks like my frustration with a lot of companies is just going on and on - I hope we improve and show the world that we are really world class - right now we are not.

## Friday, November 16, 2007

### What is quality ?

I have realised that we use the word quality a lot in the software world but a lot of the software professionals do not understand the word when they use it. When one does not understand the word it is hard to deliver what it means. According to wikipedia quality means "non-inferiority, superiority or usefulness of something".

Let us step away from definitions for a moment and try and understand what we mean when we say - "This apple is of the highest quality". A lot of answers I have got just say - it means it is the best - but my question is best against what ? So there is a comparison - there is a comparison against a perception or an expectation. Everyone has expectations when they go to buy a service or product and when those expectations are met the person is satisfied with the product or service and that is when the product or service is deemed to be of quality.

Different people have different expectations of the same product. So each one of their perceptions of what is a quality product or service may be different. For example someone may want cheap apples that are not spoilt to make jam, another may want a sweet, crunchy, red apple to gift someone irrespective of the cost. So each one of their perceptions of quality is different. Hence it is important to understand the expectations of the person in order to provide them quality services and products.

In software the expectations of the customers need to be captured during the requirements definition phase. The better the expectations of the customer are captured the higher are the chances of satisfying the customer with a quality product.

## Thursday, November 15, 2007

### Retail Boom - customer service is the key

Everyone around the world is talking about the retail boom happening in India and the way it is going to explode and everyone who is anyone in the world retail space wants to be in India. Having said that things have changed quite a bit in terms of presentation and availability of products in India but what has not changed is the attitude of the sales staff and the way customers are treated in the stores. The feeling one gets is that the store is doing the customer a favour by existing and serving the customer and its not the other way around where the customer is king and you need to do all you can to delight the customer. Let me give you a few examples of my experiences in the last couple of weeks to illustrate this.

I visited Metro Cash and Carry (India) here in Hyderabad and I wanted to pick up some furniture. So I found what I wanted and was waiting for someone to help me find a packed piece. There were a couple of sales guys who were buying shirts (yes during store timings and wearing the metro yellow overall) so I approached them and asked them to help me - they made a phone call and I waited for 5 min (they continued buying their shirts that were going at 99 and 199 each). I then went to the front desk and I saw someone dressed like a manager I told him and he too made a call and I came back and waited for another 5 min - nothing happened. I then told a couple of more sales people who came and went but no one was able to help me - at last after nearly 25 min a sales person approached me telling me that he was the in charge for the furniture - only to tell me that they are out of stock.

My other bad experience was at Big Bazaar in Ameerpet. The store is a new store but it lacks the following - very bad traffic management, parking is still being constructed, construction material all over the place, water all over the place, very few and badly organized billing counters, very few sales people to get clarifications from and when you add the crowds into the equation it just ends up being such a bad shopping experience.

Of the two experiences - I will never go back to Big Bazaar but I will go back to Metro. Metro is a nice shopping experience, its a nice store will well laid out aisles and items. All it needs to improve is the customer service when customers have issues. Big bazaar is just the pits it leaves one being frustrated after you shop there.

There are a lot more stores on the smaller store front that have opened like Reliance Fresh, Fresh @, Ratnadeep, Trinetra, Subiksha and so on and things are changing - I have had good experiences in many of these stores. Things are improving but the stores have to realise that the key to their success is
• Ample parking
• Well stocked stores neatly arranged
• Quick billing
• Customer service help desk that can actually help

## Monday, November 12, 2007

### Building a website

I have been spending my last 4 weeks conceptualizing and building this website - http://www.dsouzaweb.com/. How did I go about doing it.

### Collect the content

The first thing that one needs to do is to collect a reasonable amount of content to put up on the website. I have been collecting a lot of the information on this site for the last 3 years through the yahoo group. What is a reasonable amount of content is subjective but I would say at least enough content for about 10 web pages (at least that is what I think would make the website look like something worth visiting)

### Blog or Content Website

A blog is a website that typically contains views of a person or a group of people. It is more like a diary of thoughts where content is displayed by date. On the other hand a content website is a collection of content on a particular subject where a blog is only one of the components. These content websites can be driven by static content or dynamic content that come from a database or it can be a combination of both. If you have static content it would be good to go for a content management system that most hosting solutions provide. If you have a data driven site then it is good to develop custom web pages using web technologies.

### Finding a Hosting Site

There are 1ooo's of hosting sites available but the important thing to look for the following

• Ease of use
• Duration they have been in the business
• Look for any feedback from others that have used the service
• Features offered - important ones being database access, languages supported, administrative options given.

Do not worry about this too much since you can always change your hosting provider if you are not happy with it as long as you do not use any custom solution to build your website. So stick with open source solutions and all the hosting providers will be more than happy to host your website for a fee of course.

I have used 1&1 and DomainG8. Personally I like DomainG8 better than 1 and 1 in terms of ease of using the services and the customer support.

Check out the packages and select one that seems to suit your needs - if you don't know which one that is select the one which is the cheapest and you can always work upwards after that.

### Build the website

Once you have a hosting solution you have to start building your website. If you are using a CMS (Content Management Solution) or a blog then your options for look and feel customization are limited to what is offered by that tool or website. On the other hand if you are building a custom website then you can let your imagination explode. To drive that imagination I have found a very good site for templates and that is Open Source web Design. Once you have the content - you have to choose the tool to build your site in - there are a lot of tools available out there from Microsoft Frontpage to Adobe Dreamweaver to a lot of other tools. Some free some more expensive, some powerful some not so powerful - so try out the trail versions and see what you are comfortable with.

I prefer building my site in php rather than html since I can make templates out of all the common content and have them included in the main page. I do not use any of the fancy tools available and prefer to code my websites by hand using Notepad++ - another free editor that is just wonderful.

Once you have built your website you can upload it to the hosting server using free source FTP tools that are available. I personally use Filezilla and my experience has been wonderful with it.

### Tracking visitors

I use a couple of tools to track the visitors coming to my website - Google Analytics and the other is ClustrMaps. Both are free to register and use. Google Analytics provides detailed reports on the profile of your visitors so that you can target them when you post something. I just like the way ClustrMaps looks on the website to tell visitors who is visiting your website. You can see clustrmaps in action on this website on the bottom right hand corner.

### Conclusion

There is a lot more you can do on a website and as and when I discover them I will try and write about it. I am investigating how I can get my website high onto the search results of search engines and will leave that as another article. If you have any questions feel free to ask and I will try and find answers for you. This is by no means an exhaustive article on website development but its more a starters guide on how to build a website cheaply.

## Friday, November 02, 2007

### How do I start blogging ?

I have been asked these questions a number of times

• How do I start blogging?
• What do I blog about?
• How often should I blog?
• How do I get people to read my blog?
• What happens if I do not blog everyday and readers come to my blog and don’t see anything and stop coming after that?

I have been blogging for close to 3 years now and I went through pretty much the same set of questions when I started to blog. Let me try and answer these questions based on my experiences.

How do I start blogging?

First you have to find a site to host your blog – there are a lot of them out there like Blogger and wordpress being the more famous of the ones out there. I found this comparison chart that can be a start to compare the features but it is outdated. You can use it to get an idea of the features offered by the various blog hosts. Microsoft and Yahoo have their own blog hosting software within their social networking applications. I have been using blogger for all the 3 years that I have been blogging and have just seen it improve over time to pretty much meet all my needs. If you get confused which to use – create a blog in each one of them and see what you are most comfortable to use. You can open a blog in almost no time at all on any of the hosts.

Once you have chosen a host for your blog its time to start blogging. Blogging is about writing anything that comes to your mind it is putting your thoughts down on paper – these thoughts may be about something that you are very passionate about or they may be about everything in life in general. So don’t wait to find out what topic you want to blog about – if you wait you will always be waiting and you will never start. So just start writing about anything – once you have a few blog posts written you can always categorize them under different categories which most of the blogging sites support now. So the key is to start blogging.

How often should I blog?

Once you have a few blog posts down you will realize that on some days you have a lot of thoughts and you have so much to blog about and on some days you have nothing to blog about – this is fine and normal. If you have a lot to blog about and your schedule permits it go ahead and blog multiple times a day and if you have nothing to blog about don’t blog at all – its perfectly fine. Do not try to force yourself to blog if you don’t have anything to blog about that day – you will write something that you will not like or will not be satisfied with.

How do I get people to read my blog?