<?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: Make It Work, Make It Clean?</title>
	<atom:link href="http://davybrion.com/blog/2008/09/make-it-work-make-it-clean/feed/" rel="self" type="application/rss+xml" />
	<link>http://davybrion.com/blog/2008/09/make-it-work-make-it-clean/</link>
	<description>Trying to walk that thin line between intelligence and ignorance</description>
	<lastBuildDate>Sun, 14 Mar 2010 15:41:46 +0100</lastBuildDate>
	<generator>http://wordpress.org/?v=2.9.2</generator>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
		<item>
		<title>By: Not so bored in Bremen as I met an English girl that had some interesting theories about the evolution of eyes and Darwinism</title>
		<link>http://davybrion.com/blog/2008/09/make-it-work-make-it-clean/comment-page-1/#comment-2424</link>
		<dc:creator>Not so bored in Bremen as I met an English girl that had some interesting theories about the evolution of eyes and Darwinism</dc:creator>
		<pubDate>Fri, 19 Sep 2008 22:21:12 +0000</pubDate>
		<guid isPermaLink="false">http://davybrion.com/blog/?p=376#comment-2424</guid>
		<description>There is always time to refactor. 
---------------------------------

One thing unit tests have done for me is to relieve me of the stress of having to keep the entire codebase in my head at all times. Stress which exponentially increases with the size of the project. Thus instead of having to unwind and chill out whenever I have the opportunity (surfing the internet, having lots of coffee breaks with co-workers, ... ), in order to avoid burn-out, I can remain productive and refactor. Again the unit tests make this refactoring a stress free experience. I went into production this week with part of the above mentioned application and while I was waiting for the customer to analyze the results, I spend my time refactoring parts of the code. I updated the release without the customer even noticing and making me quite the happy camper. There is no need for management to know what you&#039;re doing. You wouldn&#039;t be able to go faster anyway if you did it the other way, and now you end up with code that smells a lot better, allowing the next requirement to be put into the model much faster, which will make management happy in the long run. I even was able to add some new features to the program when they came back with their analysis, which required a serious overhaul of the core of the thing, without breaking existing functionality, thanks to the tests and this in turn made the customer happy.
Just look around an office, that doesn&#039;t unit test, after a &lt;i&gt;crunch&lt;/i&gt; and tell me who&#039;s actually working. There all recovering, torrenting, streaming the olympic games, instant messaging, etc... A team that has a good test suite doesn&#039;t need to recover and can get straight back to bussiness. Even more, they actually enjoy doing so. 
But I also agree with Matt. The parts that were refactored first, was the code that needed to be used by other developers. And when I finish this thing, I hope all the code will be in the same healthy state. Therefore abiding to my Prime Directive : a good developer makes himself redundant. 

Note : I don&#039;t think I have ever used the word happy as many times in one day, as I did in this post ;-)

