in reply to All I Ever Needed To Know About Computer Programming I Learned In Shop Class

The first thing that they teach you is how to plan. You work out everything that you are going to do on paper first. You prepare a bill of materials. You work out step-by-step what you are going to do, how you are going to do it, and how you are going to know that you did it correctly before you go on to the next step.
That's called the "waterfall method". Nowadays "agile" is the bandwagon du-jour.

Off course, by cleverly avoiding putting labels on it, it didn't trigger automated "don't do that" responses. ;-)

  • Comment on Re: All I Ever Needed To Know About Computer Programming I Learned In Shop Class

Replies are listed 'Best First'.
Re^2: All I Ever Needed To Know About Computer Programming I Learned In Shop Class
by locked_user sundialsvc4 (Abbot) on Dec 07, 2010 at 19:17 UTC

    I didn’t use those buzzwords because I wasn’t referring to any “methodology.”   The task of writing computer software is not at all like hunting a jackalope, where you have to sneak up on the thing.   It is something that for a variety of reasons must be delivered in-stages and with a nimble, flexible approach.   And it is an extremely delicate contraption, as any machine would be if it had an unlimited number of “degrees of freedom” in its movements – which computer software basically does have.

    You can be “nimble” and “deliberate” at the same time.   In fact, the more deliberate you are, the more nimble you can be.   I have seen “agility” in the manner of Ginger Rogers (“doing everything that Fred Astaire ever did, only backwards and in high heels”) ... and “agility” in the manner of a staggering drunk.   Both groups claimed to be practicing the latest thing.

    “We develop our software using the XYZZY methodology!”   Unfortunately, you have to follow that with the question, “... and exactly what does that mean to you and your team?”   At some times, it is a characteristic of a process that is ticking along like a fine watch.   At other times, it is excuses.

Re^2: All I Ever Needed To Know About Computer Programming I Learned In Shop Class
by TomDLux (Vicar) on Dec 08, 2010 at 16:01 UTC

    If you're doing the plumbing for a house, you can determine specific requirements: master bath, guest bath, main floor powder room, kitchen, laundry.

    Each has well known standard components; bathroom has a bath or shower, powder room doesn't, kitchen has a dishwasher but laundry doesn't.

    Piping, elbows, etc are available in a small variety of materials and sizes, usually only those acceptable by local building codes.

    Basically, it's a well-defined job, though there's always the opportunity for change as things start being installed and you try physically moving between fridge and stove.

    Software projects are not well-defined. You not only assemble pieces into systems, you have to first create the systems and components and sub-components. Imagine if you had to create all your nails, screws, bolts, clamps, and make your own glue before you could assemble a cupboard.

    As Occam said: Entia non sunt multiplicanda praeter necessitatem.

      I respectfully dissent.   If a software project “is not (yet) well-defined,” then one has no business writing code for it.   It isn’t “a project” yet, at all.

      You can figure out where to put the stove and the fridge ... and you’d better be careful to do just that, because the fridge needs 110v power but the stove is 220.   If you now want to go back and change your mind, you’re gonna have to call in the electrician, and re-do all of the tile (and buy more tile), and ... and ...   Oh yeah, and the vent-hood is going to have to be moved, which means that the layout of the entire second floor is going to have to be re-done ... and ... and ... And if we do that, we have to get the structure reinspected ... and ... and ...

      Which is why you learn very quickly to make up your mind and stick to it whenever you are dealing with contractors!

      But, yes ... stop and consider.   How many software-project cost overruns do occur because someone didn’t like where they put the stove?   It’s easy to see the physical implications of change to a physical structure.   You realize that you are playing dominoes.

      Also...   let’s be less melodramatic here:   we don’t actually have a metal-forge out in the backyard, and no one is collecting iron ore to dump into a blast furnace in the basement.   We use a tremendous number of “stock components.” (CPAN is stuffed with them.)   We use toolkits of all kinds.   Sure, our contraptions are built of thousands of moving parts, instead of merely dozens.   But we do not start from scratch.