Beefy Boxes and Bandwidth Generously Provided by pair Networks
Just another Perl shrine
 
PerlMonks  

Three steps to sanity

by bibliophile (Prior)
on Oct 21, 2004 at 14:30 UTC ( [id://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 (Paladin) 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?
Username:
Password:

What's my password?
Create A New User
Domain Nodelet?
Node Status?
node history
Node Type: note [id://401172]
help
Chatterbox?
and the web crawler heard nothing...

How do I use this?Last hourOther CB clients
Other Users?
Others about the Monastery: (2)
As of 2024-04-26 00:51 GMT
Sections?
Information?
Find Nodes?
Leftovers?
    Voting Booth?

    No recent polls found