<?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: Just say no to &#8220;software engineering&#8221;</title>
	<atom:link href="http://compoundthinking.com/blog/index.php/2008/11/24/just-say-no-to-software-engineering/feed/" rel="self" type="application/rss+xml" />
	<link>http://compoundthinking.com/blog/index.php/2008/11/24/just-say-no-to-software-engineering/</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: jefurii</title>
		<link>http://compoundthinking.com/blog/index.php/2008/11/24/just-say-no-to-software-engineering/#comment-292339</link>
		<dc:creator>jefurii</dc:creator>
		<pubDate>Thu, 18 Dec 2008 22:10:12 +0000</pubDate>
		<guid isPermaLink="false">http://compoundthinking.com/blog/?p=524#comment-292339</guid>
		<description>i bet william gibson could do something really wacked out and cool with this idea.</description>
		<content:encoded><![CDATA[<p>i bet william gibson could do something really wacked out and cool with this idea.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Scott A Greiff</title>
		<link>http://compoundthinking.com/blog/index.php/2008/11/24/just-say-no-to-software-engineering/#comment-290284</link>
		<dc:creator>Scott A Greiff</dc:creator>
		<pubDate>Mon, 15 Dec 2008 21:10:59 +0000</pubDate>
		<guid isPermaLink="false">http://compoundthinking.com/blog/?p=524#comment-290284</guid>
		<description>Great and timely piece.  It seems to me that much of the talk of Domain Driven Design these days underscores this importance of the craft.  Code readability serve the business subject matter expert as well as your fellow software artisans.</description>
		<content:encoded><![CDATA[<p>Great and timely piece.  It seems to me that much of the talk of Domain Driven Design these days underscores this importance of the craft.  Code readability serve the business subject matter expert as well as your fellow software artisans.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Mark Ramm</title>
		<link>http://compoundthinking.com/blog/index.php/2008/11/24/just-say-no-to-software-engineering/#comment-285101</link>
		<dc:creator>Mark Ramm</dc:creator>
		<pubDate>Mon, 08 Dec 2008 15:41:30 +0000</pubDate>
		<guid isPermaLink="false">http://compoundthinking.com/blog/?p=524#comment-285101</guid>
		<description>NNP, 

I think the  most interesting thing about what you&#039;ve said is here: 

&quot;While creativity and elegance are desired there is no escaping the fact that the vast majority of serious development needs a rigourous approach and anything else is bound to end in tears...&quot;

And I think that&#039;s most interesting because it indicates that creativity and the arts are by necessity not rigorous.  This may be true in some areas, but sculptors have to think (and sometimes do complex math) to figure out how the weight of their creations can be supported given the materials they have. 

Writers can be subject to some rather rigorous limitations too.  Take the Sestina for example, widipedia describes the requirements of the sestina this way:

&quot;A sestina (also, sextina, sestine, or sextrain) is a highly structured poem consisting of six six-line stanzas followed by a tercet (called its envoy or tornada), for a total of thirty-nine lines. The same set of six words ends the lines of each of the six-line stanzas, but in a different order each time; if we number the first stanza&#039;s lines 123456, then the words ending the second stanza&#039;s lines appear in the order 615243, then 364125, then 532614, then 451362, and finally 246531. This organization is referred to as retrogradatio cruciata (&quot;retrograde cross&quot;). These six words then appear in the tercet as well, with the tercet&#039;s first line usually containing 1 and 2, its second 3 and 4, and its third 5 and 6 (but other versions exist, described below). English sestinas are usually written in iambic pentameter or another decasyllabic meter.&quot;

That&#039;s a pretty rigorous structural form ;)</description>
		<content:encoded><![CDATA[<p>NNP, </p>
<p>I think the  most interesting thing about what you&#8217;ve said is here: </p>
<p>&#8220;While creativity and elegance are desired there is no escaping the fact that the vast majority of serious development needs a rigourous approach and anything else is bound to end in tears&#8230;&#8221;</p>
<p>And I think that&#8217;s most interesting because it indicates that creativity and the arts are by necessity not rigorous.  This may be true in some areas, but sculptors have to think (and sometimes do complex math) to figure out how the weight of their creations can be supported given the materials they have. </p>
<p>Writers can be subject to some rather rigorous limitations too.  Take the Sestina for example, widipedia describes the requirements of the sestina this way:</p>
<p>&#8220;A sestina (also, sextina, sestine, or sextrain) is a highly structured poem consisting of six six-line stanzas followed by a tercet (called its envoy or tornada), for a total of thirty-nine lines. The same set of six words ends the lines of each of the six-line stanzas, but in a different order each time; if we number the first stanza&#8217;s lines 123456, then the words ending the second stanza&#8217;s lines appear in the order 615243, then 364125, then 532614, then 451362, and finally 246531. This organization is referred to as retrogradatio cruciata (&#8220;retrograde cross&#8221;). These six words then appear in the tercet as well, with the tercet&#8217;s first line usually containing 1 and 2, its second 3 and 4, and its third 5 and 6 (but other versions exist, described below). English sestinas are usually written in iambic pentameter or another decasyllabic meter.&#8221;</p>
<p>That&#8217;s a pretty rigorous structural form ;)</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Mark Ramm</title>
		<link>http://compoundthinking.com/blog/index.php/2008/11/24/just-say-no-to-software-engineering/#comment-285090</link>
		<dc:creator>Mark Ramm</dc:creator>
		<pubDate>Mon, 08 Dec 2008 15:21:27 +0000</pubDate>
		<guid isPermaLink="false">http://compoundthinking.com/blog/?p=524#comment-285090</guid>
		<description>Alex, 

You make several good points.   As far as I&#039;m concerned the &quot;Architect&quot; or &quot;Engineer&quot; label is a metaphor, which is fine and good, and provides some illumination as long as it remains a metaphor.   But, the problem is that people have stopped seeing the metaphor, partly because they don&#039;t actually know what engineers do, and partly because computer programmers have a strong tendency to take metaphors literally. 

So on that level &quot;Software Writer&quot; is no better, except that it&#039;s more obviously metaphorical than the alternative.    But really, what I want is a label tells us that software creation is primarily a communicative act.   I like the &quot;build stuff that works&quot; connotation of engineer, but it&#039;s only part of what we do, and I think a lot of &quot;software engineers&quot; can be seduced by it into ignoring the &quot;communication&quot; part and failing to write readable, maintainable, code.

And I&#039;d like to mention that any discipline requires communication about complex ideas in order to perpetuate itself -- that does not mean that communicating complex ideas is at the core of the discipline the way that it is for software development, or writing, or for that matter philosophy.</description>
		<content:encoded><![CDATA[<p>Alex, </p>
<p>You make several good points.   As far as I&#8217;m concerned the &#8220;Architect&#8221; or &#8220;Engineer&#8221; label is a metaphor, which is fine and good, and provides some illumination as long as it remains a metaphor.   But, the problem is that people have stopped seeing the metaphor, partly because they don&#8217;t actually know what engineers do, and partly because computer programmers have a strong tendency to take metaphors literally. </p>
<p>So on that level &#8220;Software Writer&#8221; is no better, except that it&#8217;s more obviously metaphorical than the alternative.    But really, what I want is a label tells us that software creation is primarily a communicative act.   I like the &#8220;build stuff that works&#8221; connotation of engineer, but it&#8217;s only part of what we do, and I think a lot of &#8220;software engineers&#8221; can be seduced by it into ignoring the &#8220;communication&#8221; part and failing to write readable, maintainable, code.</p>
<p>And I&#8217;d like to mention that any discipline requires communication about complex ideas in order to perpetuate itself &#8212; that does not mean that communicating complex ideas is at the core of the discipline the way that it is for software development, or writing, or for that matter philosophy.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Road Warrior Collaboration &#187; &#187; What is software development? Lets be Poets!</title>
		<link>http://compoundthinking.com/blog/index.php/2008/11/24/just-say-no-to-software-engineering/#comment-282818</link>
		<dc:creator>Road Warrior Collaboration &#187; &#187; What is software development? Lets be Poets!</dc:creator>
		<pubDate>Thu, 04 Dec 2008 08:12:47 +0000</pubDate>
		<guid isPermaLink="false">http://compoundthinking.com/blog/?p=524#comment-282818</guid>
		<description>[...] for a while now that software engineering is a social activity &#8230; and now Mark Ramm picks up a similar bone and points out that software development is really building a product to be understood by both a [...]</description>
		<content:encoded><![CDATA[<p>[...] for a while now that software engineering is a social activity &#8230; and now Mark Ramm picks up a similar bone and points out that software development is really building a product to be understood by both a [...]</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: wumpus</title>
		<link>http://compoundthinking.com/blog/index.php/2008/11/24/just-say-no-to-software-engineering/#comment-277897</link>
		<dc:creator>wumpus</dc:creator>
		<pubDate>Tue, 25 Nov 2008 12:50:59 +0000</pubDate>
		<guid isPermaLink="false">http://compoundthinking.com/blog/?p=524#comment-277897</guid>
		<description>Re: Steve&#039;s point

The point is that engineers rarely build a &quot;thing&quot;, with the obvious exception of prototypes in small shops (technicians typically build the actual prototypes and give us 8 kinds of grief the moment we pick up tools).

I also think that &quot;the exception that proves the rule&quot; should be your guideline.  Engineers typically produce *drawings* and parts lists, that should be specific enough to build equipment.  Some of it is going to be software-like in that it isn&#039;t interpreted by humans (gerber files produce PCBs, CNC output straight from Pro-Engineer) but much of the work is done on production (or construction) floor by humans.

The catch is that the &quot;why of this&quot; is never transmitted, and only considered when a human might decide that your unorthodox decision is just a typo. This is largely because changing the design once shipped is so vastly higher than in software that it is not considered important.  It has nothing to do with the complexity of thought needed to produce the thing, just that reproducing the complexity of thought is unlikely, and a small part of the cost to pay if it is needed.</description>
		<content:encoded><![CDATA[<p>Re: Steve&#8217;s point</p>
<p>The point is that engineers rarely build a &#8220;thing&#8221;, with the obvious exception of prototypes in small shops (technicians typically build the actual prototypes and give us 8 kinds of grief the moment we pick up tools).</p>
<p>I also think that &#8220;the exception that proves the rule&#8221; should be your guideline.  Engineers typically produce *drawings* and parts lists, that should be specific enough to build equipment.  Some of it is going to be software-like in that it isn&#8217;t interpreted by humans (gerber files produce PCBs, CNC output straight from Pro-Engineer) but much of the work is done on production (or construction) floor by humans.</p>
<p>The catch is that the &#8220;why of this&#8221; is never transmitted, and only considered when a human might decide that your unorthodox decision is just a typo. This is largely because changing the design once shipped is so vastly higher than in software that it is not considered important.  It has nothing to do with the complexity of thought needed to produce the thing, just that reproducing the complexity of thought is unlikely, and a small part of the cost to pay if it is needed.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: nnp</title>
		<link>http://compoundthinking.com/blog/index.php/2008/11/24/just-say-no-to-software-engineering/#comment-277528</link>
		<dc:creator>nnp</dc:creator>
		<pubDate>Mon, 24 Nov 2008 18:08:04 +0000</pubDate>
		<guid isPermaLink="false">http://compoundthinking.com/blog/?p=524#comment-277528</guid>
		<description>I think this is quite a subjective thing to be honest. Writing code that is readable does not mean you can&#039;t take an engineering approach to the entire problem. In fact, changing your title because you&#039;ve decided to change your code so that it&#039;s now more readable would be a bit like a construction engineer changing his title because he bought a new pair of steel toed boots. 

I always get a bit worried when people start trying to put software development in the &#039;arts&#039; box. While creativity and elegance are desired there is no escaping the fact that the vast majority of serious development needs a rigourous approach and anything else is bound to end in tears (or websites written in PHP, which is basically equivalent :P )</description>
		<content:encoded><![CDATA[<p>I think this is quite a subjective thing to be honest. Writing code that is readable does not mean you can&#8217;t take an engineering approach to the entire problem. In fact, changing your title because you&#8217;ve decided to change your code so that it&#8217;s now more readable would be a bit like a construction engineer changing his title because he bought a new pair of steel toed boots. </p>
<p>I always get a bit worried when people start trying to put software development in the &#8216;arts&#8217; box. While creativity and elegance are desired there is no escaping the fact that the vast majority of serious development needs a rigourous approach and anything else is bound to end in tears (or websites written in PHP, which is basically equivalent :P )</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Alex Martelli</title>
		<link>http://compoundthinking.com/blog/index.php/2008/11/24/just-say-no-to-software-engineering/#comment-277509</link>
		<dc:creator>Alex Martelli</dc:creator>
		<pubDate>Mon, 24 Nov 2008 16:38:36 +0000</pubDate>
		<guid isPermaLink="false">http://compoundthinking.com/blog/?p=524#comment-277509</guid>
		<description>So why do you think &quot;architect&quot; is inappropriate? Doesn&#039;t the architect of a building have to effectively communicate, non-verbally, with all the humans that will be interacting with that building for years to come, as well as all the humans that cooperate to erect that building -- while working within all the constraints imposed by nature and the applicable technology, so the building will remain standing (perhaps, as in the case of Renzo Piano&#039;s airport terminal at Kobe, will stay standing even through an earthquake so intense as to raze the city itself)...?  Soliditas, utilitas, venustas (with all the due quibbles about how these priorities should be ordered, of course) -- robustness, usefulness, delight; aren&#039;t these our goals, just like Vitruvius&#039; (the archetypal engineer) or Leandro Alberti&#039;s (the archetypal architect)?

But then, I think some typical engineers are Leonardo, Wittgenstein, St. Exupery, Rowan Atkinson -- see the slides about engineers at http://www.aleax.it/scipy_key08.pdf -- so of course I&#039;m proud to call myself an engineer (that&#039;s also what my degrees say I am, and I passed the State Exam officially making me an Engineer in Italy...). See also http://aleaxit.blogspot.com/2008/09/scientist-and-engineers.html for more, similar thoughts...</description>
		<content:encoded><![CDATA[<p>So why do you think &#8220;architect&#8221; is inappropriate? Doesn&#8217;t the architect of a building have to effectively communicate, non-verbally, with all the humans that will be interacting with that building for years to come, as well as all the humans that cooperate to erect that building &#8212; while working within all the constraints imposed by nature and the applicable technology, so the building will remain standing (perhaps, as in the case of Renzo Piano&#8217;s airport terminal at Kobe, will stay standing even through an earthquake so intense as to raze the city itself)&#8230;?  Soliditas, utilitas, venustas (with all the due quibbles about how these priorities should be ordered, of course) &#8212; robustness, usefulness, delight; aren&#8217;t these our goals, just like Vitruvius&#8217; (the archetypal engineer) or Leandro Alberti&#8217;s (the archetypal architect)?</p>
<p>But then, I think some typical engineers are Leonardo, Wittgenstein, St. Exupery, Rowan Atkinson &#8212; see the slides about engineers at <a href="http://www.aleax.it/scipy_key08.pdf" rel="nofollow">http://www.aleax.it/scipy_key08.pdf</a> &#8212; so of course I&#8217;m proud to call myself an engineer (that&#8217;s also what my degrees say I am, and I passed the State Exam officially making me an Engineer in Italy&#8230;). See also <a href="http://aleaxit.blogspot.com/2008/09/scientist-and-engineers.html" rel="nofollow">http://aleaxit.blogspot.com/2008/09/scientist-and-engineers.html</a> for more, similar thoughts&#8230;</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Matt Wilson</title>
		<link>http://compoundthinking.com/blog/index.php/2008/11/24/just-say-no-to-software-engineering/#comment-277488</link>
		<dc:creator>Matt Wilson</dc:creator>
		<pubDate>Mon, 24 Nov 2008 15:22:35 +0000</pubDate>
		<guid isPermaLink="false">http://compoundthinking.com/blog/?p=524#comment-277488</guid>
		<description>Great post.  I found when I managed a team of developers that the system worked best when I wrote assignments as carefully and explicitly as possible.  In other words, I would put in requirements like &quot;this page view should generate at most 3 database queries&quot; or &quot;Do not copy-paste and then edit code from that module here.  Instead, rewrite the other one to support  its original use and this new one&quot;.

Eventually, I began to see my activity of writing tickets as essentially the same as programming but with a more elastic language and some really smart compilers at the other end.

I could trust my developers to do the right thing as long as I set the parameters clearly.  But if I couldn&#039;t give them enough specifics, then they would come hassle me for more detail, sort of like when the interpreter raises an exception.  

Or even worse, maybe they wouldn&#039;t come hassle me, but their output wouldn&#039;t be what I needed.  Ultimately, it all came down to how well I could write the ticket at the beginning.  Their failures were almost always linked to ambiguity in the original assignment.

Anyhow, I think journalists have been in this zone of thought for a long time.  They have to explain complex stories clearly and tersely.

Every programmer should read &lt;a href=&quot;http://www.bartleby.com/141/strunk5.html&quot; rel=&quot;nofollow&quot;&gt;Strunk&#039;s Elements of Style&lt;/a&gt; at least three times.  Just substitute the word &quot;method&quot; whenever the text says &quot;paragraph&quot; and &quot;code&quot; for &quot;words&quot; and it makes for brilliant advice. For example:


After the paragraph has been written, it should be examined to see whether subdivision will not improve it.
Omit needless words.
Keep related words together.


And there&#039;s lots of other good ones.</description>
		<content:encoded><![CDATA[<p>Great post.  I found when I managed a team of developers that the system worked best when I wrote assignments as carefully and explicitly as possible.  In other words, I would put in requirements like &#8220;this page view should generate at most 3 database queries&#8221; or &#8220;Do not copy-paste and then edit code from that module here.  Instead, rewrite the other one to support  its original use and this new one&#8221;.</p>
<p>Eventually, I began to see my activity of writing tickets as essentially the same as programming but with a more elastic language and some really smart compilers at the other end.</p>
<p>I could trust my developers to do the right thing as long as I set the parameters clearly.  But if I couldn&#8217;t give them enough specifics, then they would come hassle me for more detail, sort of like when the interpreter raises an exception.  </p>
<p>Or even worse, maybe they wouldn&#8217;t come hassle me, but their output wouldn&#8217;t be what I needed.  Ultimately, it all came down to how well I could write the ticket at the beginning.  Their failures were almost always linked to ambiguity in the original assignment.</p>
<p>Anyhow, I think journalists have been in this zone of thought for a long time.  They have to explain complex stories clearly and tersely.</p>
<p>Every programmer should read <a href="http://www.bartleby.com/141/strunk5.html" rel="nofollow">Strunk&#8217;s Elements of Style</a> at least three times.  Just substitute the word &#8220;method&#8221; whenever the text says &#8220;paragraph&#8221; and &#8220;code&#8221; for &#8220;words&#8221; and it makes for brilliant advice. For example:</p>
<p>After the paragraph has been written, it should be examined to see whether subdivision will not improve it.<br />
Omit needless words.<br />
Keep related words together.</p>
<p>And there&#8217;s lots of other good ones.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Mark Ramm</title>
		<link>http://compoundthinking.com/blog/index.php/2008/11/24/just-say-no-to-software-engineering/#comment-277474</link>
		<dc:creator>Mark Ramm</dc:creator>
		<pubDate>Mon, 24 Nov 2008 14:38:42 +0000</pubDate>
		<guid isPermaLink="false">http://compoundthinking.com/blog/?p=524#comment-277474</guid>
		<description>Jim, 

I agree it&#039;s about levels of abstraction more than syntactic sugar in the language -- though syntactic sugar generally exists as a way of encoding an abstraction at the language level and often a way of developers to create simplified representations of new abstractions.  (I&#039;m thinking of operator overloading, or python decorators.)

And I agree with both you and steve -- writing for the alien &quot;intelligence&quot; of the computer makes this hard.   But I think that the requirement that what we write must also fit the human brain is what makes things *really* tricky.</description>
		<content:encoded><![CDATA[<p>Jim, </p>
<p>I agree it&#8217;s about levels of abstraction more than syntactic sugar in the language &#8212; though syntactic sugar generally exists as a way of encoding an abstraction at the language level and often a way of developers to create simplified representations of new abstractions.  (I&#8217;m thinking of operator overloading, or python decorators.)</p>
<p>And I agree with both you and steve &#8212; writing for the alien &#8220;intelligence&#8221; of the computer makes this hard.   But I think that the requirement that what we write must also fit the human brain is what makes things *really* tricky.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Mark Ramm</title>
		<link>http://compoundthinking.com/blog/index.php/2008/11/24/just-say-no-to-software-engineering/#comment-277467</link>
		<dc:creator>Mark Ramm</dc:creator>
		<pubDate>Mon, 24 Nov 2008 14:26:08 +0000</pubDate>
		<guid isPermaLink="false">http://compoundthinking.com/blog/?p=524#comment-277467</guid>
		<description>Steve, 

I&#039;m not arguing that engineers don&#039;t have to communicate with others, but that the end result of their work isn&#039;t generally a document, but a thing.   They work to build stuff that works, and communication is part of the process, but with software &quot;engineering&quot; the document itself is the result.

And I&#039;ve worked with a lot of materials engineering people who aren&#039;t primarily concerned with building bridges, but with determining the tensile strength and wear characteristics of particular composites.  

They do lots and lots of math, and build something once and it is pretty darned sure to work.   We do no math, build something over and over, when we find bugs.   So, there are lots of differences between what I do and what my &quot;real&quot; engineer friends do.   So, I&#039;m struggling to find better metaphors for what we do.</description>
		<content:encoded><![CDATA[<p>Steve, </p>
<p>I&#8217;m not arguing that engineers don&#8217;t have to communicate with others, but that the end result of their work isn&#8217;t generally a document, but a thing.   They work to build stuff that works, and communication is part of the process, but with software &#8220;engineering&#8221; the document itself is the result.</p>
<p>And I&#8217;ve worked with a lot of materials engineering people who aren&#8217;t primarily concerned with building bridges, but with determining the tensile strength and wear characteristics of particular composites.  </p>
<p>They do lots and lots of math, and build something once and it is pretty darned sure to work.   We do no math, build something over and over, when we find bugs.   So, there are lots of differences between what I do and what my &#8220;real&#8221; engineer friends do.   So, I&#8217;m struggling to find better metaphors for what we do.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Steve Holden</title>
		<link>http://compoundthinking.com/blog/index.php/2008/11/24/just-say-no-to-software-engineering/#comment-277459</link>
		<dc:creator>Steve Holden</dc:creator>
		<pubDate>Mon, 24 Nov 2008 14:08:09 +0000</pubDate>
		<guid isPermaLink="false">http://compoundthinking.com/blog/?p=524#comment-277459</guid>
		<description>I can&#039;t agree that other engineering discplines aren&#039;t concerned about communication with others. In fact the difference in programming is that our instructions also have to be understood by the alien in our midst: the computer.

Think of building a bridge: the plans aren&#039;t there to instruct the &quot;bridge-building machine&quot;, they are there to communicate to the site staff how to put a phenomenally complex assembly together so it continues to stand after 100 years.

If anything the differences in software engineering come about because of the stupidity of the computer: our instructions have to be precise because no intelligence can be brought to play in their interpretation.

Jim Arlow has it right, I think. Computers are TOMCATs: Thoroughly Obedient Moron, Cannot Actually Think, and this makes the need for rigorous thought in design even more critical.</description>
		<content:encoded><![CDATA[<p>I can&#8217;t agree that other engineering discplines aren&#8217;t concerned about communication with others. In fact the difference in programming is that our instructions also have to be understood by the alien in our midst: the computer.</p>
<p>Think of building a bridge: the plans aren&#8217;t there to instruct the &#8220;bridge-building machine&#8221;, they are there to communicate to the site staff how to put a phenomenally complex assembly together so it continues to stand after 100 years.</p>
<p>If anything the differences in software engineering come about because of the stupidity of the computer: our instructions have to be precise because no intelligence can be brought to play in their interpretation.</p>
<p>Jim Arlow has it right, I think. Computers are TOMCATs: Thoroughly Obedient Moron, Cannot Actually Think, and this makes the need for rigorous thought in design even more critical.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Jim Arlow</title>
		<link>http://compoundthinking.com/blog/index.php/2008/11/24/just-say-no-to-software-engineering/#comment-277411</link>
		<dc:creator>Jim Arlow</dc:creator>
		<pubDate>Mon, 24 Nov 2008 11:02:18 +0000</pubDate>
		<guid isPermaLink="false">http://compoundthinking.com/blog/?p=524#comment-277411</guid>
		<description>It seems to me that the real issue is about different levels of abstraction rather than syntactic sugar. Humans simply don&#039;t operate comfortably at the levels of abstraction that computers currently require. All types of human writeable/readable code are simply mechanisms to bridge this abstraction gap so that we can communicate our intentions to computers in a way both we and they understand. 

Looking at the history of programming, it has been one of continual increase in the level of abstraction that we can operate at when we try to communicate our intent to computers. Originally it was wires and switches (the software was literally hard-wired), then binary, assembler, compilers and &quot;high level&quot; languages. The next level is to compile code from models. This is already happening. Several of my clients compile 100% of their code, test cases, instrumentation and documentation directly from models. 

As William Gibson said - the future is already here - it&#039;s just not evenly distributed.</description>
		<content:encoded><![CDATA[<p>It seems to me that the real issue is about different levels of abstraction rather than syntactic sugar. Humans simply don&#8217;t operate comfortably at the levels of abstraction that computers currently require. All types of human writeable/readable code are simply mechanisms to bridge this abstraction gap so that we can communicate our intentions to computers in a way both we and they understand. </p>
<p>Looking at the history of programming, it has been one of continual increase in the level of abstraction that we can operate at when we try to communicate our intent to computers. Originally it was wires and switches (the software was literally hard-wired), then binary, assembler, compilers and &#8220;high level&#8221; languages. The next level is to compile code from models. This is already happening. Several of my clients compile 100% of their code, test cases, instrumentation and documentation directly from models. </p>
<p>As William Gibson said &#8211; the future is already here &#8211; it&#8217;s just not evenly distributed.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Travis Jeffery</title>
		<link>http://compoundthinking.com/blog/index.php/2008/11/24/just-say-no-to-software-engineering/#comment-277399</link>
		<dc:creator>Travis Jeffery</dc:creator>
		<pubDate>Mon, 24 Nov 2008 09:54:33 +0000</pubDate>
		<guid isPermaLink="false">http://compoundthinking.com/blog/?p=524#comment-277399</guid>
		<description>I&#039;ll take &quot;Software Engineer&quot; over anything else any day. &quot;Software Writer&quot; sounds way too close to being able to be lumped in with people in Humanities. 

Definition of Engineer: a person who designs, builds, or maintains engines, machines, or public works.

We face a problem and design, build and maintain the solution/software. So I gladly call myself a &quot;Software Engineer&quot;.</description>
		<content:encoded><![CDATA[<p>I&#8217;ll take &#8220;Software Engineer&#8221; over anything else any day. &#8220;Software Writer&#8221; sounds way too close to being able to be lumped in with people in Humanities. </p>
<p>Definition of Engineer: a person who designs, builds, or maintains engines, machines, or public works.</p>
<p>We face a problem and design, build and maintain the solution/software. So I gladly call myself a &#8220;Software Engineer&#8221;.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Bill Karwin</title>
		<link>http://compoundthinking.com/blog/index.php/2008/11/24/just-say-no-to-software-engineering/#comment-277360</link>
		<dc:creator>Bill Karwin</dc:creator>
		<pubDate>Mon, 24 Nov 2008 06:57:29 +0000</pubDate>
		<guid isPermaLink="false">http://compoundthinking.com/blog/?p=524#comment-277360</guid>
		<description>This seems like an idea related to &quot;Literate Programming&quot; a concept led by Donald Knuth since the early 1980&#039;s (or earlier).

http://www.literateprogramming.com/</description>
		<content:encoded><![CDATA[<p>This seems like an idea related to &#8220;Literate Programming&#8221; a concept led by Donald Knuth since the early 1980&#8242;s (or earlier).</p>
<p><a href="http://www.literateprogramming.com/" rel="nofollow">http://www.literateprogramming.com/</a></p>
]]></content:encoded>
	</item>
</channel>
</rss>

