<?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: Agile Isn&#8217;t a Process</title>
	<atom:link href="http://www.yuwantitwhen.com/blog/2008/02/15/agile-isnt-a-process/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.yuwantitwhen.com/blog/2008/02/15/agile-isnt-a-process/</link>
	<description>Practical methods for successful software management.</description>
	<lastBuildDate>Mon, 03 Aug 2009 05:32:33 +0000</lastBuildDate>
	<generator>http://wordpress.org/?v=2.9.1</generator>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
		<item>
		<title>By: Revenge of the Fallen &#171; ActiveEngine</title>
		<link>http://www.yuwantitwhen.com/blog/2008/02/15/agile-isnt-a-process/comment-page-1/#comment-2661</link>
		<dc:creator>Revenge of the Fallen &#171; ActiveEngine</dc:creator>
		<pubDate>Tue, 21 Jul 2009 11:32:59 +0000</pubDate>
		<guid isPermaLink="false">http://www.yuwantitwhen.com/blog/2008/02/15/agile-isnt-a-process/#comment-2661</guid>
		<description>[...] my post Now That&#8217;s an Active Engine &#8211; Agile Dissected and Skewered I shot you over to a post that fairly made the case that the waterfall approach is not such a bad thing.  Summarizing what [...]</description>
		<content:encoded><![CDATA[<p>[...] my post Now That&#8217;s an Active Engine &#8211; Agile Dissected and Skewered I shot you over to a post that fairly made the case that the waterfall approach is not such a bad thing.  Summarizing what [...]</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Bill Miller</title>
		<link>http://www.yuwantitwhen.com/blog/2008/02/15/agile-isnt-a-process/comment-page-1/#comment-370</link>
		<dc:creator>Bill Miller</dc:creator>
		<pubDate>Wed, 14 May 2008 03:31:16 +0000</pubDate>
		<guid isPermaLink="false">http://www.yuwantitwhen.com/blog/2008/02/15/agile-isnt-a-process/#comment-370</guid>
		<description>Terry, thanks for visiting and offering your views.  Here&#039;s one of the emerging problems I&#039;m seeing with Agile.  As I write more about Agile and I talk to more people about Agile, I find that all the Agile proponents have a different and often conflicting view of what it means to be Agile.   I&#039;m not surprised as the Manifesto leaves too much to the imagination. We need verions 2.0 of the Manifesto to clarify it&#039;s intent, so we all know when we see Agile in practice, the practice meets the Agile standard.  Until then, Agile will continue to be hijacked by those who hate process to defend what they are doing as Agile.  And for the rest of us trying to figure out whether a practice is really Agile or not, it&#039;ll continue to be like playing the game To Tell The Truth: Will the real Agile please stand up.</description>
		<content:encoded><![CDATA[<p>Terry, thanks for visiting and offering your views.  Here&#8217;s one of the emerging problems I&#8217;m seeing with Agile.  As I write more about Agile and I talk to more people about Agile, I find that all the Agile proponents have a different and often conflicting view of what it means to be Agile.   I&#8217;m not surprised as the Manifesto leaves too much to the imagination. We need verions 2.0 of the Manifesto to clarify it&#8217;s intent, so we all know when we see Agile in practice, the practice meets the Agile standard.  Until then, Agile will continue to be hijacked by those who hate process to defend what they are doing as Agile.  And for the rest of us trying to figure out whether a practice is really Agile or not, it&#8217;ll continue to be like playing the game To Tell The Truth: Will the real Agile please stand up.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Terry Grossman</title>
		<link>http://www.yuwantitwhen.com/blog/2008/02/15/agile-isnt-a-process/comment-page-1/#comment-364</link>
		<dc:creator>Terry Grossman</dc:creator>
		<pubDate>Mon, 12 May 2008 22:26:48 +0000</pubDate>
		<guid isPermaLink="false">http://www.yuwantitwhen.com/blog/2008/02/15/agile-isnt-a-process/#comment-364</guid>
		<description>Before I comment I do have to caveat -- I didn&#039;t have enough time that reading your  text deserves, to fully digest &amp; savor it.  It seems very dense, and I look forward to reading it in-depth.

But I did want to point out that you seem to have fallen into the (common) mis-belief that scrum = agile.  Scrum can be performed as an agile practice, but so can a waterfall SDLC.  Agile is not a predefined set of tools and processes but rather a set of meta-directions about how to use tools &amp; processes.

I&#039;ve seen scrums that weren&#039;t Agile, and I&#039;ve seen waterfall projects that were.  In your text you say &quot;Agile methodology relies upon the feedback over a series of iterations to arrive at the required solution. &quot;  No, it doesn&#039;t.  

The Agile principles (that pertain) are 
* Deliver working software frequently, from a couple of weeks to a couple of months, with a preference to the shorter timescale.
* Business people and developers must work together daily throughout the project. 

Scrum, when performed in an Agile manner does implement the Agile principles, but your statement implies that an &quot;Agile methodology&quot; requires a series of iterations, doesn&#039;t seem to be entirely correct.  However, there is some wiggle room here, based on semantic differences, which I acknowledge.

Thanks

Terry</description>
		<content:encoded><![CDATA[<p>Before I comment I do have to caveat &#8212; I didn&#8217;t have enough time that reading your  text deserves, to fully digest &amp; savor it.  It seems very dense, and I look forward to reading it in-depth.</p>
<p>But I did want to point out that you seem to have fallen into the (common) mis-belief that scrum = agile.  Scrum can be performed as an agile practice, but so can a waterfall SDLC.  Agile is not a predefined set of tools and processes but rather a set of meta-directions about how to use tools &amp; processes.</p>
<p>I&#8217;ve seen scrums that weren&#8217;t Agile, and I&#8217;ve seen waterfall projects that were.  In your text you say &#8220;Agile methodology relies upon the feedback over a series of iterations to arrive at the required solution. &#8221;  No, it doesn&#8217;t.  </p>
<p>The Agile principles (that pertain) are<br />
* Deliver working software frequently, from a couple of weeks to a couple of months, with a preference to the shorter timescale.<br />
* Business people and developers must work together daily throughout the project. </p>
<p>Scrum, when performed in an Agile manner does implement the Agile principles, but your statement implies that an &#8220;Agile methodology&#8221; requires a series of iterations, doesn&#8217;t seem to be entirely correct.  However, there is some wiggle room here, based on semantic differences, which I acknowledge.</p>
<p>Thanks</p>
<p>Terry</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Bill Miller</title>
		<link>http://www.yuwantitwhen.com/blog/2008/02/15/agile-isnt-a-process/comment-page-1/#comment-236</link>
		<dc:creator>Bill Miller</dc:creator>
		<pubDate>Fri, 14 Mar 2008 01:28:25 +0000</pubDate>
		<guid isPermaLink="false">http://www.yuwantitwhen.com/blog/2008/02/15/agile-isnt-a-process/#comment-236</guid>
		<description>Thanks George for taking the time to read the postings and most importantly for sharing your views.    I do appreciate it.  

I do like your explanation of the different paradigm shifts.  I&#039;ve never heard it explained that way before, but it makes a lot of sense, and I like the terminology.  I will have to remember it.</description>
		<content:encoded><![CDATA[<p>Thanks George for taking the time to read the postings and most importantly for sharing your views.    I do appreciate it.  </p>
<p>I do like your explanation of the different paradigm shifts.  I&#8217;ve never heard it explained that way before, but it makes a lot of sense, and I like the terminology.  I will have to remember it.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: George Crews</title>
		<link>http://www.yuwantitwhen.com/blog/2008/02/15/agile-isnt-a-process/comment-page-1/#comment-235</link>
		<dc:creator>George Crews</dc:creator>
		<pubDate>Thu, 13 Mar 2008 13:56:28 +0000</pubDate>
		<guid isPermaLink="false">http://www.yuwantitwhen.com/blog/2008/02/15/agile-isnt-a-process/#comment-235</guid>
		<description>Well said Bill.

Thanks for the essay. I enjoy reading your blog.

George</description>
		<content:encoded><![CDATA[<p>Well said Bill.</p>
<p>Thanks for the essay. I enjoy reading your blog.</p>
<p>George</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Bill Miller</title>
		<link>http://www.yuwantitwhen.com/blog/2008/02/15/agile-isnt-a-process/comment-page-1/#comment-234</link>
		<dc:creator>Bill Miller</dc:creator>
		<pubDate>Thu, 13 Mar 2008 03:11:18 +0000</pubDate>
		<guid isPermaLink="false">http://www.yuwantitwhen.com/blog/2008/02/15/agile-isnt-a-process/#comment-234</guid>
		<description>Hi George,

I agree.  BDUF does have negative connotations for many.  Though, I do believe it fairly characterizes the approach when contrasted with the Agile approach, which is to just-jump-right-in-and-start-coding.  Compared to that approach everything looks big.

I’m unconvinced there’s a correlation between a short cycle and a properly architected solution, nor do I  believe it’s a function of the development methodology forcing a simple solution.  It’s a function of the quality of the management and the team working the solution.  Good people given sufficient time will architect good solutions.  Less talented people given any amount of time (lots or little) will architect poor solutions.

When you describe how a conventional design phase supports creating a proper paradigm, it is exactly the point I am trying to make in the article, and finally, it’s essence of agility.  When teams are building solutions on properly architected products, they are more agile.   They can deliver faster and they can respond to change quicker.  That&#039;s what this essay is all about.</description>
		<content:encoded><![CDATA[<p>Hi George,</p>
<p>I agree.  BDUF does have negative connotations for many.  Though, I do believe it fairly characterizes the approach when contrasted with the Agile approach, which is to just-jump-right-in-and-start-coding.  Compared to that approach everything looks big.</p>
<p>I’m unconvinced there’s a correlation between a short cycle and a properly architected solution, nor do I  believe it’s a function of the development methodology forcing a simple solution.  It’s a function of the quality of the management and the team working the solution.  Good people given sufficient time will architect good solutions.  Less talented people given any amount of time (lots or little) will architect poor solutions.</p>
<p>When you describe how a conventional design phase supports creating a proper paradigm, it is exactly the point I am trying to make in the article, and finally, it’s essence of agility.  When teams are building solutions on properly architected products, they are more agile.   They can deliver faster and they can respond to change quicker.  That&#8217;s what this essay is all about.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: George Crews</title>
		<link>http://www.yuwantitwhen.com/blog/2008/02/15/agile-isnt-a-process/comment-page-1/#comment-233</link>
		<dc:creator>George Crews</dc:creator>
		<pubDate>Wed, 12 Mar 2008 09:28:56 +0000</pubDate>
		<guid isPermaLink="false">http://www.yuwantitwhen.com/blog/2008/02/15/agile-isnt-a-process/#comment-233</guid>
		<description>Hi Bill,

Feel free to take the discussion in any direction you think might be most interesting. It&#039;s your blog, and I certainly don&#039;t think I have any great insights to share :-)

I don&#039;t think I said, and I certainly did not mean to imply, that big up-front designs normally don&#039;t do some kind of problem decomposition -- functional, structural, object, etc. Rather, my point is that with Agile methods, because of their short iteration cycles, you simply don&#039;t have much choice. And that&#039;s good.

And my bigger point, again, was that since the Agile goal is working code each iteration, the decompositions must actually be real solutions. That&#039;s even better.

BTW, I think we need a better term than &quot;big up-front design&quot;. Almost sounds like we&#039;re belittling it. Maybe a &quot;conventional design phase&quot; is better?

Actually, my biggest problem with agile methods is their weakness in assisting in using the other main technique for attacking complex problems -- analogies or paradigm shifts. I believe it is easier to get a high level view of a complex problem using a conventional design phase. And that makes coming up with a useful analogy or paradigm easier. Agile methods are way too fast and too low level for this in my opinion. (But someone could change my mind with some evidence.)

I guess I should explain paradigm shifts a bit. There three basic types: natural, artificial, and what I call synthetic.

A natural paradigm is encountered a lot in object oriented programming. We can have a logical car object, checkbook object, or screen object. By using such real-life analogies it makes our complex problems easier to understand and work with. We already understand these natural things. 

I was able to implement a robot/facility message handling system at an automated factory once (this was just before the internet) by simulating the US postal system. Electronic messages became letters, junk mail,  priority mail, etc. Every robot had its logical mail box complete with flag. Some computers turned into post offices. Servers became mail centers. Every message had its zip codes. Etc. We knew it would work -- the mail does get delivered. And we could even explain what we we doing to managers :-)

An artificial paradigm is where the problem is expressed, at least in part, in terms of abstract logical and mathematical entities. Perhaps the classic example of an artificial paradigm shift is mapping data from a hierarchical file structure to a relational database.

A synthetic paradigm is where you take a common natural or artificial paradigm and modify it. A good example is a spreadsheet. Naturally, it represents a sheet of paper with rows and columns where you can write numbers. But then we add the ability to put live formulas in the cells. Something we can&#039;t do in nature but a snap in the abstract computer world, and it changes everything about what spreadsheets can do.</description>
		<content:encoded><![CDATA[<p>Hi Bill,</p>
<p>Feel free to take the discussion in any direction you think might be most interesting. It&#8217;s your blog, and I certainly don&#8217;t think I have any great insights to share <img src='http://www.yuwantitwhen.com/blog/wp-includes/images/smilies/icon_smile.gif' alt=':-)' class='wp-smiley' /> </p>
<p>I don&#8217;t think I said, and I certainly did not mean to imply, that big up-front designs normally don&#8217;t do some kind of problem decomposition &#8212; functional, structural, object, etc. Rather, my point is that with Agile methods, because of their short iteration cycles, you simply don&#8217;t have much choice. And that&#8217;s good.</p>
<p>And my bigger point, again, was that since the Agile goal is working code each iteration, the decompositions must actually be real solutions. That&#8217;s even better.</p>
<p>BTW, I think we need a better term than &#8220;big up-front design&#8221;. Almost sounds like we&#8217;re belittling it. Maybe a &#8220;conventional design phase&#8221; is better?</p>
<p>Actually, my biggest problem with agile methods is their weakness in assisting in using the other main technique for attacking complex problems &#8212; analogies or paradigm shifts. I believe it is easier to get a high level view of a complex problem using a conventional design phase. And that makes coming up with a useful analogy or paradigm easier. Agile methods are way too fast and too low level for this in my opinion. (But someone could change my mind with some evidence.)</p>
<p>I guess I should explain paradigm shifts a bit. There three basic types: natural, artificial, and what I call synthetic.</p>
<p>A natural paradigm is encountered a lot in object oriented programming. We can have a logical car object, checkbook object, or screen object. By using such real-life analogies it makes our complex problems easier to understand and work with. We already understand these natural things. </p>
<p>I was able to implement a robot/facility message handling system at an automated factory once (this was just before the internet) by simulating the US postal system. Electronic messages became letters, junk mail,  priority mail, etc. Every robot had its logical mail box complete with flag. Some computers turned into post offices. Servers became mail centers. Every message had its zip codes. Etc. We knew it would work &#8212; the mail does get delivered. And we could even explain what we we doing to managers <img src='http://www.yuwantitwhen.com/blog/wp-includes/images/smilies/icon_smile.gif' alt=':-)' class='wp-smiley' /> </p>
<p>An artificial paradigm is where the problem is expressed, at least in part, in terms of abstract logical and mathematical entities. Perhaps the classic example of an artificial paradigm shift is mapping data from a hierarchical file structure to a relational database.</p>
<p>A synthetic paradigm is where you take a common natural or artificial paradigm and modify it. A good example is a spreadsheet. Naturally, it represents a sheet of paper with rows and columns where you can write numbers. But then we add the ability to put live formulas in the cells. Something we can&#8217;t do in nature but a snap in the abstract computer world, and it changes everything about what spreadsheets can do.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Bill Miller</title>
		<link>http://www.yuwantitwhen.com/blog/2008/02/15/agile-isnt-a-process/comment-page-1/#comment-232</link>
		<dc:creator>Bill Miller</dc:creator>
		<pubDate>Wed, 12 Mar 2008 04:24:31 +0000</pubDate>
		<guid isPermaLink="false">http://www.yuwantitwhen.com/blog/2008/02/15/agile-isnt-a-process/#comment-232</guid>
		<description>Hi George,

I appreciate your interest in expressing your thoughts.  This is exactly the kind of exchange I was hoping to have when I started this blog.

There are a few points you make in your response that I have a reaction to, but I&#039;d like to focus on the one point you make about  Agile practices enforcing the approach of breaking bigger problems into smaller problems.  

I studied CS in 1981 when I entered college as a Freshmen.  Decomposing a problem into managable components were practices we studied in college way before the Agile manifesto was birthed.  On my first job in 1985, I programmed in assembly language, PL/C and Pascal.  Objected oriented programming was still an idea in academia back then.  During those years we did big up-front designs, but we functionally decomposed them and assigned smaller functional components out to team members to develop them in more detail.  

Good teams have been decomposing problems into smaller managable components for many years.  So I wonder why do the Agile proponents insist they&#039;ve developed something new when us old timers have being doing this stuff for decades, and why do they feel they&#039;ve created new laws of software development when these practices are anything but new?  These are not concepts brought to the table by Agile; Sorry, there&#039;s nothing inherent in doing big up-front design and analysis that prohibits or deters functional decomposition.  In fact, it&#039;s embraced by traditional practitioners, and it&#039;s been embraced for decades.  Functional decomposition is simply a good problem solving technique no matter the discipline or production methodology.

Really this whole Agile movement feels like some twilight zone episode where some kid in a remote village sees a boulder rolling down a mountain and gets the idea for a wheel, and he thinks he discovered something new.</description>
		<content:encoded><![CDATA[<p>Hi George,</p>
<p>I appreciate your interest in expressing your thoughts.  This is exactly the kind of exchange I was hoping to have when I started this blog.</p>
<p>There are a few points you make in your response that I have a reaction to, but I&#8217;d like to focus on the one point you make about  Agile practices enforcing the approach of breaking bigger problems into smaller problems.  </p>
<p>I studied CS in 1981 when I entered college as a Freshmen.  Decomposing a problem into managable components were practices we studied in college way before the Agile manifesto was birthed.  On my first job in 1985, I programmed in assembly language, PL/C and Pascal.  Objected oriented programming was still an idea in academia back then.  During those years we did big up-front designs, but we functionally decomposed them and assigned smaller functional components out to team members to develop them in more detail.  </p>
<p>Good teams have been decomposing problems into smaller managable components for many years.  So I wonder why do the Agile proponents insist they&#8217;ve developed something new when us old timers have being doing this stuff for decades, and why do they feel they&#8217;ve created new laws of software development when these practices are anything but new?  These are not concepts brought to the table by Agile; Sorry, there&#8217;s nothing inherent in doing big up-front design and analysis that prohibits or deters functional decomposition.  In fact, it&#8217;s embraced by traditional practitioners, and it&#8217;s been embraced for decades.  Functional decomposition is simply a good problem solving technique no matter the discipline or production methodology.</p>
<p>Really this whole Agile movement feels like some twilight zone episode where some kid in a remote village sees a boulder rolling down a mountain and gets the idea for a wheel, and he thinks he discovered something new.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: George Crews</title>
		<link>http://www.yuwantitwhen.com/blog/2008/02/15/agile-isnt-a-process/comment-page-1/#comment-231</link>
		<dc:creator>George Crews</dc:creator>
		<pubDate>Tue, 11 Mar 2008 14:38:02 +0000</pubDate>
		<guid isPermaLink="false">http://www.yuwantitwhen.com/blog/2008/02/15/agile-isnt-a-process/#comment-231</guid>
		<description>Hi Bill,

I also agree than every problem is potentially unique. But yes, it seems we have different default approaches to software design. As you mentioned, perhaps it&#039;s because of different experiences. So I am *not* saying one is better than another.

But it might be interesting to try and sharpen these distinctions. 

Let me reiterate that I don&#039;t consider most business software to be very difficult -- rather it tends to be complex. Business software is some of the most complex software there is. Say millions of lines of custom Java code on top of some proprietary framework on top of the J2EE. Business software is much more complex, but far less difficult, than say NASA&#039;s trajectory software for getting our latest Mercury probe (MESSENGER) into orbit around that tiny planet (by using a series of gravity assists from Earth, Venus, and Mercury itself). Easy to visualize the solution, hard to actually do.

Now, our workhorse method for managing complex problems is divide-and-conqueror. We turn a big complex problem into a bunch of smaller, simpler problems. Agile methods naturally tend to enforce this approach. Big up-front analyses do not naturally enforce this approach. (Although if the big up-front analysis is also object-oriented...that&#039;s a different discussion.) 

So I tend to favor an Agile approach by default. And thus, I tend to favor working code over design documentation. I would usually rather build upon a bunch of working code pieces than implement all new code from a design specification.

Second, I trust working code more than verified design documents. Software quality is very difficult to obtain. There is significant risk in even verified and validated designs. As they say in science: Theory is fine, but the sole test of knowledge is experiment. There is no substitute for working code. And again, this is something Agile methods tend to naturally enforce, but that big up-front analyses do not.</description>
		<content:encoded><![CDATA[<p>Hi Bill,</p>
<p>I also agree than every problem is potentially unique. But yes, it seems we have different default approaches to software design. As you mentioned, perhaps it&#8217;s because of different experiences. So I am *not* saying one is better than another.</p>
<p>But it might be interesting to try and sharpen these distinctions. </p>
<p>Let me reiterate that I don&#8217;t consider most business software to be very difficult &#8212; rather it tends to be complex. Business software is some of the most complex software there is. Say millions of lines of custom Java code on top of some proprietary framework on top of the J2EE. Business software is much more complex, but far less difficult, than say NASA&#8217;s trajectory software for getting our latest Mercury probe (MESSENGER) into orbit around that tiny planet (by using a series of gravity assists from Earth, Venus, and Mercury itself). Easy to visualize the solution, hard to actually do.</p>
<p>Now, our workhorse method for managing complex problems is divide-and-conqueror. We turn a big complex problem into a bunch of smaller, simpler problems. Agile methods naturally tend to enforce this approach. Big up-front analyses do not naturally enforce this approach. (Although if the big up-front analysis is also object-oriented&#8230;that&#8217;s a different discussion.) </p>
<p>So I tend to favor an Agile approach by default. And thus, I tend to favor working code over design documentation. I would usually rather build upon a bunch of working code pieces than implement all new code from a design specification.</p>
<p>Second, I trust working code more than verified design documents. Software quality is very difficult to obtain. There is significant risk in even verified and validated designs. As they say in science: Theory is fine, but the sole test of knowledge is experiment. There is no substitute for working code. And again, this is something Agile methods tend to naturally enforce, but that big up-front analyses do not.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Bill Miller</title>
		<link>http://www.yuwantitwhen.com/blog/2008/02/15/agile-isnt-a-process/comment-page-1/#comment-230</link>
		<dc:creator>Bill Miller</dc:creator>
		<pubDate>Tue, 11 Mar 2008 00:54:03 +0000</pubDate>
		<guid isPermaLink="false">http://www.yuwantitwhen.com/blog/2008/02/15/agile-isnt-a-process/#comment-230</guid>
		<description>George, 

Thanks for reading and sharing your point of view.

I don&#039;t agree a proper up front investment implies a complex solution, and I don&#039;t agree that risk is reduced because of a shorter interval. 

I do make the point in the essay that for some problems it doesn&#039;t make sense to have a heavy up front investment.  I advocate the up front investment to be as long or as short as required to do the proper job within other necessary constraints.

A short investment in up front analysis doesn&#039;t guarantee a simple design anymore than a large investment in up front design guarantees a simple design. Simple designs happen when we have a good understanding of the problem, and we have the right people working on them.  Smart, experienced people develop simple solutions and they arrive at them quicker than most.  Having a good understanding of the problem usually requires an investment in time to understand it well, and the time required to understand the problem well increases as the problem to solve is bigger and/or more difficult. 

My reference to large up front investment is to contrast it with the inadequately small up front investment advocated by Agile proponents.  I don&#039;t believe we can do a proper job by time boxing design or artificially setting a week or month iteration to deliver a feature set.   I&#039;m all for a week iteration if it&#039;s adequate time to solve the problem properly.

Our experiences seem to be very different.  The overly complex and bug ridden software that I&#039;ve seen has been the result of a solution developed quickly to get something out the door quickly and then fixed quickly to keep it going.  As future releases are built on top of the original architecture, the software further decays and becomes more complex as solutions are further coded into a fragile architecture because there is no time in the schedule to rework the original solution, so the developers have no choice but to solve new problems in more complex ways as new requirements are levied on the system.  Usually in these environments there is no time to rework what could have been avoided with some more up front design and analysis -- enough to be successful, no more, no less.  

Great people investing the proper amount of time in design and analysis produce the best solutions.

I do accept your position that we should be striving for simple solutions, but it often takes time to arrive at a simple solution, often more time than to arrive at a complex solution.</description>
		<content:encoded><![CDATA[<p>George, </p>
<p>Thanks for reading and sharing your point of view.</p>
<p>I don&#8217;t agree a proper up front investment implies a complex solution, and I don&#8217;t agree that risk is reduced because of a shorter interval. </p>
<p>I do make the point in the essay that for some problems it doesn&#8217;t make sense to have a heavy up front investment.  I advocate the up front investment to be as long or as short as required to do the proper job within other necessary constraints.</p>
<p>A short investment in up front analysis doesn&#8217;t guarantee a simple design anymore than a large investment in up front design guarantees a simple design. Simple designs happen when we have a good understanding of the problem, and we have the right people working on them.  Smart, experienced people develop simple solutions and they arrive at them quicker than most.  Having a good understanding of the problem usually requires an investment in time to understand it well, and the time required to understand the problem well increases as the problem to solve is bigger and/or more difficult. </p>
<p>My reference to large up front investment is to contrast it with the inadequately small up front investment advocated by Agile proponents.  I don&#8217;t believe we can do a proper job by time boxing design or artificially setting a week or month iteration to deliver a feature set.   I&#8217;m all for a week iteration if it&#8217;s adequate time to solve the problem properly.</p>
<p>Our experiences seem to be very different.  The overly complex and bug ridden software that I&#8217;ve seen has been the result of a solution developed quickly to get something out the door quickly and then fixed quickly to keep it going.  As future releases are built on top of the original architecture, the software further decays and becomes more complex as solutions are further coded into a fragile architecture because there is no time in the schedule to rework the original solution, so the developers have no choice but to solve new problems in more complex ways as new requirements are levied on the system.  Usually in these environments there is no time to rework what could have been avoided with some more up front design and analysis &#8212; enough to be successful, no more, no less.  </p>
<p>Great people investing the proper amount of time in design and analysis produce the best solutions.</p>
<p>I do accept your position that we should be striving for simple solutions, but it often takes time to arrive at a simple solution, often more time than to arrive at a complex solution.</p>
]]></content:encoded>
	</item>
</channel>
</rss>
