Relying on other people is hard. I’ve always found it difficult to understand that other people aren’t me. Don’t get me wrong, working with others can be really rewarding. Maybe “Beware of Group Projects” is not the best title. More like “Be Wary that Working with Others is Not the Same as Working with Yourself.” But that’s a pretty long title, and reading (like working with others) is hard.
I’ve been spending a lot of my spare time collaborating on a project with a small group of other developers. I normally do this kind of thing on my own. I started thinking about the differences in working by myself and collaborating with other devs. Then I decided that it would look good in a list format comparing each circumstance from both sides. I was wrong, but couldn’t think of a better way to present it.
Let’s Start a New Project!
As an Individual: This project is going to help me! I can use this new technology and I’ll learn so much!
As a Group: This project is going to help our customer! We can use this new technology and everyone will learn so much!
Let’s Work!
As an Individual: I’ve got 5 minutes, that’s enough time to make those adjustments I’ve been thinking about…
As a Group: We’ve got 5 minutes, but once we find a conference room, set up the projector, and update our branch I’ll have to go pick up my wife. Pass.
Let’s Not Work
As an Individual: I could work, or I could just play Prison Architect all weekend. …I’ll have the happiest inmates this side of Alcatraz by Monday morning!
As a Group: We’ve set aside these times to meet, you should come help! There might be pizza if you stay long enough.
Knowledge
As an Individual: Now I know how to do X.
As a Group: Now I know how to do X. Now you know how to do X, and you know how to do X, and you know how to do X! I’m the Oprah of Knowing X!
Coding Standards
As an Individual: Whoops, I mixed camelCase and under_scores when naming my classes. Oh well.
As a Group: For the love of Linux Torvalds, how do you not remember to prefix your public member variables with ‘pub_’ and postfix your private member variables with ‘_private’?
Testing
As an Individual: Pfft.
As a Group: TEST ALL THE THINGS! It’s the best way we can guarantee that our code changes don’t break existing functionality.
I’m Bored
As an Individual: Forget the months of work spent on X, I think I’ll work on Y now.
As a Group: If we finish, we’ll have made something useful. Someone needs us this! You’ll be happy you kept working on it in a few weeks.
We’re Done!
As an Individual: I made an app that let’s you draw circles. A job well done, if I do say so myself. I believe I’ll have a beer.
As a Group: We invented the warp drive, but it hits a theoretical limit at approximately 9.5 warp. Beer all around! We start work on version 2.0 next week!
The point is that working with others is not bad. In fact, working with others helps give me a sense of responsibility in what I’m working on, and motivates me to continue even when I’m in a lull. I’ve thrown out so many individual side-projects because I just wasn’t motivated, or was no longer convinced of its usefulness. It’s also (theoretically) easier to build bigger projects with groups because there are more arms to swing more hammers.
“Beware of Group Projects” if you don’t have time, or if you can’t compromise, or if you don’t care. Otherwise, just be wary that working with others is not the same as working with yourself.