How to plan web application?

Let’s say you want to build a house. Not just a small doghouse, but the real house for you and your family. What will be your first steps? Will you get up, run to building store, get some bricks, and start to build? I’m sure you won’t. You’ll rather plan it. And this plan will be very detailed. Building an application is long-term, and often very expensive process, so it must be planned well. Planning is not very enjoyable part of all process, but it can simplify the next part – application development.

How to start a start?

So, as you may have guessed, the first thing I do when building a new application is to make a plan. You should also do it before you write any line of code.

1. Well-defined goals allows simple realization

When you have to accomplish some task, isn’t it simpler when you know exactly what needs to be done? After defining a detailed list of goals for the app, developing it gets much easier.
We will begin by defining what we need to get when the project will be done. It has to be main, basic goals of the app. Next, they should be shredded into smaller adjectives, which consists of small steps. Then, completing steps, adjectives and main goals will lead us to get finished product.

2. Defining objectives

To elaborate list of actionable steps, allowing to start working on the app, we should define broad goals and divide them into smaller steps.

As I wrote in the previous post, I will be building an app for managing the home budget. In the case of my app, main goals look like this:

1. managing expenses

2. defining budget

So, would you like your boss to tell you: “Implement managing expenses.”. Will you be happy to do that? I bet you wouldn’t know how to even start. That’s why this adjective should be split into smaller parts:

1. managing expenses
  a. create expense
     – choose category
  b. show list of expenses
  c. edit expense

d. delete expense

Now, if you hear “Implement deleting expense!”, I’m sure you will know how to start. Life is getting much easier, and the world is getting prettier, isn’t it? 🙂

Start small, grow later

Another approach, that I am a big fan of, is Start small, grow later. The features of the app should be small and specific. This allows you to implement them fast and release MVP (Minimum Viable Product). At this stage, the app is in initial version and allows for only basic things. It also helps a lot with gathering first feedback from users, and apply them in further development.

Think like manager

Most of the programmers are happiest when they only need to code, and don’t worry about anything else. I caught myself beeing one of them, but I am gradually trying to change it, and start to think in other categories. When you are talking with the client about the project, and gathering his requirements, you can’t immediately start thinking about implementation. Have you ever been thinking about where to add a new column to the database when the client said that he wants to have an opportunity to make a discount on the product in his online shop? That is a mistake. You should be thinking about value for the client, which that functionality can bring. Maybe sometime you will invent and propose a better solution?

A Programmer is for thinking, not only for typing code.

Everyone should remember this sentence. Both programmers and clients. I will leave you with this thought, Think about it, at least this is your job…

I will leave you with this thought, Think about it, at least this is your job…