<?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: Programming for Maintenance</title>
	<atom:link href="http://www.formatexception.com/2010/02/programming-for-maintenance/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.formatexception.com/2010/02/programming-for-maintenance/</link>
	<description>Ramblings on developing in the Windows World</description>
	<lastBuildDate>Fri, 07 Oct 2011 21:45:11 +0000</lastBuildDate>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.2.1</generator>
	<item>
		<title>By: Tyler Coles</title>
		<link>http://www.formatexception.com/2010/02/programming-for-maintenance/comment-page-1/#comment-155</link>
		<dc:creator>Tyler Coles</dc:creator>
		<pubDate>Wed, 10 Feb 2010 22:10:12 +0000</pubDate>
		<guid isPermaLink="false">http://www.formatexception.com/?p=270#comment-155</guid>
		<description>Regarding requirements gathering: I would go so far as to say that frequent iterative development/prototyping is the only way to develop.  No one ever knows what they want an application to do.  If you&#039;re lucky you know &quot;what do I want it to do right now?&quot; which can change on a day to day basis anyway.  This isn&#039;t a fault; it&#039;s the nature of the game.  If you make the iterations frequent enough, you minimize &quot;lost&quot; effort if the client wants to change direction mid-stream.  But I wouldn&#039;t even call it lost effort.  It&#039;s effort that was spent to discover the true needs of the application.

I&#039;m also convinced that automated testing (unit- and functional-tests) is the most important piece to make a site maintainable.  Especially in large applications, maintainers need to be free to make changes without worrying about breaking a component that has an unknown dependency on the piece being changed.  With good automated tests, I should know right away that I broke something and I&#039;ll know right away when I&#039;ve fixed it.  This might even point out inherent design flaws.

To take that one step further: an application without automated tests is already broken, you just don&#039;t know it yet.  Unit tests don&#039;t stop you from writing buggy code (or buggy unit tests) but they do give you the freedom to make changes.  Even better, writing unit tests will point out how terrible your OO design is.  You can&#039;t unit test procedural code.  You can&#039;t unit test code that is tightly coupled with other components.  I&#039;m not saying development ought to be Test Driven, more like Test Assisted, but I definitely feel like developing without tests is negligent engineering.</description>
		<content:encoded><![CDATA[<p>Regarding requirements gathering: I would go so far as to say that frequent iterative development/prototyping is the only way to develop.  No one ever knows what they want an application to do.  If you&#8217;re lucky you know &#8220;what do I want it to do right now?&#8221; which can change on a day to day basis anyway.  This isn&#8217;t a fault; it&#8217;s the nature of the game.  If you make the iterations frequent enough, you minimize &#8220;lost&#8221; effort if the client wants to change direction mid-stream.  But I wouldn&#8217;t even call it lost effort.  It&#8217;s effort that was spent to discover the true needs of the application.</p>
<p>I&#8217;m also convinced that automated testing (unit- and functional-tests) is the most important piece to make a site maintainable.  Especially in large applications, maintainers need to be free to make changes without worrying about breaking a component that has an unknown dependency on the piece being changed.  With good automated tests, I should know right away that I broke something and I&#8217;ll know right away when I&#8217;ve fixed it.  This might even point out inherent design flaws.</p>
<p>To take that one step further: an application without automated tests is already broken, you just don&#8217;t know it yet.  Unit tests don&#8217;t stop you from writing buggy code (or buggy unit tests) but they do give you the freedom to make changes.  Even better, writing unit tests will point out how terrible your OO design is.  You can&#8217;t unit test procedural code.  You can&#8217;t unit test code that is tightly coupled with other components.  I&#8217;m not saying development ought to be Test Driven, more like Test Assisted, but I definitely feel like developing without tests is negligent engineering.</p>
]]></content:encoded>
	</item>
</channel>
</rss>

