Programming on a Collaborative Project

Written by Stéphane Richard (Mystikshadows)


As the title suggest this article will try to cover everything you need to know about collaborative efforts and group projects. SOme of you might believe that working as a group is as easy as getting a few of your friends and start coding. THis might work for very small projects but definitaly not if you want to make a good detailed elaborate project that warrants team development. For this reason, you need to organize things and people alike. This is what I'll try to convey during this article, how to know what exactly a project is all about, what it needs, and how people fit in the team and take it all the way to selecting the right people for the job at hand.

We'll start this off by taking a sample project, describe it, break it down so to speak because in the case of projects big enough for team development, if you don't plan you're either killing the project or slowing it down so much that you end up thinking "I should have done this myself". Lack of planning (atleast minimum planning but the more planning the better) is one of the key elemnents that can break a project no matter how good the idea of the project is because let's face it, a big project just isn't that easy to just split in X amount of coders and then patching it all together in the hopes that it all works out. So let's start this collaborative journey and see where it can go shall we?


For the sake of justifying this example we'll create an imaginary huge project. This will be a game, a huge game that has many different sections and coding and whatever else to do. This game we will call it Quest For Collaboration. We'll use alot of things for this game as you'll read below. Basically a project so big it would be ludachrist to even think of doing it alone. Here is the ron down of what Question For Collaboration needs to be able to accomplish.

Of course you might look at this and think that you could use this or that to take care of this or that part and you might be right. But for the sake of this project let's say that there's nothing premade that can be used. Or you're stubborn and want everything originally made for this game. Now that we know a bit more about this imaginary project, we can start asking some questions.


You'll notice here that so far I didn't talk about other coders or anything. I can say that the first step to a big collaborative effort like this one isn't to call your friends up front and tell them to get ready to code on your ultimate game project. The first thing to do is to split this project into sections that can then be split into tasks and start thinking about what type work each of them mean. Once you have that (as we'll attempt to do below, then you can start thinking about who does what. So for now, let's enumerate the different types of tasks so that we understand a bit more of the actual work involved.

And now we have a better understanding of what and how much work we're dealing with. Depending on the project it might be a good idea to detail this even more than I did here. When you're dealing with any project of bigger sizes, the more you can document and fully understand, the better it is for the success of the project. So then what's the next step? You know what you're dealing with in your project at this point. Now comes the time to take it a step further and start seeing how to involve people in there somehow. So let's talk about this side of a collaboration shall we?


Before you start throwing names in the air. The very first thing you need to establish is if your friends or the people you know best can help you with any of this. You created this project, I'm assuming at this point that you actually want this project to be realized, to see the light of day, hence, to succeed. In that frame of mind, the first question is not "who's gonna do what?" but rather, "Is there anyone (known or not) that can do one of these things, or more?". unless your friends with thousands of people chances are there isn't enough people that you know to fill in all the gaps of the project. Some of your friends or whoever you'd want on the team right now might be able to do some of it. Maybe you know a musician, maybe you know an excellent graphic artist, that's all great if you do. But if you don't, it's not like you can just take graphics out of your project so what can you do?

Indeed, your friends shouldn't necessarily be the first in the list unless you know that a. they can do the kind of job you want them to do, b. they will have time and want to do that particular job. Once you do know the particular kinds of job (as listed above) then you can start asking your friends if they'd like to work on the project and do what you'd like them to do on it. Once you have the answers from those people, you list yourself whatever is not checked in the list so you know what's left to do. For those jobs not yet assigned to anybody you have more than one possibility. The first of which is if you can do it or not. If you can't, can you learn it fast enough for your own deadlines? If not that either, can you get someone else, that knows that stuff, to do it for you? What's the best way to get people to do help you out? Let's look at that right now.


Most of those reading this right now will probably think "ask for help, yeah right!". Well, one thing I can say is if your game sounds intesting enough, that alone might entice some people. Of course, it doesn't stop there. You've seen some people ask for help before, you've seen some of the replies they got too. So why did they get that reply? Let's review some of the possible reasons and try to bring some solutions to them.

So then with these points in mind, you can start to formulate your request for help. Don't post 6 pages long requests just because you want to tell them everything now that you've read this article. It's best to stick to the facts and link instead. Something like: "I'm creating this game which is a 3D realtime RPG. There is alot of work to do and if I'm to succeed in this effort, I'll need help. Here are the types of help I need:" Then you list the different help items on your list. and you can finish it with: "If you're interested in learning more about the game, here's where you can read the details as well as how things are organized for success so far.". And of course don't post that until you do have the page with the information you say it has. If we click on it we don't want to see an "Under Construction" sign, we want to read about your project. You can be quite surprised how much of a difference a little organization and preparation can make in your request.

