<?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: How not to build a castle on a swamp</title>
	<atom:link href="http://gojko.net/2007/02/08/how-not-to-build-a-castle-on-a-swamp/feed/" rel="self" type="application/rss+xml" />
	<link>http://gojko.net/2007/02/08/how-not-to-build-a-castle-on-a-swamp/</link>
	<description>Building software that matters</description>
	<lastBuildDate>Thu, 18 Mar 2010 07:36:47 -0400</lastBuildDate>
	<generator>http://wordpress.org/?v=2.9.2</generator>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
		<item>
		<title>By: Mark Spencer</title>
		<link>http://gojko.net/2007/02/08/how-not-to-build-a-castle-on-a-swamp/comment-page-1/#comment-23149</link>
		<dc:creator>Mark Spencer</dc:creator>
		<pubDate>Wed, 26 Dec 2007 05:08:14 +0000</pubDate>
		<guid isPermaLink="false">http://gojko.net/2007/02/08/how-not-to-build-a-castle-on-a-swamp/#comment-23149</guid>
		<description>I agree with picking an obscure language as a general strategy, but if you look at some recent success case studies...

YouTube - no rewrite

del.icio.us - being rewritten now using a php framework, but got acquired and had massive traffic as a perl app

Digg - probably has had a 

Twitter - despite their Ruby scaling woes, they are now in the Alexa top 700, and are still RoR-powered.  Their backend tho does have a bunch of fancy mechanisms to deal with massive API requests.

