|
| 1 | +# The Basics of Software Project Planning |
| 2 | + |
| 3 | +Why are we planning at all? |
| 4 | + |
| 5 | +- Helps break down a large project into manageable pieces |
| 6 | +- Helps prioritise important features (and deprioritise unnecessary ones) |
| 7 | +- Enables your team to complete work in parallel |
| 8 | + |
| 9 | +## Approach |
| 10 | + |
| 11 | +Top-down approach: |
| 12 | + |
| 13 | +1. Goals |
| 14 | +2. Personas |
| 15 | +3. User journey |
| 16 | +4. Writing tickets |
| 17 | + 1. Features |
| 18 | + 2. Sub-tasks |
| 19 | + 3. Bugs |
| 20 | + |
| 21 | +Not strictly linear. |
| 22 | + |
| 23 | +## Goals |
| 24 | + |
| 25 | +What are you trying to achieve? |
| 26 | + |
| 27 | +- Portfolio projects: want to showcase skills (needs to look good) |
| 28 | +- Solving a problem: want to help users in some way |
| 29 | + |
| 30 | +What is out of scope? |
| 31 | + |
| 32 | +(Hint: For an MVP, don't worry about cybersecurity, performance, accessibility, etc.) |
| 33 | + |
| 34 | +## Personas |
| 35 | + |
| 36 | +Who are you building this for? |
| 37 | + |
| 38 | +Common personas: |
| 39 | + |
| 40 | +- Users |
| 41 | +- Client (if applicable) |
| 42 | +- Developers (you and your team) |
| 43 | + |
| 44 | +## User Journey |
| 45 | + |
| 46 | +Once you've identified personas, features naturally take a user story format: |
| 47 | + |
| 48 | +> "As a [persona], I want [feature], so that [benefit]." |
| 49 | +
|
| 50 | +You should do some research here - look at similar applications. |
| 51 | + |
| 52 | +Good to do some light wireframing here - sketch out the pages of your application. |
| 53 | + |
| 54 | +## Writing Tickets |
| 55 | + |
| 56 | +Recommend breaking down work into vertical slices (as explained below). |
| 57 | + |
| 58 | +Alternatively, can break down tasks into horizontal layers first (frontend/backend/database), but this can lead to bottlenecks. |
| 59 | + |
| 60 | +### Features |
| 61 | + |
| 62 | +Normally 1 user story per feature ticket, but may occasionally have a few user stories per feature. |
| 63 | + |
| 64 | +Define "Acceptance Criteria" for each ticket. Example format: |
| 65 | + |
| 66 | +> - MUST be able to [action] |
| 67 | +> - MUST NOT be able to [action] |
| 68 | +> - SHOULD have tests |
| 69 | +
|
| 70 | +### Sub-tasks |
| 71 | + |
| 72 | +- UX/UI Design (Figma, etc) |
| 73 | +- Frontend Implementation |
| 74 | +- Backend APIs |
| 75 | +- Database Modelling |
| 76 | +- Deployment |
| 77 | + |
| 78 | +### Bugs |
| 79 | + |
| 80 | +Take the format: |
| 81 | + |
| 82 | +> Steps to reproduce: |
| 83 | +> 1. [Step one] |
| 84 | +> 2. [Step two] |
| 85 | +> ... |
| 86 | +> |
| 87 | +> Expected result: |
| 88 | +> [What you expected to happen] |
| 89 | +> |
| 90 | +> Actual result: |
| 91 | +> [What actually happened] |
| 92 | +> |
| 93 | +> Extra info: |
| 94 | +> [Browser, error logs, etc] |
| 95 | +
|
| 96 | +## Some parting advice |
| 97 | + |
| 98 | +- Everything that I've said is advice, not rules |
| 99 | +- Revisit your goals often |
| 100 | +- Done is better than perfect |
| 101 | +- AI is a trap for defining goals & requirements |
0 commit comments