<?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: Lessons in Software from James Waletzky</title>
	<atom:link href="http://shapingsoftware.com/2009/07/06/lessons-in-software-from-james-waletzky/feed/" rel="self" type="application/rss+xml" />
	<link>http://shapingsoftware.com/2009/07/06/lessons-in-software-from-james-waletzky/</link>
	<description>Patterns and Practices for Software Success.</description>
	<pubDate>Sat, 04 Feb 2012 12:43:02 +0000</pubDate>
	<generator>http://wordpress.org/?v=2.7.1</generator>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
		<item>
		<title>By: Ricky</title>
		<link>http://shapingsoftware.com/2009/07/06/lessons-in-software-from-james-waletzky/comment-page-1/#comment-59920</link>
		<dc:creator>Ricky</dc:creator>
		<pubDate>Thu, 29 Oct 2009 01:31:47 +0000</pubDate>
		<guid isPermaLink="false">http://shapingsoftware.com/2009/07/06/lessons-in-software-from-james-waletzky/#comment-59920</guid>
		<description>I love the analogy with the airport. That’s why I like TDD so much. You start with where you want to get to and then derive the starting point, so to speak. Flipping around our typical line of thinking typically leads to better designs, and adherence to the simplicity rule. I feel the same way with you with a design - if it is straight-forward, easy to understand, and meets our quality metrics (e.g. performance), all the better. Complex designs cause time and money down the road.</description>
		<content:encoded><![CDATA[<p>I love the analogy with the airport. That’s why I like TDD so much. You start with where you want to get to and then derive the starting point, so to speak. Flipping around our typical line of thinking typically leads to better designs, and adherence to the simplicity rule. I feel the same way with you with a design - if it is straight-forward, easy to understand, and meets our quality metrics (e.g. performance), all the better. Complex designs cause time and money down the road.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: QAspire Blog - Quality, Management, Leadership &#38; Life! &#187; Three Lessons in Software Development (and more)</title>
		<link>http://shapingsoftware.com/2009/07/06/lessons-in-software-from-james-waletzky/comment-page-1/#comment-55732</link>
		<dc:creator>QAspire Blog - Quality, Management, Leadership &#38; Life! &#187; Three Lessons in Software Development (and more)</dc:creator>
		<pubDate>Fri, 31 Jul 2009 12:34:50 +0000</pubDate>
		<guid isPermaLink="false">http://shapingsoftware.com/2009/07/06/lessons-in-software-from-james-waletzky/#comment-55732</guid>
		<description>[...] Lessons in Software from James Waletzky [...]</description>
		<content:encoded><![CDATA[<p>[...] Lessons in Software from James Waletzky [...]</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: robertclaye</title>
		<link>http://shapingsoftware.com/2009/07/06/lessons-in-software-from-james-waletzky/comment-page-1/#comment-54979</link>
		<dc:creator>robertclaye</dc:creator>
		<pubDate>Tue, 14 Jul 2009 13:12:53 +0000</pubDate>
		<guid isPermaLink="false">http://shapingsoftware.com/2009/07/06/lessons-in-software-from-james-waletzky/#comment-54979</guid>
		<description>good blog..... different levels, including individual check-ins, component development, feature development, short iterations, milestones, and finally, release. On my team, code is ready for check-in when all unit tests pass, unit tests achieve 80%+ code coverage, code has been reviewed, design docs are in place, the code is free of memory leaks</description>
		<content:encoded><![CDATA[<p>good blog&#8230;.. different levels, including individual check-ins, component development, feature development, short iterations, milestones, and finally, release. On my team, code is ready for check-in when all unit tests pass, unit tests achieve 80%+ code coverage, code has been reviewed, design docs are in place, the code is free of memory leaks</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: James Waletzky</title>
		<link>http://shapingsoftware.com/2009/07/06/lessons-in-software-from-james-waletzky/comment-page-1/#comment-54881</link>
		<dc:creator>James Waletzky</dc:creator>
		<pubDate>Sat, 11 Jul 2009 06:54:46 +0000</pubDate>
		<guid isPermaLink="false">http://shapingsoftware.com/2009/07/06/lessons-in-software-from-james-waletzky/#comment-54881</guid>
		<description>Jimmy: Glad you enjoyed the article! I would be curious on any tips that you can share for people in your position. How do you approach fixing a project that is in trouble? It is a different problem, that's for sure.

Kevin: I love the analogy with the airport. That's why I like TDD so much. You start with where you want to get to and then derive the starting point, so to speak. Flipping around our typical line of thinking typically leads to better designs, and adherence to the simplicity rule. I feel the same way with you with a design - if it is straight-forward, easy to understand, and meets our quality metrics (e.g. performance), all the better. Complex designs cause time and money down the road.

Thanks for the kind words everyone! I love hearing your ideas as well.

James.</description>
		<content:encoded><![CDATA[<p>Jimmy: Glad you enjoyed the article! I would be curious on any tips that you can share for people in your position. How do you approach fixing a project that is in trouble? It is a different problem, that&#8217;s for sure.</p>
<p>Kevin: I love the analogy with the airport. That&#8217;s why I like TDD so much. You start with where you want to get to and then derive the starting point, so to speak. Flipping around our typical line of thinking typically leads to better designs, and adherence to the simplicity rule. I feel the same way with you with a design - if it is straight-forward, easy to understand, and meets our quality metrics (e.g. performance), all the better. Complex designs cause time and money down the road.</p>
<p>Thanks for the kind words everyone! I love hearing your ideas as well.</p>
<p>James.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Kevin Lam (IMPACTA)</title>
		<link>http://shapingsoftware.com/2009/07/06/lessons-in-software-from-james-waletzky/comment-page-1/#comment-54815</link>
		<dc:creator>Kevin Lam (IMPACTA)</dc:creator>
		<pubDate>Wed, 08 Jul 2009 22:39:27 +0000</pubDate>
		<guid isPermaLink="false">http://shapingsoftware.com/2009/07/06/lessons-in-software-from-james-waletzky/#comment-54815</guid>
		<description>James, 

Great article, lessons #1 (Keep it simple), lesson #2 (Define Done) and lesson #6 (Unit Testing) are my favorite for sure.

Regarding keeping it simple, I find it odd whenever developer relish at how complicated their code, design, etc. is.  Simple designs happen to be the easiest to understand, manage and in my personal opinion they are the most elegant :)  (I am infinitely more proud of my designs that are simple and get the job done, than the ones that get the job done but in a contrived, 'academically superior' way :)

Define done. For myself, and the developers I contract to build our product, I always define what done means (except I call them success metrics).  Keeps the project within budget and on time.

Finally, on unit tests.  I never appreciated these until I left MS to start my own business.  If you think about it, unit tests capture the objective of the code (meeting some very specific requirement).  We should all be doing this, start with an objective and aim to research that objective.  Best analogy I know of, when you go to the airport you start with a destination in mind and you take the appropriate flight to get you there, not show up at the airport and jump on any old plane ;)

Great stuff, MS needs to start cloning you :)

--Kevin</description>
		<content:encoded><![CDATA[<p>James, </p>
<p>Great article, lessons #1 (Keep it simple), lesson #2 (Define Done) and lesson #6 (Unit Testing) are my favorite for sure.</p>
<p>Regarding keeping it simple, I find it odd whenever developer relish at how complicated their code, design, etc. is.  Simple designs happen to be the easiest to understand, manage and in my personal opinion they are the most elegant <img src='http://shapingsoftware.com/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' />  (I am infinitely more proud of my designs that are simple and get the job done, than the ones that get the job done but in a contrived, &#8216;academically superior&#8217; way <img src='http://shapingsoftware.com/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>
<p>Define done. For myself, and the developers I contract to build our product, I always define what done means (except I call them success metrics).  Keeps the project within budget and on time.</p>
<p>Finally, on unit tests.  I never appreciated these until I left MS to start my own business.  If you think about it, unit tests capture the objective of the code (meeting some very specific requirement).  We should all be doing this, start with an objective and aim to research that objective.  Best analogy I know of, when you go to the airport you start with a destination in mind and you take the appropriate flight to get you there, not show up at the airport and jump on any old plane <img src='http://shapingsoftware.com/wp-includes/images/smilies/icon_wink.gif' alt=';)' class='wp-smiley' /> </p>
<p>Great stuff, MS needs to start cloning you <img src='http://shapingsoftware.com/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>
<p>&#8211;Kevin</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Solving the Tightly Coupled Software problem can be over-thinking. &#171; Adam: Be Explicit</title>
		<link>http://shapingsoftware.com/2009/07/06/lessons-in-software-from-james-waletzky/comment-page-1/#comment-54793</link>
		<dc:creator>Solving the Tightly Coupled Software problem can be over-thinking. &#171; Adam: Be Explicit</dc:creator>
		<pubDate>Wed, 08 Jul 2009 11:47:52 +0000</pubDate>
		<guid isPermaLink="false">http://shapingsoftware.com/2009/07/06/lessons-in-software-from-james-waletzky/#comment-54793</guid>
		<description>[...] list of Software Development Lessons. It is too long to be easily remembered. I still prefer the list of four I found [...]</description>
		<content:encoded><![CDATA[<p>[...] list of Software Development Lessons. It is too long to be easily remembered. I still prefer the list of four I found [...]</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Jimmy May</title>
		<link>http://shapingsoftware.com/2009/07/06/lessons-in-software-from-james-waletzky/comment-page-1/#comment-54792</link>
		<dc:creator>Jimmy May</dc:creator>
		<pubDate>Wed, 08 Jul 2009 11:40:35 +0000</pubDate>
		<guid isPermaLink="false">http://shapingsoftware.com/2009/07/06/lessons-in-software-from-james-waletzky/#comment-54792</guid>
		<description>This is a very impressive, meaningful list!  If someone were watching as I read your bullets &amp; text they would have seen my head shaking vigorously &amp; heard me repeatedy saying, "yes", "Yes", "YES!"

In my job, I parachute in very late in the dev cycle--unfortunately too late to implement these best practices.  However, what I can do--&amp; will doo--is evangelize them in the hope that they'll be used in the next project.</description>
		<content:encoded><![CDATA[<p>This is a very impressive, meaningful list!  If someone were watching as I read your bullets &amp; text they would have seen my head shaking vigorously &amp; heard me repeatedy saying, &#8220;yes&#8221;, &#8220;Yes&#8221;, &#8220;YES!&#8221;</p>
<p>In my job, I parachute in very late in the dev cycle&#8211;unfortunately too late to implement these best practices.  However, what I can do&#8211;&amp; will doo&#8211;is evangelize them in the hope that they&#8217;ll be used in the next project.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: James Waletzky</title>
		<link>http://shapingsoftware.com/2009/07/06/lessons-in-software-from-james-waletzky/comment-page-1/#comment-54781</link>
		<dc:creator>James Waletzky</dc:creator>
		<pubDate>Tue, 07 Jul 2009 22:39:47 +0000</pubDate>
		<guid isPermaLink="false">http://shapingsoftware.com/2009/07/06/lessons-in-software-from-james-waletzky/#comment-54781</guid>
		<description>Hey Corey - nice to hear from you!

I would agree in principle, but in practice with languages like C++ and C# (without extensions like Spec#, or whatever the name changed to), unit tests provide that safety net we need to refactor confidently and validate our thinking, as well as drive the design. Verifiable languages would be a nice addition to the arsenal of development weaponry, and even catching with C# catching up to other languages that natively support Design By Contract as a start would help with validation.

Would love to hear your other ideas, Corey!</description>
		<content:encoded><![CDATA[<p>Hey Corey - nice to hear from you!</p>
<p>I would agree in principle, but in practice with languages like C++ and C# (without extensions like Spec#, or whatever the name changed to), unit tests provide that safety net we need to refactor confidently and validate our thinking, as well as drive the design. Verifiable languages would be a nice addition to the arsenal of development weaponry, and even catching with C# catching up to other languages that natively support Design By Contract as a start would help with validation.</p>
<p>Would love to hear your other ideas, Corey!</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Corey Ladas</title>
		<link>http://shapingsoftware.com/2009/07/06/lessons-in-software-from-james-waletzky/comment-page-1/#comment-54777</link>
		<dc:creator>Corey Ladas</dc:creator>
		<pubDate>Tue, 07 Jul 2009 20:27:45 +0000</pubDate>
		<guid isPermaLink="false">http://shapingsoftware.com/2009/07/06/lessons-in-software-from-james-waletzky/#comment-54777</guid>
		<description>Great list James.  The trouble with #6 is that unit tests have no intrinsic value.  They are a means to an end, and they are a workaround for programming languages that can't be verified by more efficient and reliable means.  We use dynamic programming languages because they are expressive, but the ease of use of these languages comes at a cost of safety.  Then we try to put the safety back in using a labor-intensive and unreliable method.  Like most such things, it should be viewed as a tradeoff.  My hope for the long run is that verifiable languages will eventually become popular.</description>
		<content:encoded><![CDATA[<p>Great list James.  The trouble with #6 is that unit tests have no intrinsic value.  They are a means to an end, and they are a workaround for programming languages that can&#8217;t be verified by more efficient and reliable means.  We use dynamic programming languages because they are expressive, but the ease of use of these languages comes at a cost of safety.  Then we try to put the safety back in using a labor-intensive and unreliable method.  Like most such things, it should be viewed as a tradeoff.  My hope for the long run is that verifiable languages will eventually become popular.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: karthik's Software Guide</title>
		<link>http://shapingsoftware.com/2009/07/06/lessons-in-software-from-james-waletzky/comment-page-1/#comment-54766</link>
		<dc:creator>karthik's Software Guide</dc:creator>
		<pubDate>Tue, 07 Jul 2009 08:27:59 +0000</pubDate>
		<guid isPermaLink="false">http://shapingsoftware.com/2009/07/06/lessons-in-software-from-james-waletzky/#comment-54766</guid>
		<description>well,Information provided is very informative especially lesson 6 and lesson 7 are fine.update information about systematic testing</description>
		<content:encoded><![CDATA[<p>well,Information provided is very informative especially lesson 6 and lesson 7 are fine.update information about systematic testing</p>
]]></content:encoded>
	</item>
</channel>
</rss>

