Monday, April 27, 2015

New feature development vs defect fixing

One of the challenges faced by smaller organizations that are usually strapped for resources / manpower is the decision to build  new features versus fixing defects in  the existing product.

At a high level, there are  two ways to approach this dilemma. One, the company can allocate a percentage of  each employee's  time to defect fixing and new feature development. I'll call this the 'Time  Allocation' method. The  allocation can happen at various levels of granularity. For example, the  decision can be to allocate 30% of an employee's time to  defect fixing and the granularity can be set to one  week. This would mean that 12 hours (30% of a normal 40 hour week) would be spent by the employee for defect fixing every week. It wouldn't matter whether the employee spent 2 hours and 24 minutes (12 hours divided by 5 weekdays) every day or if he/she spent one and a half days (8  + 4 hours) on fixing defects.

The other  way to approach a solution to this problem would  be to have dedicated teams working on fixing defects and rolling  out new features. I'll call this the 'Resource Allocation' method. Each team would have managers who would review the product roadmap (for new features) or the defect backlog (for defect fixing) and manage the teams responsible for working on them. The  team members are focused on their area of work and are free to develop optimal working styles or methodologies to maximize productivity.

So, what are the pros and cons of each method and how does a company go about choosing one approach? Well, the pros and cons must be fairly obvious, but I have listed some below. Ultimately, the approach that an organization adopts is very subjective  and needs to be  taken with the understanding that there is usually no ideal solution. The factor that could make  or break the solution is actually the ability of leaders to convince team members to own and take pride in fixing product defects. It's not easy, but if team members can realize that fixing defects goes a long way towards making the product usable and more appealing to its customers, it will make it easier for organizations to deliver a stable and successful product.


Time Allocation
Resource Allocation
Focus
Focus of team shifts frequently from defects to new features and vice versaAllows team to stay focused on one area and develop expertise
Morale
Less impact on employee morale because everybody is working on both defects and new featuresDefect fixing has a stigma associated with it and can cause teams that are working on them to feel like they are being made to do "dirty work"
Productivity
Possibly adverse impact on productivity because team members find it difficult to optimize their way of  working because of the varied nature of their workTeams can try and develop efficient ways of working that could, over  time, have positive effects on their productivity
Release Management
Release management may be a little more straightforward because  the same team is working on both defect fixes and new featuresCoordinating defect fix releases, branching and merging code frequently and various such activities could be more complicated because two separate teams are involved
Testing
Testing may turn out to be slightly easier because a single team has visibility and  control into  the code  that is  being written, so there is  less  chance  of  regressionsAs code merges and branches happen during a release cycle, there is an increased chance  of the wrong code creeping in which could impact regression testing. Also, when two separate teams are involved, there will invariably be a blame game when regressions are identified