views:

752

answers:

7

I'm in an interesting situation at the moment, I managed to convince a few people from university to spend the summer holiday building a game with me - leaving me mostly in charge of a team of people, all of whom are fairly good programmers but none of whom have any experience working in a programming team (this includes myself). Even better, all the programmers have moved out of uni accommodation over the summer, so we're spread across the country with only online communication!

At the moment the team is using a very much "cowboy coding" approach, I hand out a specification for a part of the game, they go off and develop it, we all review the code in our own time (everyone reads every line of source code of the game, which works well since it's a small team), rinse and repeat.

Does anyone have experience with starting a small team? Does this kind of coding approach work? What problems am I likely to encounter and what are the solutions? Is there any free/cheap software which can help us?

+5  A: 

Srum works well for small teams, helps to keep people focused on what is to be delivered and identify any problems.

http://en.wikipedia.org/wiki/Scrum_%28development%29

EDIT From the comments below, there is a discussion about is a scrum master also a project manager. These are two roles, but in a small team we normally use one person to cover these roles.

Shiraz Bhaiji
http://blog.js-development.com/2009/06/about-scrum-in-under-10-minutes.html
Juri
great video, thanks. I'm really starting to like the look of scrum!
Martin
@Juri That video contains lots of errors. For example, a Scrum Master is not sort of like a project manager.
+9  A: 

The first thing I would do is ensure good testing of the software. Since you are not at the same spot breaking code through a checkin in your versioning system is very annoying and can cost you a lot of time.
I made very good experience with Hudson as an continuous integration server checking the svn every 10 minutes building the program running the tests and in the moment the tests fail or the build is broken sending out mails to the person in charge and the persons that contributed to this version since the last good run. If you add the continuous integration game to hudson you can make your programmers earn points for making tests run and using checkstyle or something similar together with it will ensure a overall code style for the whole source.
For information gathering and ticketing I like to use a trac because it gives you an overview over the svn. You can store information close to your source and you can give out tickets to your team members.

Janusz
+4  A: 

One of the biggest problems is going to be in delegating mundane programming tasks. Nobody wants to do the boring stuff. So you'll probably have to figure out a way to split that stuff up equally among everybody, so nobody feels like they're getting shafted.

Second, if this is, or has the potential to become, a commercial venture, you'll need to clearly define your relationship and any equity each member has in it.

I highly recommend reading Jeff Tunnel's Make It Big In Games blog, and in particular One Way To Divide Your Company Equity At Start Up

Very good reading, and anecdotes from a guy what has been there and done that.

Gerald
All the team members are good programmers, but don;t necessarily know XNA, so I can delegate mundane tasks under the cover of easy learning exercises ;)There is the potential for this to become commercial, although we've not yet discussed anything about dividing any takings, so it's certainly worth thinking about
Martin
+4  A: 

Set weekly goals.

At the end of each week, have a team meeting (on IRC or skype or something--whatever works for you) and see which goals were met, which weren't, and why. At the end of the meeting set goals for the next week. This doesn't take very much time and helps make sure everyone is on the same page and everyone has an idea of where the application development as a whole is going.

Sam DeFabbia-Kane
+1 for teleconference via Skype
ChrisW
We're kind of doing this at the moment, just not on a very solid schedule - I'm going to try to organise specific meeting times weekly.
Martin
+1  A: 
  • Do an on-line daily standup.
  • Do a planning game once a week plus a retrospective.
  • Keep a calendar of who is going to be available when.
  • Use a distributed version control system and an automated build system.

  • You might want to try mingle.

  • Web cams help for the meetings.
  • Use an irc channel/instant messaging.

[automated build] The reason to want an automated build and regression tests environment is fear of change. You want to be sure that you can change the system without breaking existing functionality.

Stephan Eggermont
Everyone is recommending some kind of automated build system which executes tests, is this really necessary? The way we're working at the moment is to download the latest version from SVN, do some work, download again and fix any conflicts, upload, repeat.
Martin
Martin, using the automated build process and having regression tests is a good way to move from student to professional. These are things, like using Source Control, that you really should use as a matter of course. Best to start by building good habits. And it might help get that first real job out of the university as it will help differentiate you from other recent grads if you are experienced using things that good development shops use and that most students don't.
HLGEM
See I have no idea about these things, I'll get on to a bit of googling and have a look what's available for free, any recommendations?
Martin
Hudson might help
Stephan Eggermont
+6  A: 

There are three things that are, in my opinion, worth concentrating on from the managerial point of view that are less related to code and hence are easier to overlook:

  1. Try to avoid scope creep (uncontrolled growth of game's functionality). Consider delivering a complete game which includes things beyond the game code itself (installation script, community web site and so on) and try to use the available time and resource wisely. Calculate the amount of time your team has got till the end of summer holidays, add up the amount of days each team member is likely to put in and aim to deliver version one given the timeframe (i.e. 40 working days times 4 members = ca. 160 days). Have a conservative roadmap everyone agrees to with dates and stick to it, this will keep things real and focused.

    If at some point you feel the team is slipping from the original plan it might be worth repeating the exercise.

  2. Give some thought to the way you're communicating and coordinating the efforts: daily updates (Skype or e-mail is a good idea, plus some kind of screen sharing software). Weekly summaries (a brief e-mail summarising design decisions for the week and outlining work that needs to be done during the next week). It may be worth setting up a wiki or community web site and creating a dev area as part of the site forum (with some areas restricted for dev access only). This way you'll start building up external communication whilst as well providing internal forum.

  3. Motivation is all about feelings: does everyone feel the goal is achievable? Is it fun? Keep your hand on the motivational pulse by trying to continually gauge how people feel about the project and the possibility of success.

    If you don’t live too far apart it might be worth getting together for a weekend midway through the summer and discussing the project in person whilst having fun. What does unite you as a group? Does the game contain some internal joke which is understood well only by a smaller community? Do make it personal; as a summer project its best if the effort doesn’t look too much like work for someone else. Its better be something for the team and their friends. Build up the suspense on the community site, send some screenshots. External interest will help the team’s motivation.

    There is little reason for you guys to stick together and keep putting your efforts in at this stage (no money, no community recognition, no existing game just a bunch of ideas) unless it feels really well and you all support each other.

Totophil
Wow, ok, I'll try to address these one at a time.1) We have a solid game design, which lays out exactly how the game will play, so that limits feature creep - also I should hope that a team of programmers wouldn't introduce feature creep into their own project!2) We're all online on MSN almost all day every day. I've now organised a weekly meeting, and daily meetings can happen on an ad hoc basis, I like the idea of a weekly summary email though.3) The project does actually have commercial aims, also we designed a game we want to play - both should motivate us (hopefully)!
Martin
Martin, for commercial game someone needs to start thinking about marketing / distribution / payment collection / more formal QA / support side of things. Feature creep often happens out of good intentions or to keep one of the dev team members pleased, keeping scope down might mean making an unpopular decision. MSN is very good, however it always nice to remind what the agreement was through a brief summary to avoid misunderstanding and to keep everyone up to date. Good luck!
Totophil
I have already started vaguely thinking about these things, emails have been exchanged with valve (I think they're the best possibility for indie distribution at the moment).
Martin
Hoping that programmers won't introduce feature creep into their own code is, in my experience, a bad idea. Geeks who are good at coding get fascinated by what they can do and can spend hours 'improving' the system just 'cause it's a cool feaure. Watch out. :-)
beggs
A: 

Crystal Clear