Use the Source Luke !</description>
		<content:encoded><![CDATA[<p>There is always time to refactor.<br />
&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;</p>
<p>One thing unit tests have done for me is to relieve me of the stress of having to keep the entire codebase in my head at all times. Stress which exponentially increases with the size of the project. Thus instead of having to unwind and chill out whenever I have the opportunity (surfing the internet, having lots of coffee breaks with co-workers, &#8230; ), in order to avoid burn-out, I can remain productive and refactor. Again the unit tests make this refactoring a stress free experience. I went into production this week with part of the above mentioned application and while I was waiting for the customer to analyze the results, I spend my time refactoring parts of the code. I updated the release without the customer even noticing and making me quite the happy camper. There is no need for management to know what you&#8217;re doing. You wouldn&#8217;t be able to go faster anyway if you did it the other way, and now you end up with code that smells a lot better, allowing the next requirement to be put into the model much faster, which will make management happy in the long run. I even was able to add some new features to the program when they came back with their analysis, which required a serious overhaul of the core of the thing, without breaking existing functionality, thanks to the tests and this in turn made the customer happy.<br />
Just look around an office, that doesn&#8217;t unit test, after a <i>crunch</i> and tell me who&#8217;s actually working. There all recovering, torrenting, streaming the olympic games, instant messaging, etc&#8230; A team that has a good test suite doesn&#8217;t need to recover and can get straight back to bussiness. Even more, they actually enjoy doing so.<br />
But I also agree with Matt. The parts that were refactored first, was the code that needed to be used by other developers. And when I finish this thing, I hope all the code will be in the same healthy state. Therefore abiding to my Prime Directive : a good developer makes himself redundant. </p>
<p>Note : I don&#8217;t think I have ever used the word happy as many times in one day, as I did in this post <img src='http://davybrion.com/blog/wp-includes/images/smilies/icon_wink.gif' alt=';-)' class='wp-smiley' /> </p>
<p>Use the Source Luke !</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Arjan`s World &#187; LINKBLOG for September 3, 2008</title>
		<link>http://davybrion.com/blog/2008/09/make-it-work-make-it-clean/comment-page-1/#comment-1688</link>
		<dc:creator>Arjan`s World &#187; LINKBLOG for September 3, 2008</dc:creator>
		<pubDate>Wed, 03 Sep 2008 20:36:58 +0000</pubDate>
		<guid isPermaLink="false">http://davybrion.com/blog/?p=376#comment-1688</guid>
		<description>[...] Make It Work, Make It Clean? - Davy Brion Davy talks on trade offs to make when we write our new code: with the end result in mind from the start, or just start out writing what comes to mind, refactor later, but be able to show working code faster. Interesting question to think about a bit more&#8230; [...]</description>
		<content:encoded><![CDATA[<p>[...] Make It Work, Make It Clean? &#8211; Davy Brion Davy talks on trade offs to make when we write our new code: with the end result in mind from the start, or just start out writing what comes to mind, refactor later, but be able to show working code faster. Interesting question to think about a bit more&#8230; [...]</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Davy Brion</title>
		<link>http://davybrion.com/blog/2008/09/make-it-work-make-it-clean/comment-page-1/#comment-1660</link>
		<dc:creator>Davy Brion</dc:creator>
		<pubDate>Wed, 03 Sep 2008 05:36:59 +0000</pubDate>
		<guid isPermaLink="false">http://davybrion.com/blog/?p=376#comment-1660</guid>
		<description>@Matt

good point!


@Brian

you&#039;ll have to wait until i&#039;m more inspired to write about it ;)</description>
		<content:encoded><![CDATA[<p>@Matt</p>
<p>good point!</p>
<p>@Brian</p>
<p>you&#8217;ll have to wait until i&#8217;m more inspired to write about it <img src='http://davybrion.com/blog/wp-includes/images/smilies/icon_wink.gif' alt=';)' class='wp-smiley' /> </p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Brian Johnston</title>
		<link>http://davybrion.com/blog/2008/09/make-it-work-make-it-clean/comment-page-1/#comment-1656</link>
		<dc:creator>Brian Johnston</dc:creator>
		<pubDate>Wed, 03 Sep 2008 04:01:04 +0000</pubDate>
		<guid isPermaLink="false">http://davybrion.com/blog/?p=376#comment-1656</guid>
		<description>@Davy

Please get started on titles.  I have a feeling I would quite enjoy that...</description>
		<content:encoded><![CDATA[<p>@Davy</p>
<p>Please get started on titles.  I have a feeling I would quite enjoy that&#8230;</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Matt Hinze</title>
		<link>http://davybrion.com/blog/2008/09/make-it-work-make-it-clean/comment-page-1/#comment-1645</link>
		<dc:creator>Matt Hinze</dc:creator>
		<pubDate>Tue, 02 Sep 2008 23:28:13 +0000</pubDate>
		<guid isPermaLink="false">http://davybrion.com/blog/?p=376#comment-1645</guid>
		<description>Things change once you start working on a team...</description>
		<content:encoded><![CDATA[<p>Things change once you start working on a team&#8230;</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Davy Brion</title>
		<link>http://davybrion.com/blog/2008/09/make-it-work-make-it-clean/comment-page-1/#comment-1632</link>
		<dc:creator>Davy Brion</dc:creator>
		<pubDate>Tue, 02 Sep 2008 15:49:02 +0000</pubDate>
		<guid isPermaLink="false">http://davybrion.com/blog/?p=376#comment-1632</guid>
		<description>@Jurgen: 

you&#039;re welcome :)

oh, and don&#039;t get me started on job titles :D</description>
		<content:encoded><![CDATA[<p>@Jurgen: </p>
<p>you&#8217;re welcome <img src='http://davybrion.com/blog/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>
<p>oh, and don&#8217;t get me started on job titles <img src='http://davybrion.com/blog/wp-includes/images/smilies/icon_biggrin.gif' alt=':D' class='wp-smiley' /> </p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Jurgen Roeland</title>
		<link>http://davybrion.com/blog/2008/09/make-it-work-make-it-clean/comment-page-1/#comment-1630</link>
		<dc:creator>Jurgen Roeland</dc:creator>
		<pubDate>Tue, 02 Sep 2008 13:55:13 +0000</pubDate>
		<guid isPermaLink="false">http://davybrion.com/blog/?p=376#comment-1630</guid>
		<description>I&#039;m the guy behind the reason why this code ever got written that you reviewed.
By the way... thanks for that.

What I want to add to your remarks is that basically...
You can sell this idea of &#039;refactoring after delivery&#039; to your management if you work in a product based company like we do. I think it&#039;s a little more difficult to sell this to a customer who actually has to go and pay for the extra month. Moreover, when I would be the &#039;stupid user&#039;, my first question would be then: why didn&#039;t it get written well in the first place.
I&#039;m a developer... I know why, but I&#039;m afraid it is more black and white for a customer then reality forces us into.

On the other hand, I believe that it should be a mission in life for every individual developer to continuously strive for improved quality in your own code and that involves being first happy and two seconds later critical when you wrote and delivered something. And in that, my friends, you see the difference between those that were born as developers and between those that read a book and copy/pasted some sample code together. Not so long ago, there used to be a time that you had job functions like &#039;programmer&#039; and &#039;analist/programmer&#039;. These days, everybody is called a developer. What a pitty.

Greetz,</description>
		<content:encoded><![CDATA[<p>I&#8217;m the guy behind the reason why this code ever got written that you reviewed.<br />
By the way&#8230; thanks for that.</p>
<p>What I want to add to your remarks is that basically&#8230;<br />
You can sell this idea of &#8216;refactoring after delivery&#8217; to your management if you work in a product based company like we do. I think it&#8217;s a little more difficult to sell this to a customer who actually has to go and pay for the extra month. Moreover, when I would be the &#8217;stupid user&#8217;, my first question would be then: why didn&#8217;t it get written well in the first place.<br />
I&#8217;m a developer&#8230; I know why, but I&#8217;m afraid it is more black and white for a customer then reality forces us into.</p>
<p>On the other hand, I believe that it should be a mission in life for every individual developer to continuously strive for improved quality in your own code and that involves being first happy and two seconds later critical when you wrote and delivered something. And in that, my friends, you see the difference between those that were born as developers and between those that read a book and copy/pasted some sample code together. Not so long ago, there used to be a time that you had job functions like &#8216;programmer&#8217; and &#8216;analist/programmer&#8217;. These days, everybody is called a developer. What a pitty.</p>
<p>Greetz,</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Michael Smith</title>
		<link>http://davybrion.com/blog/2008/09/make-it-work-make-it-clean/comment-page-1/#comment-1617</link>
		<dc:creator>Michael Smith</dc:creator>
		<pubDate>Tue, 02 Sep 2008 08:00:42 +0000</pubDate>
		<guid isPermaLink="false">http://davybrion.com/blog/?p=376#comment-1617</guid>
		<description>I agree with Peter.  This approach would only work if you have a customer / management that recognise the value of refactoring and a clean codebase... and I mean really understand it rather than pay lip-service to it.  Unfortunately, I think work on refactoring always comes a poor second to delivering functionality and developers resort to padding time estimates to give them time to clean up aspects of the code.

From my experience, most developers would love the opportunity to clean up the code after they have delivered the functionality.  You learn so much from the development process that you know you can produce better, more readable, maintainable code the second time around. 

One thing that I have found is that users are not very willing to do acceptance testing when there is no new functionality for them to look at.  Or where they do it, it&#039;s very superficial.  Hence, you really need your unit tests to give you the confidence to refactor.  Where it gets a bit hairy is where you are refactoring your tests as well...</description>
		<content:encoded><![CDATA[<p>I agree with Peter.  This approach would only work if you have a customer / management that recognise the value of refactoring and a clean codebase&#8230; and I mean really understand it rather than pay lip-service to it.  Unfortunately, I think work on refactoring always comes a poor second to delivering functionality and developers resort to padding time estimates to give them time to clean up aspects of the code.</p>
<p>From my experience, most developers would love the opportunity to clean up the code after they have delivered the functionality.  You learn so much from the development process that you know you can produce better, more readable, maintainable code the second time around. </p>
<p>One thing that I have found is that users are not very willing to do acceptance testing when there is no new functionality for them to look at.  Or where they do it, it&#8217;s very superficial.  Hence, you really need your unit tests to give you the confidence to refactor.  Where it gets a bit hairy is where you are refactoring your tests as well&#8230;</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Davy Brion</title>
		<link>http://davybrion.com/blog/2008/09/make-it-work-make-it-clean/comment-page-1/#comment-1614</link>
		<dc:creator>Davy Brion</dc:creator>
		<pubDate>Tue, 02 Sep 2008 07:14:01 +0000</pubDate>
		<guid isPermaLink="false">http://davybrion.com/blog/?p=376#comment-1614</guid>
		<description>it depends i guess... you need buy-in from the customer/management that the application needs refactoring _after_ it&#039;s been delivered AND you need to have the discipline to actually clean it up _after_ it&#039;s been delivered

they&#039;re both probably equally important

but again, it&#039;s an approach that definitely wouldn&#039;t be good for me but it might be good for some people</description>
		<content:encoded><![CDATA[<p>it depends i guess&#8230; you need buy-in from the customer/management that the application needs refactoring _after_ it&#8217;s been delivered AND you need to have the discipline to actually clean it up _after_ it&#8217;s been delivered</p>
<p>they&#8217;re both probably equally important</p>
<p>but again, it&#8217;s an approach that definitely wouldn&#8217;t be good for me but it might be good for some people</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Peter</title>
		<link>http://davybrion.com/blog/2008/09/make-it-work-make-it-clean/comment-page-1/#comment-1613</link>
		<dc:creator>Peter</dc:creator>
		<pubDate>Tue, 02 Sep 2008 07:08:58 +0000</pubDate>
		<guid isPermaLink="false">http://davybrion.com/blog/?p=376#comment-1613</guid>
		<description>The risk is that as soon as the application is in production the customer wants you to work on somethng else and you don&#039;t get the time to refactor. This has nothing to do with discipline.</description>
		<content:encoded><![CDATA[<p>The risk is that as soon as the application is in production the customer wants you to work on somethng else and you don&#8217;t get the time to refactor. This has nothing to do with discipline.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Andy</title>
		<link>http://davybrion.com/blog/2008/09/make-it-work-make-it-clean/comment-page-1/#comment-1609</link>
		<dc:creator>Andy</dc:creator>
		<pubDate>Tue, 02 Sep 2008 00:58:42 +0000</pubDate>
		<guid isPermaLink="false">http://davybrion.com/blog/?p=376#comment-1609</guid>
		<description>It actually makes the whole process more agile - the customer will be able to change their mind sooner which has a follow on effect that the programmer doesn&#039;t have to go through the process of refactoring code unnecessarily.</description>
		<content:encoded><![CDATA[<p>It actually makes the whole process more agile &#8211; the customer will be able to change their mind sooner which has a follow on effect that the programmer doesn&#8217;t have to go through the process of refactoring code unnecessarily.</p>
]]></content:encoded>
	</item>
</channel>
</rss>
