Social Icons

Pages

samedi 12 janvier 2013

Why separate support and development?



Application and infrastructure activities have been segregated for years in most organizations.
Another split is also often made between support and development. Main drivers for doing so are usually: segregation of duties, different nature of activities and control

Segregation of duties (Sox 404)

Although this section of Sox does not state clearly that run and change should be separate, auditors are asking for separate release managers in order to have more control on what is been released. Separate environments ensure that rollout is done through a managed process after a proper testing has been performed.
Having in place a release manager is pushing this concept a step further to also ensure traceability from requirements to delivery. What is delivered must be consistent with the requirements and the release manager is accounting for this traceability which cannot be guaranteed by infrastructure.
The release manager cannot be part of the development team (obvious conflict of interest) and should belong to the support team. Performing testing in the support team brings additional benefits: the support team is involved and knows about the new version in advance and is likely to give a better support

Because work is different

Skill set is different: for development the need is to have creative/innovative people bringing new solutions whereas for support the need is reliable and sound people managing safely systems. Managing a system is different from creating a system
Timeframe is also different: support needs to pickup immediately any incident postponing other activities they may have. Development cannot afford to put at risk project commitments due to multiple incidents. Furthermore, solving incidents is very intense, demanding a lot of concentration and resistance to pressure. When the incident is solved, pressure releases impacting work capacity for a much longer period than the incident itself.

Because having an independent view is bringing value

Having a separate support brings an independent view especially useful for rollouts. This ensures that the proper testing procedure has been followed and that wishful thinking is not driving system upgrades! Having an independent opinion on how development is following procedures is also valuable. On could think that this kind of organization is generating conflicts, experience shows that it is not the case as both parties know the rules of the game.

Of course, such organization has drawbacks like: communication, working together in two teams instead of one and also such an organization cannot be applied for small teams where the critical mass is not sufficient to split one team in two.

Communication 

Instead of having only one team in front of them, users need to talk to two teams (support and development) and need to understand the difference between the two. Development team is also losing some interactions with users and they may not get all the feedback they get when they provide also support. This potential farther distance between development and users could impact the relevance of the software produced.

Working together

Obviously, having two teams working on the same topic is more difficult than having one and the two teams need to work closely together especially in critical phases like rollouts.
Another area where the two teams need to interact is third level support: as the support team is losing intimate knowledge with the software, they need to rely on development to perform third level support activities.
On the other way round, support may help development on technical matters linked to infrastructure where they usually have a greater knowledge.
Last but not least, special attention should be put in not losing accountability: having two team delivering a combined service to users may lead to less accountability from support as they handle the incidents.

Even if such an organization is not so straightforward to implement and is showing drawbacks, overall benefits are strong. For mid size or large development teams, experience shows that it is making a lot of sense. For smaller setups, (less than 10 people), it is definitely less relevant.

Aucun commentaire: