in reply to Document-centric vs. Workflow-centric design

My recommended approach would be:   “product- and project- centric.”

First of all, your piece of software is “a product,” even if it is “just” for in-house use. You are spending a lot of time and money on it, even if you're “just” doing it for yourself. People are going to need to rely upon it, even if that group of people “just” includes yourself.

Secondly, your piece of software is a project, which means that the very best time and place to plan it all out ... and to plan it all out ... is at the very beginning. You don't have to figure things out as you go along. You don't have to take off at a full gallop on your horse while you fumble around in your back-pocket to see if you even remembered to bring your map with you. You can create a schedule for yourself and track your progress against it. You can work out specifications, including appearance and procedures, before you start to write anything, and the time spent doing that will be time very well spent. What works so well in the construction trades works just as well here. (Try it.)

The more you work on clearly-separating this design work from your coding, the more you'll realize that “coding it” is pretty much drop-dead easy. It's a task that you basically perform by-rote. The hard work is the design, and what's actually been making software-writing seem “so damn difficult” is the tremendous amount of scrap-and-rewrite that undisciplined methods were causing you to do. You were “going off half-cocked,” time and time again. Acting as though computer-programming were rocket science, when even a rocket scientist doesn't do things that way.

Once you have decided exactly what you're going to do, and how (perhaps among many possibilities) you're going to do it, then both the documents and the workflow just follow on as necessary consequences. Again, more or less just by rote. (I simplify, but only slightly.)

Mind you, the project does not have to be worked-out in exhaustive detail before you can actually start to do something useful. More likely, it's going to be an incremental, cyclic process that goes through many iterations many times ... but not as “a voyage of discovery.” Do all your discovery with a map, in port (or on the leeward side of the most-recent Tahitian island), then set sail (again).

“If you fall off the edge of the ocean, it's your own damn fault.”   ;-)

Replies are listed 'Best First'.
Re^2: Document-centric vs. Workflow-centric design
by mr_mischief (Monsignor) on Mar 12, 2008 at 20:40 UTC
    You make some good points, but nowhere did I mean to advocate not planning ahead. I mean that the plan should focus on how the user is going to use the software. The plan should include how the features are going to complement one another, how closely they will be tied together, and whether they should be used at random times or in a fairly set sequence.

    Once one understands how the input would be transformed into the output by a skilled and experienced member of the future end-user staff, one can design the interface around the process. The most important features are those that are used in every case, and the other features can be iterated in once there is a working and tested base of code that produces the default outputs.

      I did not consider my comments to be mutually-exclusive with yours. Nor was I speaking in “in dissent” with what you said. Your points are well-argued and, I think, well-taken.