<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	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:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>Managed Chaos &#187; simple design</title>
	<atom:link href="http://blogs.agilefaqs.com/tag/simple-design/feed/" rel="self" type="application/rss+xml" />
	<link>http://blogs.agilefaqs.com</link>
	<description>Naresh Jain&#039;s Random Thoughts on Software Development and Adventure Sports</description>
	<lastBuildDate>Sat, 21 Jan 2012 11:54:57 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=</generator>
		<item>
		<title>Ten Laws of Simplicity by John Maeda</title>
		<link>http://blogs.agilefaqs.com/2010/08/30/ten-laws-of-simplicity-by-john-maeda/</link>
		<comments>http://blogs.agilefaqs.com/2010/08/30/ten-laws-of-simplicity-by-john-maeda/#comments</comments>
		<pubDate>Mon, 30 Aug 2010 11:57:17 +0000</pubDate>
		<dc:creator>Naresh Jain</dc:creator>
				<category><![CDATA[Design]]></category>
		<category><![CDATA[context]]></category>
		<category><![CDATA[Difference]]></category>
		<category><![CDATA[Emotion]]></category>
		<category><![CDATA[Failure]]></category>
		<category><![CDATA[Knowledge]]></category>
		<category><![CDATA[Learn]]></category>
		<category><![CDATA[Orgainze]]></category>
		<category><![CDATA[Reduce]]></category>
		<category><![CDATA[simple design]]></category>
		<category><![CDATA[Simplicity]]></category>
		<category><![CDATA[The Laws of Simplicity]]></category>
		<category><![CDATA[Time]]></category>
		<category><![CDATA[Trust]]></category>

		<guid isPermaLink="false">http://blogs.agilefaqs.com/?p=1469</guid>
		<description><![CDATA[Recently I stumbled upon John Maeda&#8217;s book: The Laws of Simplicity. He has a very interesting take on Simplicity. In this book he describes: TEN LAWS Reduce &#8211; The simplest way to achieve simplicity is through thoughtful reduction. Organize &#8211; Organization makes a system of many appear fewer. Time &#8211; Savings in time feel like simplicity. [...]]]></description>
			<content:encoded><![CDATA[<p>Recently I stumbled upon John Maeda&#8217;s book: <a href="http://free-ebook-download.org/The-Laws-of-Simplicity.html" target="_blank">The Laws of Simplicity</a>.</p>
<p><a href="http://blogs.agilefaqs.com/wp-content/uploads/2010/08/lawsOfSimplicity.jpg"><img class="aligncenter size-full wp-image-1470" title="Laws Of Simplicity" src="http://blogs.agilefaqs.com/wp-content/uploads/2010/08/lawsOfSimplicity.jpg" alt="" width="336" height="500" /></a></p>
<p>He has a very interesting take on Simplicity. In this book he describes:</p>
<p>TEN LAWS</p>
<ol>
<li><strong>Reduce</strong> &#8211; The simplest way to achieve simplicity is through thoughtful reduction.</li>
<li><strong>Organize</strong> &#8211; Organization makes a system of many appear fewer.</li>
<li><strong>Time</strong> &#8211; Savings in time feel like simplicity.</li>
<li><strong>Learn</strong> &#8211; Knowledge makes everything simpler.</li>
<li><strong>Differences</strong> &#8211; Simplicity and complexity need each other.</li>
<li><strong>Context</strong> &#8211; What lies in the periphery of simplicity is definitely not peripheral.</li>
<li><strong>Emotion</strong> &#8211; More emotions are better than less.</li>
<li><strong>Trust</strong> &#8211; In simplicity we trust.</li>
<li><strong>Failure</strong> &#8211; Some things can never be made simple.</li>
<li><strong>The One</strong> &#8211; Simplicity is about subtracting the obvious, and adding the meaningful.</li>
</ol>
<p>THREE KEYS</p>
<ul>
<li><strong>Away</strong> &#8211; More appears like less by simply moving it far, far away.</li>
<li><strong>Open</strong> &#8211; Openness simplifies complexity.</li>
<li><strong>Power</strong> &#8211; Use less, gain more.</li>
</ul>
<p>I found some slides which are also interesting:</p>
<div style="width:425px" id="__ss_845043"><object id="__sse845043" width="425" height="355"><param name="movie" value="http://static.slidesharecdn.com/swf/ssplayer2.swf?doc=laws-of-simplicity-1229318981897407-1&#038;stripped_title=laws-of-simplicity-presentation" /><param name="allowFullScreen" value="true"/><param name="allowScriptAccess" value="always"/><embed name="__sse845043" src="http://static.slidesharecdn.com/swf/ssplayer2.swf?doc=laws-of-simplicity-1229318981897407-1&#038;stripped_title=laws-of-simplicity-presentation" type="application/x-shockwave-flash" allowscriptaccess="always" allowfullscreen="true" width="425" height="355"></embed></object></div>
<div style="width:425px" id="__ss_1833751"><object id="__sse1833751" width="425" height="355"><param name="movie" value="http://static.slidesharecdn.com/swf/ssplayer2.swf?doc=simplicity-090809185040-phpapp01&#038;stripped_title=simplicity-1833751" /><param name="allowFullScreen" value="true"/><param name="allowScriptAccess" value="always"/><embed name="__sse1833751" src="http://static.slidesharecdn.com/swf/ssplayer2.swf?doc=simplicity-090809185040-phpapp01&#038;stripped_title=simplicity-1833751" type="application/x-shockwave-flash" allowscriptaccess="always" allowfullscreen="true" width="425" height="355"></embed></object></div>
]]></content:encoded>
			<wfw:commentRss>http://blogs.agilefaqs.com/2010/08/30/ten-laws-of-simplicity-by-john-maeda/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Simplifying a Complex Design</title>
		<link>http://blogs.agilefaqs.com/2010/07/15/simplifying-a-complex-design/</link>
		<comments>http://blogs.agilefaqs.com/2010/07/15/simplifying-a-complex-design/#comments</comments>
		<pubDate>Thu, 15 Jul 2010 16:50:02 +0000</pubDate>
		<dc:creator>Naresh Jain</dc:creator>
				<category><![CDATA[Design]]></category>
		<category><![CDATA[Programming]]></category>
		<category><![CDATA[class diagram]]></category>
		<category><![CDATA[Refactoring Teaser]]></category>
		<category><![CDATA[Refactoring Teaser IV]]></category>
		<category><![CDATA[simple design]]></category>
		<category><![CDATA[uml]]></category>

		<guid isPermaLink="false">http://blogs.agilefaqs.com/?p=1450</guid>
		<description><![CDATA[From To]]></description>
			<content:encoded><![CDATA[<div align="center">From</div>
<p><a href="http://blogs.agilefaqs.com/wp-content/uploads/2010/07/complexDesign.jpg"><img class="aligncenter size-full wp-image-1451" title="Complex Design" src="http://blogs.agilefaqs.com/wp-content/uploads/2010/07/complexDesign.jpg" alt="" width="489" height="189" /></a></p>
<div align="center">To</div>
<p><a href="http://blogs.agilefaqs.com/wp-content/uploads/2010/07/SimplifiedDesign.jpg"><img class="aligncenter size-full wp-image-1452" title="Simplified Design" src="http://blogs.agilefaqs.com/wp-content/uploads/2010/07/SimplifiedDesign.jpg" alt="" width="489" height="431" /></a></p>
]]></content:encoded>
			<wfw:commentRss>http://blogs.agilefaqs.com/2010/07/15/simplifying-a-complex-design/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>I know TDD coz&#8230;</title>
		<link>http://blogs.agilefaqs.com/2010/05/14/i-know-tdd-coz/</link>
		<comments>http://blogs.agilefaqs.com/2010/05/14/i-know-tdd-coz/#comments</comments>
		<pubDate>Fri, 14 May 2010 17:20:26 +0000</pubDate>
		<dc:creator>Naresh Jain</dc:creator>
				<category><![CDATA[Agile]]></category>
		<category><![CDATA[Programming]]></category>
		<category><![CDATA[Acceptance Criteria]]></category>
		<category><![CDATA[Evolutionary Design]]></category>
		<category><![CDATA[Interaction Design]]></category>
		<category><![CDATA[simple design]]></category>
		<category><![CDATA[Syntax]]></category>
		<category><![CDATA[system metaphor]]></category>
		<category><![CDATA[TDD]]></category>
		<category><![CDATA[Thin Slicing]]></category>
		<category><![CDATA[toddler]]></category>
		<category><![CDATA[Tracer Bullet]]></category>
		<category><![CDATA[Walking Skeleton]]></category>

		<guid isPermaLink="false">http://blogs.agilefaqs.com/?p=1277</guid>
		<description><![CDATA[Just because you know the syntax of a programming language, does not mean you know programming Just because a toddler can make some sounds, does not mean she can speak Similarly, just because you write tests before you write code, does not mean you know TDD. TDD is a lot more than test-first. IMHO, following [...]]]></description>
			<content:encoded><![CDATA[<p>Just because you know the syntax of a programming language, does not mean you know programming</p>
<p>Just because a toddler can make some sounds, does not mean she can speak</p>
<p>Similarly, just because you write tests before you write code, does not mean you know TDD.</p>
<p>TDD is a lot more than test-first. IMHO, following concepts let&#8217;s you truly experience TDD:</p>
<ul>
<li><span style="font-size: 13.3333px;">Evolutionary Design, </span></li>
<li><span style="font-size: 13.3333px;">Acceptance Criteria, </span></li>
<li><span style="font-size: 13.3333px;">Simple Design, </span></li>
<li><span style="font-size: 13.3333px;">System Metaphor, </span></li>
<li><span style="font-size: 13.3333px;">Thin Slicing, </span></li>
<li><span style="font-size: 13.3333px;">Walking Skeleton/Tracer Bullet and </span></li>
<li><span style="font-size: 13.3333px;">Interaction Design</span></li>
</ul>
<blockquote><p>How long does it take a dev to be well-versed with TDD?</p></blockquote>
<p>Depends on the dev, but atleast a couple of years of deliberate practice on projects</p>
<blockquote><p>What can we do to become TDD Practitioners?</p></blockquote>
<p>Start with deliberate practice in safe env. Then gradually start on your project.</p>
]]></content:encoded>
			<wfw:commentRss>http://blogs.agilefaqs.com/2010/05/14/i-know-tdd-coz/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Goodbye Simplicity; I&#8217;m Object Obsessed</title>
		<link>http://blogs.agilefaqs.com/2009/10/26/goodbye-simplicity-im-object-obsessed/</link>
		<comments>http://blogs.agilefaqs.com/2009/10/26/goodbye-simplicity-im-object-obsessed/#comments</comments>
		<pubDate>Mon, 26 Oct 2009 07:12:16 +0000</pubDate>
		<dc:creator>Naresh Jain</dc:creator>
				<category><![CDATA[Agile]]></category>
		<category><![CDATA[Design]]></category>
		<category><![CDATA[Programming]]></category>
		<category><![CDATA[Abstractions]]></category>
		<category><![CDATA[Death by Objects]]></category>
		<category><![CDATA[Object Oriented Design]]></category>
		<category><![CDATA[simple design]]></category>
		<category><![CDATA[Simplicity]]></category>
		<category><![CDATA[Snakes and Ladders]]></category>
		<category><![CDATA[TDD]]></category>
		<category><![CDATA[There is no Spoon]]></category>

		<guid isPermaLink="false">http://blogs.agilefaqs.com/?p=1086</guid>
		<description><![CDATA[In retrospect, I think Object Orientation has tremendously helped me become a better programmer. But at the same time, its also made me vulnerable to including extra complexity (or at least thinking in terms of more complex solutions) in my code. One of the important lessons I learned a few years ago was, not to [...]]]></description>
			<content:encoded><![CDATA[<p>In retrospect, I think <a href="http://en.wikipedia.org/wiki/Object-oriented_programming" target="_blank">Object Orientation</a> has tremendously helped me become a better programmer. But at the same time, its also made me vulnerable to including extra complexity (or at least thinking in terms of more complex solutions) in my code.</p>
<p>One of the important lessons I learned a few years ago was, not to try and model my software on real world (my perception of reality). This leads to my software solution ending up as complex and easy to misunderstood as the real world. Soon I started embracing &#8220;<a href="http://blogs.agilefaqs.com/2009/06/15/there-is-no-spoon-objects/" target="_self">There is no Spoon</a>&#8221; philosophy and really focusing on abstractions.</p>
<p>Last year, I was again caught red handed, trying to sneak in too many objects (and hence complexity) into my code. This time I was pairing with another developer new to TDD and we were building a Snakes and Ladders game using TDD. The focus was really demonstrate TDD in a very different context.</p>
<p>(I&#8217;m sure everyone is aware of the <a href="http://en.wikipedia.org/wiki/Snakes_and_ladders" target="_blank">Snakes and Ladders</a> board game).</p>
<p><a href="http://blogs.agilefaqs.com/wp-content/uploads/2009/10/snakesandladders.jpg"><img class="aligncenter size-full wp-image-1087" title="Snakes And Ladders" src="http://blogs.agilefaqs.com/wp-content/uploads/2009/10/snakesandladders.jpg" alt="Snakes And Ladders" width="297" height="300" /></a></p>
<p>30 mins into the pairing, we had the following classes with wonderful tests for almost each class:</p>
<ul>
<li>Game</li>
<li>Board</li>
<li>Player</li>
<li>Dice</li>
<li>Snake</li>
<li>Ladder</li>
</ul>
<p>Just then <a href="http://sandeep.shetty.in/" target="_blank">Sandeep Shetty</a> was passing by and he looked at the beautiful piece of mess we had created. He was surprised how <em>royally</em> we were wasting our time. The following 15 min discussion helped all of us realize how we were so caught up in TDD and coming up with all those (useless) abstractions when simply we could just have</p>
<ul>
<li>one class called Game (place holder, the class is not really required) with</li>
<li>one method called move(int number_on_the_dice)</li>
<li>a list to hold the current position of each player on the board (there can be more than 2 players)</li>
<li>a hashmap with starting and ending points on the board (represents both the snakes and ladders, how does it matter whether its a snake or a ladder, they are just starting and ending points on the board)</li>
<li>a counter to calculate player&#8217;s turn</li>
<li>and &#8230; and what? &#8230;that&#8217;s it</li>
</ul>
<p>Can you beat the simplicity of these 15 odd lines of code? Its not really about the number of lines of code, its about the conciseness and simplicity of it.</p>
<p><a href="http://blogs.agilefaqs.com/2009/08/12/refactoring-teaser-iv-step-1/" target="_self">Refactoring Teaser IV</a> is another great example of <em><span style="text-decoration: underline;">&#8220;Death by Objects&#8221; pattern</span></em>. <a href="http://blogs.agilefaqs.com/2009/09/27/refactoring-teaser-iv-solution-summary-report/" target="_self">Solution Summary</a> highlights the real difference.</p>
<p>I would also suggest reading <a href="http://blogs.agilefaqs.com/2009/05/20/embrace-simple-design/" target="_self">Embrace Simple Design, an analogy</a>.</p>
]]></content:encoded>
			<wfw:commentRss>http://blogs.agilefaqs.com/2009/10/26/goodbye-simplicity-im-object-obsessed/feed/</wfw:commentRss>
		<slash:comments>5</slash:comments>
		</item>
		<item>
		<title>Avatars of TDD @ CodeChef TechTalks, Bangalore</title>
		<link>http://blogs.agilefaqs.com/2009/09/28/avatars-of-tdd-codechef-techtalks-bangalore/</link>
		<comments>http://blogs.agilefaqs.com/2009/09/28/avatars-of-tdd-codechef-techtalks-bangalore/#comments</comments>
		<pubDate>Sun, 27 Sep 2009 18:30:07 +0000</pubDate>
		<dc:creator>Naresh Jain</dc:creator>
				<category><![CDATA[Agile]]></category>
		<category><![CDATA[Community]]></category>
		<category><![CDATA[Conference]]></category>
		<category><![CDATA[Design]]></category>
		<category><![CDATA[Programming]]></category>
		<category><![CDATA[Testing]]></category>
		<category><![CDATA[Avatars of TDD]]></category>
		<category><![CDATA[DesignFest]]></category>
		<category><![CDATA[simple design]]></category>
		<category><![CDATA[source code]]></category>

		<guid isPermaLink="false">http://blogs.agilefaqs.com/?p=993</guid>
		<description><![CDATA[Recently I presented on Avatars of TDD at CodeChef TechTalks in Bangalore. Artifacts from the tutorial: (Yes, that&#8217;s me talking. Even though you can&#8217;t see me you have to trust me.) For the demo, I used Alistair Cockburn&#8217;s problem from OOPSLA DesignFest. Feel free to download the source code from the demo.]]></description>
			<content:encoded><![CDATA[<p>Recently I presented on <a href="http://blogs.agilefaqs.com/2007/12/14/avatars-of-tdd/">Avatars of TDD</a> at <a href="http://www.codechef.com/techtalks/" target="_blank">CodeChef TechTalks</a> in Bangalore. </p>
<p>Artifacts from the tutorial:  </p>
<p><object width="400" height="273" data="http://vimeo.com/moogaloop.swf?clip_id=6627976&amp;server=vimeo.com&amp;show_title=1&amp;show_byline=1&amp;show_portrait=0&amp;color=&amp;fullscreen=1" type="application/x-shockwave-flash"><param name="allowfullscreen" value="true" /><param name="allowscriptaccess" value="always" /><param name="src" value="http://vimeo.com/moogaloop.swf?clip_id=6627976&amp;server=vimeo.com&amp;show_title=1&amp;show_byline=1&amp;show_portrait=0&amp;color=&amp;fullscreen=1" /></object></p>
<p>(Yes, that&#8217;s me talking. Even though you can&#8217;t see me you have to trust me.)</p>
<div id="__ss_2017021" style="width: 425px; text-align: left;"><object width="425" height="355" data="http://static.slidesharecdn.com/swf/ssplayer2.swf?doc=avatarsoftdd-090918055018-phpapp02&amp;stripped_title=avatars-of-tdd" type="application/x-shockwave-flash"><param name="allowFullScreen" value="true" /><param name="allowScriptAccess" value="always" /><param name="src" value="http://static.slidesharecdn.com/swf/ssplayer2.swf?doc=avatarsoftdd-090918055018-phpapp02&amp;stripped_title=avatars-of-tdd" /><param name="allowfullscreen" value="true" /></object></div>
<p>For the demo, I used <a href="http://alistair.cockburn.us/" target="_blank">Alistair Cockburn&#8217;s</a> <a href="http://designfest.acm.org/Problems/VendingMachine/VendingMachine_99.htm#Part1" target="_blank">problem from OOPSLA DesignFest</a>. Feel free to <a href="http://blogs.agilefaqs.com/wp-content/uploads/2009/09/coffeevendingmachine.zip">download the source code from the demo</a>.</p>
]]></content:encoded>
			<wfw:commentRss>http://blogs.agilefaqs.com/2009/09/28/avatars-of-tdd-codechef-techtalks-bangalore/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Embrace Simple Design</title>
		<link>http://blogs.agilefaqs.com/2009/05/20/embrace-simple-design/</link>
		<comments>http://blogs.agilefaqs.com/2009/05/20/embrace-simple-design/#comments</comments>
		<pubDate>Wed, 20 May 2009 06:22:24 +0000</pubDate>
		<dc:creator>Naresh Jain</dc:creator>
				<category><![CDATA[Agile]]></category>
		<category><![CDATA[Design]]></category>
		<category><![CDATA[bathroom showers]]></category>
		<category><![CDATA[simple design]]></category>
		<category><![CDATA[simplest possible thing that could possibly work]]></category>

		<guid isPermaLink="false">http://blogs.agilefaqs.com/?p=721</guid>
		<description><![CDATA[In Software if we wanted to build, bathroom showers, most of us would have built the following: A mounted shower with a separate hand-shower. To think about it, you are always going to use only 1 at a time. Why then do you need both? A smarter way to build a shower would be: If [...]]]></description>
			<content:encoded><![CDATA[<p>In Software if we wanted to build, bathroom showers, most of us would have built the following:</p>
<p><a href="http://blogs.agilefaqs.com/wp-content/uploads/2009/05/traditionalshowers.jpg"><img class="aligncenter size-medium wp-image-722" title="Traditional Showers" src="http://blogs.agilefaqs.com/wp-content/uploads/2009/05/traditionalshowers-300x150.jpg" alt="" width="300" height="150" /></a></p>
<p>A mounted shower with a separate hand-shower. To think about it, you are always going to use only 1 at a time. Why then do you need both?</p>
<p>A smarter way to build a shower would be:</p>
<p><a href="http://blogs.agilefaqs.com/wp-content/uploads/2009/05/mountedhandshower.jpg"><img class="aligncenter size-medium wp-image-723" title="Mounted Hand Shower" src="http://blogs.agilefaqs.com/wp-content/uploads/2009/05/mountedhandshower-300x300.jpg" alt="" width="300" height="300" /></a></p>
<p>If you want to use the mounted shower you can, if you want to use the hand shower you can. The water controllers are massively simplified and it does what you need. </p>
<p>This is what I refer to as &#8220;Smartest Possible Thing That Could Possibly Work&#8221;</p>
]]></content:encoded>
			<wfw:commentRss>http://blogs.agilefaqs.com/2009/05/20/embrace-simple-design/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
	</channel>
</rss>

