views:

404

answers:

5

I am a big advocate of agile methods when working on teams and/or large projects.

However, I find that for smaller projects, when working solo, I usually start the project writing unit tests, documenting extensively, refactoring. As time wears on, I stop because I feel like I'm wasting time. I find that cowboy coding with an agile spin (testing often, writing human readable code) often works extremely well for me on small, solo projects that I don't expect others to have to work with.

Do other people share my sentiment? Or do you think that one should never stick to their guns (get it? cowboys)?

So the real question: Are there any agile methodologies that are particularly tailored to a solo project? (other than my "agile cowboy" method above)

+1  A: 

Cowboy coding and agile process are not the same.

As for small personal projects, of course there are many things that would be overkill. Agile development, short iterations, frequent code review and self-documenting code is the way to go.

Developer Art
I'll admit that I am guilty of long iterations when I get into this mode. I usually catch myself before it's too late.
snicker
+3  A: 

Agile is a philosophy, not a prescription. You use the pieces that fit your development style, your project, and your business needs.

I think your "test often, write human-readable code" proposal is a perfectly suitable approach for making good software on a solo team for small projects.

John Feminella
Although it has to be somewhat flexible, leaving out some pieces of Agile is completely insane. If you don't refactor, you are simply throwing all design out the window. If you don't test you can't properly refactor. Agile is like a wheel where one practice often enables the next--break the chain and it all falls apart--then agile gets blamed.
Bill K
I don't agree with your assertion that "leaving out some pieces of Agile is completely insane". In fact, I actually think that sort of view is detrimental to some degree. Every organization and project will have specific needs, and it's important to evaluate what tools and techniques help you get there. Fortunately, refactoring is one of the easier ones to pick (which may be why you think it's foolish to ever put it aside), so most agile projects do indeed make time for some sort of periodic refactoring efforts.
John Feminella
+1  A: 

You might want to look at c2.com's Solo Programming Xp Workarounds. Cardboard Programmer is one for some reason I found particularly amusing. You could perhaps code with a cardboard Jon Skeet next to you?

RichardOD
I smell wonderful business opportunities here. Who will be the first to secure an exclusive deal with Jon? ;)
Pavel Minaev
Don't froget the Rubber Ducking: http://c2.com/cgi/wiki?RubberDucking
Remus Rusanu
I used to talk to the dog, actually, so I find validity in this.
snicker
@Pavel: I've already cloned Jon Skeet. In 18 years, Skeetsoft will be an unstoppable force.
MusiGenesis
A: 

I'm currently working solo on an ASP.NET project (not a small one though). I use TDD quite a lot, and I find that it is not taking longer time to develop using TDD, in fact I save time.

This is primarily because having the suite of unit tests makes it very quick to both test and debug the system. E.g. when a feature is not working as intended, it is a lot quicker to attach the debugger to the NUnit process, than it is to start the web server in debug mode, navigating to the correct page (first passing the login screen), etc. So by not having the unit tests, I would spend a great deal longer testing and debugging.

And the unit tests also help me creating a well designed system, as it forces me to create a more loosely coupled design.

Pete
A: 

I would say the number of people working on the project isn't the only factor to consider. I think the reason you find the full Agile (documentation, refactoring, unit tests.......... these probably aren't really Agile though, they've been around for a long time) to be time-wasting is because solo projects tend to be small projects.

For larger projects that span across more than half a year, I would really expect proper process would really help yourself. You may visit some code you write 5 months earlier. Without documentation, it's the same as other people's work. Without tests, you are as scared to change it as changing other people's code.

kizzx2