My approach to software planning and estimation
Tags: programming, webdev, agile, planing
Published: 2021-02-21 01:29:19


---
title: My approach to software planning and estimation
published: true
description: A brief description of how I approach project planning and estimation, with some useful articles and resources.
tags: programming, webdev, agile, planing
canonical_url: https://blog.markjgsmith.com/2021/02/20/my-approach-to-software-planning-and-estimation.html
---
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](#why-planning-and-estimation)
- [Create a high level system design](#create-a-high-level-system-design)
- [Create a sprint plan](#create-a-sprint-plan)
- [Useful tools](#useful-tools)

## 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

- Overview
- Project parts
- Architecture
- Issues / items that need to be discussed and solved

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

- [Top Facebook System Design Interview Questions (Part 1)](https://hackernoon.com/a-look-at-the-top-questions-for-a-system-design-interview-at-facebook-va15311j)
- [Top Facebook System Design Interview Questions (Part 2)](https://www.indiehackers.com/post/top-facebook-system-design-interview-questions-part-2-3409d78139)

## 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:

- high level sprint planning for several months at a time, and
- more detailed sprint plan each week for the next 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:

- [Definite guide to estimating software projects](https://maximzubarev.com/estimating-software-definite-guide)

## 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.

- [Eleventy Agile Blog](http://blog.markjgsmith.com/portfolio/#eleventy-agile-blog)

——-

Thanks for reading!

[@markjgsmith](https://twitter.com/markjgsmith)

*[I’m currently available for hire](https://blog.markjgsmith.com/about)* - Consider hiring me!

If you liked this article you might like adding my [blog feed](https://blog.markjgsmith.com/feed.xml) to your RSS reader, reading my [daily linkblog](https://links.markjgsmith.com) or signing up for my [weekly newsletter](https://markjgsmith.substack.com). :)

*Originally posted on [blog.markjgsmith.com](https://blog.markjgsmith.com/2021/02/20/my-approach-to-software-planning-and-estimation.html)*