<?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"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
		>
<channel>
	<title>Comments on: Software needs Metaphors too!</title>
	<atom:link href="http://compoundthinking.com/blog/index.php/2008/03/05/software-needs-metaphors-too/feed/" rel="self" type="application/rss+xml" />
	<link>http://compoundthinking.com/blog/index.php/2008/03/05/software-needs-metaphors-too/</link>
	<description>Thinking about programming in new ways</description>
	<lastBuildDate>Tue, 15 Mar 2011 02:30:01 +0000</lastBuildDate>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.2.1</generator>
	<item>
		<title>By: Christopher Arndt</title>
		<link>http://compoundthinking.com/blog/index.php/2008/03/05/software-needs-metaphors-too/#comment-140017</link>
		<dc:creator>Christopher Arndt</dc:creator>
		<pubDate>Mon, 10 Mar 2008 06:17:12 +0000</pubDate>
		<guid isPermaLink="false">http://compoundthinking.com/blog/index.php/2008/03/05/software-needs-metaphors-too/#comment-140017</guid>
		<description>Small correction to my proceeding post:

s/technical reason/technical education/</description>
		<content:encoded><![CDATA[<p>Small correction to my proceeding post:</p>
<p>s/technical reason/technical education/</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Christopher Arndt</title>
		<link>http://compoundthinking.com/blog/index.php/2008/03/05/software-needs-metaphors-too/#comment-140016</link>
		<dc:creator>Christopher Arndt</dc:creator>
		<pubDate>Mon, 10 Mar 2008 06:10:33 +0000</pubDate>
		<guid isPermaLink="false">http://compoundthinking.com/blog/index.php/2008/03/05/software-needs-metaphors-too/#comment-140016</guid>
		<description>Hi Mark,

thank Zarkon not all developers *are* engineers but there are some, like you, that have an interest or education in humanities. As computers pervade almost every aspect of our lives more and more, I hope they (the linguists, historians, philosophers etc.) become more common in this field.

I say this for two reasons:

1. People with a technical reason have a tendency to think that everything is the way it looks, i.e. to believe what their senses tell them. They often forget that what counts is how the human brain interprets the input. And every human brain is different. So it&#039;s not only important about *what* you are talking but also (probably more) *how* you talk about it. I think that was your main point too.

2. The process of creating software consists, as we all know, not only of actually writing code but to a good part in analysis, specification, testing and constant adapting. All this requires a fair amount of communication skills. Also, you are basically trying to *translate* the ideas of humans (the clients, the system designers, whoever) into the language of the computer. There is, as you and the people you cite point out, a distinctive mismatch between the two.

But IMHO it is misleading to think that in computer languages everything has a well defined meaning. For the computer maybe, yes, but after all these languages too were created by human beings and are written and read by human beings. Every human brain connects slightly different concepts with the same line of code. If code was totally unambiguous to everyone, why would we need so many different programming languages? Why do say that one language is more &quot;expressive&quot; than the other? Why do I have difficulties in wrapping my head around Java, but Python seems to fit my mindset very naturally?

So, my point is, although natural languages and programming languages may seem very different at first, their usage (by us) is very similar. We could not do otherwise, it&#039;s how our brains work.</description>
		<content:encoded><![CDATA[<p>Hi Mark,</p>
<p>thank Zarkon not all developers *are* engineers but there are some, like you, that have an interest or education in humanities. As computers pervade almost every aspect of our lives more and more, I hope they (the linguists, historians, philosophers etc.) become more common in this field.</p>
<p>I say this for two reasons:</p>
<p>1. People with a technical reason have a tendency to think that everything is the way it looks, i.e. to believe what their senses tell them. They often forget that what counts is how the human brain interprets the input. And every human brain is different. So it&#8217;s not only important about *what* you are talking but also (probably more) *how* you talk about it. I think that was your main point too.</p>
<p>2. The process of creating software consists, as we all know, not only of actually writing code but to a good part in analysis, specification, testing and constant adapting. All this requires a fair amount of communication skills. Also, you are basically trying to *translate* the ideas of humans (the clients, the system designers, whoever) into the language of the computer. There is, as you and the people you cite point out, a distinctive mismatch between the two.</p>
<p>But IMHO it is misleading to think that in computer languages everything has a well defined meaning. For the computer maybe, yes, but after all these languages too were created by human beings and are written and read by human beings. Every human brain connects slightly different concepts with the same line of code. If code was totally unambiguous to everyone, why would we need so many different programming languages? Why do say that one language is more &#8220;expressive&#8221; than the other? Why do I have difficulties in wrapping my head around Java, but Python seems to fit my mindset very naturally?</p>
<p>So, my point is, although natural languages and programming languages may seem very different at first, their usage (by us) is very similar. We could not do otherwise, it&#8217;s how our brains work.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Mark Ramm</title>
		<link>http://compoundthinking.com/blog/index.php/2008/03/05/software-needs-metaphors-too/#comment-138909</link>
		<dc:creator>Mark Ramm</dc:creator>
		<pubDate>Thu, 06 Mar 2008 17:08:35 +0000</pubDate>
		<guid isPermaLink="false">http://compoundthinking.com/blog/index.php/2008/03/05/software-needs-metaphors-too/#comment-138909</guid>
		<description>rgz, 

That&#039;s one way of looking at it, but I think that it has an overly pessimistic tint.

&quot;Ambiguity&quot; is not necessarily a bad thing.  As I said in the article:  &quot;Without ambiguity and metaphor we couldn’t communicate complex new ideas, and we couldn’t extend our base of knowledge from one area to another, and we would be entirely unable to communicate anything about huge swaths of human experience at all.&quot; 

Metaphor (and therefor ambiguity) is at the core of how we learn and assimilate new information.  And software development is about a lot of things, but it&#039;s certianly about extending the conceptual scaffolding that we use to think -- which means we need metaphor. 

Here&#039;s an example from science education.  We know that electrons don&#039;t orbit nuclei the way planets orbit the sun -- but that metaphor connects with something we already know, and it provides a stepping stone to further understanding.   If we tried to teach quantum states, orbitals and all of electron cloud theory at once schoolchildren&#039;s heads would explode.

In fact, this isn&#039;t just about the way kids learn science.  It&#039;s also true of the history of science.   I think the whole pattern of scientific discovery is the about discovering, tweeking, and sometimes switching the metaphors (sometimes called paradigms) we use to process the way the world works.

So, I have a high view of metaphor and ambiguity.  I understand why programmers in general don&#039;t, but I think that very little could be done or discovered if we were only able to communicate in unambiguous code.</description>
		<content:encoded><![CDATA[<p>rgz, </p>
<p>That&#8217;s one way of looking at it, but I think that it has an overly pessimistic tint.</p>
<p>&#8220;Ambiguity&#8221; is not necessarily a bad thing.  As I said in the article:  &#8220;Without ambiguity and metaphor we couldn’t communicate complex new ideas, and we couldn’t extend our base of knowledge from one area to another, and we would be entirely unable to communicate anything about huge swaths of human experience at all.&#8221; </p>
<p>Metaphor (and therefor ambiguity) is at the core of how we learn and assimilate new information.  And software development is about a lot of things, but it&#8217;s certianly about extending the conceptual scaffolding that we use to think &#8212; which means we need metaphor. </p>
<p>Here&#8217;s an example from science education.  We know that electrons don&#8217;t orbit nuclei the way planets orbit the sun &#8212; but that metaphor connects with something we already know, and it provides a stepping stone to further understanding.   If we tried to teach quantum states, orbitals and all of electron cloud theory at once schoolchildren&#8217;s heads would explode.</p>
<p>In fact, this isn&#8217;t just about the way kids learn science.  It&#8217;s also true of the history of science.   I think the whole pattern of scientific discovery is the about discovering, tweeking, and sometimes switching the metaphors (sometimes called paradigms) we use to process the way the world works.</p>
<p>So, I have a high view of metaphor and ambiguity.  I understand why programmers in general don&#8217;t, but I think that very little could be done or discovered if we were only able to communicate in unambiguous code.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: rgz</title>
		<link>http://compoundthinking.com/blog/index.php/2008/03/05/software-needs-metaphors-too/#comment-138893</link>
		<dc:creator>rgz</dc:creator>
		<pubDate>Thu, 06 Mar 2008 15:46:04 +0000</pubDate>
		<guid isPermaLink="false">http://compoundthinking.com/blog/index.php/2008/03/05/software-needs-metaphors-too/#comment-138893</guid>
		<description>In brief, natural language is ambiguous and nebulous while programming languages and software engineering concepts are concrete and unambiguous; and yet so divorced from physical reality that we lack anyway to talk about them unless we use even more abstract metaphors in natural languages.</description>
		<content:encoded><![CDATA[<p>In brief, natural language is ambiguous and nebulous while programming languages and software engineering concepts are concrete and unambiguous; and yet so divorced from physical reality that we lack anyway to talk about them unless we use even more abstract metaphors in natural languages.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Mark Ramm</title>
		<link>http://compoundthinking.com/blog/index.php/2008/03/05/software-needs-metaphors-too/#comment-138718</link>
		<dc:creator>Mark Ramm</dc:creator>
		<pubDate>Thu, 06 Mar 2008 05:50:57 +0000</pubDate>
		<guid isPermaLink="false">http://compoundthinking.com/blog/index.php/2008/03/05/software-needs-metaphors-too/#comment-138718</guid>
		<description>Good metaphor!  Thanks!</description>
		<content:encoded><![CDATA[<p>Good metaphor!  Thanks!</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Matt Wilson</title>
		<link>http://compoundthinking.com/blog/index.php/2008/03/05/software-needs-metaphors-too/#comment-138605</link>
		<dc:creator>Matt Wilson</dc:creator>
		<pubDate>Wed, 05 Mar 2008 23:09:24 +0000</pubDate>
		<guid isPermaLink="false">http://compoundthinking.com/blog/index.php/2008/03/05/software-needs-metaphors-too/#comment-138605</guid>
		<description>Great post.

I&#039;ll add another metaphor: software development is like carefully phrasing your three wishes so that the Genie can&#039;t  screw you somehow.</description>
		<content:encoded><![CDATA[<p>Great post.</p>
<p>I&#8217;ll add another metaphor: software development is like carefully phrasing your three wishes so that the Genie can&#8217;t  screw you somehow.</p>
]]></content:encoded>
	</item>
</channel>
</rss>

