<?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: The Enlightened Newbie Syndrome</title>
	<atom:link href="http://www.indiangeek.net/2009/05/01/the-enlightened-newbie-syndrome/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.indiangeek.net/2009/05/01/the-enlightened-newbie-syndrome/</link>
	<description>Perspectives on Computer Science and Software Engineering</description>
	<lastBuildDate>Tue, 07 Sep 2010 07:32:39 +0000</lastBuildDate>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.0</generator>
	<item>
		<title>By: Abi</title>
		<link>http://www.indiangeek.net/2009/05/01/the-enlightened-newbie-syndrome/comment-page-1/#comment-2698</link>
		<dc:creator>Abi</dc:creator>
		<pubDate>Tue, 19 Jan 2010 06:25:48 +0000</pubDate>
		<guid isPermaLink="false">http://www.indiangeek.net/?p=465#comment-2698</guid>
		<description>As a newbie, its everyone&#039;s tendency to use all the techniques that one have learned. Nice post.</description>
		<content:encoded><![CDATA[<p>As a newbie, its everyone&#8217;s tendency to use all the techniques that one have learned. Nice post.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Josh</title>
		<link>http://www.indiangeek.net/2009/05/01/the-enlightened-newbie-syndrome/comment-page-1/#comment-2491</link>
		<dc:creator>Josh</dc:creator>
		<pubDate>Thu, 21 May 2009 03:06:46 +0000</pubDate>
		<guid isPermaLink="false">http://www.indiangeek.net/?p=465#comment-2491</guid>
		<description>&quot;for e.g.&quot; ?</description>
		<content:encoded><![CDATA[<p>&#8220;for e.g.&#8221; ?</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Eric</title>
		<link>http://www.indiangeek.net/2009/05/01/the-enlightened-newbie-syndrome/comment-page-1/#comment-2485</link>
		<dc:creator>Eric</dc:creator>
		<pubDate>Fri, 15 May 2009 11:57:09 +0000</pubDate>
		<guid isPermaLink="false">http://www.indiangeek.net/?p=465#comment-2485</guid>
		<description>Great article, and great blog. Just wanted to say thanks.</description>
		<content:encoded><![CDATA[<p>Great article, and great blog. Just wanted to say thanks.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Brendan Miller</title>
		<link>http://www.indiangeek.net/2009/05/01/the-enlightened-newbie-syndrome/comment-page-1/#comment-2480</link>
		<dc:creator>Brendan Miller</dc:creator>
		<pubDate>Fri, 01 May 2009 23:51:52 +0000</pubDate>
		<guid isPermaLink="false">http://www.indiangeek.net/?p=465#comment-2480</guid>
		<description>I&#039;ve had the same experience with every major programming paradigm I&#039;ve learned. OO, design patterns, dependency injection, TDD, functional programming, etc. Way back I even briefly went on a Hungarian notation binge when I was doing win32... http://msdn.microsoft.com/en-us/library/aa260976.aspx.

All these techniques essentially provide a systematic approach to some aspect of development. Each is presented as being a kind of universal design pattern applicable to every situation imaginable.

What you learn at some point is that working within a system, any system, is constraining. You may be trying to do functional programming, and then realize that solving your problem would be so much easier if you could use an imperative data structure, like say, a hash table? You may be doing OO, and find a solution for which it would just be simpler to use a function and a struct.

Also, every development paradigm is domain specific, which is not something they tell you when you are learning it. Look at the patterns in the GoF book. They are all centered around the kinds of desktop GUI programming that people did in the 90&#039;s, and how to solve those problems in a  particular kind of language. Some patterns, like Singleton, are now maligned as being incompatible with TDD.

Now, ask yourself this, what kind of limitations are there in unit testing? Are there some domains where unit testing really makes no sense and we&#039;d be better off doing say, static analysis? Maybe even (ugh!) proving the correctness of algorithms? Is TDD domain specific?

Here&#039;s a hint: check out the Linux kernel tree and try to find unit tests. Ask yourself, why aren&#039;t they there? Is Torvalds just dumb? Then think about the implications that threading, non-determinism, and heisenbugs have for unit tests.</description>
		<content:encoded><![CDATA[<p>I&#8217;ve had the same experience with every major programming paradigm I&#8217;ve learned. OO, design patterns, dependency injection, TDD, functional programming, etc. Way back I even briefly went on a Hungarian notation binge when I was doing win32&#8230; <a href="http://msdn.microsoft.com/en-us/library/aa260976.aspx" rel="nofollow">http://msdn.microsoft.com/en-us/library/aa260976.aspx</a>.</p>
<p>All these techniques essentially provide a systematic approach to some aspect of development. Each is presented as being a kind of universal design pattern applicable to every situation imaginable.</p>
<p>What you learn at some point is that working within a system, any system, is constraining. You may be trying to do functional programming, and then realize that solving your problem would be so much easier if you could use an imperative data structure, like say, a hash table? You may be doing OO, and find a solution for which it would just be simpler to use a function and a struct.</p>
<p>Also, every development paradigm is domain specific, which is not something they tell you when you are learning it. Look at the patterns in the GoF book. They are all centered around the kinds of desktop GUI programming that people did in the 90&#8242;s, and how to solve those problems in a  particular kind of language. Some patterns, like Singleton, are now maligned as being incompatible with TDD.</p>
<p>Now, ask yourself this, what kind of limitations are there in unit testing? Are there some domains where unit testing really makes no sense and we&#8217;d be better off doing say, static analysis? Maybe even (ugh!) proving the correctness of algorithms? Is TDD domain specific?</p>
<p>Here&#8217;s a hint: check out the Linux kernel tree and try to find unit tests. Ask yourself, why aren&#8217;t they there? Is Torvalds just dumb? Then think about the implications that threading, non-determinism, and heisenbugs have for unit tests.</p>
]]></content:encoded>
	</item>
</channel>
</rss>
