<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	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/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>Agile Training Toronto - Kanban, Lean, Scrum Coach &#187; Refactoring</title>
	<atom:link href="http://agilitrix.com/tag/refactoring/feed/" rel="self" type="application/rss+xml" />
	<link>http://agilitrix.com</link>
	<description>Helping you grow your organization...</description>
	<lastBuildDate>Fri, 18 May 2012 13:43:58 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.2.1</generator>
		<item>
		<title>XPToronto Talk &#8211; Understanding and Dealing with Technical Debt by Amr Elssamadisy</title>
		<link>http://agilitrix.com/2009/09/xptoronto-talk-understanding-and-dealing-with-technical-debt-by-amr-elssamadisy/</link>
		<comments>http://agilitrix.com/2009/09/xptoronto-talk-understanding-and-dealing-with-technical-debt-by-amr-elssamadisy/#comments</comments>
		<pubDate>Wed, 16 Sep 2009 03:06:22 +0000</pubDate>
		<dc:creator>Michael Sahota</dc:creator>
				<category><![CDATA[Technical Practices]]></category>
		<category><![CDATA[Refactoring]]></category>
		<category><![CDATA[Technical Debt]]></category>
		<category><![CDATA[XP]]></category>

		<guid isPermaLink="false">http://www.agilitrix.com/?p=220</guid>
		<description><![CDATA[Tonight Amr Elssamadisy from GembaSystems presented at the XPToronto/Agile User group.  There was a big turnout of almost 40 people and I think one person didn&#8217;t actually have a seat. What follows are a series of notes from the talk without too much editing&#8230; People&#8217;s reasons for wanting to hear about Technical Debt tonight People [...]


No related posts.

Related posts brought to you by <a href='http://yarpp.org'>Yet Another Related Posts Plugin</a>.]]></description>
			<content:encoded><![CDATA[<p>Tonight Amr Elssamadisy from <a href="http://us.gembasystems.com/">GembaSystems</a> presented at the <a href="http://www.xptoronto.com/">XPToronto/Agile User group</a>.  There was a big turnout of almost 40 people and I think one person didn&#8217;t actually have a seat.</p>
<p>What follows are a series of notes from the talk without too much editing&#8230;</p>
<h2>People&#8217;s reasons for wanting to hear about Technical Debt tonight</h2>
<ul>
<li>People with short-term focus</li>
<li>Technical Arguements</li>
<li>Is it worth refactoring</li>
<li>Currently living in Legacy Land</li>
<li>Business value of paying down technical debt</li>
<li>How?  (to fix)</li>
<li>Best Practices</li>
<li>Root causes</li>
</ul>
<h2>Examples of Technical Debt</h2>
<ul>
<li>I have spent 3 years building legacy code web site with no unit tests.</li>
<li>Code that has been copy and pasted.</li>
<li>Code that is difficult to get under test: large classes, methods.</li>
<li>Branching and duplication of the application.</li>
<li>Duplication of functionality written by different people.</li>
</ul>
<h2>How does technical debt affect behaviour?</h2>
<p>New requirements</p>
<ul>
<li>Dumbed-down solutions</li>
<li>Fear of change.  Not sure what will happen.</li>
<li>Question to ask: How hard is work this year compared to last year?</li>
<li>Splinter IT group into siloed green team</li>
</ul>
<p>Design</p>
<ul>
<li>What design?</li>
<li>No new design</li>
<li>No changed design</li>
<li>Tons of band-aid solutions</li>
<li>New features need to be workaround</li>
</ul>
<p>Defects</p>
<ul>
<li>Only critical ones</li>
<li>Lots and time and effort in regression ? $$$</li>
<li>Many bugs don’t get fixed – bad code</li>
<li>Often sketchy manual testing</li>
</ul>
<p>Maintainability</p>
<ul>
<li>Goes down with technical debt</li>
<li>Dead core after 5 years</li>
<li>Inventor’s dilemma – productivity goes down over time.</li>
<li>Difficult to get new people who can work with the code base.</li>
</ul>
<h2>Why do teams fall into this trap?</h2>
<p>People follow cost of change curve.  It rises exponentially: requirements to analysis to design to test to production.  Code is fragile for everyone but the author.</p>
<p>Test-first development makes the cost of change linear.  Courage?  Not needed so much since you have a test harness.  Tests act as a signaling system to people working on the system that there is something they need to pay attention to.</p>
<p>“Programming as Theory Building” – this can only be learned through <em>apprenticeship </em>which is not practiced in corporate America.  So what do you use?  Documents don’t work – this results in a new paradigm and the level of mismatch leads to additional cost.  Perhaps <em>pairing is the new apprenticeship model</em>.</p>
<h2>Breaking dependencies and adding test to legacy code</h2>
<p>Low coupling and high cohesion are main design principles. &#8211;&gt; Get teams to agree to “do no harm” to the design</p>
<p>Example of adding code into a function.  This will make cohesion worse.</p>
<ol>
<li>Take the code to be modified and move the code to a new function.  (Extract method refactoring)</li>
<li>How hard is it to create the main object?  Probably really hard.</li>
<li>So, refactor to a new class (a sprout) instead so you can create it and test it.</li>
<li>And may need to create mock objects to make this work due to parameters.</li>
<li>Use refactoring to aggregate related sprouts.</li>
</ol>
<p>Read Michael Feather&#8217;s book - <a href="http://www.amazon.ca/Working-Effectively-Legacy-Michael-Feathers/dp/0131177052">Working Effectively with Legacy Code</a>.</p>
<p>Like most things, this is a people problem.  And then we had an interesting digression into Christopher Avery&#8217;s material on personal responsibility.</p>


<p>No related posts.</p>
<p>Related posts brought to you by <a href='http://yarpp.org'>Yet Another Related Posts Plugin</a>.</p>]]></content:encoded>
			<wfw:commentRss>http://agilitrix.com/2009/09/xptoronto-talk-understanding-and-dealing-with-technical-debt-by-amr-elssamadisy/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
	</channel>
</rss>

<!-- Performance optimized by W3 Total Cache. Learn more: http://www.w3-edge.com/wordpress-plugins/

Minified using disk
Page Caching using disk (enhanced)
Database Caching 5/16 queries in 0.090 seconds using disk
Object Caching 462/467 objects using disk

Served from: agilitrix.com @ 2012-05-21 12:40:16 -->
