Game Development Personal Development

Agile Individuals?

Paper Burns: Game Design With Agile Methodologies gives a nice insight on the benefits of using SCRUM and other Agile methodologies to develop games. You can make games in weeks and months rather than quarters and years. After rereading a bit about the use of SCRUM at High Moon Studios, I was wondering how I could apply it to my own development. After all, I still don’t have Oracle’s Eye finished, and I started that project last August.

But like a lot of things I learn about, it seems to apply best to teams of people rather than individuals. In fact, I don’t think I’ve ever heard of techniques or methodologies for individuals to develop software, let alone games.

Are indie developers expected to just wing it with subpar techniques and figure out the best way themselves? Are we supposed to hire partners/coworkers in order to make decent progress? Or are there tried and true methods for single-person development teams? Pair programming is obviously out, but can’t other methodologies be tweaked a bit to provide a benefit for the lone wolf?

If you work alone, what tips do you have to share?

8 replies on “Agile Individuals?”

The first time I learned of Extreme Programming was when I was running a software company together with a friend. He introduced me to it and suggested we adopt some of the practices. As you say, pair programming is obviously out, even when you are with two, but there’s quite some other stuff that proved useful. On the technical side, we adopted unit testing. On the business side, we experimented with iterative design and development. Both proved useful. Today I’m a lone wolf again, but I still use much of the same practices I did when we were together. (Although I rarely use unit testing for game development.)

In other words, even though most methodologies won’t work for you without change, you can always adopt the parts that do and create a methodology of your own. In fact, I don’t think it works differently when you’re working in a team. I suspect it’s rare that a team can use a methodology without changing it to fit their situation. Extreme Programming even explicitly states: if a part of the methodology doesn’t work for you, change it.

Extreme programming – and probably other agile methods, too – has more to offer a lone developer than most other methods, because it is intended for smaller development teams to begin with.

One of the great things about being a lone developer is that you have a lot of flexibility. Large development methodologies like SDM, Prince II and – to a lesser extent – Unified Modeling all have a degree of bureaucracy because they need to deal with communication lines within the development team. For some of them, that’s the main problem to solve. As a lone developer, you don’t have that problem at all.

[…] An interesting question was posed in a blog entry which also comments on the article above: are there software development methodologies that are applicable for individuals? At first glance I agree that there aren’t many that apply directly - development methods mostly concentrate on using resources optimally, and that is never really an issue for a one-person project. After all, a single person rarely finds himself waiting for himself to get done with that bloody document, or for himself to finish coding that damn module that’s needed for the next part. But one thing does spring to mind: rapid iterations! […]

It’s damn hard to produce alone. Not because it’s difficult, but because it’s isolated. There’s nobody to poke you, nobody to give instant feedback, and nobody to impress.

I use Torque 2D (now Torque Game Builder), and I can generally make a prototype in a few hours, depending on the complexity of the game. So it’s certainly not the time it takes that slows me down. I don’t think there needs to be better software for individuals: this stuff works fine.

Motivation and discipline are the biggest challenges for a solo developer, for me anyway. I don’t know of any coding methods to make a single programmer produce code faster… How many ways can you manage one cycle of work at a time?

To keep my project moving, I spend some time identifying tasks on a large scale and small scale. I use Backpack to create and organize todo lists. I also use Basecamp since I work with one other person who isn’t a coder, but will be doing content and high-level design. These are very easy to use tools that take no time to set up and use. When starting work on my project, I browse my todo lists, pick a task that can be accomplished in the time I have, and do it. Very light-weight project management tools help me stay focused.

Also, carefully choosing languages, file formats and 3rd party libraries can help. Can you use Python instead of C++? XML data files or binary files? Are there open source libraries that implement functionality that you need? What code can you avoid writing and testing yourself? I’m a big fan of the 3rd party libraries!

There’s a number of things you can borrow from agile development to use as a lone developer

* Test-Driven Development
* Short Iterations
* Develop quickly and refactor

And there are some parts the lone developer working on his OWN project already has going for him that’s part of some agile methodologies:

* You ARE your own customer, so you can get rapid feedback from yourself 🙂
* Undoubtably continuous integration is already taking place.

Thank you all for your feedback. Test-driven development will likely be a big help, especially early on when things might change and I want to make sure that nothing else gets broken.

It will also help with shorter iterations. Satisfying a test is a lot more focused than adding one more piece of functionality to my entire game.

I have a few things to think about while I am out of town.

Comments are closed.