<?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/"
	xmlns:creativeCommons="http://backend.userland.com/creativeCommonsRssModule"
	>
<channel>
	<title>Comments on: Simplicity is Complicated</title>
	<atom:link href="http://avdi.org/devblog/2009/10/29/simplicity-is-complicated/feed/" rel="self" type="application/rss+xml" />
	<link>http://avdi.org/devblog/2009/10/29/simplicity-is-complicated/</link>
	<description>"...the three great virtues of a programmer: laziness, impatience, and hubris." -- Larry Wall</description>
	<lastBuildDate>Wed, 03 Mar 2010 21:56:22 -0800</lastBuildDate>
	<generator>http://wordpress.org/?v=2.8.5</generator>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
		<item>
		<title>By: Henrique</title>
		<link>http://avdi.org/devblog/2009/10/29/simplicity-is-complicated/comment-page-1/#comment-828</link>
		<dc:creator>Henrique</dc:creator>
		<pubDate>Fri, 12 Feb 2010 17:57:54 +0000</pubDate>
		<guid isPermaLink="false">http://avdi.org/devblog/?p=291#comment-828</guid>
		<description>“ Programs must be written for people to read, and only incidentally for machines to execute. ” - Abelson / Sussman &lt;br&gt;&lt;br&gt;Your examples show code snippets with different levels of clarity in it. I can communicate an idea really briefly, if you know about the domain I&#039;m talking about. But if you don&#039;t know, I can&#039;t take shortcuts and use domain language, and will need to explain everything step-by-step.&lt;br&gt;&lt;br&gt;What we see on the examples is this difference. The first one is a new programmer to Ruby (one unaware of the domain), so he uses imperative programming to explain everything step-by-step. The second example, the programmer is now aware of the domain, and can take shortcuts and use domain lingo (inject).&lt;br&gt;&lt;br&gt;Simplicity in software, as in anything that is built of parts, comes from design. But clarity is all about communication. What different languages and APIs try to do is giving the programmer the vocabulary necessary to express with enough clarity the problem he needs to solve, and one that makes sense in the domain of the problem.</description>
		<content:encoded><![CDATA[<p>&acirc; Programs must be written for people to read, and only incidentally for machines to execute. &acirc; &#8211; Abelson / Sussman </p>
<p>Your examples show code snippets with different levels of clarity in it. I can communicate an idea really briefly, if you know about the domain I&#39;m talking about. But if you don&#39;t know, I can&#39;t take shortcuts and use domain language, and will need to explain everything step-by-step.</p>
<p>What we see on the examples is this difference. The first one is a new programmer to Ruby (one unaware of the domain), so he uses imperative programming to explain everything step-by-step. The second example, the programmer is now aware of the domain, and can take shortcuts and use domain lingo (inject).</p>
<p>Simplicity in software, as in anything that is built of parts, comes from design. But clarity is all about communication. What different languages and <span class="caps">API</span>s try to do is giving the programmer the vocabulary necessary to express with enough clarity the problem he needs to solve, and one that makes sense in the domain of the problem.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: avdi</title>
		<link>http://avdi.org/devblog/2009/10/29/simplicity-is-complicated/comment-page-1/#comment-790</link>
		<dc:creator>avdi</dc:creator>
		<pubDate>Mon, 21 Dec 2009 09:11:16 +0000</pubDate>
		<guid isPermaLink="false">http://avdi.org/devblog/?p=291#comment-790</guid>
		<description>Thanks for your kind words, glad you enjoyed it!</description>
		<content:encoded><![CDATA[<p>Thanks for your kind words, glad you enjoyed it!</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: stevegoodman</title>
		<link>http://avdi.org/devblog/2009/10/29/simplicity-is-complicated/comment-page-1/#comment-789</link>
		<dc:creator>stevegoodman</dc:creator>
		<pubDate>Sun, 20 Dec 2009 22:56:59 +0000</pubDate>
		<guid isPermaLink="false">http://avdi.org/devblog/?p=291#comment-789</guid>
		<description>Great post! I have nothing to add to all the insightful comments below, other than to say thank you for writing such a thoughtful piece.</description>
		<content:encoded><![CDATA[<p>Great post! I have nothing to add to all the insightful comments below, other than to say thank you for writing such a thoughtful piece.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: carmenhilton</title>
		<link>http://avdi.org/devblog/2009/10/29/simplicity-is-complicated/comment-page-1/#comment-786</link>
		<dc:creator>carmenhilton</dc:creator>
		<pubDate>Fri, 04 Dec 2009 21:27:22 +0000</pubDate>
		<guid isPermaLink="false">http://avdi.org/devblog/?p=291#comment-786</guid>
		<description>The titles says it all... Excellent post.</description>
		<content:encoded><![CDATA[<p>The titles says it all&#8230; Excellent post.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: James Smith </title>
		<link>http://avdi.org/devblog/2009/10/29/simplicity-is-complicated/comment-page-1/#comment-710</link>
		<dc:creator>James Smith </dc:creator>
		<pubDate>Thu, 05 Nov 2009 01:49:06 +0000</pubDate>
		<guid isPermaLink="false">http://avdi.org/devblog/?p=291#comment-710</guid>
		<description>This is neat. But i do not agree that simplicity is complicated. It only gets complicated when we try to make it simpler</description>
		<content:encoded><![CDATA[<p>This is neat. But i do not agree that simplicity is complicated. It only gets complicated when we try to make it simpler</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: OldGuy</title>
		<link>http://avdi.org/devblog/2009/10/29/simplicity-is-complicated/comment-page-1/#comment-709</link>
		<dc:creator>OldGuy</dc:creator>
		<pubDate>Mon, 02 Nov 2009 00:41:17 +0000</pubDate>
		<guid isPermaLink="false">http://avdi.org/devblog/?p=291#comment-709</guid>
		<description>I learned many years ago to avoid using the word &quot;simple&quot; or &quot;easy&quot; in any discussions with either other programmers or especially customers/clients.   &lt;br&gt;&lt;br&gt;While these words express only relative concepts (something cannot be simple or easy on its own, but in comparison to something else), most people hear them as absolute and interpret them to mean that the work will be done quickly or cheaply.  &lt;br&gt;&lt;br&gt;Words like &quot;straight-forward&quot; more accurately express the intent almost every time.&lt;br&gt;&lt;br&gt;Making your code straight-forward is a matter of making it understandable and malleable by the expected audience.  You have to expect the others to have a certain skill level and write to that level, even if it is &quot;simpler&quot; than your own.  That&#039;s how teams work.</description>
		<content:encoded><![CDATA[<p>I learned many years ago to avoid using the word &#8220;simple&#8221; or &#8220;easy&#8221; in any discussions with either other programmers or especially customers/clients.   </p>
<p>While these words express only relative concepts (something cannot be simple or easy on its own, but in comparison to something else), most people hear them as absolute and interpret them to mean that the work will be done quickly or cheaply.  </p>
<p>Words like &#8220;straight-forward&#8221; more accurately express the intent almost every time.</p>
<p>Making your code straight-forward is a matter of making it understandable and malleable by the expected audience.  You have to expect the others to have a certain skill level and write to that level, even if it is &#8220;simpler&#8221; than your own.  That&#39;s how teams work.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: reboltutorial</title>
		<link>http://avdi.org/devblog/2009/10/29/simplicity-is-complicated/comment-page-1/#comment-708</link>
		<dc:creator>reboltutorial</dc:creator>
		<pubDate>Sun, 01 Nov 2009 21:33:16 +0000</pubDate>
		<guid isPermaLink="false">http://avdi.org/devblog/?p=291#comment-708</guid>
		<description>As a scientist, I would say refering to the concept of entropy:&lt;br&gt;&lt;br&gt;Make things Complicated is Simplistic, make things Simple is Complex ;)&lt;br&gt;&lt;br&gt;Complex = Reduce to the most simple things as possible but not less (paraphrasing $Einstein: make things simple but not simpler).&lt;br&gt;Complicated = SmokeScreen which hides the Simplicity.</description>
		<content:encoded><![CDATA[<p>As a scientist, I would say refering to the concept of entropy:</p>
<p>Make things Complicated is Simplistic, make things Simple is Complex <img src='http://avdi.org/devblog/wp-includes/images/smilies/icon_wink.gif' alt=';)' class='wp-smiley' /> </p>
<p>Complex = Reduce to the most simple things as possible but not less (paraphrasing $Einstein: make things simple but not simpler).<br />Complicated = SmokeScreen which hides the Simplicity.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: avdi</title>
		<link>http://avdi.org/devblog/2009/10/29/simplicity-is-complicated/comment-page-1/#comment-705</link>
		<dc:creator>avdi</dc:creator>
		<pubDate>Sat, 31 Oct 2009 10:50:49 +0000</pubDate>
		<guid isPermaLink="false">http://avdi.org/devblog/?p=291#comment-705</guid>
		<description>Indeed. When choosing a &quot;default&quot; philosophy of design, I think Unix philosophy of small, sharp, composable tools is one of the safer bets.</description>
		<content:encoded><![CDATA[<p>Indeed. When choosing a &#8220;default&#8221; philosophy of design, I think Unix philosophy of small, sharp, composable tools is one of the safer bets.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: avdi</title>
		<link>http://avdi.org/devblog/2009/10/29/simplicity-is-complicated/comment-page-1/#comment-704</link>
		<dc:creator>avdi</dc:creator>
		<pubDate>Sat, 31 Oct 2009 10:48:12 +0000</pubDate>
		<guid isPermaLink="false">http://avdi.org/devblog/?p=291#comment-704</guid>
		<description>And yet the complexity is still there, you&#039;ve just internalised it. This is an example of what I&#039;m starting to think of as the accessibility/expressiveness continuum: do we push the complexity out in the open to be more accessible to the lowest common denominator, or do we count on certain principles being pre-loaded in the readers&#039; brains and realise the benefits of greater expressiveness?&lt;br&gt;&lt;br&gt;Thanks for the comment!</description>
		<content:encoded><![CDATA[<p>And yet the complexity is still there, you&#39;ve just internalised it. This is an example of what I&#39;m starting to think of as the accessibility/expressiveness continuum: do we push the complexity out in the open to be more accessible to the lowest common denominator, or do we count on certain principles being pre-loaded in the readers&#39; brains and realise the benefits of greater expressiveness?</p>
<p>Thanks for the comment!</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: avdi</title>
		<link>http://avdi.org/devblog/2009/10/29/simplicity-is-complicated/comment-page-1/#comment-703</link>
		<dc:creator>avdi</dc:creator>
		<pubDate>Sat, 31 Oct 2009 10:44:00 +0000</pubDate>
		<guid isPermaLink="false">http://avdi.org/devblog/?p=291#comment-703</guid>
		<description>Your example reminds me a little bit of a pet peeve I have about certain ticketing systems (Lighthouse being one example): a drop-down selector for ticket status. This is workflow, I don&#039;t want to pick a status from a list. I want to see a button that lets me advance the ticket to the next state, and a button to back it up to the previous state in the workflow.&lt;br&gt;&lt;br&gt;A pick-list of states is certainly &quot;simpler&quot; from the programming side but it imposes an additional cognitive burden of complexity on the user side.</description>
		<content:encoded><![CDATA[<p>Your example reminds me a little bit of a pet peeve I have about certain ticketing systems (Lighthouse being one example): a drop-down selector for ticket status. This is workflow, I don&#39;t want to pick a status from a list. I want to see a button that lets me advance the ticket to the next state, and a button to back it up to the previous state in the workflow.</p>
<p>A pick-list of states is certainly &#8220;simpler&#8221; from the programming side but it imposes an additional cognitive burden of complexity on the user side.</p>
]]></content:encoded>
	</item>
</channel>
</rss>

<!-- Dynamic Page Served (once) in 0.364 seconds -->
