Saturday, April 12, 2008

Core Team & Contributors

I really like the concept of Core Teams. For Collaborative Software Initiative (CSI), our Core Teams are a mix of Subject Matter Experts (SMEs), and Developers. We create "whole" Core Teams & the team is jointly responsible for delivery. Its a true partnership model and its a beautiful thing to be a part of. Its the exact inverse of the typically adversarial relationship that often exists between SMEs and developers in more "traditional" development efforts.

We are still learning as we grow on the health care related project I am focused on. Our Core Team has had some success. The work load and what the team is capable of are both growing. We are becoming advanced enough together to take on more work and more people bit by bit.

We are currently experimenting with adding "Contributors" to the project. For any number of reasons, we are not able to add these people to the Core Team. But we have certain tasks that are well suited for part time contributors. It works well for us and the contributor. In some cases, the contributor just has an itch they want to scratch (e.g., want to learn Ruby/JRuby). In others we have a need we *need* scratched and we pay them to do the work.

I realize none of this is earth shattering - its common with open source projects. I am just saying that its exciting to be a part of it and see it working.

I am of course biased, but I continue to think that the CSI model is game changing. It certainly doesn't apply to everything, but it applies to an awful lot. Time will tell.


Sarge said...

A guy with whom I once worked would say, "Inter-cranial latency is negligible." His point was that communication is a problem but you rarely have miscommunications with yourself. He favored a smaller team for that reason. With part-time contributors, it seems that the number of nodes in the network would increase. My project struggles with communication with people in a different state but the same time zone. I'm curious how y'all address that.

fuzzy said...

Hi Sarge,

Its a good point. We are a distributed company so you are forced to adapt to that model. We have people all over the country and hopefully some day it will be all over the world. We have scheduled ccalls that work for the time zones in question. We live in IRC and have recorded mailing lists. When someone commits everyone gets an email with the diffs, etc. Wikis, continuous integration, etc. Fairly standard open source techniques.

It definitely isn't as easy as having everyone in the same place, but there are benefits. This is something that definitely doesn't work as a one off.

To your point on part time people growing the network, its true. We are not yet experts at this. We are also fairly selective in who our contributors are. They are passionate software people who understand the importance of communicating well & they take a lot of pride in their work.

I think a key part of making it work is selecting the right kinds of roles/tasks for contributors vs. core team folks. It has to be a bite-sized-chunk that the contributor can deliver on part time and it has to be of value to the core team.

Anyway, time will tell how it works - we have a long way to go in learning.

As we both know, at the end of the day software is just really really hard. If you have good people, you have a shot at success ;)