Thursday, June 25, 2009

Managing release day

Typically in a software company there is a dedicate 'Release Manager' - a person who manages all the projects and make sure they all come together in the software and that the software gets shipped on the release day, but does the buck stop at s/he ?
I think companies should have release team where there is more than one person to manage the release cycle (now of course that depends upon how big is the release cycle and how often it is done).

Software release can be very complex, may involve many small projects, to coordinate, scope of the project can change based on available resource and customer priorities, the main role of the release team is to ensure that the software being released meets customer requirement, all small project are included, and the most important thing is to release on time with highest quality possible.

The software release team should be decided earlier on the project and each person should have a clear responsibility within the release cycle. Often QA team leader or project manager is the best person to be the team leader of software release team. Software release team leader should be expert on interdependencies and various integration issues, s/he should be very familiar with the product to be able to analyse the impact of release on each and every customer, this information is very crucial when the software has to be released with known bugs (I know no one accepts this but it has been the fact of software release)

Some of the role/things to be managed by the release team are as follows
  • Who is the Build Master (ideally there should be one complete build every day)?
  • Who is responsible for the installer?
  • Who is responsible for releasing the software and ensuring the software is delivered to the customers?
  • Who is in charge of the release/installation document?

If all (or most of the above) is planned and executed there may not be any surprises on the release dates.

Monday, June 15, 2009

Quality Of Software

Many placed I have worked in past, software quality is often talked about but in reality it is always compromised mainly for cost and time reason. The usual explanation is that since the turnaround time to fix the bugs are not that high, there is no need to spend more time on testing. Market research has shown that organization, who invests heavily in testing procedure and tools, reduces cost long term since they are not constantly going backwards and fixing things over and over again.

Even in an organization where this is a QA team, often quality starts and finishes with them, I feel quality is responsibility of the entire team, which includes management and BAs, and of course developers. Try looking at your development cost and chances are that 60% of the development resource is spent on identifying and fixing defects. By not introducing defects in the system and implementing proper tools and procedure to identify them earlier on, development cost can be reduced and eventually increases team productivity.

Quality should be enforced right from the beginning of the project (yes even in requirement gathering phase), project leader should focus more on quality rather than quick delivery.

To conclude this blog, there are various level of quality required for software, some mission critical software needs to have close to 0% defect, where as some software can handle more. Quality is an ongoing process, which should be built in to the SDLC, quality should not be looked as burden and requires commitment right from the top level management. Any testing tool can identify the defect but only the ones which falls under the testing criteria, most software are so complex (at least the ones I have worked with) that there is no way you can test the complete software, in this scenario implementing good quality business process (along with testing tool) is the way to go.