views:

48

answers:

3

My situation: I'm a software developer that's taking on new responsibilities as a development manager. Most of my team is overseas or in Canada (I'm in the US). They're all professionals and range from junior to senior level in development. Our code is written in C# and runs everything from the e-commerce site to the production floor. We're not launching the space shuttle, but quality and reliability are our number one priorities.

The problem is that sometimes our resources from the outsourcing firm treat it as though we are mission control, and simple tasks will be subjected to a full QA cycle and take weeks to be deployed to production. I know that internally they use Scrum, but from my point of view their process is very waterfall-like.

What's the best way of introducing more agile processes? My biggest concern is that we have individuals that are on the opposite side of the world, and can't interact with end users directly. I get a lot of requests for information and requirements that should be coming directly from the end users, but instead I play the role of human email forwarder. Has anyone successfully gotten highly iterative development with outside resources?

A: 

The best way is open communication.

Try to establish regular meetings (weekly) just for productivity and process issues. Create an "default" agenda for example sth.. like that:

  • Welcome
  • [Space for changing issues]
  • What was good, what was bad
  • How we can improve (Here the place to address ideas to process changes)

Write summaries, so nobodies feels out of the loop and not everybody needs to attend. Never miss a meeting or let it skip!

Inform your local team about your goals and wishes. Encourage common communication channels like chat and mailing list. Between both (all) teams. Open discussion helps with continuous process improvements.

Try to establish good personal relations. (Consider using Webcams, video conferencing later in the game. Be open and friendly so everybody likes to listen to you)

Address your issues an wishes multiple times. Don't expect quick changes. Change needs continuous pushing.

Identify allies.

Accept defeat :-)

Robert
+2  A: 

"The problem is that sometimes our resources from the outsourcing firm treat it as though we are mission control"

Find the contract. Find the service level agreements for the outsourced firm.

In some cases, you'll find that your contract obligates them to behave this way.

[Speaking as an outsourced programmer, we're often under contractual constraints that prevent better, more cooperative behavior.]

S.Lott
+2  A: 

First, do you contract the outsource team on a fixed-bid basis? If so, this is going to be very hard.

If not, there's a chance this can work, and I have two suggestions (as someone with a bit of experience doing this):

1) If you view yourself as their customer rather than their manager, you'll have a better chance of success. From what you've described, you're filling the product owner role and you'll need to do more than forward email from end users - you'll have to annotate, interpret, and amplify them.

2) Let them treat your change requests as new features, albeit high-priority ones in the backlog. You want to cut down on arguments about what the requirements meant and focus on getting what you (and your users) really want, no matter what the initial requirements may have said.

Jeff Sternal