<?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>MikeBobiney.com &#187; Theory</title>
	<atom:link href="http://www.mikebobiney.com/category/theory/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.mikebobiney.com</link>
	<description>The one. The only. The mikeboblog.</description>
	<lastBuildDate>Mon, 21 Jun 2010 16:56:50 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.0</generator>
<cloud domain='www.mikebobiney.com' port='80' path='/?rsscloud=notify' registerProcedure='' protocol='http-post' />
		<item>
		<title>Using Scrum to control complex software</title>
		<link>http://www.mikebobiney.com/2008/11/19/using-scrum-to-control-complex-software/</link>
		<comments>http://www.mikebobiney.com/2008/11/19/using-scrum-to-control-complex-software/#comments</comments>
		<pubDate>Wed, 19 Nov 2008 20:07:54 +0000</pubDate>
		<dc:creator>Mike Bobiney</dc:creator>
				<category><![CDATA[Theory]]></category>
		<category><![CDATA[Videos]]></category>
		<category><![CDATA[software]]></category>
		<category><![CDATA[video]]></category>

		<guid isPermaLink="false">http://www.mikebobiney.com/?p=404</guid>
		<description><![CDATA[Everything in Scrum... is a time box (aka sprint), so things don't go on forever is done with cross functional teams who don't need to be managed has a constrained team size ( under 8 people ) has to achieve some form of a shippable product at the end of each time box / sprint [...]]]></description>
			<content:encoded><![CDATA[<p><embed id="VideoPlayback" src="http://video.google.com/googleplayer.swf?docid=-7230144396191025011&#038;hl=en&#038;fs=true" style="width:400px;height:326px" allowFullScreen="true" allowScriptAccess="always" type="application/x-shockwave-flash"> </embed></p>
<p><strong>Everything in Scrum...</strong></p>
<ul>
<li>is a time box (aka sprint), so things don't go on forever</li>
<li>is done with cross functional teams who don't need to be managed</li>
<li>has a constrained team size ( under 8 people )</li>
<li>has to achieve some form of a shippable product at the end of each time box / sprint</li>
<li>assumes that you are intelligent enough to come up with a solution to the problem at hand</li>
<li>requires minimal or no interruptions while sprinting</li>
</ul>
<p><strong>Additional points</strong></p>
<ul>
<li>Scrum goes hand in hand with <a href="/index.php?p=4">Extreme Programming</a> practices.</li>
<li>Working more hours does not equal better code quality. Code will likely become exponentially worse as a result of quick fixes and ideas that haven't been adequately thought through. The cost to fix these issues even outweigh the cost that would have been saved by keeping normal work hours.  As a result, overworking is not a good way to increase project velocity.</li>
<li>Unexpected features can harm project velocity in such a way that if not adjusted in time for quality control will cause future iterations to gradually worsen as you build upon a flawed code base.  This continues until eventually you have a "design dead" product.</li>
<li>Over 65% of all functionality that is delivered (which must be maintained) is rarely or never used.</li>
<li>35% of all requirements change during the life of a project.</li>
<li>Using a prioritized list of features, overtime the items will begin to loose value and at some point the time may be better spent elsewhere.</li>
</ul>
<p><strong>Resources</strong></p>
<p><a href="http://www.amazon.com/Innovators-Dilemma-Revolutionary-Business-Essentials/dp/0060521996/ref=sr_1_3?ie=UTF8&#038;qid=1227123608&#038;sr=8-3">The Innovators Delima</a><br />
<a href="http://www.scrumalliance.org/">Scrumalliance.org</a></p>
<p><a class="a2a_dd addtoany_share_save" href="http://www.addtoany.com/share_save?linkurl=http%3A%2F%2Fwww.mikebobiney.com%2F2008%2F11%2F19%2Fusing-scrum-to-control-complex-software%2F&amp;linkname=Using%20Scrum%20to%20control%20complex%20software"><img src="http://www.mikebobiney.com/wp-content/plugins/add-to-any/share_save_171_16.gif" width="171" height="16" alt="Share/Bookmark"/></a> </p>]]></content:encoded>
			<wfw:commentRss>http://www.mikebobiney.com/2008/11/19/using-scrum-to-control-complex-software/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Extreme Programming Tidbits</title>
		<link>http://www.mikebobiney.com/2008/07/08/extreme-programming-tidbits/</link>
		<comments>http://www.mikebobiney.com/2008/07/08/extreme-programming-tidbits/#comments</comments>
		<pubDate>Tue, 08 Jul 2008 19:37:41 +0000</pubDate>
		<dc:creator>Mike Bobiney</dc:creator>
				<category><![CDATA[.NET]]></category>
		<category><![CDATA[Extreme Programming (XP)]]></category>
		<category><![CDATA[Theory]]></category>

		<guid isPermaLink="false">http://mikebobiney.com/archive/2008/07/08/extreme-programming-tidbits.aspx</guid>
		<description><![CDATA[Extreme programming is a language-independent approach to project planning and quality control which aims to lower the cost of changes in development.  There is little to no up-front documentation which allows for a more flexible approach to tackle software problems.  With that said there is controversy which surrounds the subject matter as these practices don't [...]]]></description>
			<content:encoded><![CDATA[<p>Extreme programming is a language-independent approach to project planning and quality control which aims to lower the cost of changes in development.  There is little to no up-front documentation which allows for a more flexible approach to tackle software problems.  With that said there is controversy which surrounds the subject matter as these practices don't come without its drawbacks.</p>
<p>Over the last few days I've been getting into some of the Extreme programming concepts in the book <a href="http://www.amazon.com/eXtreme-NET-Introducing-Programming-Development/dp/0321303636/ref=pd_bbs_sr_1?ie=UTF8&amp;s=books&amp;qid=1215545725&amp;sr=8-1" target="_blank">eXtreme .NET</a>.  The first chapter gives a concise overview of how XP fits into common day business needs.  Here are some key concepts that I took from it:</p>
<ol>
<li><strong><span style="color: #0000ff;">Whole Team</span></strong>: the customer is always available to discuss and resolve issues.</li>
<li><strong><span style="color: #0000ff;">Planning Game</span></strong>: where developers sit down with the customer to discuss features of the software which are brainstormed and given priorities.</li>
<li><strong><span style="color: #0000ff;">Pair Programming</span></strong>: is the practice of having two developers working alongside one another solving a single problem.  Both programmers learn from each other and send along the knowledge to the next person who they pair with.</li>
<li><strong><span style="color: #0000ff;">Test-Driven Development</span>:</strong> writing your test cases before beginning to code your solution not only helps you stay focused on the task at hand, it essentially acts as a safety net against breaking existing logic.</li>
<li><strong><span style="color: #0000ff;">Constant Refactoring</span>:</strong> the process of optimizing your code without loosing functionality.</li>
<li><strong><span style="color: #0000ff;">Spiking</span></strong>: making the effort to experiment and drive your efforts in such a way to learn a new skill which pertains to the project development.  It is often done by solo developers who need a break from pairing.</li>
<li><strong><span style="color: #0000ff;">Continuous Integration</span>:</strong> code gets integrated with the solution after each tasks allowing for the team to ship early and often.</li>
<li><strong><span style="color: #0000ff;">Stand-Up Meetings</span>: </strong>team members meet every day to discuss progress made as well as spread knowledge to the team.</li>
</ol>
<p> </p>
<h2>The <span style="text-decoration: line-through;">Four</span> Five Key Values of XP</h2>
<p> </p>
<h4><strong><span style="text-decoration: underline;">Communication<a href="http://geekswithblogs.net/images/geekswithblogs_net/mikebob/WindowsLiveWriter/ExtremeProgramming_B03A/skateboard-dog_2.jpg"><img style="border-top-width: 0px; border-left-width: 0px; border-bottom-width: 0px; margin: 0px 0px 30px 25px; border-right-width: 0px" src="http://geekswithblogs.net/images/geekswithblogs_net/mikebob/WindowsLiveWriter/ExtremeProgramming_B03A/skateboard-dog_thumb.jpg" border="0" alt="skateboard-dog" width="260" height="194" align="right" /></a></span></strong></h4>
<p>A person's work environment can persuade his or her empowerment to communicate freely.  It is likely there there will be problems if communication is not done properly and frequently.  Even worse, a newcomer to the project could be left out on some important piece of information that would cause a delay in development.</p>
<h4><strong><span style="text-decoration: underline;">Simplicity</span></strong></h4>
<p>Doing the simplest thing possible to move the project forward.  By writing simple code, it is more likely to work.  Only begin to rewrite a more complex solution when the business need calls for it.</p>
<h4><strong><span style="text-decoration: underline;">Feedback</span></strong></h4>
<p>Constant feedback from the customer is essential so you can understand exactly what needs to be done and should be done in small iterations.  This is especially true when priorities change while deadlines need to be met.  Your unit tests provide immediate feedback if your test fails when modifying code.</p>
<h4><strong><span style="text-decoration: underline;">Courage</span></strong></h4>
<p>By working more intensely for a shorter length of time, you are using your time more efficiently as well as allowing yourself more time to be out enjoying life.  Additionally, you must also have the courage to throw away unneeded parts of your code as needs change.</p>
<h4><span style="text-decoration: underline;"><strong>Respect</strong></span></h4>
<p>Having respect for fellow team members by not doing anything which will break the XP practices put in place.  Always striving to produce high quality code throughout the project lifecycle.</p>
<p><a class="a2a_dd addtoany_share_save" href="http://www.addtoany.com/share_save?linkurl=http%3A%2F%2Fwww.mikebobiney.com%2F2008%2F07%2F08%2Fextreme-programming-tidbits%2F&amp;linkname=Extreme%20Programming%20Tidbits"><img src="http://www.mikebobiney.com/wp-content/plugins/add-to-any/share_save_171_16.gif" width="171" height="16" alt="Share/Bookmark"/></a> </p>]]></content:encoded>
			<wfw:commentRss>http://www.mikebobiney.com/2008/07/08/extreme-programming-tidbits/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>
