What Is Function Creep?
Function creep (also called scope creep or feature creep) is when your project gradually expands beyond what you originally planned — one "quick addition" at a time — until you're overwhelmed, behind schedule, and nothing is finished properly.
Function creep isn't about having bad ideas — it's about having too many ideas at the wrong time. The skill is knowing when to say "yes, later" or "no, not this project."
MoSCoW Prioritisation
MoSCoW (pronounced "Moscow") is a simple, widely-used method for sorting features into four categories. It forces you to be honest about what's essential versus what's aspirational.
| Category | Meaning | Example (Portfolio Site) |
|---|---|---|
| MUST have | Non-negotiable. The project fails without this. These are your assessment criteria. | Working homepage, navigation, responsive layout, deployed/published on Neocities or other public platform |
| SHOULD have | Important but not critical. You'll do these if time allows — and you should plan to. | Custom logo/favicon, colour scheme applied consistently, image gallery |
| COULD have | Nice-to-have. Stretch goals that add polish. Do these only after MUST and SHOULD are done. | Dark mode toggle, CSS animations, interactive p5.js sketch, cursor trails, sounds |
| WON'T have (this time) | Explicitly out of scope. Not "never" — just "not now." Write them down so you don't forget. | Blog with CMS, user login, e-commerce, backend database |
Other Frameworks Worth Knowing
Eisenhower Matrix
Sort tasks by Urgent vs Important:
- Urgent + Important → Do now
- Not Urgent + Important → Schedule it
- Urgent + Not Important → Delegate or simplify
- Neither → Drop it
Best for: daily/weekly task triage when everything feels equally pressing.
Kano Model
Categorises features by user satisfaction:
- Basic — Expected (navigation works)
- Performance — More = better (faster load, better images)
- Delighters — Unexpected surprises (easter eggs, animations)
Best for: understanding which features your visitors actually care about vs. what impresses you.
Timeboxing
Give each feature a fixed time budget. When time's up, it's either done enough or it's cut.
- Homepage layout: 2 hours
- Dark mode: 45 minutes
- p5.js experiment: 1 hour
Best for: perfectionists who spend 4 hours on a hover effect while the site has no content.
MVP → Iterate
Minimum Viable Product: build the simplest version that works, then improve it.
- v1: Static HTML, all content present, basic CSS
- v2: Responsive, polished typography, images optimised
- v3: Interactivity, animations, JavaScript features
Best for: this course! Get a working site first, then layer on features.
The "Should I Add This?" Flowchart
Before adding ANY new feature, ask yourself:
Yes → Do it. No → continue ↓
No → Stop. Go finish those first. Yes → continue ↓
No → It's a WON'T (for now). Park it. Yes → continue ↓
No → It's vanity. Skip it. Yes → continue ↓
Yes → Too risky right now. Park it. No → Go for it.
Common Traps
You add a dark mode toggle, then a theme picker, then custom fonts per theme, then a settings panel... and none of it was in your plan.
You find a cool tutorial and spend 3 hours implementing something you didn't need, at the expense of something you did.
Refusing to move on until one element is "perfect." Nothing is ever perfect. Ship it and iterate.
Seeing a polished site and thinking "mine needs that too." Those sites had teams and months. You have days.
Quick Exercise
Take 5 minutes right now. List every feature you want for your site, then sort them: