In software development, we have a lot of planning and design methods that should help us in creating a vision of a final product. However, as it usually is, they are designed with commercial products created by full and paid teams in mind. What if we are doing our personal project in spare time? We could try to employ those methods too, but they would usually be an overkill and even complicate things more. So, what instead?

I’m afraid the process frequently looks like this:

Oh, I have this BRILLIANT idea for an app with this KILLER FEATURE X. So, I fire up my IDE and start typing. After a few hours of a coding marathon, I already have the X covered and then… I go to sleep. Next day I can no longer find motivation or direction in which I could go. So I stare blankly at the editor window, maybe write some boring features, like authentication or logging. But the thrill is gone, I don’t feel it anymore. As a result, the project lands in the unfinished directory, never to see the daylight…

You know who else does it? Amateur fiction writers. It’s literally the same: have an idea, open editor, start writing. One chapter, second chapter and… Soon you don’t know where the story should go next or why you created your hero with this particular characteristic. For example, you planned to end the story with an epic battle on top of the highest skyscraper in the city. But in the process it turned out that your hero has an acrophobia and it no longer makes sense. You go back, start to rewrite the first chapter, but it becomes more and more mess. Finally, you give up.

Sound similar enough, right?

So here’s a good news: fiction writers have a lot of tools to avert it and guide their stories to a happy (or not) end. In this post, I try to adopt one I think is particularly useful to personal software project development.

❄️ The Snowflake Method

The Snowflake method was invented by Randy Ingermanson for writing novels and it is based on the notion of Koch curve, which is a fractal. The idea is to start with something simple (or small) – in Koch curve example it’s a simple regular triangle – and add more and more details to have a complex shape.

Each iteration of Koch snowflake corresponds to a step in Snowflake method. Each step adds more details to the previous picture and after each one, you can (and probably should) go back and check if you don’t need to change something on a higher level. Unlike the fractal, which has an infinite number of iteration, Snowflake method for novel design has 10 steps. My adaptation to software design has only 5, but you can add more if you like.

Step 1: One sentence summary

Citing original article by Randy:

Take an hour and write a one-sentence summary of your novel. Something like this: “A rogue physicist travels back in time to kill the apostle Paul.” (This is the summary for my first novel, Transgression.) The sentence will serve you forever as a ten-second selling tool. This is the big picture, the analog of that big starting triangle in the snowflake picture.

In your case, you also create a one-sentence summary. Think of it as of answer to a question “What are you currently working on?” asked by your friend over a beer. It needs to be short, yet telling a lot. You should avoid names because they are not really necessary. Use 10 to 20 words for the best experience.

Examples

Step 2: Motivation

Take some time to write a longer description. Concentrate on motivation: why do you want to create such an app? Is it for learning purpose? To showcase some technology? You know something similar, but want to do a better version of it? (How would it be better? Why should users switch to your version?) Or maybe you want to solve a particular problem people have?