<?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>Information Technology Dark Side &#187; Architecture</title>
	<atom:link href="http://www.techdarkside.com/category/architecture/feed" rel="self" type="application/rss+xml" />
	<link>http://www.techdarkside.com</link>
	<description>Struggles of a Self-Taught Coder</description>
	<lastBuildDate>Tue, 27 Jul 2010 13:23:17 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.0</generator>
		<item>
		<title>Please sign the open source letter to President Obama</title>
		<link>http://www.techdarkside.com/please-sign-the-open-source-letter-to-president-obama</link>
		<comments>http://www.techdarkside.com/please-sign-the-open-source-letter-to-president-obama#comments</comments>
		<pubDate>Tue, 10 Feb 2009 12:18:01 +0000</pubDate>
		<dc:creator>David Christiansen</dc:creator>
				<category><![CDATA[Architecture]]></category>
		<category><![CDATA[Development]]></category>
		<category><![CDATA[open source]]></category>
		<category><![CDATA[trisano]]></category>

		<guid isPermaLink="false">http://www.techdarkside.com/?p=320</guid>
		<description><![CDATA[This morning Stuart Cohen (CEO, Collaborative Software Initiative) and I published an open source letter to President Obama, urging him to consider the role open source software will play in the various technology initiatives that are part of the pending economic stimulus. Co-signers of the letter include executives from a variety of companies in the [...]]]></description>
			<content:encoded><![CDATA[<p>This morning Stuart Cohen (CEO, Collaborative Software Initiative) and I published an open source letter to President Obama, urging him to consider the role open source software will play in the various technology initiatives that are part of the pending economic stimulus. Co-signers of the letter include executives from a variety of companies in the open-source industry, including Alfresco, Compiere, Hyperics, Ingres, Unisys, and others.</p>
<p>Please take a minute and read the <a href="http://consideropensource.blogspot.com/2009/02/to-president-obama-please-consider-open.html">open source letter</a>. If you agree about the importance of considering the source of software products in government projects, you can sign the letter by posting a comment with your name, company (if appropriate) and web-site. We&#8217;d also appreciate any mention you might make of the open source letter to your friends and colleagues through email, blogs, and twitter.</p>
<p>The letter itself is open-sourced under a creative commons license, which means you can post it, print it, share it, etc with those around you. We hope you will do just that, and help promote the idea that open-source can help bring cost-effective, transparent solutions to government software projects.</p>
<p>Thanks!</p>
<p>Dave</p>
]]></content:encoded>
			<wfw:commentRss>http://www.techdarkside.com/please-sign-the-open-source-letter-to-president-obama/feed</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Where Does Technical Debt Come From?</title>
		<link>http://www.techdarkside.com/where-does-technical-debt-come-from</link>
		<comments>http://www.techdarkside.com/where-does-technical-debt-come-from#comments</comments>
		<pubDate>Mon, 12 May 2008 12:05:59 +0000</pubDate>
		<dc:creator>David Christiansen</dc:creator>
				<category><![CDATA[Architecture]]></category>
		<category><![CDATA[Information Technology Trends]]></category>
		<category><![CDATA[Project Management]]></category>

		<guid isPermaLink="false">http://www.techdarkside.com/?p=250</guid>
		<description><![CDATA[Matt Heusser and I were discussing his upcoming Workshop on Technical Debt, at which I hope to be speaking in August, and we came up with several interesting ways that technical debt is created. Hacks create technical debt by ignoring principles of good software development in favor of quick, easy fixes This is the obvious [...]]]></description>
			<content:encoded><![CDATA[<p><div style="float: right"><script type="text/javascript"><!--
google_ad_client = "pub-9768843936559157";
/* 300x250 Post Ads */
google_ad_slot = "1495790255";
google_ad_width = 300;
google_ad_height = 250;
//-->
</script>
<script type="text/javascript"
src="http://pagead2.googlesyndication.com/pagead/show_ads.js">
</script></div><a href="http://xndev.blogspot.com/">Matt Heusser</a> and I were discussing his upcoming <a href="http://www.cs.calvin.edu/activities/technical-debt/">Workshop on Technical Debt</a>, at which I hope to be speaking in August, and we came up with several interesting ways that technical debt is created.</p>
<p><strong>Hacks create technical debt by ignoring principles of good software development in favor of quick, easy fixes</strong></p>
<p>This is the obvious one because it is the one technical teams complain most about. &#8220;I didn&#8217;t want to do it that way, but my manager said I could only choose from options that took less than a day to implement,&#8221; or some variant of this statement, is the most common answer to the question &#8220;Why does X suck so bad?&#8221;</p>
<p>So how do developers typically fight back against hacks? With reuse anticipation. Now the bad news.</p>
<p><strong>Reuse anticipation creates technical debt by expanding the supported code base without creating a correspondingly timely value proposition</strong></p>
<p>It&#8217;s easy to imagine that the service, component, module, whatever, that you&#8217;re building might be used by multiple applications in multiple ways. It only takes an extra YY hours to make it universal, you tell the project manager. And then we&#8217;ll never have to write this code again. Sometimes, when you already have &#8220;universal&#8221; demand for a component, this is a good idea. It&#8217;s also a good idea when it is a very specific, low-level technical capability, like dumping a message in a queue or searching a string for a value or something like that. Sometimes it&#8217;s a really bad idea &#8211; over-generalizing a capability can make it so difficult to &#8220;reuse&#8221; that no one will reuse it. Either way, it increases your technical debt, because whether anyone reuses it or not, the code you have to support is more complex than it would otherwise be.</p>
<p><strong>Time creates technical debt</strong><br />
There&#8217;s a great riddle in The Hobbit, by JRR Tolkien:</p>
<p><em>This thing all things devours:<br />
Birds, beasts, trees, flowers;<br />
Gnaws iron, bites steel;<br />
Grinds hard stones to meal;<br />
Slays king, ruins town,<br />
And beats high mountains down.</em></p>
<p>Tolkien might have included code in this list had he been a software developer.</p>
<p>Time has a way of dimming our memories of the code we&#8217;ve written, what it does, and why it does it. It is for this reason that development teams often turn to comprehensive documentation to save them.</p>
<p>Now for more bad news.</p>
<p><strong>Comprehensive documentation creates technical debt</strong><br />
Every document you write that has more purpose than helping you figure out how to deliver code NOW becomes another artifact you have to maintain. It adds to your code base in that regard. Now, instead of paying people to maintain the code, the business has to pay someone to maintain the code and the documentation. You just fell further behind.</p>
<p>Documentation typically only has ROI in the short term. It is a very rare document that provides value over the long term. Usually it very quickly becomes a cost with little return of any kind.  </p>
<p><strong>Innovation creates technical debt</strong><br />
Einstein said we can&#8217;t solve our problems with the same thinking we used when we created them. Sadly, when we continuously apply the same thinking to our code base that we used when we created it, the technology world doesn&#8217;t do the same. It moves on, finding better ways to do the same thing. Small changes add up and become big changes, and suddenly there are much more attractive technologies that we can&#8217;t use because we&#8217;ve fallen so far behind.</p>
<p>When we see the world moving on to bigger and better ways of solving our problems, it&#8217;s tempting to say something like this:<br />
&#8220;There&#8217;s no point putting effort into X, we&#8217;re just going to move to Y soon anyway.&#8221;</p>
<p>Sometimes this is a good idea, if moving to Y is funded, approved, and making progress. But if Y isn&#8217;t approved, giving up on X will only increase the amount you owe, and you&#8217;ll feel doubly bitter about it when Y never materializes.</p>
<p>When I see this problem, I think of a line from an old song: &#8220;If you can&#8217;t be with the one you love, well then, love the one you&#8217;re with.&#8221;</p>
<p><strong>Technical debt creates more technical debt</strong><br />
With credit cards it is sometimes possible to make the minimum payment without reducing your principal a penny. In fact, you can pay your bill and end up with a higher balance because of this.</p>
<p>It&#8217;s the same way with your code base. If you don&#8217;t invest in it faster than you are accruing technical debt, your technical debt will grow. Why? Because you don&#8217;t have time to make it better, so what are you doing? You&#8217;re hacking &#8211; cutting corners and doing the wrong things just to get done in time with the resources you have.</p>
<p>Technical debt sucks as bad as credit card debt. I suspect that paying off technical debt is very similar to paying off credit card debt. It&#8217;s hard, it requires frugality, and it means shedding everything that isn&#8217;t really important. More about that some other time.</p>
<p>Have a nice week.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.techdarkside.com/where-does-technical-debt-come-from/feed</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>Testing an SOA</title>
		<link>http://www.techdarkside.com/testing-an-soa</link>
		<comments>http://www.techdarkside.com/testing-an-soa#comments</comments>
		<pubDate>Sat, 09 Feb 2008 14:03:07 +0000</pubDate>
		<dc:creator>David Christiansen</dc:creator>
				<category><![CDATA[Architecture]]></category>

		<guid isPermaLink="false">http://www.techdarkside.com/?p=208</guid>
		<description><![CDATA[Mike Kelly and I recently did a webinar on testing service oriented architectures. If you&#8217;re interested in this topic, you can access it through this link. One of the funnest parts of doing this webinar was producing the artwork for the slides. For reasons I explain in the presentation, I wanted three photographs of spaghetti: [...]]]></description>
			<content:encoded><![CDATA[<p><div style="float: right"><script type="text/javascript"><!--
google_ad_client = "pub-9768843936559157";
/* 300x250 Post Ads */
google_ad_slot = "1495790255";
google_ad_width = 300;
google_ad_height = 250;
//-->
</script>
<script type="text/javascript"
src="http://pagead2.googlesyndication.com/pagead/show_ads.js">
</script></div>Mike Kelly and I recently did a webinar on testing service oriented architectures. If you&#8217;re interested in this topic, you can access it <a href="http://www.itcinfotech.com/Webinar.aspx?type=Mg%3d%3d-P0gxTNbbdDk%3d">through this link</a>. </p>
<p>One of the funnest parts of doing this webinar was producing the artwork for the slides. For reasons I explain in the presentation, I wanted three photographs of spaghetti: the first of uncooked spaghetti on a countertop, the second of cooked spaghetti in a bowl, and the third of cooked spaghetti dumped over an angry child&#8217;s head. I decided to take the photos myself rather than buy them, and I proceed to try to convince my four-year old son that he would enjoy having spaghetti dumped over his head.</p>
<p>He didn&#8217;t buy it. Fortunately, my eight year old daughter did, for a price. One dollar for every year she&#8217;d been alive. I paid up, and the resulting photo was excellent, even if Reese wished she had charged me more.</p>
<p><a href='http://www.techdarkside.com/wp-content/uploads/2008/02/reesespaghetti.jpg' title='Why We Need SOA'><img src='http://www.techdarkside.com/wp-content/uploads/2008/02/reesespaghetti.jpg' alt='Why We Need SOA' /></a></p>
]]></content:encoded>
			<wfw:commentRss>http://www.techdarkside.com/testing-an-soa/feed</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>The $100,000,000 Canonical Model</title>
		<link>http://www.techdarkside.com/the-100000000-canonical-model</link>
		<comments>http://www.techdarkside.com/the-100000000-canonical-model#comments</comments>
		<pubDate>Tue, 11 Sep 2007 12:06:10 +0000</pubDate>
		<dc:creator>David Christiansen</dc:creator>
				<category><![CDATA[Architecture]]></category>

		<guid isPermaLink="false">http://www.techdarkside.com/?p=152</guid>
		<description><![CDATA[Once upon a time (1999) a bright guy had a bright idea. &#8220;If we expose our back office capabilities as services,&#8221; he said, &#8220;the business will be able to use them to deploy new capabilities quickly in ways we can&#8217;t imagine today.&#8221; People listened, and before long this bright guy (not me) had a small [...]]]></description>
			<content:encoded><![CDATA[<p><img src="http://www.techdarkside.com/wp-includes/images/davepost.jpg" alt="Dave Christiansen, Managing Editor" align="left"/>Once upon a time (1999) a bright guy had a bright idea. &#8220;If we expose our back office capabilities as services,&#8221; he said, &#8220;the business will be able to use them to deploy new capabilities quickly in ways we can&#8217;t imagine today.&#8221; People listened, and before long this bright guy (not me) had a small team of bright guys working with him to come up with a way to build some services. They started with operational data &#8211; since this was a huge telecom, they wanted to make it easy for mobile users to know how many minutes they&#8217;d used, had left, etc. This service was a huge success, and before long the business wanted more services that were disembodied from the back-office system that provided them.</p>
<p>Before long, an Enterprise Integration group was born. It provided two hundred different services,<span id="more-152"></span> including billing, provisioning, account servicing, and others. It had four hundred employees, all of whom were happily engaged in maintaining and extending the service offering of Enterprise Integration. It was a happy world. The major telecom could roll out new apps quickly and cheaply, because most of their back office capabilities were already exposed. But the greatest asset of enterprise integration wasn&#8217;t just the services they owned, but the canonical model it created.<br />
<div style="float: right"><script type="text/javascript"><!--
google_ad_client = "pub-9768843936559157";
/* 300x250 Post Ads */
google_ad_slot = "1495790255";
google_ad_width = 300;
google_ad_height = 250;
//-->
</script>
<script type="text/javascript"
src="http://pagead2.googlesyndication.com/pagead/show_ads.js">
</script></div><br />
The EI canonical model was the embodiment of this happy big telco&#8217;s business. It was its bread and butter &#8211; the way it did business. It was the telco&#8217;s very soul, laid out in simple, human readable interfaces.</p>
<p>Good times never last forever, and by 2002 this telco discovered it was in trouble. It couldn&#8217;t spend money like water anymore, and it started to look for ways to cut back. The billing system was an obvious place to start. It was an ASP, and at $1 per account per month, it was costing this very large telco a heckuva lotta their sweet moolah. Everyone knew it needed to be replaced by a system the telco could own and support in house. The business case was solid. Replace the billing system with one you could own and support in house, and even if it cost $1,000,000 every month you would still net a gain of about $80,000,000 every month. Heck, you could sink $100,000,000, maybe $200,000,000 in the implementation project and still come out way ahead on the ROI.</p>
<p>Fortunately for this telco, they had a solid integration architecture, decoupling the billing system from all the systems it supported. They could just rip it out and put in a new one, support the old interfaces, and move on happily with their lives. Everything would be grand. That&#8217;s the way the technologists sold it anyway. &#8220;It&#8217;s all the same data,&#8221; they said. &#8220;It won&#8217;t matter if it&#8217;s structured differently, we&#8217;ll just find ways to transform it to match what the new billing system is expecting.&#8221;</p>
<p>The sales pitch was bought, and the integration began. The new billing system was installed and loaded with data. Business users started experimenting with the user interface, designing workflows and figuring out how to do their jobs with the new stuff. Everything seemed great, until they started trying to plug the new billing system into the old billing services, of which there were about eighty. </p>
<p>Then, things started to go downhill. It wasn&#8217;t the architecture. The architecture was great. It didn&#8217;t matter that the new system was java whereas the old system had been exposed through C++ API&#8217;s. All EI had to do was create adaptors, transform the canonical model into the new systems API, and off we go. Piece of cake, right?</p>
<p>Wrong. The canonical model wouldn&#8217;t map. The new billing system was fundamentally different from the canonical model, and for good reason. It solved problems that hadn&#8217;t existed when the canonical model was created. Those problems couldn&#8217;t have been anticipated when bright guys defined it. The ground had moved underneath them, and they couldn&#8217;t move fast enough to keep up. They couldn&#8217;t change the canonical model to meet the new demands of the business. They had too many clients and too many services to move everybody over to a new canonical model. They were being buried under the weight of their own canonical model. They thought they owned the model, but in the end it was clear &#8211; the canonical model owned them.</p>
<p>$100,000,000 later, Enterprise Integration finally owned up to the truth. They couldn&#8217;t make it happen. The vendor of the new billing system was sent packing. The telco&#8217;s stock dropped even further, and eventually the disappointed telco, stuck with their $1 per subscriber per month billing system FOREVER, sent almost their entire IT department to big blue, outsourcing nearly every IT job in the company.<br />
<div style="float: right"><script type="text/javascript"><!--
google_ad_client = "pub-9768843936559157";
/* 300x250 Post Ads */
google_ad_slot = "1495790255";
google_ad_width = 300;
google_ad_height = 250;
//-->
</script>
<script type="text/javascript"
src="http://pagead2.googlesyndication.com/pagead/show_ads.js">
</script></div><br />
Be careful what you wish for. There&#8217;s no such thing as a perfect architecture or a perfect canonical model, particularly in a world where the problems change as fast as, and sometimes faster than, we can solve them. Don&#8217;t build an enormous asset that has to last forever to have a good return. Keep it simple. Keep it cheap. Do it fast. Or don&#8217;t do it.</p>
<p><em>Dave Christiansen is the founder and managing editor of<br />
<a href="http://www.techdarkside.com">TechDarkSide.com</a>. He manages projects for a Fortune 100 financial services company and writes and talks about project management. He can be reached at <A HREF="mailto:dave@techdarkside.com">dave@techdarkside.com</A>.</em></p>
]]></content:encoded>
			<wfw:commentRss>http://www.techdarkside.com/the-100000000-canonical-model/feed</wfw:commentRss>
		<slash:comments>4</slash:comments>
		</item>
	</channel>
</rss>
