<?xml version="1.0" encoding="UTF-8"?><rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	>
<channel>
	<title>Comments on: Code Reads #6: Mitch Kapor&#8217;s Software Design Manifesto</title>
	<atom:link href="http://www.wordyard.com/2006/12/08/kapor-design/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.wordyard.com/2006/12/08/kapor-design/</link>
	<description>Technology, politics, culture</description>
	<pubDate>Mon, 01 Dec 2008 19:32:49 +0000</pubDate>
	<generator>http://wordpress.org/?v=2.5.1</generator>
		<item>
		<title>By: Scott Rosenberg&#8217;s Wordyard &#187; Blog Archive &#187; Code Reads #12: &#8220;Big Ball of Mud&#8221;</title>
		<link>http://www.wordyard.com/2006/12/08/kapor-design/#comment-391</link>
		<dc:creator>Scott Rosenberg&#8217;s Wordyard &#187; Blog Archive &#187; Code Reads #12: &#8220;Big Ball of Mud&#8221;</dc:creator>
		<pubDate>Mon, 17 Sep 2007 03:32:47 +0000</pubDate>
		<guid isPermaLink="false">http://www.wordyard.com/?p=1182#comment-391</guid>
		<description>[...] Learn (&#8221;function melts form,&#8221; &#8220;maintenance is learning&#8221;). And, as with Mitch Kapor&#8217;s Software Design Manifesto, there&#8217;s a grounding in the classical architectural principles of [...]</description>
		<content:encoded><![CDATA[<p>[...] Learn (&#8221;function melts form,&#8221; &#8220;maintenance is learning&#8221;). And, as with Mitch Kapor&#8217;s Software Design Manifesto, there&#8217;s a grounding in the classical architectural principles of [...]</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: The Software Designer &#171; plaintext</title>
		<link>http://www.wordyard.com/2006/12/08/kapor-design/#comment-392</link>
		<dc:creator>The Software Designer &#171; plaintext</dc:creator>
		<pubDate>Mon, 06 Aug 2007 05:16:17 +0000</pubDate>
		<guid isPermaLink="false">http://www.wordyard.com/?p=1182#comment-392</guid>
		<description>[...] peg to exact meaning until finally, via Scott Rosenberg&#8217;s blog, I was introduced to Mitch Kapor&#8217;s concept of &#8220;Software Designer&#8221;. Rosenberg explains:  This person’s role incorporated some of the work often associated with the [...]</description>
		<content:encoded><![CDATA[<p>[...] peg to exact meaning until finally, via Scott Rosenberg&#8217;s blog, I was introduced to Mitch Kapor&#8217;s concept of &#8220;Software Designer&#8221;. Rosenberg explains:  This person’s role incorporated some of the work often associated with the [...]</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: NextSmallThings &#187; Dreaming in Code</title>
		<link>http://www.wordyard.com/2006/12/08/kapor-design/#comment-390</link>
		<dc:creator>NextSmallThings &#187; Dreaming in Code</dc:creator>
		<pubDate>Sun, 31 Dec 2006 00:08:06 +0000</pubDate>
		<guid isPermaLink="false">http://www.wordyard.com/?p=1182#comment-390</guid>
		<description>[...] Before Dreaming in Code is published, Scott has started a series of Code Reads featuring some of the seminal essays on software creation. The latest featuring none other than Mitch Kapor&#8217;s Software Design Manifesto. It&#8217;s an interesting project that I&#8217;ve just caught up with - hope you will too. [...]</description>
		<content:encoded><![CDATA[<p>[...] Before Dreaming in Code is published, Scott has started a series of Code Reads featuring some of the seminal essays on software creation. The latest featuring none other than Mitch Kapor&#8217;s Software Design Manifesto. It&#8217;s an interesting project that I&#8217;ve just caught up with - hope you will too. [...]</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Joel Neely</title>
		<link>http://www.wordyard.com/2006/12/08/kapor-design/#comment-383</link>
		<dc:creator>Joel Neely</dc:creator>
		<pubDate>Tue, 26 Dec 2006 17:19:47 +0000</pubDate>
		<guid isPermaLink="false">http://www.wordyard.com/?p=1182#comment-383</guid>
		<description>I believe that we've addressed (at least in part) the issues that Kapor raised, but we've done so under two headings: user interface design and software architecture.

On the one hand, our industry is beginning to recognize that successful UI design is about communicating with a human being to support that person in the performance of some task. Organizing that communication around terminology, metaphors, concepts, and workflow that is natural to the task takes quite different skills than the technical skills of making the computer perform a specified action.

Similarly, successful software design requires thinking of larger issues (scalability, deployability, addition of future unanticipated features, etc.) that don't arise from simply reading the functional requirements of the current release.

It is important to return to visionary documents such as Kapor's, not only because they give us fresh perspective on where we are, but also because they can remind us of parts of the vision we may not have fully realized in our rush into the future. As William Gibson said (and O'Reilly has used as their tagline for a podcast series), "The future is here. It's just not evenly distributed yet."</description>
		<content:encoded><![CDATA[<p>I believe that we&#8217;ve addressed (at least in part) the issues that Kapor raised, but we&#8217;ve done so under two headings: user interface design and software architecture.</p>
<p>On the one hand, our industry is beginning to recognize that successful UI design is about communicating with a human being to support that person in the performance of some task. Organizing that communication around terminology, metaphors, concepts, and workflow that is natural to the task takes quite different skills than the technical skills of making the computer perform a specified action.</p>
<p>Similarly, successful software design requires thinking of larger issues (scalability, deployability, addition of future unanticipated features, etc.) that don&#8217;t arise from simply reading the functional requirements of the current release.</p>
<p>It is important to return to visionary documents such as Kapor&#8217;s, not only because they give us fresh perspective on where we are, but also because they can remind us of parts of the vision we may not have fully realized in our rush into the future. As William Gibson said (and O&#8217;Reilly has used as their tagline for a podcast series), &#8220;The future is here. It&#8217;s just not evenly distributed yet.&#8221;</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Cleo Saulnier</title>
		<link>http://www.wordyard.com/2006/12/08/kapor-design/#comment-389</link>
		<dc:creator>Cleo Saulnier</dc:creator>
		<pubDate>Thu, 14 Dec 2006 05:33:41 +0000</pubDate>
		<guid isPermaLink="false">http://www.wordyard.com/?p=1182#comment-389</guid>
		<description>Dave: What I meant was something that would NOT be reverse engineered.  You'd only work with the design.  Never with the generated code much like no one works with machine code anymore.</description>
		<content:encoded><![CDATA[<p>Dave: What I meant was something that would NOT be reverse engineered.  You&#8217;d only work with the design.  Never with the generated code much like no one works with machine code anymore.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Dave C</title>
		<link>http://www.wordyard.com/2006/12/08/kapor-design/#comment-388</link>
		<dc:creator>Dave C</dc:creator>
		<pubDate>Tue, 12 Dec 2006 17:15:54 +0000</pubDate>
		<guid isPermaLink="false">http://www.wordyard.com/?p=1182#comment-388</guid>
		<description>Design is a plan. And, to use an old army adage: "No plan survives first contact with the enemy. That's why he's called the enemy."

Cleo wrote: "What would be better is if there was a way to specify design and have the computer generate the implementation."

Yes, it would be nice, but I'm wary of things that sound like code generation.  To have a truly useful tool, it would have to accurately reverse-engineer the design from the potentially modified results of the code generation. I have never seen this work on anything other than small-scale projects.

The few such tools I've tried in the past have been tedious to use, error prone, and generally unhelpful. Keep in mind that programmers don't like making extra work for themselves. If it's hard to use and doesn't do a great job they'll avoid using it. But, if someone eventually gets this to work, I'd definitely give it a try.</description>
		<content:encoded><![CDATA[<p>Design is a plan. And, to use an old army adage: &#8220;No plan survives first contact with the enemy. That&#8217;s why he&#8217;s called the enemy.&#8221;</p>
<p>Cleo wrote: &#8220;What would be better is if there was a way to specify design and have the computer generate the implementation.&#8221;</p>
<p>Yes, it would be nice, but I&#8217;m wary of things that sound like code generation.  To have a truly useful tool, it would have to accurately reverse-engineer the design from the potentially modified results of the code generation. I have never seen this work on anything other than small-scale projects.</p>
<p>The few such tools I&#8217;ve tried in the past have been tedious to use, error prone, and generally unhelpful. Keep in mind that programmers don&#8217;t like making extra work for themselves. If it&#8217;s hard to use and doesn&#8217;t do a great job they&#8217;ll avoid using it. But, if someone eventually gets this to work, I&#8217;d definitely give it a try.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Boris</title>
		<link>http://www.wordyard.com/2006/12/08/kapor-design/#comment-387</link>
		<dc:creator>Boris</dc:creator>
		<pubDate>Tue, 12 Dec 2006 13:35:35 +0000</pubDate>
		<guid isPermaLink="false">http://www.wordyard.com/?p=1182#comment-387</guid>
		<description>I thinks what confuses most is that there are better and worse programmers and the gap is just huge. Some programmers consistently will make better decisions than others. There is a "chemical X"  which makes some people get insights infinite times deeper than all other people around them.  Kapor is one of them. he actually has some very impressive achievements under his belts.

But then, in order to scale it, these men are advanced to "architect" positions and less "expensive" programmers are hired to work under their leadership in hope that in this way the company will get one's talent "improve" others team members output. That's crucial mistake, because the art of programming is not "scalable", because of great complexity of software projects. It is a lonely wolf routine. Your best stake is to hire as many good programmers as you can and let them roll.</description>
		<content:encoded><![CDATA[<p>I thinks what confuses most is that there are better and worse programmers and the gap is just huge. Some programmers consistently will make better decisions than others. There is a &#8220;chemical X&#8221;  which makes some people get insights infinite times deeper than all other people around them.  Kapor is one of them. he actually has some very impressive achievements under his belts.</p>
<p>But then, in order to scale it, these men are advanced to &#8220;architect&#8221; positions and less &#8220;expensive&#8221; programmers are hired to work under their leadership in hope that in this way the company will get one&#8217;s talent &#8220;improve&#8221; others team members output. That&#8217;s crucial mistake, because the art of programming is not &#8220;scalable&#8221;, because of great complexity of software projects. It is a lonely wolf routine. Your best stake is to hire as many good programmers as you can and let them roll.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Cleo Saulnier</title>
		<link>http://www.wordyard.com/2006/12/08/kapor-design/#comment-379</link>
		<dc:creator>Cleo Saulnier</dc:creator>
		<pubDate>Tue, 12 Dec 2006 09:23:54 +0000</pubDate>
		<guid isPermaLink="false">http://www.wordyard.com/?p=1182#comment-379</guid>
		<description>Design is meant to be easy to change.  And implementation is supposed to be the final product.  The problem with software is that you can only design once, but you must change the implementation forever (maintenance).  So we end up changing what should be static.  Contrast that with construction for example.  In this case, you don't change something.  You tear a section down where your new design goes and then you put up new materials.  In software, tearing stuff down can have unforeseen side effects.

What would be better is if there was a way to specify design and have the computer generate the implementation.  Now, that would change things drastically in the computing community.  Instead of building implementation directly, we would write code as possible algorithms that the code generator can use for its output.  But the design would be easy to change.  This area interests me so much that this is exactly what I've been researching this past year and am currently developing a project with this in mind.  I wonder how many other attempts have been made and what ideas there are out there on the subject.</description>
		<content:encoded><![CDATA[<p>Design is meant to be easy to change.  And implementation is supposed to be the final product.  The problem with software is that you can only design once, but you must change the implementation forever (maintenance).  So we end up changing what should be static.  Contrast that with construction for example.  In this case, you don&#8217;t change something.  You tear a section down where your new design goes and then you put up new materials.  In software, tearing stuff down can have unforeseen side effects.</p>
<p>What would be better is if there was a way to specify design and have the computer generate the implementation.  Now, that would change things drastically in the computing community.  Instead of building implementation directly, we would write code as possible algorithms that the code generator can use for its output.  But the design would be easy to change.  This area interests me so much that this is exactly what I&#8217;ve been researching this past year and am currently developing a project with this in mind.  I wonder how many other attempts have been made and what ideas there are out there on the subject.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Ian Rae</title>
		<link>http://www.wordyard.com/2006/12/08/kapor-design/#comment-386</link>
		<dc:creator>Ian Rae</dc:creator>
		<pubDate>Mon, 11 Dec 2006 19:38:41 +0000</pubDate>
		<guid isPermaLink="false">http://www.wordyard.com/?p=1182#comment-386</guid>
		<description>The article sounds somewhat dated.  Maybe in the 80s and 90s people thought Dan Bricklin’s invention of the electronic spreadsheet was "one of the crowning achievements of software design".  Perhaps it's Kapor's dual-use of the word "design" to mean the structure of the software and the user interface model.  In a Naked Objects system, the two are the same.  And in early desktop software.  But in today's multi-tier SOA systems, the presentation layer is but one tiny piece of the whole.</description>
		<content:encoded><![CDATA[<p>The article sounds somewhat dated.  Maybe in the 80s and 90s people thought Dan Bricklin’s invention of the electronic spreadsheet was &#8220;one of the crowning achievements of software design&#8221;.  Perhaps it&#8217;s Kapor&#8217;s dual-use of the word &#8220;design&#8221; to mean the structure of the software and the user interface model.  In a Naked Objects system, the two are the same.  And in early desktop software.  But in today&#8217;s multi-tier SOA systems, the presentation layer is but one tiny piece of the whole.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Dave C</title>
		<link>http://www.wordyard.com/2006/12/08/kapor-design/#comment-385</link>
		<dc:creator>Dave C</dc:creator>
		<pubDate>Mon, 11 Dec 2006 17:39:25 +0000</pubDate>
		<guid isPermaLink="false">http://www.wordyard.com/?p=1182#comment-385</guid>
		<description>While I agree with most of Boris's points, I do take a bit of issue with the comment "The code is design."

I've heard that too often to give it credence. The code is not design, it's implementation. You can hope to extract a design from the code, but more often than not you'll see a mass of implementation details.

In construction, there is a distinction between the architect's plan and what is on the ground. As a building gets constructed, notes are made on the plan with the caveat "As Built". "As Built" is a trade-off between the actual design and the reality of building something. In construction, such changes are documented. In software, that information is often lost and is almost never in the code.

Some people use "the code is design" as an excuse to slap things together with no plan for construction to begin with. The result is a mess that is buggy and extremely difficult to understand.

I've also heard "The code is documentation" too often to trust, but that is a separate issue.</description>
		<content:encoded><![CDATA[<p>While I agree with most of Boris&#8217;s points, I do take a bit of issue with the comment &#8220;The code is design.&#8221;</p>
<p>I&#8217;ve heard that too often to give it credence. The code is not design, it&#8217;s implementation. You can hope to extract a design from the code, but more often than not you&#8217;ll see a mass of implementation details.</p>
<p>In construction, there is a distinction between the architect&#8217;s plan and what is on the ground. As a building gets constructed, notes are made on the plan with the caveat &#8220;As Built&#8221;. &#8220;As Built&#8221; is a trade-off between the actual design and the reality of building something. In construction, such changes are documented. In software, that information is often lost and is almost never in the code.</p>
<p>Some people use &#8220;the code is design&#8221; as an excuse to slap things together with no plan for construction to begin with. The result is a mess that is buggy and extremely difficult to understand.</p>
<p>I&#8217;ve also heard &#8220;The code is documentation&#8221; too often to trust, but that is a separate issue.</p>
]]></content:encoded>
	</item>
</channel>
</rss>
