It takes a lot of planning, time, and effort to build successful software. Sometimes we jump into coding too fast without really taking a step back and thinking about it. We are so eager to get our hands dirty with code that we forget to ask important questions. It can work in some cases when the project size is small and it does not have a lot of maintenance or updates, but in most cases, it will result in spaghetti code, which will be hard to maintain & soon be marked as "legacy code".

Legacy Code

Now, by planning I don't mean writing out a 400-page business plan with PowerPoint slides and fancy diagrams, or taking courses to become the project manager. Spending even 2 hours planning & researching will yield much better results. I usually spend about 25% of the project time planning it. Here are some of the steps I took to plan this project.

Step 1 - Brainstorm

I just wrote out all the ideas I had for this project, the goal of the app, drew some sketches on paper, a lot of it didn't make sense, but I had to get all of it out so that I could zoom out and think about it while staring at my notes. I then used https://bubbl.us/ to draw the initial diagram of the flow.

Plan

Step 2 - Ask the right questions

You can ask these questions to yourself, to your boss or your customer. Some of these questions can be answered easily, some may require further research. Here are some of the questions I asked myself while planning this project:

  • What is the goal of this app? Add gamification to multiple apps via API that is flexible & customizable.
  • What's the absolute minimum (MVP - Minimum Viable Product) this app needs to do before it’s ready?
    1. Create goals & unlock achievements
    2. Contribute towards those goals by performing actions that get tracked via API
    3. ...
  • Who is going to use this app?
  • What's unique about this app?
  • Who are my competitors?

Step 3 - Research

To answer some of the above questions I had to do some research, so I think it's an important step.

Step 4 - Organize

I had to decide on what tool I would use to organize my ideas & continue with the planning. I have not used Trello before, and since this is a learning experience for me as well, I decided to give it a try.

Trello Board

Step 5 - Database Design

Having initial database design is helpful & important. It will help me visualize the objects, the relationships, & help me write better code.

Step 6 - UI

I am not too worried about the front-end UI yet since the main point is to get the back-end engine working. I can implement the UI later & think about how it will look. In my case I don't want the UI to dictate how I will structure the back-end.

Step 7 - Let The Coding Begin

Coding

Get notified as soon as new content is published