<?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>Delivering Quality &#187; managing complexity</title>
	<atom:link href="http://www.markdeepwell.com/tag/managing-complexity/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.markdeepwell.com</link>
	<description>A Software Developers View of the World</description>
	<lastBuildDate>Thu, 29 Jul 2010 16:44:04 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.0.1</generator>
		<item>
		<title>Software Complexity</title>
		<link>http://www.markdeepwell.com/2009/09/software-complexity/</link>
		<comments>http://www.markdeepwell.com/2009/09/software-complexity/#comments</comments>
		<pubDate>Tue, 15 Sep 2009 05:39:34 +0000</pubDate>
		<dc:creator>Mark</dc:creator>
				<category><![CDATA[Software Development]]></category>
		<category><![CDATA[managing complexity]]></category>
		<category><![CDATA[Software Quality]]></category>

		<guid isPermaLink="false">http://www.markdeepwell.com/?p=245</guid>
		<description><![CDATA[Have you ever worked on a software project where you had no idea what would happen to other parts of the system if you made a code change? I have, but I have been able to ask developers on my team that know the system better than I do. If it&#8217;s a larger software project [...]]]></description>
			<content:encoded><![CDATA[<p>Have you ever worked on a software project where you had no idea what would happen to other parts of the system  if you made a code change? I have, but I have been able to ask developers on my team that know the system better than I do.</p>
<p>If it&#8217;s a larger software project and nobody on the team knows what a change would do, then it would be fair to say the software is overly complex and making forward progress is like wading through a swamp. Software projects, especially larger software projects absolutely must have code that is understandable. When designing software applications, a key component to the architecture is managing complexity to a workable level.</p>
<blockquote><p>Managing complexity is the most important technical topic in software development. In my view, it&#8217;s so important that Software&#8217;s Primary Technical Imperative has to be <em><strong>managing complexity</strong>.</em></p>
<p>- Steve McConnell in Code Complete</p></blockquote>
<p>Unless its a small project, no software developer can contain the design, constraints, and all the technical details in their head at the same time. Software must be made modular so that a developer can work on one section of code without worrying about the rest of the project.</p>
<p>How do you deal with complexity?</p>
<ol>
<li>Break up the problem into sub-problems and sub-tasks so you don&#8217;t have to solve everything at the same time.</li>
<li>Contain the complexity to one part of the code.</li>
<li>Before you solve the complex issue take a step back and make sure you have to solve it that way. There might be a vastly simpler problem that you can solve that will still fulfill your requirements.</li>
</ol>
<p>Tackle software complexity before it defeats your software project.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.markdeepwell.com/2009/09/software-complexity/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>
