The first thing that I do when I start working on a new project is to sketch out a design. Not a complete spec, but I try to at least write down what I'm supposed to be doing, what kinds of input I'm expecting, what kinds of output, and so on. (The next thing I do, once I have some idea of how I'm going to solve the problem, is hit CPAN.)

Why does this work better than just sitting down and typing a shebang and going from there? It works better because I can more easily break the problem down into steps, and solve each smaller problem one at a time. I can think about which parts of the program need access to what data, and keep my code more loosely coupled as a result. (That way, when I have to change something, it's less work.) Because I put some thought into how I'm going to solve the problem, it's easier to figure out which modules on CPAN are going to be most helpful, and which ones are nifty but tangentially related to my particular problem. In general, this way works better because it gives you a better understanding of the problem.

On larger projects, my design docs include prototypes and mockups. You can still start coding right away even if you don't start coding right away. :-)

--
:wq

In reply to Re: Virtues of Software Engineering by FoxtrotUniform
in thread Virtues of Software Engineering by vladb

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.