Take the 2-minute tour ×
Programmers Stack Exchange is a question and answer site for professional programmers interested in conceptual questions about software development. It's 100% free, no registration required.

Where I work, we currently have three teams all working on one product. We've had some talks and agreed that there could be a lot of benefits to doing an 'exchange' program where a member of one team would work with the members of another team, for a period of time (min: 1 day, max: 1 week). Considering we already pair program (almost) 100% of the time, the 'exchanged' programmer won't be completely lost and there wouldn't be a large drop in productivity.

Goals of the program would be:

  • Exposure to new tools/libraries
  • Getting to know your coworkers
  • Making all developers more versatile between teams

Everyone is pretty excited about the idea, but we're having trouble with how to organize the logistics of such a program.

Has anyone instituted something like this and if so what helped you organize it?


Specifically looking for examples of:

  • How often do you exchange
  • Tips on keeping track of exchanges/scheduling
  • If you've done such a program, how has it worked out for you? Would you have liked more 'process' or keep it ad hoc?
share|improve this question

migrated from stackoverflow.com Apr 13 '11 at 20:43

This question came from our site for professional and enthusiast programmers.

Based on the number of groups i am assuming that this is a large project and that each groups are working on a separate area (like UI, middle ware, data model)? –  aggietech Apr 14 '11 at 16:51
@aggletech Yes exactly. –  Nick Canzoneri Apr 15 '11 at 0:58
I think it's going to work nicely - unless your (and everyone else's) job is to produce shippable software products, of course :) –  Jas Apr 21 '11 at 12:20

2 Answers 2

up vote 2 down vote accepted

I have worked at a place where this was common -- there were typically multiple teams working on separate products that had to integrate on some level (to become a suite of tools). Some things we did:

  • At team level, features were developed by changing groups of people to make sure the internal team knew each other very well.
  • Whenever a feature finished, developers had the chance to move for a single week to another team and work along with whatever was going on there.
  • Generally only a single developer would do the exchange to prevent a team from shutting down for a week every couple of months :)

This worked quite well. Mostly because there was no responsibility on the exchanged developer to finish anything -- this may sound risky, but not requiring them to actually produce anything put the focus on getting to know each other, the product they were developing and exploring all kinds of things (such as variation in tools or process). This also made it easier to arrange the exchange, because whenever you finished something and it was your turn, you could just drop in and look around, as opposed to having to synchronize the planning first and get some features assigned.

One thing to note is that after everyone exchanged once or twice the interest in doing it completely went away and we simply stopped doing it. It was a very positive experience on the whole though -- we learned a great deal and also synchronized our processes and tools thanks to it.

share|improve this answer

I cannot say that I completely understand the question. We have something like this in our team and frankly there is not a lot to say about that. What we do we ask people if they would like to learn something new and get a more rounded view of the project. Nowadays moving someone's laptop to another desk is 5 minutes job. We do accept a slight drop in performance in exchange for people not becoming bored with their daily tasks.

share|improve this answer
See my above edits for some more specific questions. –  Nick Canzoneri Apr 15 '11 at 1:08

Your Answer


By posting your answer, you agree to the privacy policy and terms of service.

Not the answer you're looking for? Browse other questions tagged or ask your own question.