To expand on what salvadors is saying, the approach I like is to describe the main features of the program as stories. Stories tend to be a paragraph or less, describing what the user can do with the program. For example, "Users should be able to add new data to the system by filling out a simple form for the type of data to add."

When you have your stories, break them up into tasks. The example story means we'll have to have an editing form, some mechanism to constrain input to the proper fields, and a way to update data. Estimate the amount of time it will take to perform each task.

Depending on the customer, someone will have to decide which stories need to be done first. I do a lot of free software work, so that's usually the lead developer or the dev team. In commercial or contract work, it's whoever pays the bills.

The hard part is doing the estimates -- but with experience, it gets easier to say "I can code the input and scrubbing routines in a lazy afternoon" and "Putting stuff in the database will take three days." The customer evaluates the estimates and the stories and arranges them in best business value order.

Then you do the most important things first. If you know that in the future you'll need to store data in a database, but it's more important to get the input routines working now, just do the input routines. You can always add complexity to software later, but it's hard to reduce it. So do the simplest thing that could possibly work now.

(XP fans will recognize this as a variant of The Planning Game. It is not appropriate in all circumstances, but it has helped my software. Your mileage may vary, and you didn't pay me for this advice anyway.)


In reply to Re: Rewriting some code by chromatic
in thread Rewriting some code by Fingo

Title:
Use:  <p> text here (a paragraph) </p>
and:  <code> code here </code>
to format your post, it's "PerlMonks-approved HTML":



  • Posts are HTML formatted. Put <p> </p> tags around your paragraphs. Put <code> </code> tags around your code and data!
  • Titles consisting of a single word are discouraged, and in most cases are disallowed outright.
  • Read Where should I post X? if you're not absolutely sure you're posting in the right place.
  • Please read these before you post! —
  • Posts may use any of the Perl Monks Approved HTML tags:
    a, abbr, b, big, blockquote, br, caption, center, col, colgroup, dd, del, details, div, dl, dt, em, font, h1, h2, h3, h4, h5, h6, hr, i, ins, li, ol, p, pre, readmore, small, span, spoiler, strike, strong, sub, summary, sup, table, tbody, td, tfoot, th, thead, tr, tt, u, ul, wbr
  • You may need to use entities for some characters, as follows. (Exception: Within code tags, you can put the characters literally.)
            For:     Use:
    & &amp;
    < &lt;
    > &gt;
    [ &#91;
    ] &#93;
  • Link using PerlMonks shortcuts! What shortcuts can I use for linking?
  • See Writeup Formatting Tips and other pages linked from there for more info.