<?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: Another look at the anti-IF campaign	</title>
	<atom:link href="http://matteo.vaccari.name/blog/archives/127/feed" rel="self" type="application/rss+xml" />
	<link>http://matteo.vaccari.name/blog/archives/127</link>
	<description>Extreme enthusiasm</description>
	<lastBuildDate>
	Mon, 25 Feb 2019 15:18:16 +0000	</lastBuildDate>
	<sy:updatePeriod>
	hourly	</sy:updatePeriod>
	<sy:updateFrequency>
	1	</sy:updateFrequency>
	<generator>https://wordpress.org/?v=5.1.1</generator>
			<item>
				<title>
				By: matteo				</title>
				<link>http://matteo.vaccari.name/blog/archives/127/comment-page-1#comment-70101</link>
		<dc:creator><![CDATA[matteo]]></dc:creator>
		<pubDate>Mon, 22 Sep 2008 05:54:47 +0000</pubDate>
		<guid isPermaLink="false">http://matteo.vaccari.name/blog/?p=127#comment-70101</guid>
					<description><![CDATA[@Franco: the way you express it here you make it look like I&#039;m disillusioned with OOP and TDD.  I really am not.  In fact, I&#039;m enthusiastic about TDD and OOP.

I just do not think that TDD is like a magic dust that you can sprinkle on your work and make it suddenly right.  Not so; like many good things, becoming proficient with TDD requires time, work, and dedication.  The poor results of that evening could also be the result of me trying to have you do too much in too little time, with people who had a full day of work on their shoulder.  

Still, what are the alternatives to TDD?  Formal methods and program derivation are too difficult.  Unless you&#039;re doing aerospace-grade software, it&#039;s not practically possible to apply them.  At least I can&#039;t apply them successfully to my work; and while I&#039;m certainly not the brightest star when it comes to math reasoning, I&#039;m probably average, so that most other programmers would have the same problems that I have.

What other method there is?  &quot;Guessing a correct solution and expressing it in correct code that is also readable and mantainable&quot; is not really a method,  it&#039;s a goal.  How do you get there reliably?  A few gifted individuals can do that.  I know I can&#039;t, and even if I did, I could not teach this to others.  It&#039;s really code and fix: if you&#039;re good you can make it work, sometimes.

What else?  The conventional advice is that you do &quot;design&quot; before coding.  I have no objection to that; I do design in my head before coding, I often discuss design with collegues so that we all understand what we&#039;re trying to do.  You just have to be ready to change the design when you find it&#039;s not adequate.  A design is like a plan, and &quot;no plan survives contact with the enemy&quot;, that is, when you try to execute your design you realize it&#039;s not adequate.  So, no matter how much design you do, you are still left with coding as a difficult technical activity.  

I think TDD is the most exciting and useful advance in programming technique since OOP.  The technique is still evolving and I&#039;m ready to believe that it&#039;s not the end of the story, and some day something better will be found to replace it.  That day, I hope I&#039;ll be around to be excited about it. 

In any case, I did not mean to say that the OO techniques for decreasing program complexity are less or more valuable than the ones I present here.  What I&#039;m telling you here is just a different angle.
]]></description>
		<content:encoded><![CDATA[<p>@Franco: the way you express it here you make it look like I&#8217;m disillusioned with OOP and TDD.  I really am not.  In fact, I&#8217;m enthusiastic about TDD and OOP.</p>
<p>I just do not think that TDD is like a magic dust that you can sprinkle on your work and make it suddenly right.  Not so; like many good things, becoming proficient with TDD requires time, work, and dedication.  The poor results of that evening could also be the result of me trying to have you do too much in too little time, with people who had a full day of work on their shoulder.  </p>
<p>Still, what are the alternatives to TDD?  Formal methods and program derivation are too difficult.  Unless you&#8217;re doing aerospace-grade software, it&#8217;s not practically possible to apply them.  At least I can&#8217;t apply them successfully to my work; and while I&#8217;m certainly not the brightest star when it comes to math reasoning, I&#8217;m probably average, so that most other programmers would have the same problems that I have.</p>
<p>What other method there is?  &#8220;Guessing a correct solution and expressing it in correct code that is also readable and mantainable&#8221; is not really a method,  it&#8217;s a goal.  How do you get there reliably?  A few gifted individuals can do that.  I know I can&#8217;t, and even if I did, I could not teach this to others.  It&#8217;s really code and fix: if you&#8217;re good you can make it work, sometimes.</p>
<p>What else?  The conventional advice is that you do &#8220;design&#8221; before coding.  I have no objection to that; I do design in my head before coding, I often discuss design with collegues so that we all understand what we&#8217;re trying to do.  You just have to be ready to change the design when you find it&#8217;s not adequate.  A design is like a plan, and &#8220;no plan survives contact with the enemy&#8221;, that is, when you try to execute your design you realize it&#8217;s not adequate.  So, no matter how much design you do, you are still left with coding as a difficult technical activity.  </p>
<p>I think TDD is the most exciting and useful advance in programming technique since OOP.  The technique is still evolving and I&#8217;m ready to believe that it&#8217;s not the end of the story, and some day something better will be found to replace it.  That day, I hope I&#8217;ll be around to be excited about it. </p>
<p>In any case, I did not mean to say that the OO techniques for decreasing program complexity are less or more valuable than the ones I present here.  What I&#8217;m telling you here is just a different angle.</p>
]]></content:encoded>
						</item>
						<item>
				<title>
				By: Franco Lombardo				</title>
				<link>http://matteo.vaccari.name/blog/archives/127/comment-page-1#comment-70092</link>
		<dc:creator><![CDATA[Franco Lombardo]]></dc:creator>
		<pubDate>Sun, 21 Sep 2008 22:06:22 +0000</pubDate>
		<guid isPermaLink="false">http://matteo.vaccari.name/blog/?p=127#comment-70092</guid>
					<description><![CDATA[Nice work, Matteo. I&#039;m guessing if this post, like &lt;a href=&quot;http://matteo.vaccari.name/blog/archives/121&quot; rel=&quot;nofollow&quot;&gt;the one about the genesis of Agile mini project&lt;/a&gt;, where you wrote &lt;cite&gt;The participants followed the TDD rules, with poor results. I learned that TDD does not necessarily result in good code nor much functionality.&lt;/cite&gt; does express in someway your disillusion about TDD and OO myths.]]></description>
		<content:encoded><![CDATA[<p>Nice work, Matteo. I&#8217;m guessing if this post, like <a href="http://matteo.vaccari.name/blog/archives/121" rel="nofollow">the one about the genesis of Agile mini project</a>, where you wrote <cite>The participants followed the TDD rules, with poor results. I learned that TDD does not necessarily result in good code nor much functionality.</cite> does express in someway your disillusion about TDD and OO myths.</p>
]]></content:encoded>
						</item>
						<item>
				<title>
				By: Luca Minudel				</title>
				<link>http://matteo.vaccari.name/blog/archives/127/comment-page-1#comment-70010</link>
		<dc:creator><![CDATA[Luca Minudel]]></dc:creator>
		<pubDate>Fri, 19 Sep 2008 22:45:55 +0000</pubDate>
		<guid isPermaLink="false">http://matteo.vaccari.name/blog/?p=127#comment-70010</guid>
					<description><![CDATA[These suggestions now are listed at this wiki with others (in italian) http://wiki.ugidotnet.org/default.aspx/UGIdotNETWiki/IfNon%C3%A8objectoriented.html]]></description>
		<content:encoded><![CDATA[<p>These suggestions now are listed at this wiki with others (in italian) <a href="http://wiki.ugidotnet.org/default.aspx/UGIdotNETWiki/IfNon%C3%A8objectoriented.html" rel="nofollow">http://wiki.ugidotnet.org/default.aspx/UGIdotNETWiki/IfNon%C3%A8objectoriented.html</a></p>
]]></content:encoded>
						</item>
						<item>
				<title>
				By: matteo				</title>
				<link>http://matteo.vaccari.name/blog/archives/127/comment-page-1#comment-70003</link>
		<dc:creator><![CDATA[matteo]]></dc:creator>
		<pubDate>Fri, 19 Sep 2008 16:11:51 +0000</pubDate>
		<guid isPermaLink="false">http://matteo.vaccari.name/blog/?p=127#comment-70003</guid>
					<description><![CDATA[Thank you! And, right :-)]]></description>
		<content:encoded><![CDATA[<p>Thank you! And, right :-)</p>
]]></content:encoded>
						</item>
						<item>
				<title>
				By: Fabrizio Giudici				</title>
				<link>http://matteo.vaccari.name/blog/archives/127/comment-page-1#comment-70001</link>
		<dc:creator><![CDATA[Fabrizio Giudici]]></dc:creator>
		<pubDate>Fri, 19 Sep 2008 16:00:13 +0000</pubDate>
		<guid isPermaLink="false">http://matteo.vaccari.name/blog/?p=127#comment-70001</guid>
					<description><![CDATA[Excellent post. Of course I think that &quot;I much prefer the first&quot; should be read as &quot;I much prefer the SECOND&quot;, right? :-)]]></description>
		<content:encoded><![CDATA[<p>Excellent post. Of course I think that &#8220;I much prefer the first&#8221; should be read as &#8220;I much prefer the SECOND&#8221;, right? :-)</p>
]]></content:encoded>
						</item>
			</channel>
</rss>
