Why do programmers hate planning?

As an Indie developer, you must wear a lot of "hats" in order to run your business properly. Perhaps the least favourite hat for developers is the "planning and scheduling" hat.

A lot of indie developers come from a programming background, including myself, so we should all know the benefits of planning; shorter development times, improved software quality and less hair pulling. However, there's still a lot of friction and procrastination when it comes to planning.

A true story

We've all read the examples about how valuable planning is, but I'll include my own to prove it. Let's take two developers: Bob and George. They both come from a programming background, and they're both working on a similar style of game. Bob knows the value of planning, and he writes a detailed plan of exactly how is game is going to turn out. George decides to "wing it", and just scrawls a few screens and flowcharts. He'd much rather program, and whilst Bob is still "wasting his time" planning, George has a good head start. Stupid Bob!

Twelve months later, and Bob has finished his game well before his deadline. In fact, and it's a top seller all over the world. He's rather pleased that he "wasted" that time planning.

And what happened to George?

His game never got completed, because he overlooked several problems that Bob found in the planning stage, and it was too hard for him to fix. He doesn't have a proper job now, but for $5 he'll love you long time.

Ok, so I made that entire story up, but it illustrates an important point – planning is good.

So why do we hate it when it's so valuable?

It's not programming…

It sounds obvious, but planning is not programming, so there's already some resistance. There's often a one dimensional view of what's involved with completing a game - it won't get completed unless it's programmed, so any activity that isn't programming is seen as a waste of time.

Fear of making a mistake…

There's often a feel that the plan needs to be absolutely perfect. Here's the good news - it doesn't. Plans can often change during the course of development, and this is perfectly normal (within reason - too many changes are a symptom of "feature creep"). It's more important that the plan is kept updated, rather than remaining stagnant and outdated because nobody dares to change it.

It's scary…

Writing a big plan is scary on two fronts.

First, we've often seen the huge, monolithic design documents that large software companies churn out. You know the ones I'm talking about – they're the kind that weigh more than the entire development team. Indie design documents can be much more lightweight, as they don't need to cover all the corporate red tape.

The second scary thing is confronting exactly what is going to be involved in creating the product. It forces you to look at the big picture, and accept the fact that creating a 3D engine in a weekend is just a pipe dream. It's never easy to admit that you can't do something, but planning and scheduling a project helps you to develop more realistic expectations and will save you a lot of pain in the long run.

It's boring…

What's more exciting? Writing a new whizz-bang particle system, and watching colourful sparks fly across the screen, or writing about it? Exactly.

It's hard work…

Perhaps the biggest problem is that planning can be hard work. Thrashing out all the details of a project is difficult, and it makes you realise just how complex software construction is.

Thankfully, it gets easier with practice, but it's still a pain to get a good plan completed.

So why bother?

One hour of planning can save anything up to ten hours of implementation work. I think that's reason enough.


Main site now available

The main Sodaware site went live earlier today. At the moment there are only three book reviews, but I intend to add more content over the coming months. I'll also be writing more about what software is being developed, and how. I look forward to sharing my experiences with you all!



Death of an Idealist

My brother's recent post, "Death of an Idealist", got me thinking about how perfectionism is often more of a hindrance than a help.

Perfectionism is a major block for me, and it was highlighted this weekend whilst I was working on my current project. I've been stuck in "Analysis Paralysis" for a few weeks, because there's always that feeling that it "has to be perfect". I decided to write some code, but as part of a "sandbox" so that I could tweak things and then copy the code to the main project when it was ready. Almost immediately I felt a boost, and wrote some pretty good non-perfect code.

Writing software is difficult, and it's not made any easier when you are afraid of "getting it wrong". Just giving myself the safety of a "sandbox" removed this barrier, and made programming a lot more fun than it has been for a while.

Read more: Prosody.co.uk – Death of an Idealist


More PowerPoint Prototyping

Jensen Harris just posted a walkthrough of how Microsoft prototype using PowerPoint. It's almost identical to the way I've been doing it, although I prefer to build the entire UI from shapes and images before creating a detailed picture and overlaying transparent "hot spots". This makes it much easier to move elements around, which means you can quickly try out different layouts with minimal fuss.

One point is that it's best to stick to small segments of the user interface in each presentation, because things can get very complicated very quickly.