Build Without AI
A project, your understanding, your decomposition, your pseudocode, your attempt — then the hint ladder one rung at a time, then a review, then the reference. The order is the exercise.
Problem→Understand→Requirements→Constraints→Unknowns→Decomposition→Smallest Step→Model→Experiment→Observe→Debug→Learn→Iterate
The rules
- Write your understanding first: what it is, who uses it, the core workflow, the data, the first slice, your unknowns as questions.
- Make an attempt — pseudocode counts — before any hint. A blank attempt and a hint is reading, not building.
- Hints come one rung at a time: conceptual direction, then the relevant abstraction, then pseudocode, then a partial implementation. Take the smallest one that unsticks you.
- The reference is shown last, and only after an attempt exists. Compare, do not copy.
- Count the rungs you used. Next time, aim for one fewer.
The brief
Given a long URL, return a short code. Given a short code, redirect to the long URL. Codes must not collide, and the service must keep working after a restart.
1 · Your understanding
Before any hint. Short answers are fine; blank answers are the tell.
2 · Your attempt
Pseudocode, a sketch, a partial implementation — whatever you can produce without help.
3 · Hints, one rung at a time
Rungs used: 0 of 4. Each one is smaller help than the next.
4 · Review
What a reviewer would ask of your attempt. Tick the ones you can answer from what you wrote — not from what you would say if asked.
- Where does uniqueness come from in your design — the database, a random generator with a retry, or hope?
- What happens when two creations arrive at the same moment? Walk through it.
- Is your code guessable? Did you decide that, or inherit it?
- What do you do with a code that contains a character outside your alphabet?
- Why 302 and not 301 — or the reverse? What does each mean for a browser that has seen the link before?
- What survives a restart, and how do you know?
- Which URLs do you refuse to shorten, and why?
0 of 7 answerable.
5 · The reference
Shown last. Compare it with your attempt; the differences are the lesson.