Beefy Boxes and Bandwidth Generously Provided by pair Networks
XP is just a number

Three steps to sanity

by bibliophile (Parson)
on Oct 21, 2004 at 14:30 UTC ( #401172=note: print w/replies, xml ) Need Help??

in reply to OT: Project clients

I've found (in any non-trivial but non-monstrous development) that the following works well (from dev perspective):

  • Build a *minimally functional* app based on client specs. Plan to throw it away; you will anyway.
  • Based on feedback, build a second minimally functional app, knowing it will evolve. Evolve it based on client priority list.
  • Once everything has more-or-less settled down, redesign based on what you now know the client *really* wanted, and reimplement.

Much (most?) from step 2 ends up in step 3, so it's not really "wasted" time... :-)

Replies are listed 'Best First'.
Re: Three steps to sanity
by jdporter (Canon) on Oct 21, 2004 at 22:49 UTC
      Thanks for the links... interesting reading, but not really what I was getting at :-)

      I was aiming for (though I seem to have missed the target!) the idea that you shouldn't put a ton of effort into building a system until you understand what system to build...

Re: Three steps to sanity
by FoxtrotUniform (Prior) on Oct 22, 2004 at 00:23 UTC
    Build a *minimally functional* app based on client specs. Plan to throw it away; you will anyway.

    Not even Brooks believes that any more.

    In fact, near the end of The Mythical Man-Month's 20th-anniversary edition, Brooks acknowledges that his advice to "build one to throw away" sounds suspiciously like "make sure the one you keep suffers from the second-system effect", since it's going to be the second system you build. :-)

    Non-dogmatic refactoring has worked well for me. Don't feel obliged to reuse code that sucks, but don't feel obliged to throw it out just because Brooks said so in the 1970s, either.

    (While we're at it, why stop at three steps?)

    Yours in pedantry,
    F o x t r o t U n i f o r m

    "Lines of code don't matter as long as I'm not writing them." -- merlyn

      Refactoring, yes... but I would include "refactoring" of both the design, and my understanding of the client's understanding of the design. And of the client's understanding of the problem. And my understanding of the client's understanding of the problem.

      Hmm. I think what I'm trying to get at is simply that the system you end up implementing may bear little resemblence to the system you *thought* you were going to build :-)

      (Why three? Just MHO. Seems to be enough iterations to get to the right design, without being too many to do in a reasonable time frame. <shrug>)

Log In?

What's my password?
Create A New User
Node Status?
node history
Node Type: note [id://401172]
[erix]: do you mean: 'it can be done simpler', or 'it won't work' ?
[choroba]: I wouldn't want to maintain it in the current form
[erix]: ok, but mainainability comes after it has been made to work :)
[erix]: maybe I should have cobbled together a more simple example
[erix]: the main question is whether repeating groups get captured. I thought they did but it looks they do not.
[erix]: or they probably get overwritten when the repeating is done

How do I use this? | Other CB clients
Other Users?
Others drinking their drinks and smoking their pipes about the Monastery: (6)
As of 2018-01-19 08:36 GMT
Find Nodes?
    Voting Booth?
    How did you see in the new year?

    Results (216 votes). Check out past polls.