<?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: Responsible technical debt: not an oxymoron</title>
	<atom:link href="http://agilefocus.com/2010/04/25/responsible-technical-debt-not-an-oxymoron/feed/" rel="self" type="application/rss+xml" />
	<link>http://agilefocus.com/2010/04/25/responsible-technical-debt-not-an-oxymoron/</link>
	<description>A group weblog for and about Agile software development</description>
	<lastBuildDate>Wed, 08 Jun 2011 03:55:52 +0000</lastBuildDate>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.1.2</generator>
	<item>
		<title>By: William Pietri</title>
		<link>http://agilefocus.com/2010/04/25/responsible-technical-debt-not-an-oxymoron/comment-page-1/#comment-1258</link>
		<dc:creator>William Pietri</dc:creator>
		<pubDate>Tue, 08 Mar 2011 19:00:09 +0000</pubDate>
		<guid isPermaLink="false">http://agilefocus.com/?p=483#comment-1258</guid>
		<description>Hi, Jason. I&#039;m not assuming that; I&#039;m stating it, and would love to see the evidence you have showing otherwise. I agree that better code pays off eventually; I disagree that the payback is instantaneous. If the payback for any sort of quality-oriented practice is anything other than instant, then if some piece of code has a limited lifetime, the utility of that practice is not guaranteed under all circumstances. In startups, a lot of code is very short-lived.

