Webbo3 Level 2 · JavaScript Development · Day 20 of 20
Project 4: Work Like a Developer
A client brief, a team of five, and everything from the last four weeks in one build. The closest thing to a real sprint we can give you.
By the end of today you can
- Take a vague brief from a non-technical client and turn it into scoped work
- Break that work into issues and run it through branches and pull requests
- Build, review, test and deploy as a team
- Present to the client rather than to your instructor
Project 2 asked whether five of you could solve a problem together. This one asks whether you can work for somebody.
The difference is that you no longer choose what matters. A client does, and they will describe what they want in words that are not requirements.
The Brief
A small business currently manages customer requests through WhatsApp and a spreadsheet. Messages get missed, two people reply to the same customer, and nobody can say how many requests are outstanding. Build a web application that helps them manage requests.
That is what a real brief looks like: a problem described by somebody who is not going to tell you what to build. Notice what it does not say. It does not say what a request contains, who the users are, what "manage" means, or what happens when a request is finished. Those gaps are the work.
Ask them anything, and they will answer as the business owner would: in business terms, sometimes vaguely, occasionally changing their mind. Booking that conversation is the first task, and teams that skip it build the wrong thing on day one.
1. Before Any Code: Understand and Scope
Definition
Scoping is turning a problem into a written list of what you will build, what you will not, and what you are assuming, agreed with the client before any code is written.
Real-Life Example
A carpenter asked for "a cupboard" asks where it goes, how tall the room is and what will be kept in it, then writes down the size and price before cutting any wood. Without that, they build a beautiful cupboard that does not fit through the door.
Types: The Questions to Actually Ask
- Walk me through the last request you handled, from the message arriving to it being finished.
- Who touches a request? Just you, or staff as well?
- What is in a request? What do you need to know about it?
- What does "finished" mean? Is there anything between new and finished?
- What goes wrong most often right now?
- If this only did one thing well, what would that thing be?
The last question is the most valuable, and it is the one that protects you. The answer is your Critical priority, and everything else is ranked below it.
When the client says on Thursday "can it also send them a text", the answer is not yes and it is not no. It is: that is outside what we agreed, here is what it would cost, shall we swap it for something? That sentence is one of the most professionally useful things in this entire course.
The One Thing, Running
Here is the Critical priority as a first working slice: every open request in one place, who is handling it, and a count that is derived, never stored (Day 15). "Take it" assigns a request to the person using the app, and a taken request cannot be taken again, which is the "two of us reply to the same person" problem solved.
Picture the carpenter measuring the doorway first. The cupboard that fits is the one that was scoped.
2. The Process
Definition
The process is the agreed path every piece of work takes from idea to live site. It is what lets five people change one codebase without breaking each other's work.
Real-Life Example
A restaurant kitchen: orders on tickets, one station per dish, and the head chef checks each plate before it leaves the pass. Nobody wanders in and adds salt to someone else's pot.
| Stage | Output |
|---|---|
| 1. Interview the client | Notes, and the one-thing-it-must-do answer |
| 2. Scope | SCOPE.md, including out-of-scope and assumptions |
| 3. User stories | "As a shop owner, I can see every open request in one place" |
| 4. Break it down | GitHub Issues, each half a day or less, all assigned |
| 5. Build | One issue, one branch, one pull request, one reviewer |
| 6. Review | Somebody else pulls it, runs it, comments, then approves |
| 7. Test | The QA lead works through every story on a phone before merge |
| 8. Deploy | A live https URL, from day two, not day five |
| 9. Present | To the client, in their language, not yours |
Here is that issue taken through the Day 10 workflow in real git: a branch named after it, commits on the branch, and a merge back into main once it is reviewed. git log --graph draws the branch and the merge.
Teams that leave deployment until the end lose their final afternoon to path bugs and a broken build. Deploy something almost empty on day two, and every merge then updates a URL that already works. This is the single most reliable predictor of which teams finish.
Picture the kitchen pass: every plate on a ticket, every plate checked before it goes out.
3. What It Must Include
- Everything from Project 2: real data, search, filter, the four states, modules, phone width.
- State handled properly and persisted: Day 11.
- Validation with messages that say what to do: Day 13.
- Keyboard operable, Lighthouse accessibility above 95: Day 13.
- No XSS and no committed secrets: Day 17.
- Deployed over https, with a README a stranger can follow: Day 18.
- A SCOPE.md and a closed set of issues showing how the work was split.
4. The Presentation
Ten minutes, to the client. Not to your instructor, and not a tour of your code.
| Minutes | What |
|---|---|
| 1 | The problem, in the client's own words |
| 1 | What we decided to build, and what we deliberately did not |
| 4 | Live demo, driven by the person who did not build that part |
| 2 | What broke and what we did about it |
| 1 | What we would build next, and why that order |
| 1 | Questions |
It is announced on the day, so you cannot rehearse around it. A team where only the author can operate a feature has not really shared the work, and thirty seconds of demo makes that obvious in a way a commit graph does not.
5. The Rubric
| Criterion | Marks | What is judged |
|---|---|---|
| Understanding the client | 15 | Did you interview them, is the scope sane, is the out-of-scope list real |
| The product | 25 | Does it solve the stated problem on a phone, with all four states and correct derived values |
| Engineering | 20 | Modules, naming, no dead code, no XSS, no secrets, accessibility above 95 |
| Process | 25 | Issues, branches, pull requests, genuine reviews, deployed early, every member committing across several days |
| Presentation | 15 | Clear, honest, in the client's language, and anybody can demo any part |
The assessor does not guess who did the work. git shortlog -sn HEAD counts commits per author, most first. Here is what it shows for a team where one person did nearly everything.
What Loses Marks That Teams Do Not Expect
- One person with 80% of the commits, as above. That is a process failure however good the product is.
- Pull requests approved within a minute of opening, with no comments. Nobody read those.
- A demo that only works if you click in one exact order, which means nobody else tested it.
- An impressive feature nobody asked for, while something on the Critical list is missing.
- Presenting in developer language. The client does not know what a state object is and does not need to.
6. Finish Properly
- Every team member: fork or clone the final repository to your own account so it is on your profile.
- Add it to your pinned four if it is better than what is there.
- Write your own CV line for it, naming the part you owned.
- Write down, privately, one thing you would do differently in a team next time. Keep it, and read it before your first job.
Questions Teams Ask on This Project
The client changed their mind on day three. What do we do?
Exactly what a real team does. Do not say no and do not silently absorb it. Say what it would cost and what it would displace: we can add that, and it would mean the assignee filter does not get built this week. Which would you rather have? Then write the decision in SCOPE.md with the date. That sentence and that record are most of what project management is.
Two of us disagree about how to build something. Who decides?
Time-box it to ten minutes. If you still disagree, the Product Lead decides and the team commits to it, including whoever lost. Write the decision and the reason in the pull request so it is not argued again on Thursday. A team that cannot close a disagreement loses more to the argument than to whichever option was worse.
One of our five is not contributing. Do we carry them?
No, and do not stay silent either. Raise it in the team on day two, not in the assessment on day five, when nothing can be done. If it does not change after you have raised it directly, tell your instructor while there is still time to help. The commit history is read per person, as git shortlog showed, so carrying somebody does not protect them and it does cost you.
We are behind. Do we cut a feature or work through the night?
Cut, and say you cut it. A finished small thing with an honest "we did not get to assignment filtering, here is why and here is what we would do next" marks well. A half-built big thing that breaks in the demo does not, and nobody in industry is impressed by an all-nighter that produced a broken build.
Do This Now
- Book the client interview and ask all six questions.
- Write and commit SCOPE.md, with a real out-of-scope list and your assumptions.
- Turn every user story into issues of half a day or less, each with an owner and a reviewer.
- Deploy an almost empty page on day two.
- Build issue by issue: one branch, one pull request, one genuine review each.
- Rehearse the presentation with a different person driving each part of the demo.
Tick Before You Move On
- ☐ We interviewed the client before writing any code
- ☐ SCOPE.md exists, with a real out-of-scope list and our assumptions
- ☐ We deployed on day two and every merge since has updated it
- ☐ Every member has commits across several days, and reviewed somebody else
- ☐ Any one of us can demo any part of it
- ☐ Accessibility above 95, no XSS, no committed secrets
Quick Recap
A brief is a problem, not a specification; the gaps are the work. Ask what the one thing is, and rank everything else beneath it. Write the out-of-scope list down, because it is what protects you on Thursday. Deploy on day two. Present in the client's language, and let anybody demo any part.
You Are Done
Twenty days ago you could build a page that looked right and did nothing. You can now take a problem described by somebody who does not know how software is built, scope it, split it, build it in a team, review somebody else's work, find your own bugs, make it usable by people who do not use a mouse, keep it reasonably secure, ship it to a URL, and stand up and explain every decision in it.
That is not "I know JavaScript". That is a junior frontend developer, and the difference is the whole point of the last four weeks.
Level 3 is React, TypeScript and production frontend architecture. Everything React does for you, you have now done by hand: rendering from state, one source of truth, deriving values rather than storing them, components as modules. That is exactly why we did it in this order. React will feel like a shortcut rather than magic, and that is the difference between using a framework and being trapped by one.
Final Scenario
On Friday the client watches Tunde, who built none of it, open the app on her own phone. He takes a request, marks another done, and the open count drops by one.
She asks whether it can send customers a text. Amaka opens SCOPE.md, reads the line they agreed on Monday, and offers to swap it for the assignee filter next week.
That is the job: the right thing, built together, shipped, and explained in the client's words.
Level 3: React, TypeScript and production frontend. You have earned it.