<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/xsl" media="screen" href="/~d/styles/rss2full.xsl"?><?xml-stylesheet type="text/css" media="screen" href="http://feeds.feedburner.com/~d/styles/itemcontent.css"?><rss 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/" xmlns:feedburner="http://rssnamespace.org/feedburner/ext/1.0" version="2.0">

<channel>
	<title>Agile Dossier » Shaun McGee</title>
	
	<link>http://www.agiledossier.com</link>
	<description>Essays on Agile, Product Management, Teams, Trends and more</description>
	<lastBuildDate>Mon, 25 Feb 2013 13:42:50 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.3.1</generator>
		<atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="self" type="application/rss+xml" href="http://feeds.feedburner.com/AgileDossierShaunMcgee" /><feedburner:info uri="agiledossiershaunmcgee" /><atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="hub" href="http://pubsubhubbub.appspot.com/" /><item>
		<title>You Don’t Need That Document</title>
		<link>http://feedproxy.google.com/~r/AgileDossierShaunMcgee/~3/U-EMpqKrNH4/you-dont-need-that-document</link>
		<comments>http://www.agiledossier.com/you-dont-need-that-document#comments</comments>
		<pubDate>Tue, 08 Nov 2011 01:01:50 +0000</pubDate>
		<dc:creator>agilegeneralist</dc:creator>
				<category><![CDATA[agile]]></category>
		<category><![CDATA[Agile Manifesto]]></category>
		<category><![CDATA[Shaun McGee]]></category>
		<category><![CDATA[agile practices]]></category>
		<category><![CDATA[agile principles]]></category>
		<category><![CDATA[trends]]></category>

		<guid isPermaLink="false">http://www.agiledossier.com/?p=264</guid>
		<description><![CDATA[by Shaun McGee Shaun is a Lead Consultant with ThoughtWorks Inc., and hence my esteemed colleague. Like other ThoughtWorkers he is strongly opinionated about Agile principles and practices and he spares no chance to explain his stance on stuff. In this particular article, Shaun discusses candidly the role of documentation in software projects. Shaun cites how [...]]]></description>
			<content:encoded><![CDATA[<div class="tweetmeme_button" style="float: right; margin-left: 10px;">
			<a href="http://api.tweetmeme.com/share?url=http%3A%2F%2Fwww.agiledossier.com%2Fyou-dont-need-that-document"><br />
				<img src="http://api.tweetmeme.com/imagebutton.gif?url=http%3A%2F%2Fwww.agiledossier.com%2Fyou-dont-need-that-document&amp;style=compact&amp;b=2" height="61" width="50" /><br />
			</a>
		</div>
<p>by <strong><a href="http://www.agiledossier.com/contributors" target="_blank">Shaun McGee</a></strong></p>
<p>Shaun is a Lead Consultant with ThoughtWorks Inc., and hence my esteemed colleague. Like other ThoughtWorkers he is strongly opinionated about Agile principles and practices and he spares no chance to explain his stance on stuff. In this particular article, Shaun discusses candidly the role of documentation in software projects. Shaun cites how there is a qualitative difference between documents produced at different stages of a project and we better start recognizing those differences  <em>now</em>!</p>
<p><strong>Introduction</strong><br />
“We have come to value&#8230;working software over comprehensive documentation.”<br />
The Agile Manifesto speaks to the importance of focusing effort and attention not on the documentation we produce, but rather on the functioning product that results from our work.</p>
<p><strong>Why do we write<a href="http://en.wikipedia.org/wiki/Software_documentation" target="_blank"> software documentation</a></strong>?  Traditionally, it was accepted that by thoroughly documenting the “what” (requirements) and the “how” (specifications) we would be able to effectively develop some software, much like the way careful planning and design can produce a bridge or a house. Unfortunately this just doesn’t work most of the time. You can spell out in great detail what an application should do and how the development team should produce it, but what we often find is that as the system grows from an idea into lines of code the underlying requirements evolve or the original specification turns out to be impractical or impossible.<br />
<span id="more-264"></span><br />
For this reason many agile practitioners (like <a href="http://www.thoughtworks.com" target="_blank">ThoughtWorks</a>) recommend keeping the documentation to a minimum in favor of <a href="http://agilemanifesto.org/principles.html" target="_blank">face-to-face conversation</a>. While there might be a temptation to discard documentation entirely, we know that’s simply not practical; we need some level of documentation as a consumable for later steps in the process. Indeed the complexities of some organizations and the regulation of some industries may require substantial documentation to describe a software system as a deliverable. The important point here is to recognize which purpose (consumable or deliverable) it serves.</p>
<p><strong>So if we’re not going to use these “specifications” to drive the development process, what will we use them for?</strong></p>
<p>If the reason we need some thorough documentation is to satisfy a customer or internal stakeholders, then we should prepare documentation that frames the system in their terms. This might take the form of a user manual, detailed feature description, or training materials. If the purpose is to satisfy some regulatory requirement, we should produce system specifications that comply with that need. In both cases we’re talking about a description of what the system does rather than what we intend for it to do. That’s an important distinction because it can help us to divorce the tasks of “producing documentation” from the process of “conducting analysis” where it has traditionally been tied. The bottom line is that the types of documentation that are suited for these needs are often not useful as a blueprint for software development, nor do traditional requirements specifications typically reflect an accurate picture of what a system is unless we put extensive effort into maintaining thorough version control.<br />
<strong> </strong></p>
<p><strong>So if we’re not producing documentation up front, <em>when </em>will we do it and <em>who </em>should write it?</strong></p>
<p>Why not make the production of supporting documents a discreet task that is part of the lifecycle of a<a href="http://en.wikipedia.org/wiki/User_story" target="_blank"> user story</a>? Let’s say a story typically flows through the following stages:</p>
<p><a href="http://www.agiledossier.com/wp-content/uploads/2011/11/shaun_1.png"><img class="size-medium wp-image-270 aligncenter" title="shaun_1" src="http://www.agiledossier.com/wp-content/uploads/2011/11/shaun_1-300x90.png" alt="" width="376" height="90" /></a></p>
<p>While there should of course be constant communication and collaboration across the team throughout the entire process, there is a team member who has primary responsibility for pushing the story forward at each of these stages. During the Analysis stage, a story is defined and molded by a Business Analyst. In the Development stage, <a href="http://manifesto.softwarecraftsmanship.org/" target="_blank">software craftsmen</a> (developers) turn the idea into working code. In the Quality Analysis stage, test professionals scrutinize the software and try to break it! The customer then evaluates the finished product to ensure it meets her needs and certifies it is Complete.</p>
<p>Let’s imagine that you can add an additional step in the process:</p>
<p><a href="http://www.agiledossier.com/wp-content/uploads/2011/11/shaun_2.png"><img class="size-medium wp-image-281 aligncenter" title="shaun_2" src="http://www.agiledossier.com/wp-content/uploads/2011/11/shaun_2-300x86.png" alt="" width="347" height="92" /></a></p>
<p>Once a collection of related stories reach completion, we can start to consider application features to be reaching a level of maturity. We can take this opportunity to document how a mature feature functions within the system. This can and should happen soon after these stories are completed. We would not, for example, wait until just before a release. If the team is working collaboratively, we should expect anyone to be in a position to contribute to to documentation. Try a <a href="http://en.wikipedia.org/wiki/Wiki" target="_blank">wiki </a>approach that allows the entire team to contribute to a holistic view of the system; team members who play different roles would likely have unique perspectives.</p>
<p>“Simplicity&#8211;the art of maximizing the amount of work not done&#8211;is essential.” (<a href="http://agilemanifesto.org/principles.html" target="_blank">Principles behind the Agile Manifesto</a>)</p>
<img src="http://feeds.feedburner.com/~r/AgileDossierShaunMcgee/~4/U-EMpqKrNH4" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://www.agiledossier.com/you-dont-need-that-document/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		<feedburner:origLink>http://www.agiledossier.com/you-dont-need-that-document</feedburner:origLink></item>
	</channel>
</rss>