If I had to deal with management, I&#039;d tell them &quot;this is just a prototype&quot; and write it in ruby/python/whatever, but in the back of my mind I&#039;m really thinking the &quot;prototype&quot; can and will evolve into the final app.</description>
		<content:encoded><![CDATA[<p>I agree with picking an obscure language as a general strategy, but if you look at some recent success case studies&#8230;</p>
<p>YouTube &#8211; no rewrite</p>
<p>del.icio.us &#8211; being rewritten now using a php framework, but got acquired and had massive traffic as a perl app</p>
<p>Digg &#8211; probably has had a </p>
<p>Twitter &#8211; despite their Ruby scaling woes, they are now in the Alexa top 700, and are still RoR-powered.  Their backend tho does have a bunch of fancy mechanisms to deal with massive API requests.</p>
<p>If I had to deal with management, I&#8217;d tell them &#8220;this is just a prototype&#8221; and write it in ruby/python/whatever, but in the back of my mind I&#8217;m really thinking the &#8220;prototype&#8221; can and will evolve into the final app.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: gojko</title>
		<link>http://gojko.net/2007/02/08/how-not-to-build-a-castle-on-a-swamp/comment-page-1/#comment-2665</link>
		<dc:creator>gojko</dc:creator>
		<pubDate>Tue, 13 Feb 2007 10:10:27 +0000</pubDate>
		<guid isPermaLink="false">http://gojko.net/2007/02/08/how-not-to-build-a-castle-on-a-swamp/#comment-2665</guid>
		<description>Hi Amir,

thanks for the comment. I was referring to a prototype as a technical a way to test and convince the stakeholders that something is feasible (and that they should finance the project). Depending on the key risks, this can be a technical spike, but can also be a mini version of the target system, stripped of most non-essential functionality, but again showing something end-to-end.

The particular prototype I wrote about involved several middle-ware components and a web site built on top of them. Each of those MW components could be seen as a technical spike, but they did not prove the concept alone - only a mini-system as a whole could prove the concept.

So it was a way of testing real functionality, a specific selection of stories. However, I think that it was beneficial to do it as quick and dirty as possible, as the goal of that &quot;mini-project&quot; was to find a way to solve the risks (technical spike) without burning resources. We estimated that doing it properly would take 3-4 months (which turned out to be correct when we did it on the end) and the quick-and-dirty prototype was done in a month. As it was quick and dirty, building the rest of the system based on that would be very error-prone and cause a lot of problems in production.</description>
		<content:encoded><![CDATA[<p>Hi Amir,</p>
<p>thanks for the comment. I was referring to a prototype as a technical a way to test and convince the stakeholders that something is feasible (and that they should finance the project). Depending on the key risks, this can be a technical spike, but can also be a mini version of the target system, stripped of most non-essential functionality, but again showing something end-to-end.</p>
<p>The particular prototype I wrote about involved several middle-ware components and a web site built on top of them. Each of those MW components could be seen as a technical spike, but they did not prove the concept alone &#8211; only a mini-system as a whole could prove the concept.</p>
<p>So it was a way of testing real functionality, a specific selection of stories. However, I think that it was beneficial to do it as quick and dirty as possible, as the goal of that &#8220;mini-project&#8221; was to find a way to solve the risks (technical spike) without burning resources. We estimated that doing it properly would take 3-4 months (which turned out to be correct when we did it on the end) and the quick-and-dirty prototype was done in a month. As it was quick and dirty, building the rest of the system based on that would be very error-prone and cause a lot of problems in production.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Amir Kolsky</title>
		<link>http://gojko.net/2007/02/08/how-not-to-build-a-castle-on-a-swamp/comment-page-1/#comment-2644</link>
		<dc:creator>Amir Kolsky</dc:creator>
		<pubDate>Mon, 12 Feb 2007 13:06:32 +0000</pubDate>
		<guid isPermaLink="false">http://gojko.net/2007/02/08/how-not-to-build-a-castle-on-a-swamp/#comment-2644</guid>
		<description>What is a prototype?

Is it a means of testing UI concepts? It should not be usable anyway as it should not have anything but UI.

Is it a means of testing some real functionality? In this case, if it is developed test first there is no reason to throw it away.

An agile prototype is no more than a specific selection of stories to achieve a prototype milestone. It makes total sense to continue and deliver it -- we are not wasting effort.

Is it a means of exploring a technical issue? This is where spikes come into play. You test ONLY the technical issue without any connection to real stuff.

In all of these cases there is no danger in the prototype being carried forward:
In the first case - it&#039;s just no possible - there&#039;s no real code there.
In the second case - go ahead, it&#039;s production code as is
In the third case - there is no prototype anyway.

So, I guess I don&#039;t quite see where the problem is. With an agile state of mind the problem just isn&#039;t there.</description>
		<content:encoded><![CDATA[<p>What is a prototype?</p>
<p>Is it a means of testing UI concepts? It should not be usable anyway as it should not have anything but UI.</p>
<p>Is it a means of testing some real functionality? In this case, if it is developed test first there is no reason to throw it away.</p>
<p>An agile prototype is no more than a specific selection of stories to achieve a prototype milestone. It makes total sense to continue and deliver it &#8212; we are not wasting effort.</p>
<p>Is it a means of exploring a technical issue? This is where spikes come into play. You test ONLY the technical issue without any connection to real stuff.</p>
<p>In all of these cases there is no danger in the prototype being carried forward:<br />
In the first case &#8211; it&#8217;s just no possible &#8211; there&#8217;s no real code there.<br />
In the second case &#8211; go ahead, it&#8217;s production code as is<br />
In the third case &#8211; there is no prototype anyway.</p>
<p>So, I guess I don&#8217;t quite see where the problem is. With an agile state of mind the problem just isn&#8217;t there.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Dave</title>
		<link>http://gojko.net/2007/02/08/how-not-to-build-a-castle-on-a-swamp/comment-page-1/#comment-2514</link>
		<dc:creator>Dave</dc:creator>
		<pubDate>Fri, 09 Feb 2007 14:36:12 +0000</pubDate>
		<guid isPermaLink="false">http://gojko.net/2007/02/08/how-not-to-build-a-castle-on-a-swamp/#comment-2514</guid>
		<description>Hand-draw your prototype on paper.  Then if they want to save money, you can just xerox the paper and mail it to all your users!  Seriously, though, not too many management types will confuse handwriting on paper with production software.</description>
		<content:encoded><![CDATA[<p>Hand-draw your prototype on paper.  Then if they want to save money, you can just xerox the paper and mail it to all your users!  Seriously, though, not too many management types will confuse handwriting on paper with production software.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Joshua Volz</title>
		<link>http://gojko.net/2007/02/08/how-not-to-build-a-castle-on-a-swamp/comment-page-1/#comment-2497</link>
		<dc:creator>Joshua Volz</dc:creator>
		<pubDate>Fri, 09 Feb 2007 06:16:47 +0000</pubDate>
		<guid isPermaLink="false">http://gojko.net/2007/02/08/how-not-to-build-a-castle-on-a-swamp/#comment-2497</guid>
		<description>Maybe this is a place where those long forgotten (or newly created!) obscure languages can start making headway for themselves.  I mean, imagine you write your prototype in Haskell, OCaml, Scheme or Smalltalk.  Those languages are pretty outside the norm today.  I am starting to think Python and Ruby and becoming more and more mainstream, especially as they are ported to the JVM and .NET framework, so they might not be as good of possible targets for this kind of work -- although your idea of writing it on Linux for a Windows shop is actually pretty brilliant.  Excellent idea.</description>
		<content:encoded><![CDATA[<p>Maybe this is a place where those long forgotten (or newly created!) obscure languages can start making headway for themselves.  I mean, imagine you write your prototype in Haskell, OCaml, Scheme or Smalltalk.  Those languages are pretty outside the norm today.  I am starting to think Python and Ruby and becoming more and more mainstream, especially as they are ported to the JVM and .NET framework, so they might not be as good of possible targets for this kind of work &#8212; although your idea of writing it on Linux for a Windows shop is actually pretty brilliant.  Excellent idea.</p>
]]></content:encoded>
	</item>
</channel>
</rss>
