Hi,
we are a distributed team working on the object database db4o.
The way we work:
We try to program in pairs only.
We use Skype and VNC or SharedView to connect and work together.
In our online Tuesday meeting every week (usually about 1 hour)
we talk about the tasks done last week
we create new pairs for the next week with a random generator so knowledge and friendship distribute evenly
we set the priority for any new tasks or bugs that have come in
each team picks the tasks it likes to do from the highest
prioritized ones.
From Tuesday to Wednesday we estimate tasks. We have a unit of work we call "Ideal Developer Session" (IDS), maybe 2 or 3 hours of working together as a pair. It's not perfectly well defined (because we know estimation always is inaccurate) but from our past shared experience we have a common sense of what an IDS is. If we can't estimate a task because it feels too long for a week we break it down into estimatable smaller tasks.
During a short meeting on Wednesday we commit to a workload we feel is well doable in a week. We commit to complete.
If a team runs out of committed tasks during the week, it can pick new ones from the prioritized queue we have in Jira.
When we started working this way, some of us found that remote pair programming takes a lot of energy because you are so focussed. If you pair program for more than 5 or 6 hours per day, you get drained. On the other hand working like this has turned out to be very efficient. The knowledge about our codebase is evenly distributed and we have really learnt lots from eachother.
I would be very interested to hear about the experiences from other teams working in a similar way. Things like:
How often do you meet?
Have you tried different sprint lengths (one week, two week, longer) ?
Which tools do you use?
Which issue tracker do you use?
What do you do about time zone differences?
How does it work for you to integrate new people into the team?
How many hours do you usually work per week?
How does your management interact with the way you are working?
Do you get put on a waterfall with hard deadlines?
What's your unit of work?
What is your normal velocity? (units of work done per week)
Programming work should be fun and for us it usually is great fun.
I would be happy about any new ideas how to make it even more fun and/or more efficient.