My approach to software planning and estimation

2021-02-20 12:22:00 +07:00 by Mark Smith

While there isn’t a single approach that works for all projects, doing some planning and estimation goes a long way to increasing the chances of a successful project. I wanted to give my general approach and share some useful resources on the subject.

Here’s the general approach I'm going to take in this blog post:

Why planning and estimation

For smaller projects, a high level overview and a few diagrams might suffice, but for longer projects with more unknowns, it’s important to take more time, filling out a more detailed plan before commencing. At the same time you want to avoid getting stuck in endless details or a plan that isn’t flexible to changing conditions.

Identifying problematic areas, and finding an appropriate balance between planning and implementation is key, with good communication between the people involved in the project.

Create a high level system design

See the Facebook architecture planning videos for some good examples of high level system design:

Create a sprint plan

General approach is agile scrum methodology. Break down the project parts into subtasks (called stories), add time to each, gather all these into a backlog. These will be completed during time blocks called sprints, which last a set amount of time (typically 1 or 2 weeks).

During sprint planning assign stories to be completed in each sprint:

In pseudocode:

Take each project part - Create stories - Add story estimates - amount - confidence - measured - accuracy - Add stories to backlog - Total all the estimate amounts - Update measured & accuracy throughout project

The following project planning article goes into a lot more depth on the subject:

Useful tools

There are lots of great agile development tools available, many of which have excellent collaboration features. You should probably use the best available at the time your project is happening.

Planning is such an important aspect of web development that I have build an agile blog tool that you can use just in case there’s nothing else available.

It’s open source, uses text files as storage, very unlikely to break, and will enable you to manage a backlog of tasks.

For enquiries about my consulting, development, training and writing services, aswell as sponsorship opportunities contact me directly via email. More details about me here.