views:

454

answers:

8

To make my question clear, allow me to define the terms of the title--

Production support teams are the resources who maintain software applications which are currently in use. The developers are the coders who write the software apps from requirements.

Often times atleast in my work experience these two teams meet only once or twice at best, to discuss about the next production release. It is assumed that the production support teams are going to understand potential risks without ever looking at requirements or design documents or ever meeting the clients, or stake holder. It is expected that out of just out of one/two meeting with the Dev teams, the Prod support teams are to understand and mitigate and resolve potential risks out of this release.

This being the problem, I am tasked with coming up with guideline to close the gap between the Production Support Teams and the Developers. What are your ideas? What questions need to be asked when the two teams come together?

+6  A: 

Have people rotate between the two teams for a short while. That way when they go back to their original team, they have a better understanding of the issues the other team faces.

Elie
Rotating is an excellent idea.
A: 

I've had great success having the developers and support teams sitting together, or at least spending some time together. That way ideas and assumptions are aired early and some issues can get resolved much sooner.

Conrad
+3  A: 

I would take Elie's suggestion a step further and say always rotate people around. I don't know of any developers who are happy solely doing maintenance work on code that other people have written.

On the flip side, developers who only write new code won't ever feel the pain of maintenance and thus won't learn how to write maintainable code.

Edit:
Ideally, I agree with Tim - there really shouldn't be separate teams and it's a terrible practice. I was assuming that you wouldn't have the power to make that radical of a change, but maybe you do :).

17 of 26
I know a few developers who prefer to do maintenance. Eventually some of them changed their minds, but for a long time they preferred maintenance. I agree though, most don't prefer it.
Tim
You know some insane people :).
17 of 26
Absolutely. During the meeting sessions, I have come across developers who are helpless in describing risk for the in terms of support (I work for an Enterprise group in a J2EE stack). What most developers end up doing is spitting out the requirements document.
17 of 26 -- you are right that I do not have the power to shift things around. ---Yet!!! :)
+3  A: 

Having two teams is a mistake right from the start.

I have seen this (two distinct teams) at other companies and it always amazed me that this was actually done in the real world.

I suggest only one team of developers - and some are tasked with support, and some are doing new development - but there is no clear delineation.

For one, there is no natural feedback loop (positive or negative) for the developers of new code to actually make it maintainable. They just toss it over the wall for the maintainers to deal with.

I have also seen it create division, rather than cohesiveness. I don't see anything positive/good about the scenario, whereas I see a single product team having many benefits.

I can't understand it.

I agree with others - either rotate through, or make ONE team.

EDIT:

So, for those without the ability to rotate through teams, or make one team:

  • There must be visibility on both sides into the issues that arise. That is, the feedback from production must get to the development teams.
  • As you suggest, involve production team in the initial design and planning and requirements gathering phases.
  • Teams must be able to have easy access to each other

EDIT:

I did work at one company that had a small team that was on loan from the rest of the dev team - they called it the "swat" team. They would build specific functionality for some large clients or for a fee and the code would be put on a specific branch. While similar, they really still came out of the pool of all developers.

Tim
I completely agree with this, but thought it might be a bit too radical to suggest that a company completely change the way they operate :)
17 of 26
Interesting observation -- The gap starts right from the recruitment process. Support teams are recruited, interviewed and accepted into the support teams guarded from the Developers. And vice versa.
In certain industries (e.g. banking) it is not permitted nor desirable for developers to have access to production systems.
ng5000
I understand the concern for people working on "live" systems, but from a software development standpoint it is a horrible separation. I have seen this at software companies. I also worked in financial and DoD industry and we did not have this separation. One could argue those are more risky envs.
Tim
Most of the company's that I have come across has different teams, and you will be laugh at, if you suggest taking a productive developer and putting them in the other team for any period of time. How do you think we can approach that?
Rihan Meij
@Rihan, these companies- are they software companies or insurance/banking/construction companies? If you look at successful development organizations you will most likely NOT see two teams. IMO the suggestion that production and initial development should be different is the laughable part...
Tim
I've seen separate teams (devs and maintainers) always at odds (jealous?) - a single team makes the most sense and I've put this in place with success. Great idea regarding the swat team
meade
+3  A: 

Some initial ideas:

  1. The production team are stakeholders so they should be involved from day 1. Is your system supportable? Does it publish alert events to the support system/dashboard? Are any manual processes (e.g. weekend bounce) required? By talking to support at project start you will have created the beginnings of a working relationship.
  2. As far as is possible involve production support as soon as possible by 'productionising' your system. I.e. try to have your Smoke, QA and UAT builds managed as if they were production systems. Not always possible for smoke builds, but should be possible (even required) for QA/UAT.
  3. Training and documentation. Educate the production support team and supply them with good documentation.
  4. Ensure that you have a 2nd or 3rd line support process in place - i.e. that the production support team can get in touch with a developer when they need to.
ng5000
Excellent Points!!!!!!!1!
A: 

Real integration can only come from working together in the same project.

Best thing is the support team to participate in the development, e.g. team of 4 elements, each week one person is doing mostly support while the others do development. That means the support guy can rest 3 weeks before doing support again.

This makes people fell the project as their "own" and avoid going crazy with the silly questions and brainless tasks that sometimes support can consist of.

Remember also that the support team normally knows much better the users and the way in which they use the system. For that reason they are in the best position to improve it.

The production support team should have access to the requirements or design documents and participate in keeping them up to date.

Nuno Morgadinho
Thanks for some great points!!! When I think about it, like you said, the Prod team should be very knowledgeble about how users use the apps.
+1  A: 

For myself, I try to hang out with the PSG folks as much as possible, both in work and out. Also, if they have a problem, I get up and go help them immediately if I can. The more you get to know them, what their issues and hassles are in life, etc., the better you can set things up for them.

T.E.D.
Ted, this I actually relate to. Starting from the Dev side, I made it my job to inquire about PSG issues and achievements. I talked to my manager and PSG leads to invite me to their meetings etc. It was an enlightening experience and made me a better developer.
I do the same thing here, listening over the walls and helping when I can. The pass-the-issue-up-the-chain-and-then-back-down-to-a-developer official model really filters the issues, and as a developer I'll never know about any of my issues if someone else is always fixing them.
BQ
A: 

Building on Elie, Tim and 17 of 26:
Cycle 25%-33% of each team in and out on each release. Whomever have been there the longest; and I don't care what your job title is (senior architect northern hemisphere or peon). Support is effectively dogfooding the application, they know all the gotcha's (and will make sure they are fixed - this has been bugging me for 3 cycles #$%#$%#$%), development knows the latest release the best, so they are best for trouble shooting (oh, of course, that problem will be in function XYZ).

CodeSlave

related questions