4 The twisted path of development: Figuring out what to build and how to build it

 

In this chapter, you will learn

  • Continuous planning to cover the rocky ground of software development
  • Figuring out the questions we must answer to plan our product
  • Deciding what should and should not be included in our product
  • Answering product questions through prototyping

When you read chapters 2 and 3, it might have seemed that there was some kind of magic at work. I simply got started with the coding for Photosphere like I already knew what I was doing with it!

Well, in fact, I didn’t just know where I was heading with it. Instead I had already put in a lot of effort into planning it and in this chapter we pull back the curtains to reveal the magic that happened before (and during) the coding of Photosphere.

You will see that there is no magic (sorry for the spoiler). Just a sequence of (usually) logical steps forward. Many of those steps were small, especially during the production coding we have seen in chapters 2 and 3. However, many other steps have been much larger, notably when I was prototyping (figure 4.1), which we will see in this chapter.

Planning and executing a software project, indeed being a software developer, means we must follow a twisted and tumultuous path (hence the name of this chapter), taking in feedback along the way so that that we can figure out what it is that we are building, but not only that: we must also learn how to build it.

4.1 Continuous planning

4.1.1 Start at the end

4.1.2 What does the product look like?

4.1.3 Planning for the plan to change

4.1.4 Crossing rocky terrain

4.1.5 Software is infinite

4.1.6 Create a roadmap

4.2 Exploring the space of possibilities

4.2.1 The learning cycle

4.2.2 User-based planning

4.2.3 Risk-based planning

4.2.4 Finding answers

4.2.5 Eating the frog

4.2.6 Throw-away coding

4.2.7 Dropping the baggage

4.3 Prototyping Photosphere

4.3.1 Random gallery generator

4.3.2 Simplest possible photo gallery

4.3.3 An open source photo gallery?

4.3.4 Custom gallery layout

4.3.5 A non-functional mockup

4.4 Throwing out the rule book

4.5 Summary