Programmers Stack Exchange is a question and answer site for professional programmers interested in conceptual questions about software development. Join them; it only takes a minute:

Sign up
Here's how it works:
  1. Anybody can ask a question
  2. Anybody can answer
  3. The best answers are voted up and rise to the top

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?

migration rejected from May 12 '15 at 4:51

This question came from our site for professional and enthusiast programmers. Votes, comments, and answers are locked due to the question being closed here, but it may be eligible for editing and reopening on the site where it originated.

closed as primarily opinion-based by durron597, Ixrec, gnat, Ampt, Robert Harvey May 12 '15 at 4:51

Many good questions generate some degree of opinion based on expert experience, but answers to this question will tend to be almost entirely based on opinions, rather than facts, references, or specific expertise.If this question can be reworded to fit the rules in the help center, please edit the question.

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
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.


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.

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

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