Have you read the very next article, the one I link in the final sentence? There I explain my way to solve this apparent dilemma.</description>
		<content:encoded><![CDATA[<p>Hi, Jason. I&#8217;m not assuming that; I&#8217;m stating it, and would love to see the evidence you have showing otherwise. I agree that better code pays off eventually; I disagree that the payback is instantaneous. If the payback for any sort of quality-oriented practice is anything other than instant, then if some piece of code has a limited lifetime, the utility of that practice is not guaranteed under all circumstances. In startups, a lot of code is very short-lived.</p>
<p>Have you read the very next article, the one I link in the final sentence? There I explain my way to solve this apparent dilemma.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Jason Gorman</title>
		<link>http://agilefocus.com/2010/04/25/responsible-technical-debt-not-an-oxymoron/comment-page-1/#comment-1256</link>
		<dc:creator>Jason Gorman</dc:creator>
		<pubDate>Mon, 07 Mar 2011 23:23:14 +0000</pubDate>
		<guid isPermaLink="false">http://agilefocus.com/?p=483#comment-1256</guid>
		<description>We&#039;re assuming, of course, that it takes more effort to write better quality code. The available evidence suggests otherwise. I suspect Kent Beck may have been speaking from a rarified perspective, having higher standards than most. His notion of a trade-off may be qualitatively hugely different to what you have in mind. All I can say is that my overriding experience of start-ups is that one day they must become &quot;stay-ups&quot; if they are to survive, and in 99% of cases their code is so horrendously bad that to even suggest they &quot;trade off quality against productivity&quot; is hugely misleading, as they would have all benefitted from a good deal more care and rigour.</description>
		<content:encoded><![CDATA[<p>We&#8217;re assuming, of course, that it takes more effort to write better quality code. The available evidence suggests otherwise. I suspect Kent Beck may have been speaking from a rarified perspective, having higher standards than most. His notion of a trade-off may be qualitatively hugely different to what you have in mind. All I can say is that my overriding experience of start-ups is that one day they must become &#8220;stay-ups&#8221; if they are to survive, and in 99% of cases their code is so horrendously bad that to even suggest they &#8220;trade off quality against productivity&#8221; is hugely misleading, as they would have all benefitted from a good deal more care and rigour.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: SKMurphy &#187; Quotes for Entrepreneurs &#8211; April 2010</title>
		<link>http://agilefocus.com/2010/04/25/responsible-technical-debt-not-an-oxymoron/comment-page-1/#comment-796</link>
		<dc:creator>SKMurphy &#187; Quotes for Entrepreneurs &#8211; April 2010</dc:creator>
		<pubDate>Fri, 30 Apr 2010 09:32:33 +0000</pubDate>
		<guid isPermaLink="false">http://agilefocus.com/?p=483#comment-796</guid>
		<description>[...] projects&#8212;that need to discover a sustainable business model.&#8221; William Pietri in &#8220;Responsible Technical Debt:  Not an Oxymoron&#8221; full quote: Startups are about learning.  For this to make sense, you have to understand [...]</description>
		<content:encoded><![CDATA[<p>[...] projects&#8212;that need to discover a sustainable business model.&#8221; William Pietri in &#8220;Responsible Technical Debt:  Not an Oxymoron&#8221; full quote: Startups are about learning.  For this to make sense, you have to understand [...]</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: William Pietri</title>
		<link>http://agilefocus.com/2010/04/25/responsible-technical-debt-not-an-oxymoron/comment-page-1/#comment-794</link>
		<dc:creator>William Pietri</dc:creator>
		<pubDate>Thu, 29 Apr 2010 14:36:41 +0000</pubDate>
		<guid isPermaLink="false">http://agilefocus.com/?p=483#comment-794</guid>
		<description>I think that&#039;s true, and that&#039;s an ideal case.

There are other cases that are trickier, and can&#039;t be usefully analyzed purely in design terms. You have to look at the question in business terms, because in the end the decision to refactor properly or hack egregiously is a cost-benefit question, not a technical one.

In many projects, we can ignore the business side: revenues and costs are approximately stable, cash reserves are ample, the relationship between features and revenues is unclear, and both features and products are expected to live indefinitely. Given those factors, we can generally get away with only thinking in design terms.

For startups, though, none of those is true, which means we have to be more careful about when and how we indulge our preference for beautiful code.</description>
		<content:encoded><![CDATA[<p>I think that&#8217;s true, and that&#8217;s an ideal case.</p>
<p>There are other cases that are trickier, and can&#8217;t be usefully analyzed purely in design terms. You have to look at the question in business terms, because in the end the decision to refactor properly or hack egregiously is a cost-benefit question, not a technical one.</p>
<p>In many projects, we can ignore the business side: revenues and costs are approximately stable, cash reserves are ample, the relationship between features and revenues is unclear, and both features and products are expected to live indefinitely. Given those factors, we can generally get away with only thinking in design terms.</p>
<p>For startups, though, none of those is true, which means we have to be more careful about when and how we indulge our preference for beautiful code.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Ilja Preuß</title>
		<link>http://agilefocus.com/2010/04/25/responsible-technical-debt-not-an-oxymoron/comment-page-1/#comment-791</link>
		<dc:creator>Ilja Preuß</dc:creator>
		<pubDate>Thu, 29 Apr 2010 09:01:23 +0000</pubDate>
		<guid isPermaLink="false">http://agilefocus.com/?p=483#comment-791</guid>
		<description>So, say you tried that experiment, and now want to get rid of that feature that users don&#039;t care about. How do you do that, without getting rid of the few good refactorings you want to keep?

I&#039;d postulate that ideally, we just throw away the module with the code for that feature, and the rest of the code stays untouched.

For that to work, we need to refactor the whole system so that most of it doesn&#039;t need to know a bit about multi-accounts. And those changes should be high-quality. Even when we throw away the feature, we still benefit from those refactorings, because the code improved in terms of SRP, SCP and OCP. We are likely to benefit from those changes in some way for future features, possibly in surprising ways.

I conclude that the quality of the one experimental module, that we can plug in and out on a whim, then might actually be of secondary concern.

What do you say?</description>
		<content:encoded><![CDATA[<p>So, say you tried that experiment, and now want to get rid of that feature that users don&#8217;t care about. How do you do that, without getting rid of the few good refactorings you want to keep?</p>
<p>I&#8217;d postulate that ideally, we just throw away the module with the code for that feature, and the rest of the code stays untouched.</p>
<p>For that to work, we need to refactor the whole system so that most of it doesn&#8217;t need to know a bit about multi-accounts. And those changes should be high-quality. Even when we throw away the feature, we still benefit from those refactorings, because the code improved in terms of SRP, SCP and OCP. We are likely to benefit from those changes in some way for future features, possibly in surprising ways.</p>
<p>I conclude that the quality of the one experimental module, that we can plug in and out on a whim, then might actually be of secondary concern.</p>
<p>What do you say?</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: steve</title>
		<link>http://agilefocus.com/2010/04/25/responsible-technical-debt-not-an-oxymoron/comment-page-1/#comment-783</link>
		<dc:creator>steve</dc:creator>
		<pubDate>Mon, 26 Apr 2010 17:19:10 +0000</pubDate>
		<guid isPermaLink="false">http://agilefocus.com/?p=483#comment-783</guid>
		<description>I like your twitter example in the comments, helped me understand the concepts</description>
		<content:encoded><![CDATA[<p>I like your twitter example in the comments, helped me understand the concepts</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Agile Focus &#187; Blog Archive &#187; The Lean Startup Kanban board</title>
		<link>http://agilefocus.com/2010/04/25/responsible-technical-debt-not-an-oxymoron/comment-page-1/#comment-779</link>
		<dc:creator>Agile Focus &#187; Blog Archive &#187; The Lean Startup Kanban board</dc:creator>
		<pubDate>Mon, 26 Apr 2010 15:04:13 +0000</pubDate>
		<guid isPermaLink="false">http://agilefocus.com/?p=483#comment-779</guid>
		<description>[...] Suggested Reading      &#171; Responsible technical debt: not an oxymoron [...]</description>
		<content:encoded><![CDATA[<p>[...] Suggested Reading      &laquo; Responsible technical debt: not an oxymoron [...]</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: William Pietri</title>
		<link>http://agilefocus.com/2010/04/25/responsible-technical-debt-not-an-oxymoron/comment-page-1/#comment-778</link>
		<dc:creator>William Pietri</dc:creator>
		<pubDate>Mon, 26 Apr 2010 14:53:48 +0000</pubDate>
		<guid isPermaLink="false">http://agilefocus.com/?p=483#comment-778</guid>
		<description>Sure. Take Twitter. Not now, but the Twitter of 2+ years ago, before it&#039;s clear that they have much traction. They&#039;ve got a fixed amount of cash in the bank that is getting smaller every week.

One thing they&#039;ve noticed is that some users have more than one account. (For example, I have a professional one, @williampietri, and a personal one.) The question they&#039;d like to resolve: are enough users excited about multiple handles per account to make it worth a major system change? Or should they stick with what they have? It could be a major feature for top users and businesspeople, or it could be a dud.

So they do a quick experiment, taking a week to wedge in some multi-handle stuff. It&#039;s pretty hairy hackery, as good chunks of their system assumed 1:1, not 1:N. But they tell their A/B framework to show it to 1% of the users, and they seed it to some of the known multi-login people too as an exclusive alpha test.

After 2 weeks, it turns out that their users don&#039;t care much. The general population shows little interest. And even current multi-account users who thought they wanted the feature aren&#039;t excited when they see it in practice. So they split the few joined accounts, send out a we&#039;re-sorry email to the handful of users, and rip out the hack. There are a few places where they made the code better along the way; they keep those changes.

Now there&#039;s no denying that they skipped some refactorings that might make the code better in a design sense. But as I said in the blog entry, this isn&#039;t a software development project; it&#039;s an attempt to discover a sustainable business. So the question isn&#039;t about good design in the abstract, it&#039;s whether spending the capital necessary to improve the design is the very best use of their very limited capital.

I think what makes people uncomfortable about this is that the answer is a very tactical, &quot;It depends.&quot; Extreme Programming tells us to always turn that quality dial to 11, to always be extremely sustainable. For typical software projects, I think that&#039;s still good advice. But it&#039;s not always correct for startups.</description>
		<content:encoded><![CDATA[<p>Sure. Take Twitter. Not now, but the Twitter of 2+ years ago, before it&#8217;s clear that they have much traction. They&#8217;ve got a fixed amount of cash in the bank that is getting smaller every week.</p>
<p>One thing they&#8217;ve noticed is that some users have more than one account. (For example, I have a professional one, @williampietri, and a personal one.) The question they&#8217;d like to resolve: are enough users excited about multiple handles per account to make it worth a major system change? Or should they stick with what they have? It could be a major feature for top users and businesspeople, or it could be a dud.</p>
<p>So they do a quick experiment, taking a week to wedge in some multi-handle stuff. It&#8217;s pretty hairy hackery, as good chunks of their system assumed 1:1, not 1:N. But they tell their A/B framework to show it to 1% of the users, and they seed it to some of the known multi-login people too as an exclusive alpha test.</p>
<p>After 2 weeks, it turns out that their users don&#8217;t care much. The general population shows little interest. And even current multi-account users who thought they wanted the feature aren&#8217;t excited when they see it in practice. So they split the few joined accounts, send out a we&#8217;re-sorry email to the handful of users, and rip out the hack. There are a few places where they made the code better along the way; they keep those changes.</p>
<p>Now there&#8217;s no denying that they skipped some refactorings that might make the code better in a design sense. But as I said in the blog entry, this isn&#8217;t a software development project; it&#8217;s an attempt to discover a sustainable business. So the question isn&#8217;t about good design in the abstract, it&#8217;s whether spending the capital necessary to improve the design is the very best use of their very limited capital.</p>
<p>I think what makes people uncomfortable about this is that the answer is a very tactical, &#8220;It depends.&#8221; Extreme Programming tells us to always turn that quality dial to 11, to always be extremely sustainable. For typical software projects, I think that&#8217;s still good advice. But it&#8217;s not always correct for startups.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Ilja Preuß</title>
		<link>http://agilefocus.com/2010/04/25/responsible-technical-debt-not-an-oxymoron/comment-page-1/#comment-777</link>
		<dc:creator>Ilja Preuß</dc:creator>
		<pubDate>Mon, 26 Apr 2010 14:16:25 +0000</pubDate>
		<guid isPermaLink="false">http://agilefocus.com/?p=483#comment-777</guid>
		<description>I&#039;m not sure whether I&#039;d agree without seeing a more specific example. In general I&#039;d expect it to be a wise choice to refactor the design closer to the OCP, anyway.</description>
		<content:encoded><![CDATA[<p>I&#8217;m not sure whether I&#8217;d agree without seeing a more specific example. In general I&#8217;d expect it to be a wise choice to refactor the design closer to the OCP, anyway.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: William Pietri</title>
		<link>http://agilefocus.com/2010/04/25/responsible-technical-debt-not-an-oxymoron/comment-page-1/#comment-776</link>
		<dc:creator>William Pietri</dc:creator>
		<pubDate>Mon, 26 Apr 2010 14:11:46 +0000</pubDate>
		<guid isPermaLink="false">http://agilefocus.com/?p=483#comment-776</guid>
		<description>Hi, Ilja. thanks for stopping by.

I certainly agree that some throw-away code will go faster when you make use of some of the quality-oriented practices we Agilists love. If I think of a good name for a variable, I&#039;m not going to call it x just to save 0.05 seconds of typing. If some chunk of code is tricky enough that I&#039;ll go faster writing it with a few tests, I&#039;ll write the tests.

But for code that may last from a few days to a few weeks, I don&#039;t believe all of our quality-oriented practices are always necessary, or even wise.  For example, I&#039;m sure you&#039;d agree we shouldn&#039;t do a major refactoring to properly accommodate a core domain change that we may strip out a week after release. Instead, we can hack something in with a UI-level integration and see whether the new feature is worth the work it will take to do it right.

I&#039;ll have more to say on this in upcoming posts, so stop back. Or you can subscribe in your favorite feed reader via the upper right corner of this very page.</description>
		<content:encoded><![CDATA[<p>Hi, Ilja. thanks for stopping by.</p>
<p>I certainly agree that some throw-away code will go faster when you make use of some of the quality-oriented practices we Agilists love. If I think of a good name for a variable, I&#8217;m not going to call it x just to save 0.05 seconds of typing. If some chunk of code is tricky enough that I&#8217;ll go faster writing it with a few tests, I&#8217;ll write the tests.</p>
<p>But for code that may last from a few days to a few weeks, I don&#8217;t believe all of our quality-oriented practices are always necessary, or even wise.  For example, I&#8217;m sure you&#8217;d agree we shouldn&#8217;t do a major refactoring to properly accommodate a core domain change that we may strip out a week after release. Instead, we can hack something in with a UI-level integration and see whether the new feature is worth the work it will take to do it right.</p>
<p>I&#8217;ll have more to say on this in upcoming posts, so stop back. Or you can subscribe in your favorite feed reader via the upper right corner of this very page.</p>
]]></content:encoded>
	</item>
</channel>
</rss>

