Free through lesson 3

How Software Projects Run

Proposal, requirements, high-level design, detailed design, implementation, testing, release, operation. One project — an equipment lending system for a general affairs department, 400 users and a budget of 12 million yen — runs from lesson 1 to lesson 30, so you learn the connections between the phases along with the phases themselves. Every lesson confirms in numbers how a decision made upstream plays out downstream.

Curriculum

The 30 lessons are grouped into six chapters, and working through them in order is the best way. Note: every output in the text comes from running small calculation and charting scripts written with nothing but the Python standard library (no frameworks, no database). You do not need to read the code — reading the output is enough.

Chapter 1 — Before a project begins (lessons 1–5)

The overall shape of the phases, choosing a process model, team structure and RACI, contracts and estimates, WBS and the critical path. What has already been decided before anyone writes a line of code, in order.

Chapter 2 — Requirements (lessons 6–11)

From analysing the current state to a finished requirements document. Six lessons take you through turning problems into numbers, counting the handoffs in a business process, working them down into use cases and non-functional requirements, and getting agreement at review.

6

Analysing the current state and framing the problem (do not turn a request straight into a feature)

Separating what people ask for from what is actually hurting them. Turning workload into numbers to compute the return, and separating what the system should solve from what the process should.

🔒 Basic
7

Visualising the business process (count the handoffs, not the steps)

Drawing the As-Is and To-Be process as swimlanes and counting handoffs and waiting time. Also how to surface the exceptions hiding behind the happy path.

🔒 Basic
8

Use cases and functional requirements (write them with the user as the subject)

Rewriting a request as a functional requirement, writing a use case description, and building traceability between requirement IDs and the problems they address.

🔒 Basic
9

Non-functional requirements ("a fast system" is not a requirement)

Surfacing non-functional requirements in six categories, and turning performance, availability and data volume into numbers from actual usage. With how to verify each and what counts as passing.

🔒 Basic
10

The requirements document and scope management (the chapter that works is the one listing what you will not do)

The table of contents of a requirements document, how to write what is out of scope, detecting vague wording mechanically, and the change control process with the arithmetic of scope creep.

🔒 Basic
11

Reviews and reaching agreement (a review with no findings is not a success)

Four ways to run a review and when to use each, assigning the roles, classifying findings, what approval means, and how to record it. Also review speed against detection rate, in numbers.

🔒 Basic

Chapter 3 — High-level design (lessons 12–17)

The chapter that settles the externally visible shape. Screen flows, ER diagrams, tables, APIs and architecture, all built up in order from the requirements of the same single project.

12

The big picture of high-level design (decide only the externally visible shape)

The boundary between high-level and detailed design, the deliverables and who reviews them, allocating requirements to screens, tables and APIs, and recording design decisions.

🔒 Basic
13

Screen design and screen flow (decide the flow before the fields)

Building a screen inventory with view counts and designing from the screen flow. Writing a screen specification, the wording of error messages, and choosing defaults for lists and forms.

🔒 Basic
14

Data modelling (list the nouns, then check each multiplicity one at a time)

Picking the nouns out of the requirements to settle the entities, and confirming multiplicity by asking in both directions. Adding sample data and moving time forward to find gaps in the model.

🔒 Basic
15

Table design (normalise first, then denormalise only as far as you need)

Normalising an Excel spreadsheet, judging when deliberate duplication is right, protecting data with constraints, and choosing indexes from the search conditions on the screens.

🔒 Basic
16

API design (URLs are nouns, operations are methods)

Taking stock of the external interfaces, naming URLs, returning errors, and the CSV interchange specification with its pre-import checks. Actually reading a CSV to see the ways it breaks.

🔒 Basic
17

Architecture and technology selection (novelty gets a weight of zero)

Deriving the architecture from the non-functional requirements, comparing candidate architectures alongside their costs, and scoring a technology choice with the weights decided in advance.

🔒 Basic

Chapter 4 — Detailed design and implementation (lessons 18–22)

From detailed design that documents only what an implementer would hesitate over, through security design, code review, measuring progress and log design. The chapter of things that pay off while you are building.

Chapter 5 — Testing and acceptance (lessons 23–26)

Test planning, system testing, acceptance testing and sign-off. You count by what was verified, set the pass criteria in advance, and put yourself in a position to make a GO/NO-GO call.

Chapter 6 — Release and operation (lessons 27–30)

Release procedures and rollback, migrating data out of an Excel spreadsheet, operations and incident response, and a round-up of all 30 lessons. Built on the assumption that the time after you ship is the longer part.

Once you have finished all 30 lessons, take a closer look at the agile methods touched on in lesson 2 with Agile Scrum for Beginners, at the testing techniques deferred in lesson 23, or at Git & GitHub for Beginners, which lesson 21 left out. Membership unlocks every course.