A collection of work-in-progress posts. I will eventually extract these into individual nodes.
Components of Software Project Planning
Identify and Explicitly Define the Problem
- Perhaps the most important part
- Define the solution you seek to solve. Your project is a success if it addresses the points you list here.
Understand the History and Surroundings
Projects are rarely greenfield. Consider the history of projects which came before and the context in which your project exists.
Dependencies
Understand how your work will depend on external services.
- Do those services have capacity to support your project?
- What will you do if one of your dependencies fails?
Technical Debt
- Is there pre-existing technical debt?
- What, if any, technical debt will this project introduce?
- What is your plan, and timeline, for mitigation and/or remediation?
Estimates
- Timeline estimate
- Effort estimate
Security
Reliability
Data Integrity
Privacy
Scalability
Latency
Abuse
Accessibility
Alternative Methods
- Assume there is more than one way to complete your project. Resist the pull of your first idea. Think critically and document alternative approaches to solving the underlying problem
Have a Plan for …
Launch
- How will you launch your project?
Testing
Documentation
- How will you document your project? At minimum you should have a document which describes the goals, etc (see below).
Software Project Planning Principles
- It doesn’t exist unless you can measure it.
- Your feature isn’t “live” unless you have a metric/heartbeat/etc which indicates as such.