Now that you have everyone you need, is your job done? The answer is no. The truth of the matter is that at this point, you're only about halfway there. Because once you have your people ready to help you. You need to keep yourself on top of your game (literally and figuratively speaking). For one thing, maybe you have part of the coding or design to do, you make sure you do it, do it well and do it promptly. But that's just the beginning. In the next section we'll look at what you need to take care of from now until the release of your game.


The first note I'll make here is that I do realize that this isn't a commercial effort, it's a game project you want to do. It doesn't mean that you can't apply some of the professional project management concepts to help you out. So no, I wouldn't expect everyone to get themselves something like Microsoft Project and use that. But there are ways to organize people and work that can play a big role in how long it could take to make the project and how good the chances are of actually making the project a sucess. Alot of them involve simple common sense and a bit of reasoning. The others are there mostly just you help you use your common sense. Here we're going to list some of the better ones to give you an idea and we'll describe what they are and what use you can make of them.

From these points I think that you can be very well equipped as far as what needs to be done before (all the documentation, organization and so on) and the start of during the creation of the project. In the next section I'll talk to you about some of the tools at your disposal during the creation of your project that are there to help you move things forward. Using this tools helps, but these are more stated in case you're curious because ultimately, with everone on your MSN lists a few emails and time you could probably do the job good enough for a good big project.


There exists tools that have been specifically created with project collaboration in mind from the grounds up. So if you have time to familiarize yourself with them you might notice the many advantages they have when you're tackling a team project. It all depends on how you like to work too. This is why I'm listing more than one of these tools because one of them might allow you work exactly like you want to work while another one might be closer to how someone else likes to work. in essence they typically all have the features for group projects, it's all about which of them makes the most sense to you since you're the one that will be using it. But if you're considerate you might want to get your team to look at some of them to see who's confortable with which tool so you can reach a decision on which tool is the best for all team members. Here there are, in no particular orders. Note that all the tools listed here are freely available so don't be affraid to look at them.

These two seems to be the only applications (as in not web based) that are probably worth mentionning. What follows is the web based collaborative solutions available that I deemed worthy of mention.

Of course there are other groupware / collaboration tools, these are, in my opinion the top three. If you want to see more of them you can visit the Open Source C.M.S. website and check out their "Groupware" section where they list about 10 of them. These type of tools, when used right really help everyone involved (organizers, designers, graphics artists, musicians and developed under any and all of the sub projects involved get their job done without delay. For this reason, I would take a good look at them if you're planning on team development before crossing them out. You just might have that tool to thank for the success of your project so taking time to learn one might not be as bad an idea as you might thinnk. Aside that, if you plan on making your game open source as well, you have the Source Forge website which does offer some groupware features as most of you probably known by now.


A successful team depends on these tools, but they also equally depend on how good you and your team are at staying on top of things. Projects like these are based on good faith of all members of the team. They should also be based on keeping it real. Like I mentioned above, if something is over your head, don't be affraid to say so, right at the start or if you figure it out in the middle of the development, let it be known to the one organizing the project. If it's over your head but you really want to learn how to do it, let it be known too. You might still get to do it and learn what you want you wnat to learn and at the same time others won't expect things that fast from you if they know you're learning along. Simple things like that can really help make a project move forward smoothly and avoid alot of grey areas so it's important to consider this from the very start of a project whenever possible. And this of course can be accomplished with good communication from you, the organizer of the project and the team members. That is between you and team members, team members and you, team members and team members (in different engines for example). Communication is often the key to the success of projects like these so don't hesitate to communicate what happens when it happens. This means that If you know something's coming up that will cut your time available, let it be known right upfront as soon as you're aware of it so that the team can have a chance to adapt itself accordingly.

As with all my contributions, I hope that this was fun to read and most of all that you learned something that will help your next team project to move forward and succeed. That's the bottom line, if this can make your project work then my mission as the author of this article has been accomplished. So, if parts of this aren't as clear as they could be or if you believe you might have a good idea, be sure to contact me (my email is below in my signature) so we can talk about it and see how it can all work out. Until next time, happy reading and "team" coding.

Stéphane Richard