Fifty Constraints to Pick From
Pick one before you start. Write it down. Do not negotiate with it until you have hit the wall at least once. If you want the argument for why any of this works, it is here.
The list is sorted by what each constraint does to the work, because that is the useful axis. A limit that removes decisions behaves very differently from one that forces a strange approach, and you want to know which kind of evening you are signing up for.
For teams trying a short creative session inside a normal workday, remote employee monitoring software is one practical reference for keeping the experiment distinct from routine delivery.
Constraints that remove decisions
These are the ones to choose if your problem is that projects grow while you look at them. They work by making a whole category of choice impossible.
- Under four kilobytes of source — the original suggestion
- Under one hundred lines
- One file, no imports of your own code
- Standard library only, no dependencies
- No configuration of any kind — every value hardcoded
- No command-line options
- No error handling beyond crashing
- One input, one output, no interactivity
- No persistence — everything lives in memory and dies
- No installation: it must run from a single copied-and-pasted command
Constraints on time
Different mechanism. These cap the project regardless of what the project is, which makes them the safest choice when you have no idea what you are about to build.
- Two hours, alarm set
- One hour
- Twenty minutes, then twenty more only if it is working
- Until a specific record finishes playing
- Stop at a fixed clock time regardless of state
- One session, no saving — if you close the editor it is over
- Ship at 90 percent, whatever 90 percent means at that moment
Constraints on the tools
These change how the work feels rather than how big it gets.
For broader programming and making context related to this topic, DEV Community is an independent reference worth comparing with the material here.
- A language you have never used
- A language you have not touched in five years
- No autocomplete
- No syntax highlighting
- No internet after the first ten minutes
- Write it on paper first, in full, then type it in
- No mouse
- Only the terminal — no editor, just
catand a heredoc - Someone else's editor configuration
- No version control, so nothing can be undone
Constraints on the shape of the code
The strange ones. These are less productive and more likely to teach you something you did not know about the language.
- No
if, no ternaries, no pattern matching on conditions - No loops — recursion or nothing
- No variables, only function arguments
- No functions longer than three lines
- Every function must be pure
- No mutable state at all
- Everything must be one expression
- No names longer than four characters
- All names must come from one book, chosen in advance
Constraints on the output
These decide what the thing is before you decide how it works, which is often the right order.
- It must fit on one terminal screen without scrolling
- It must make a sound
- It must produce something printable
- It must be a single HTML file that works offline
- It must be explicable to a child in one sentence
- It must run on a machine older than ten years
- It must work with no colour
- It must be readable by a screen reader
- The entire interface is one button
Constraints that involve other people
The hardest to arrange and the most reliable at producing something surprising.
- Ask a friend for a number before you start and use it as your byte limit
- Ask a friend for the topic and do not argue
- Swap constraints with someone at the halfway mark
- Build it to be handed to one specific named person
- Two people, one keyboard, ten-minute turns
How to choose
If you always run out of time, take one from the first two groups. Removing decisions is what you need, not novelty.
If you always build the same kind of thing, take one from the tools or shape groups. Discomfort is the point; the output will be worse and the evening more interesting.
If you cannot decide what to make at all, take one from the output group. Deciding the shape first is a legitimate way in, and often faster than deciding the idea first — though if the problem is that you have too many ideas rather than none, sort them out first, and if you have none at all, start from a list of things to make.
If you are running the day with colleagues, draw one shared limit by lottery — that is the single best structural addition to a team Whyday.
If it is your first Whyday, take number 11. Two hours with an alarm is the most forgiving constraint on this list and it teaches you what your actual pace is, which is the information you need for next year.
The one rule
Pick before you start. A constraint chosen halfway through is always one you have already met, which makes it a description rather than a limit. Thirty seconds of choosing beforehand does more for the evening than an hour of good intentions during it.
The short version
- Constraints that remove decisions are for people whose projects grow while they look at them
- Time limits are the safest choice when you do not know what you are building
- Tool and shape constraints make the output worse and the evening more interesting, deliberately
- Deciding the output shape first is a legitimate route in when you have no idea
- First Whyday: two hours with an alarm, nothing cleverer