-------- excerpt --------
Software is the only medium where the construction materials are
entirely the same as the design materials: source code. When a design
engineer works out a complex problem for how a program will work, she
uses source code. When a production engineer later uses that code as
a design document and produces his own, release-quality, shippable
software, he uses source code. In no other medium is this true and it
is this watershed more than any other that defines the post-
Virtually every industrial age product is first designed on paper or
in some other cheap, disposable, high bandwidth, easy-to-iterate
medium. In fact, it is these characteristics of the tools that allow
design to exist at all.
Yes, software can be a cheap, disposable, high bandwidth, easy-to-
iterate medium. Advocates of Agile methods would have you believe
that all software is so. If only it were true. ...
------ end excerpt ------
Is this true? I've never heard of software design being done using
code. Yes, I've heard of coding being done very early in a build
process, in the form of proof-of-concept work or prototyping. And
often this code is used all the way to the final product, often
serving as a foundation for the overall architecture. I've also heard
of engineers beginning coding with extremely poor design
documentation, sometimes with no design at all but requirements
But to call that kind of code "design"? When a software engineer
starts coding without a design plan, which happens sometimes, you can
barely call what they are doing design. But he makes it sound like
this is standard practice. I've never heard that before, except maybe
very recently in the context of Agile.
On the other hand, I am aware of tons of ways of designing software
that doesn't involve code at all, even if we don't count critical
user experience design artifacts like wireframes and UI specs.
Software engineers use UML, DB schemas, architecture diagrams, even
old fashioned flowcharts all the time. Even the most disorganized IT
departments I've worked with have lots of non-code design artifacts.
Companies that outsource need to provide thorough design
documentation before engaging a team a continent awat. Hell, even
Agile folks use these design tools sometimes. All of these are
*exactly* the "cheap, disposable, high-bandwidth, easy-to-iterate"
media that Cooper contends that software designers aren't using.
Any thoughts on this? Do such organizations exist, where coding is
done without any non-coded design? Is Cooper trying to talk about
companies that are so profoundly dysfunctional that they don't show
up on my radar? Do such companies exist?
I see where he is going with the essays -- that interaction design
needs to be part of the design process, something I applaud -- but
that doesn't help the fact that he seems to be saying that something
I see every day doesn't exist.