<?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>Xebia Blog &#187; Eelco Gravendeel</title>
	<atom:link href="http://blog.xebia.com/author/egravendeel/feed/" rel="self" type="application/rss+xml" />
	<link>http://blog.xebia.com</link>
	<description>Software development done right!</description>
	<lastBuildDate>Wed, 01 Feb 2012 00:30:00 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.3.1</generator>
		<item>
		<title>What documents to write in an Agile environment</title>
		<link>http://blog.xebia.com/2009/08/09/agile-documentation-the-good-the-bad-and-the-ugly/</link>
		<comments>http://blog.xebia.com/2009/08/09/agile-documentation-the-good-the-bad-and-the-ugly/#comments</comments>
		<pubDate>Sun, 09 Aug 2009 19:31:34 +0000</pubDate>
		<dc:creator>Eelco Gravendeel</dc:creator>
				<category><![CDATA[Agile]]></category>
		<category><![CDATA[General]]></category>
		<category><![CDATA[document]]></category>
		<category><![CDATA[documentation]]></category>

	<!-- AutoMeta Start -->
	<category></category>
	<!-- AutoMeta End -->
	
		<guid isPermaLink="false">http://blog.xebia.com/2009/08/09/agile-documentation-the-good-the-bad-and-the-ugly/</guid>
		<description><![CDATA[Over and over again, the documentation discussion flares up before, during and after projects. What documentation should we make? Why do we need design documents? How can we be sure the correct software is being build if we don&#8217;t have a complete Functional Design Document. If the Functional design document isn&#8217;t in line with the [...]]]></description>
			<content:encoded><![CDATA[<p>Over and over again, the documentation discussion flares up before, during and after projects. What documentation should we make? Why do we need design documents? How can we be sure the correct software is being build if we don&#8217;t have a complete Functional Design Document. If the Functional design document isn&#8217;t in line with the actual software being build, how can we check whether we got what we paid for? etc. etc. etc. <span id="more-2921"></span></p>
<h2>What is the problem anyway?</h2>
<p>The major documentation question asked: <img style="border-top-width: 0px; border-left-width: 0px; border-bottom-width: 0px; margin: 10px 0px 0px 10px; border-right-width: 0px" src="http://blog.xebia.com/wp-content/uploads/2009/08/image.png" border="0" alt="image" width="244" height="184" align="right" /></p>
<blockquote><p><strong>If we do not document everything, how do we know we&#8217;re going to get what we want before, and how can we verify that we got the right stuff after doing the project?</strong></p></blockquote>
<p><span style="background-color: #f5f5ed; color: #45453d;">Of course the question implies an answer: </span></p>
<blockquote><p><span style="background-color: #f5f5ed; color: #45453d;"><strong><em>If we document every aspect of the project thoroughly up front, we know what has to be build before starting the work and we can easily verify whether the product delivered met the original requirements. </em></strong></span></p></blockquote>
<p>The problem of course is the answer was already implied in the question!</p>
<h2>Types of documentation</h2>
<p>In my humble opinion two types of documents live within the (software) project realm, no more, no less:</p>
<ol>
<li>Documents needed for all team members to work on the project.</li>
<li>Documentation to be shipped with the final product.</li>
</ol>
<p>Let us explore these two types and try and figure out what needs to be created, when and to what depth.</p>
<h3>Documents needed for all team members to work on the project</h3>
<p>In an ideal world we would like to hand over all work from one person to another by direct communication; talking to each other, preferably in the same room. There<img style="border-top-width: 0px; border-left-width: 0px; border-bottom-width: 0px; margin: 10px 10px 5px 0px; border-right-width: 0px" src="http://blog.xebia.com/wp-content/uploads/2009/08/image1.png" border="0" alt="image" width="244" height="184" align="left" /> are however plenty of situations where it is more convenient or better to document something. Be it whether we have to transport knowledge through time and space, we need to write something down, because we tend to forget, or maybe writing something down just helps the thinking process.</p>
<p>However, at some point in time we, the software industry, started confusing these kind of work documents with documents that should ship with the product. Hence the weird <em>Idée fixe</em> that functional &amp; technical design documents should be made in line with the actual product developed <span style="text-decoration: underline;">after</span> finishing the project. When questioning people as to why they want to do this, the most common answers contains arguments like:</p>
<ul>
<li>We need to know what was build</li>
<li>For maintenance purposes</li>
<li>When something doesn&#8217;t appear to work, we need to see how it was originally intended</li>
</ul>
<p>All of these reasons are bad reasons to try and maintain some big fat document that was created for the sole purpose to communicate what to build in the first place. After finishing a feature and having shipped it to a production environment, any document which was created during the building process with the intend to support this process has become obsolete!</p>
<h5>How do we know what was build?</h5>
<p>simple, look at the product in the production environment!</p>
<h5>How can we do maintenance without documentation?</h5>
<p>Any document needed to do maintenance should be created as a part of the shippable product. However this is not the same thing as a design document! Most software a) has a not-so-very-long life span (5 year old software is pretty old), Modern day programming languages make it doable the create readable and human understandable software, thus lowering the need to create separate documentation (the code is a large part of the documentation). The important thing here is to determine what kind of documentation is really needed to do maintenance. Find the stakeholders and talk to them! In my experience there are usually a few architecture diagrams and some supporting tables that are used, but most of the describing text is never (ever!) read.</p>
<h5>How can we find out what was originally intended?</h5>
<p>Well &#8230; this isn&#8217;t really important now is it? When some product is being used in a production environment, the only relevant question is: Does this software fulfill our needs. If not, what do we need to add or change to the current working product!  Any debate about what was originally intended is a waste of time.</p>
<p>Apparently we humans have this strange urge for others to acknowledge we were right, before we move on to the p<a href="http://blog.xebia.com/wp-content/uploads/2009/08/sun01852.jpg"><img style="border-top-width: 0px; border-left-width: 0px; border-bottom-width: 0px; margin: 5px 0px 5px 5px; border-right-width: 0px" src="http://blog.xebia.com/wp-content/uploads/2009/08/sun01852-thumb.jpg" border="0" alt="freeimages.co.uk nature images" width="244" height="184" align="right" /></a>art were we can actually work on a solution. It is just so refreshing when you let go of this urge and right away go for the core question; <strong>Do we need to make an alteration to the system?</strong></p>
<p>As soon as you accept that documents that are solely written to support the product creation process are to be disposed of as soon as the project is finished and the product is delivered, you hopefully also can start resisting the urge to make any such document over complete and 100% correct! This is exactly why writing documents is such a time consuming (and therefore expensive!) task. Once you accept that you just need to write down just enough to convey your message or to support your memory, you will also understand that pen &amp; paper, photographs of whiteboard drawings, scribbles on the back of a coaster, story boards, etc. suffice for these purposes!</p>
<p><strong></strong></p>
<h3><strong>Documents that ship with the product</strong></h3>
<p>Depending on the product, the customer, install base, etc. etc. there will be a need to ship a certain amount of documentation as integral part of the product. Typical examples are:</p>
<ul>
<li>User manuals</li>
<li>Deployment manuals</li>
<li>Maintenance manuals (intended for operating the software)</li>
<li>Technical documentation (intended for maintaining the code base)</li>
</ul>
<p>What types of documentation should be shipped with the product is to be established long before declaring the product as done. After all, the product is not done before all parts of the product to be shipped are done! So typically you need to agree what documentation to ship with the product before starting to build. (Especially when in a client-vendor relationship).</p>
<p>When you&#8217;ve agreed on what documentation the product should ship with, you can still be creative as to the form of the documentation. You can write lengthy user manuals, or you could use more 2.0 techniques like screen casting to record the documentation. The latter is generally cheaper (statistically about 10 times cheaper!) and more like likely to actually be used.</p>
<p>Whatever the documents to be written in your project, please stop confusing work documents needed to support the process with documents as an integral part of the final product.</p>
<div name="googleone_share_1" style="position:relative;z-index:5;float: right; margin-left: 10px;"><g:plusone size="small" count="1" href="http://blog.xebia.com/2009/08/09/agile-documentation-the-good-the-bad-and-the-ugly/"></g:plusone></div><p><a class="a2a_dd a2a_target addtoany_share_save" href="http://www.addtoany.com/share_save#url=http%3A%2F%2Fblog.xebia.com%2F2009%2F08%2F09%2Fagile-documentation-the-good-the-bad-and-the-ugly%2F&amp;title=What%20documents%20to%20write%20in%20an%20Agile%20environment" id="wpa2a_2"><img src="http://blog.xebia.com/wp-content/plugins/add-to-any/share_save_171_16.png" width="171" height="16" alt="Share"/></a></p>]]></content:encoded>
			<wfw:commentRss>http://blog.xebia.com/2009/08/09/agile-documentation-the-good-the-bad-and-the-ugly/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>How to manage Scrum and the Loaner Specialist</title>
		<link>http://blog.xebia.com/2008/07/11/how-to-manage-scrum-and-the-loaner-specialist/</link>
		<comments>http://blog.xebia.com/2008/07/11/how-to-manage-scrum-and-the-loaner-specialist/#comments</comments>
		<pubDate>Fri, 11 Jul 2008 09:40:01 +0000</pubDate>
		<dc:creator>Eelco Gravendeel</dc:creator>
		<br />
<b>Warning</b>:  Invalid argument supplied for foreach() in <b>/home/blog.xebia.com/www/wp-content/plugins/autometa/autometa.php</b> on line <b>303</b><br />
		<category><![CDATA[Agile]]></category>
		<category><![CDATA[Project Management]]></category>
		<category><![CDATA[Scrum]]></category>
		<category><![CDATA[role]]></category>
		<category><![CDATA[specialist]]></category>
		<category><![CDATA[specialists]]></category>

	<!-- AutoMeta Start -->
	<!-- AutoMeta End -->
	
		<guid isPermaLink="false">http://blog.xebia.com/2008/07/11/how-to-manage-scrum-and-the-loaner-specialist/</guid>
		<description><![CDATA[Multidisciplinary teams are fine and all that, but how to go about true specialists in the project … where do they fit in? I would like to talk a bit about Specialists who are required to do work for the team, but do not have enough tasks or time to actually be part of the [...]]]></description>
			<content:encoded><![CDATA[<p>Multidisciplinary teams are fine and all that, but how to go about true <a name="OLE_LINK2"></a><a name="OLE_LINK1">specialists </a>in the project … where do they fit in? I would like to talk a bit about Specialists who are required to do work for the team, but do not have enough tasks or time to actually be part of the team. First I will show why it is just not practical or feasible to make some people fulltime team members. After that I will drop some ideas on how to handle these situations.</p>
<p><span id="more-670"></span></p>
<p>After some time, most organizations will get the concept of multi-disciplinary teams. The advantages of having teams consisting of designers / analysts, developers and testers become apparent pretty soon after trying this. Total project time goes down and quality of deliverables goes up. Of course having multi-disciplinary teams makes resource allocation much simpler than doing it the usual waterfall way where the developers could not start before the designers were done and the testers should be allocated after the developers did their thing. Nowadays, doing it Agile, all disciplines can be allocated about the same time for much of the same duration!</p>
<p>But … there are projects out there which are doing Scrum in a cool and multidisciplinary environment, (so far so good); however, from time to time they need a specialist to do some work for the team. Such a task is specific in a manner that no one on the team has the skills (or authority!) to perform the task. An example could be that you need someone with knowledge about some (legacy) system to interface with. Ideally you would want one or more team members to learn that skill. In reality though, this is just not always feasible, e.g. would require expensive training for just a few tasks, interferes with another department’s turf (!!!), etc. . .</p>
<p>There are several ways to handle this organization wise.</p>
<h4><strong>One option</strong></h4>
<p><strong></strong>just “loan” the specialist to do the task at hand and give him back to his normal department / job after the task is done. This option has the advantage of the specialist being distracted from his or her normal job the least while the team can continue with the other, “normal” team tasks, in the mean time. There are some drawbacks though:</p>
<ol>
<li>Resource allocation!
<p>You might get a resource allocation problem since the specialist’s main responsibilities are in his / her day-to-day work. This would introduce a major and maybe even reoccurring impediment for the team, since the specialist is not always available to do work for the team when required. This problem can be dealt with by reserving some time in the specialists “normal” schedule, so helping out another team doesn’t conflict with his / her day-to-day tasks. Another thing is to try and identify the specialist task well in advance (maybe even a sprint in advance) so the required time can be allocated.</p?</li>
<li>Is the specialist committed (enough)?
<p>Another risk is that the specialist is not as committed to the projects results as are the other team members. The commitment problem should ideally not be there at all, since all people within the company hopefully share the same company goals. It would be obvious that the project results contribute to the company’s results, thus anybody committed to the company results should be committed to the project results. Note that a lack of commitment usually is a result of people being called on not getting “their own” work done and / or do not get credit for lending their specialist services to (other) projects. So this can be helped by freeing up some time to help out your colleagues.</p>
</li>
<li>Task switching is a major form of waste!
<p>As most of us know: task switching consumes lots of time and should be avoided as much as possible. Therefore: try a save up several tasks for the specialist which can be done sequentially. You won’t avoid task switching all together, but at least you can try to minimize it.</p>
</li>
</ol>
<p>For this option you’ll have to make very sure all prerequisites for the specialist’s task are met before the specialist starts. In general people find it very annoying having to lend their services to a team when the task is not yet completely outlined.</p>
<h4>Another option</h4>
<p>Add the specialist to the team for one or more sprints. This requires the specialist to be exempted from his normal duties of course, but immediately gives him the much needed focus to do the job right. Biggest problem with this solution is: who’s going to do the specialists “normal” job while he is busy helping out with the project. Usually this is something that can be worked out with other specialists or a department manager just fine. As long as the period the specialist is unavailable for normal duties is not too long and plan able.</p>
<h4>Overall</h4>
<p>For both options it is best if the specialist can work in the team-room for the duration of the task / sprint. This encourages communication, minimizes distractions from the “normal” job and gives the specialist the feeling of being part of the team.</p>
<p>Whatever for you choose, make sure to evaluate it! During retrospections and other feedback moments, find out whether the chosen solution works for both the team and the specialist and find out whether you can improve on it. You might find that some skills can be learned by the “regular” team members after all or you need more of the specialist’s time so he / she can be added to the team.</p>
<h4>Conclusion</h4>
<p>in some cases it is just unavoidable that you need a specialist to do some tasks that the “normal” team members are just not trained for or skilled at. I like the solution best to add the specialist to the team for one or more sprints until the specialist job is done. But loaning the specialist for the duration of the tasks at hand can be more practical when there is just not enough work for the specialist to fill a sprint.</p>
<p>Beware of task switching though! It is one of the majors forms of waste!</p>
<div name="googleone_share_1" style="position:relative;z-index:5;float: right; margin-left: 10px;"><g:plusone size="small" count="1" href="http://blog.xebia.com/2008/07/11/how-to-manage-scrum-and-the-loaner-specialist/"></g:plusone></div><p><a class="a2a_dd a2a_target addtoany_share_save" href="http://www.addtoany.com/share_save#url=http%3A%2F%2Fblog.xebia.com%2F2008%2F07%2F11%2Fhow-to-manage-scrum-and-the-loaner-specialist%2F&amp;title=How%20to%20manage%20Scrum%20and%20the%20Loaner%20Specialist" id="wpa2a_4"><img src="http://blog.xebia.com/wp-content/plugins/add-to-any/share_save_171_16.png" width="171" height="16" alt="Share"/></a></p>]]></content:encoded>
			<wfw:commentRss>http://blog.xebia.com/2008/07/11/how-to-manage-scrum-and-the-loaner-specialist/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Risk management versus the Impediment List</title>
		<link>http://blog.xebia.com/2007/12/19/risk-management-versus-the-impediment-list/</link>
		<comments>http://blog.xebia.com/2007/12/19/risk-management-versus-the-impediment-list/#comments</comments>
		<pubDate>Wed, 19 Dec 2007 09:56:39 +0000</pubDate>
		<dc:creator>Eelco Gravendeel</dc:creator>
				<category><![CDATA[Agile]]></category>
		<category><![CDATA[Project Management]]></category>
		<category><![CDATA[Scrum]]></category>

	<!-- AutoMeta Start -->
	<category>risks</category>
	<category>risk</category>
	<category>materializes</category>
	<category>impediments</category>
	<category>impediment</category>
	<category>negative</category>
	<category>obstacles</category>
	<category>managing</category>
	<!-- AutoMeta End -->
	
		<guid isPermaLink="false">http://blog.xebia.com/2007/12/19/risk-management-versus-the-impediment-list/</guid>
		<description><![CDATA[Just the other day someone asked me: “what is the difference between managing risks and working the impediment list?”. At that time I didn’t get much further than &#8220;impediments may be risks and they may already be existing problems, but not all risks have to become impediments&#8221;… A correct answer in my opinion, but not [...]]]></description>
			<content:encoded><![CDATA[<p class="MsoNormal">Just the other day someone asked me: “what is the difference between managing risks and working the impediment list?”. At that time I didn’t get much further than &#8220;impediments may be risks and they may already be existing problems, but not all risks have to become impediments&#8221;… A correct answer in my opinion, but not a very clear or complete one. So let’s see if I can provide a better answer.</p>
<p><span id="more-356"></span></p>
<p class="MsoNormal">To answer the question we will have to establish a definition for both. Let’s start with impediments. Assuming we&#8217;re doing Scrum as a way of getting the work done, an impediment is everything that slows down work or stops it completely. In other words, impediments are obstacles that have a negative impact on the sprints&#8217; velocity. Typical examples include missing or incomplete information about a certain user story or the lack of tools or hardware required to complete the work.</p>
<p class="MsoNormal">Risks on the other hand are possible events that, if they do occur, have a negative impact on the desired outcome of the project. Of course this includes events that impact sprint velocity, but are not limited to this. Negative impact can also mean some event causing a lack of performance in the final system to occur. For example, we assumed to be able to use a certain hardware platform to get the performance we needed, but the risk exists that the intended hardware just will not deliver the promised speed.</p>
<p class="MsoNormal">Note that something that is sure to happen (and has a negative impact on your project&#8217;s outcome) is not a risk, but a problem! Problems always have to be dealt with, so put the required actions on the backlog. Dealing with problems is more like crisis management and not risk management. Whenever a risk materializes it has become a problem. Any mitigation work, required to handle the situation after a risk has materialized should also be put on the backlog.</p>
<p class="MsoNormal">The most important difference between risks and impediments is that risks are possible events and obstacles that <u>could</u> occur and impediments, in general, are already reality.</p>
<p class="MsoNormal">Now that we have established that there is indeed a difference between impediments and risks, we can now answer another question: “Why manage both and not just the impediments?”. Management of both impediments and risks is very important. Managing your impediments is pretty obvious; these are obstacles which are already upon us. The team is experiencing some sort of blockage which stops them from achieving maximum velocity. So removing these obstacles should make work go faster. This minimizes the risk of not meeting deadlines for major milestones or even the entire project.</p>
<p class="MsoNormal">Acquiring and managing risks is just as important as managing the impediment list. Although risks are not problems yet and may even never materialize, it is very important to know which risks there are and what you are going to do about it if and when they materialize. By determining both the impact of a risk after it should materialize and the chance it actually could materialize you can determine how important it is to manage a certain risk. You could choose to take actions to prevent the risk from happening (removing the risk) or do some preparation work which helps minimizing impact when the risk materializes. Note that some risks are just not worth preparing for. For example: If a space shuttle should crash on the building your team is working in the project will most probably fail, the chance if such an event happening however is close to zero, so you do not want to waste valuable resources in managing this risk. On the other hand, the chance that any team member comes down with the flu is very real. The impact is a delay in your project. If this is not acceptable you will have to do something to minimize impact when this risk materializes, such as overstaffing or adding more slack into sprint planning.</p>
<p class="MsoNormal">In Scrum the ScrumMaster is responsible for creating, maintaining and working the impediment list. The ScrumMaster is responsible for getting the items on the list resolved. Note that he/she is not solely responsible actually resolving the items, but at least should convene impediments with someone who actually can resolve that impediment.</p>
<p class="MsoNormal">Managing the risks could be a job for the ScrumMaster too, but as the project gets bigger or spans more than one team, there should be a Project Manager involved. It is then his/her task to get possible risks identified and manage the list. This is not the responsibility of the ScrumMaster since there are risks that supersede the span of control of one team. Next to that, the ScrumMaster is probably busy enough working the impediments, without having to worry about and take action to prevent things that could happen.</p>
<div name="googleone_share_1" style="position:relative;z-index:5;float: right; margin-left: 10px;"><g:plusone size="small" count="1" href="http://blog.xebia.com/2007/12/19/risk-management-versus-the-impediment-list/"></g:plusone></div><p><a class="a2a_dd a2a_target addtoany_share_save" href="http://www.addtoany.com/share_save#url=http%3A%2F%2Fblog.xebia.com%2F2007%2F12%2F19%2Frisk-management-versus-the-impediment-list%2F&amp;title=Risk%20management%20versus%20the%20Impediment%20List" id="wpa2a_6"><img src="http://blog.xebia.com/wp-content/plugins/add-to-any/share_save_171_16.png" width="171" height="16" alt="Share"/></a></p>]]></content:encoded>
			<wfw:commentRss>http://blog.xebia.com/2007/12/19/risk-management-versus-the-impediment-list/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
	</channel>
</rss>
<!-- This Quick Cache file was built for (  blog.xebia.com/author/egravendeel/feed/ ) in 6.16694 seconds, on Feb 9th, 2012 at 5:21 pm UTC. -->
<!-- This Quick Cache file will automatically expire ( and be re-built automatically ) on Feb 9th, 2012 at 6:21 pm UTC -->
