Mewmipmiff: A Very Small Systems Development Methodology

Some system development methodologies are long and incomprehensible. This one is just nine words.

On the cork board on the wall above my desk, there is a square of paper with the systems development methodology I follow scrawled on it in crude, childish hieroglyphs. I’m sorry to say that those hieroglyphs happen to be my steadily deteriorating handwriting, but that’s by-the-by. The methodology is as follows:

  1. Make it work
  2. Make it pretty
  3. Make it fast

…or MiW MiP MiF as I call it (or “Mewmipmiff”, as I somehow pronounce it). I’m not the first to expound the benefits of this mantra, and I certainly won’t be the last. It’s in that order for a reason; that’s the order that guarantees putting a working system in front of a human being as rapidly as possible, then improving things from there.

A good friend and co-worker of mine works differently to this mantra, and I regularly experience the effects. His sequence is:

  1. Make it fast
  2. Make it work
  3. Make it pretty

(or “Miffmewmip”, which I think you’ll agree sounds ridiculous).

The development time till a working prototype that we can test arrives takes ages. Premature optimisation does not exist in his vocabulary, everything must be built right-first-time, and everything else waits until each code block is benchmarked, rewritten, re-benchmarked and re-rewritten. I have no problem with coding something first-time in a way I know will yield performance benefits, but if this comes at the expense of speed in the early stages of a project then it should be avoided at all costs. If necessary a system should be hacked together using the worst habits imaginable, if only to get something assembled that works, to give even the tiniest hint of what is to come.

There is a saying in the world of writers; “writing is rewriting”. The same applies in the world of programming; “coding is recoding”. At university, several of my lecturers used the phrase “Code Cutter” instead of “Programmer”, and I always liked this moniker. You don’t write code, you sculpt it, you start with something large and unwieldy and remove what’s unnecessary.

To try to get things right first time is wasteful. Quality is revision’s reward.

Back to Top