<?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>Rough Sea Games &#187; Management</title>
	<atom:link href="http://blog.rough-sea.com/category/management/feed/" rel="self" type="application/rss+xml" />
	<link>http://blog.rough-sea.com</link>
	<description>Indie game development</description>
	<lastBuildDate>Sun, 29 Jan 2012 12:19:05 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=</generator>
<image>
			<title>Rough Sea Games</title>
			<url>/wp-content/uploads/2008/10/rsg_rss-feed.jpg</url>
			<link>http://blog.rough-sea.com</link>
			<width>144</width>
			<height>95</height>
			<description>Indie game development</description>
		</image>		<item>
		<title>Common project management mistakes: Estimating tasks (part 2)</title>
		<link>http://blog.rough-sea.com/2009/06/common-project-management-mistakes-estimating-tasks-part-2/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=common-project-management-mistakes-estimating-tasks-part-2</link>
		<comments>http://blog.rough-sea.com/2009/06/common-project-management-mistakes-estimating-tasks-part-2/#comments</comments>
		<pubDate>Tue, 09 Jun 2009 14:19:46 +0000</pubDate>
		<dc:creator>Joe Cool</dc:creator>
				<category><![CDATA[Management]]></category>
		<category><![CDATA[Methodology]]></category>
		<category><![CDATA[Tips]]></category>
		<category><![CDATA[crunch]]></category>
		<category><![CDATA[estimation]]></category>
		<category><![CDATA[mistakes]]></category>
		<category><![CDATA[project management]]></category>
		<category><![CDATA[tasks]]></category>

		<guid isPermaLink="false">http://blog.rough-sea.com/?p=443</guid>
		<description><![CDATA[<a href="http://api.tweetmeme.com/share?url=http%3A%2F%2Fblog.rough-sea.com%2F2009%2F06%2Fcommon-project-management-mistakes-estimating-tasks-part-2%2F"> <img src="http://api.tweetmeme.com/imagebutton.gif?url=http%3A%2F%2Fblog.rough-sea.com%2F2009%2F06%2Fcommon-project-management-mistakes-estimating-tasks-part-2%2F&#38;style=compact&#38;b=2" height="61" width="50" /> </a> <p>Hi there,</p> <p>we were quite busy over the last weeks,  so updates of our blog are currently reduced. We are only going to post once a week in the upcoming month, but this should improve the quality.</p> <p>Today I will continue my project management series.  In my &#8230; </p><p><a class="more-link block-button" href="http://blog.rough-sea.com/2009/06/common-project-management-mistakes-estimating-tasks-part-2/">Continue reading &#187;</a>]]></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%2Fblog.rough-sea.com%2F2009%2F06%2Fcommon-project-management-mistakes-estimating-tasks-part-2%2F"><br />
				<img src="http://api.tweetmeme.com/imagebutton.gif?url=http%3A%2F%2Fblog.rough-sea.com%2F2009%2F06%2Fcommon-project-management-mistakes-estimating-tasks-part-2%2F&amp;style=compact&amp;b=2" height="61" width="50" /><br />
			</a>
		</div>
<p>Hi there,</p>
<p>we were quite busy over the last weeks,  so updates of our blog are currently reduced. We are only going to post once a week in the upcoming month, but this should improve the quality.</p>
<p>Today I will continue my project management series.  In my first post I described the common mistakes which are often happening when estimating tasks:</p>
<p>- Mistake 1: Estimation is not done by the task owner<br />
- Mistake 2: The task has no proper description<br />
- Mistake 3:  Estimation is done by averaging worst case with best case scenarios<br />
- Mistake 4:  The tasks are too big<br />
- Mistake 5: The tasks have unclear dependencies<br />
- Mistake 6: The owner puts some unknown buffer time into the estimation</p>
<p>Please check out the first <a href="http://blog.rough-sea.com/2009/01/common-project-management-mistakes-estimating-tasks-part1/" target="_self">part</a> of this article to find viable solutions to those mistakes.</p>
<p>The mistakes I wrote about are not really specific to a single department; most of them are quite common problems.  Unfortunately, there is one department where task estimation can be very difficult.  It&#8217;s obviously the programming department that I have in mind. Estimating tasks with programmers is quite an awkward  business.</p>
<p>You need lots of knowledge and experience to get numbers that are even close to realistic.  As a project manager you may wonder why this is so complicated and why programmers&#8217; estimates are so often unreliable.  There are several reasons:</p>
<p><strong>Mistake 7:</strong></p>
<p>Taking the estimates of a rookie programmer as the final estimate</p>
<p><em>Solution:</em><br />
Programmer performance varies by a factor of 10, which means a very good programmer can solve a given problem ten times faster than a bad one/rookie. No problem, you think: just let the slowest programmer estimate the task. That will unfortunately not solve your problem.</p>
<p>Young programmers tend to overrate their skills and dramatically underestimate tasks. So let the lead programmers, who are able to rate programmer performance as well as task difficulty, review the rookie&#8217;s estimate. The more experienced programmers check the estimate, the better it gets.</p>
<p><strong>Mistake 8:</strong></p>
<p>The buffer time for the programming tasks is the same as for any other task in the project plan</p>
<p><em>Solution:</em><br />
This is nothing new and a lot of people have written about this problem, but unfortunately it&#8217;s still not accepted as an unalterable fact. Maybe it&#8217;s because of the certainty that there is no simple formula to determine the right buffer time.</p>
<p>It really completely depends on your programming team. You might have a 100% or even 200% buffer time and it&#8217;s not enough. Track real life data and your estimates,  compare them, learn from them . Every programmer has his own speed and estimation techniques.  Find out which ones are reliable and which are not and adjust your buffers accordingly.</p>
<p><strong>Mistake 9:</strong></p>
<p>Assuming that a programmer programs 8 hours a day</p>
<p><em>Solution:</em><br />
If a programmer tells you he needs one day for the task, does that mean one real life day? It depends, again, on the programmer, but you should not ask how many days; instead you should ask &#8220;how many hours do you need?&#8221;. This is very important because a rookie programmer might not have realized yet that his effective  programming time is only 4 to 5 hours a day.</p>
<p><strong>Mistake 10:</strong></p>
<p>Changing numbers in the project plan in order to change reality</p>
<p><em>Solution:</em><br />
Project managers very often reduce the (massive) programming buffer times after estimation is complete, because it tightens the project schedule and seems to save lots of money.</p>
<p>Well you know the answer already: this does NOT change reality and you will not save a single cent. Instead it will cost you a lot of money! Never reduce programming buffer times unless you are absolutely sure it can be done faster.  To put programmers into a crunch because you reduced their necessary buffer times will damage your reputation, and the team will not trust you anymore and will sneak their own buffer times in their upcoming estimations.</p>
<p>Next time I will talk about <strong>crunch</strong>, a very common technique to waste money and lose good employees.</p>
<p>That&#8217;s it for today, thanks for your time <img src='http://blog.rough-sea.com/wp-includes/images/smilies/icon_wink.gif' alt=';)' class='wp-smiley' /> .</p>
<p>Cheers,<br />
Matthias</p>
<img src="http://blog.rough-sea.com/?ak_action=api_record_view&id=443&type=feed" alt="" /><p><a class="a2a_dd a2a_target addtoany_share_save" href="http://www.addtoany.com/share_save#url=http%3A%2F%2Fblog.rough-sea.com%2F2009%2F06%2Fcommon-project-management-mistakes-estimating-tasks-part-2%2F&amp;title=Common%20project%20management%20mistakes%3A%20Estimating%20tasks%20%28part%202%29" id="wpa2a_2">Share/Bookmark</a></p>]]></content:encoded>
			<wfw:commentRss>http://blog.rough-sea.com/2009/06/common-project-management-mistakes-estimating-tasks-part-2/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>Common project management mistakes: Estimating tasks (part1)</title>
		<link>http://blog.rough-sea.com/2009/01/common-project-management-mistakes-estimating-tasks-part1/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=common-project-management-mistakes-estimating-tasks-part1</link>
		<comments>http://blog.rough-sea.com/2009/01/common-project-management-mistakes-estimating-tasks-part1/#comments</comments>
		<pubDate>Sun, 11 Jan 2009 22:53:59 +0000</pubDate>
		<dc:creator>Matthias</dc:creator>
				<category><![CDATA[Industry]]></category>
		<category><![CDATA[Management]]></category>
		<category><![CDATA[Methodology]]></category>
		<category><![CDATA[Tips]]></category>
		<category><![CDATA[estimating tasks]]></category>
		<category><![CDATA[mistakes]]></category>
		<category><![CDATA[project management]]></category>

		<guid isPermaLink="false">http://www.rough-sea.com/wordpress/?p=64</guid>
		<description><![CDATA[<a href="http://api.tweetmeme.com/share?url=http%3A%2F%2Fblog.rough-sea.com%2F2009%2F01%2Fcommon-project-management-mistakes-estimating-tasks-part1%2F"> <img src="http://api.tweetmeme.com/imagebutton.gif?url=http%3A%2F%2Fblog.rough-sea.com%2F2009%2F01%2Fcommon-project-management-mistakes-estimating-tasks-part1%2F&#38;style=compact&#38;b=2" height="61" width="50" /> </a> <p>Over the last several years I have managed and participated in different projects of different sizes. I made a lot of mistakes, some of them more than once. This time I want to talk about mistakes in estimating the time to complete tasks.</p> <p>Estimating tasks is really &#8230; </p><p><a class="more-link block-button" href="http://blog.rough-sea.com/2009/01/common-project-management-mistakes-estimating-tasks-part1/">Continue reading &#187;</a>]]></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%2Fblog.rough-sea.com%2F2009%2F01%2Fcommon-project-management-mistakes-estimating-tasks-part1%2F"><br />
				<img src="http://api.tweetmeme.com/imagebutton.gif?url=http%3A%2F%2Fblog.rough-sea.com%2F2009%2F01%2Fcommon-project-management-mistakes-estimating-tasks-part1%2F&amp;style=compact&amp;b=2" height="61" width="50" /><br />
			</a>
		</div>
<p>Over the last several years I have managed and participated in different projects of different sizes. I made a lot of mistakes, some of them more than once. This time I want to talk about mistakes in estimating the time to complete tasks.</p>
<p>Estimating tasks is really tough work, and it&#8217;s done wrong most of the time. Estimations are never precise. I think that most project managers are aware of this problem, but may not know how to get better information out of their team.</p>
<p><strong>Mistake 1:</strong></p>
<p>The task is estimated by somebody who is not working on it &#8212; maybe by the lead, which is even worse.</p>
<p><em>Solution:</em><br />
Tasks should be estimated by the owner of the task with the help of his colleagues or his lead. Programmers especially have different working speeds, which can be ranked from 1-10.  This means a very good programmer can be 10 times faster than a very bad one.</p>
<p><strong>Mistake 2:</strong></p>
<p>The task has no proper description and/or is unclear to its owner.</p>
<p><em>Solution:</em><br />
How do you know if the task has a proper description? Well, it&#8217;s a mixture of common sense and experience. If you, as a project manager, do not understand the task (e.g. it&#8217;s too technical), it might be already a very good hint. Tasks should be described non-technically, understandably and in only a few sentences. If you prefer working with user stories I would recommend to you this <a href="http://www.amazon.com/Agile-Estimating-Planning-Robert-Martin/dp/0131479415" target="_self">book</a> from Mike Cohen.</p>
<p><strong>Mistake 3:</strong></p>
<p>The task is estimated with worst case and best case scenarios and the average is taken for the project plan.</p>
<p><em>Solution:<br />
</em>This doesn&#8217;t make sense because the owner has to make 2 estimations. In the worst case scenario there is probably a hidden buffer time, which is not obvious to the reader when checking the project plan. Ask only for one estimation from the owner or the team when estimating the tasks.  It&#8217;s much clearer to them and they know you will add the buffer.</p>
<p><strong>Mistake 4:</strong></p>
<p>The task is too big and cannot properly estimated by its owner (tasks with 8- 16 hours are a maximum)</p>
<p><em>Solution:</em><br />
As soon as a task is bigger than 2 days, it is time to break it down, because nobody can foresee the problems that are going to arise when approaching such a big issue. If you are not able to break down the task (e.g. because of a missing design),  but you need the information desperately, you should estimate it and add at least a 100% buffer. Don&#8217;t forget to mark that task with &#8220;??&#8221;, to be sure to break it down later and re-estimate it.</p>
<p><strong>Mistake 5:</strong></p>
<p>The task has dependencies on other tasks that are not clear to its owner.</p>
<p><em>Solution:<br />
</em>This is not an easy problem. Try to make tasks as independent as possible when defining them. If you work with user stories, add the dependencies of the task to your war-room board and check if your priorities match the dependencies.  It is really hard work for the designer and project manager to get this right. Communicate as much as possible with the team to avoid dependency hell early: it can vaporize your whole project plan if you do not care about it.</p>
<p><strong>Mistake 6:</strong></p>
<p>The owner puts some unknown buffer time into his estimation</p>
<p><em>Solution:</em><br />
Again you need your soft skills and experience here to identify this problem. Some people just add buffer times to be sure they can handle the task. Be open with them, tell them that you will add enough buffer time, holiday and sickness absence.  They will only tell you the right time if they trust you. Collect all the estimation data of each owner to get an idea of how well they estimate over the whole project.</p>
<p>I have some more mistakes on my list, but It is late already. So stay tuned for more in the upcoming days. Cheers for reading and I would love to hear your experiences&#8230; <img src='http://blog.rough-sea.com/wp-includes/images/smilies/icon_wink.gif' alt=';)' class='wp-smiley' /> </p>
<img src="http://blog.rough-sea.com/?ak_action=api_record_view&id=64&type=feed" alt="" /><p><a class="a2a_dd a2a_target addtoany_share_save" href="http://www.addtoany.com/share_save#url=http%3A%2F%2Fblog.rough-sea.com%2F2009%2F01%2Fcommon-project-management-mistakes-estimating-tasks-part1%2F&amp;title=Common%20project%20management%20mistakes%3A%20Estimating%20tasks%20%28part1%29" id="wpa2a_4">Share/Bookmark</a></p>]]></content:encoded>
			<wfw:commentRss>http://blog.rough-sea.com/2009/01/common-project-management-mistakes-estimating-tasks-part1/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Use Mumble as a virtual conference room</title>
		<link>http://blog.rough-sea.com/2008/12/use-mumble-as-a-virtual-conference-room/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=use-mumble-as-a-virtual-conference-room</link>
		<comments>http://blog.rough-sea.com/2008/12/use-mumble-as-a-virtual-conference-room/#comments</comments>
		<pubDate>Wed, 03 Dec 2008 16:23:04 +0000</pubDate>
		<dc:creator>Ole</dc:creator>
				<category><![CDATA[Company]]></category>
		<category><![CDATA[Management]]></category>
		<category><![CDATA[Server Administration]]></category>
		<category><![CDATA[conference room]]></category>
		<category><![CDATA[installation]]></category>
		<category><![CDATA[mumble]]></category>
		<category><![CDATA[murmur]]></category>
		<category><![CDATA[voice over ip]]></category>

		<guid isPermaLink="false">http://blog.rough-sea.com/?p=236</guid>
		<description><![CDATA[<a href="http://api.tweetmeme.com/share?url=http%3A%2F%2Fblog.rough-sea.com%2F2008%2F12%2Fuse-mumble-as-a-virtual-conference-room%2F"> <img src="http://api.tweetmeme.com/imagebutton.gif?url=http%3A%2F%2Fblog.rough-sea.com%2F2008%2F12%2Fuse-mumble-as-a-virtual-conference-room%2F&#38;style=compact&#38;b=2" height="61" width="50" /> </a> <p>Hello folks,</p> <p>I am sure you know that communication is one key for successful development or project work. Companies usually have a conference room, or you meet somebody in the hall or in the elevator that you need to talk to. But nowadays people work from home &#8230; </p><p><a class="more-link block-button" href="http://blog.rough-sea.com/2008/12/use-mumble-as-a-virtual-conference-room/">Continue reading &#187;</a>]]></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%2Fblog.rough-sea.com%2F2008%2F12%2Fuse-mumble-as-a-virtual-conference-room%2F"><br />
				<img src="http://api.tweetmeme.com/imagebutton.gif?url=http%3A%2F%2Fblog.rough-sea.com%2F2008%2F12%2Fuse-mumble-as-a-virtual-conference-room%2F&amp;style=compact&amp;b=2" height="61" width="50" /><br />
			</a>
		</div>
<p>Hello folks,</p>
<p>I am sure you know that communication is one key for successful development or project work. Companies usually have a conference room, or you meet somebody in the hall or in the elevator that you need to talk to. But nowadays people work from home in different cities, countries or even continents. Therefore you need a virtual place to meet.</p>
<p>That&#8217;s why I am going to write a little about Murmur / Mumble for those who haven&#8217;t heard about it. Mumble is a voice over IP service, like Battlecom, Teamspeak or Ventrillo.  The advantages of Mumble are an excellent quality of speech,  database support, server &amp; client support for all major operating systems, text chat, and encrypted traffic &#8212; all for free!</p>
<p>First of all, we should differentiate between the server (Murmur) and the client (Mumble). Murmur defines and handles all Mumble requests: a typical client / server system.<br />
But enough of this chitchat. We have to set up a Murmur!</p>
<p><strong>Installation of Murmur:</strong></p>
<p>Therefore we should start with installing Murmur. Installing Murmur on Windows shouldn&#8217;t be a problem, but what about Linux? All common distributions offer a binary packet of Murmur that you can install via your package management tool like yast, yum install &#8220;packetname&#8221; , apt-get install &#8220;packetname&#8221;, etc.</p>
<p>I am going to describe another way and will use the<br />
&#8220;<strong>Static Linux Server stable packet</strong>&#8221; which you can download <a href="http://mumble.sourceforge.net.">here. </a></p>
<p>Download murmur-static_x86-X.XX.tar.bz2.</p>
<p>Now untar the compressed file.</p>
<p><code> tar xfvz murmur-static_x86-X.XX.tar.bz2 </code></p>
<p>Go to the directory which has been untared or move it for example to /home/murmur. Of course you can also run Murmur in the current directory.</p>
<p>Now it is time to decide whether to use SQLite or a &#8220;real&#8221; database like MySQL. SQlite has the advantage of running with Murmur right out of the box. The disadvantage is command-line-based user management, like adding new users or administrators. With MySQL you could use phpMyadmin (if installed) to do the management, so future administrators wouldn&#8217;t need shell access to add new users.</p>
<p>So if you want to use SQLite, ignore the MySQL part of the murmur.ini</p>
<p>Create a database or use an existing database of MySQL!</p>
<p><strong>Edit the murmur.ini with MySQL support: </strong><br />
<pre><code>
database=putyourdatabasenameinhere</code></pre></p>
<p>dbDriver=QMYSQL<br />
dbUsername=database username<br />
dbPassword=Ilove-securePasswords<br />
dbHost=localhost #localhost or the ip of the remote database<br />
dbPort=3306 #usually the default port of mysql is 3306<br />
dbPrefix=murmur_ #prefix name of your tables within the database</p>
<p>### <strong>SQlite and MySQL has to edit the lines below </strong> ###</p>
<p>host= the ip or domain # if you want to bind the murmur server to a default address</p>
<p>port=64738 #port you use for your murmur server</p>
<p>serverpassword=NicePassword # password for non-registered users.  Keep it empty for no password login</p>
<p>Save the murmur.ini and exit it.</p>
<p>Now set up a superuser with the following command:</p>
<p><code>./murmur.x86 -ini murmur.ini -supw </code></p>
<p>Under Windows, of course, use cmd and type murmur.exe instead of murmur.x86</p>
<p>Now the superuser is saved in the database.</p>
<p>That&#8217;s it!</p>
<p>Murmur is running. Now you can login as &#8220;superuser&#8221; with your Mumble client and configure the rooms with a helpful GUI. Click on &#8220;channel&#8221; and then &#8220;add&#8221;. Now you can add a channel/room. This shouldn&#8217;t be a problem.</p>
<p>Enjoy your virtual conference room!</p>
<p>Documentation is available at <a href="http://mumble.sourceforge.net"> mumble.sourceforge.net</a></p>
<img src="http://blog.rough-sea.com/?ak_action=api_record_view&id=236&type=feed" alt="" /><p><a class="a2a_dd a2a_target addtoany_share_save" href="http://www.addtoany.com/share_save#url=http%3A%2F%2Fblog.rough-sea.com%2F2008%2F12%2Fuse-mumble-as-a-virtual-conference-room%2F&amp;title=Use%20Mumble%20as%20a%20virtual%20conference%20room" id="wpa2a_6">Share/Bookmark</a></p>]]></content:encoded>
			<wfw:commentRss>http://blog.rough-sea.com/2008/12/use-mumble-as-a-virtual-conference-room/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Scrum and XP for distributed teams (part two)</title>
		<link>http://blog.rough-sea.com/2008/10/scrum-and-xp-for-distributes-teams-part-two/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=scrum-and-xp-for-distributes-teams-part-two</link>
		<comments>http://blog.rough-sea.com/2008/10/scrum-and-xp-for-distributes-teams-part-two/#comments</comments>
		<pubDate>Mon, 20 Oct 2008 08:47:21 +0000</pubDate>
		<dc:creator>Matthias</dc:creator>
				<category><![CDATA[Management]]></category>
		<category><![CDATA[Methodology]]></category>
		<category><![CDATA[Programming]]></category>
		<category><![CDATA[Tips]]></category>
		<category><![CDATA[collective code ownership]]></category>
		<category><![CDATA[motivation]]></category>
		<category><![CDATA[refactoring]]></category>
		<category><![CDATA[remote pair programming]]></category>

		<guid isPermaLink="false">http://blog.rough-sea.com/?p=139</guid>
		<description><![CDATA[<a href="http://api.tweetmeme.com/share?url=http%3A%2F%2Fblog.rough-sea.com%2F2008%2F10%2Fscrum-and-xp-for-distributes-teams-part-two%2F"> <img src="http://api.tweetmeme.com/imagebutton.gif?url=http%3A%2F%2Fblog.rough-sea.com%2F2008%2F10%2Fscrum-and-xp-for-distributes-teams-part-two%2F&#38;style=compact&#38;b=2" height="61" width="50" /> </a> <p>Please check my last <a title="blog entry" href="http://blog.rough-sea.com/2008/09/scrum-and-xp-for-distributed-teams-part-one" target="_blank">blog entry</a> for the background to this post.</p> <p>This time I will focus a little bit more on the XP side and explain what exactly we practise here.</p> <p>Step 5 &#8211; regular pair programming sessions</p> <p>Unfortunately, we are not &#8230; </p><p><a class="more-link block-button" href="http://blog.rough-sea.com/2008/10/scrum-and-xp-for-distributes-teams-part-two/">Continue reading &#187;</a>]]></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%2Fblog.rough-sea.com%2F2008%2F10%2Fscrum-and-xp-for-distributes-teams-part-two%2F"><br />
				<img src="http://api.tweetmeme.com/imagebutton.gif?url=http%3A%2F%2Fblog.rough-sea.com%2F2008%2F10%2Fscrum-and-xp-for-distributes-teams-part-two%2F&amp;style=compact&amp;b=2" height="61" width="50" /><br />
			</a>
		</div>
<p>Please check my last <a title="blog entry" href="http://blog.rough-sea.com/2008/09/scrum-and-xp-for-distributed-teams-part-one" target="_blank">blog entry</a> for the background to this post.</p>
<p>This time I will focus a little bit more on the XP side and explain what exactly we practise here.</p>
<p><strong>Step 5 &#8211; regular pair programming sessions</strong></p>
<p>Unfortunately, we are not able to pair program very often. We currently try to meet up once a week and have a 3 &#8211; 4 hour pair programming session. At this session we go through as much code as possible and talk about the architecture and the current design flaws. We try to get hold of the worst things we did while coding on our own, and start refactoring on the spot to learn a little bit more of each other&#8217;s code.</p>
<p>Sometimes pair programming is not possible because people live too far away, so we are looking into <strong>remote pair programming</strong>. We have not established it yet, but have collected lots of information. Please checkout <a href="http://blog.lathi.net/articles/2007/10/09/remote-pair-programming" target="_blank">Doug Alcorn&#8217;s Blog</a> or <a href="http://andrzejonsoftware.blogspot.com/2008/02/remote-pair-programming.html " target="_blank">Andrzej Krzywda&#8217;s     Blog</a> for some field reports.  We will probably try VNC combined with Skype, because Flash Develop (our current IDE) does not have any collaboration support yet.</p>
<p><strong>Step 6 &#8211; collective code ownership is even more important</strong></p>
<p>CCO means that everybody can make changes and fix bugs anywhere in the code. There is <strong>not a single line</strong> of code in the project that is under the control of only one person. A good description of code ownership can be found at <a href="http://www.martinfowler.com/bliki/CodeOwnership.html " target="_blank">Martin Fowler&#8217;s Blog</a>. As mentioned, we know each other very well already. If this weren&#8217;t the case,  CCO would be much more of a hassle.  A lot of trust and a lot of communication is necessary and coding divas are not allowed. Fortunately there is no diva in our team yet.</p>
<p>CCO is key for the success of a distributed team, because it helps to spread the knowledge of the code, systems and architecture of the project among team members (as pair programming does). Programmers will perform much better when they know how to use a specific system and how to adapt it to their needs. Not everybody on the web thinks that CCO is a the best idea ever; please check <a href="http://weblogs.asp.net/ralfw/archive/2006/04/01/441639.aspx " target="_self">Ralf Sudelbücher&#8217;s Blog</a> for a different perspective.</p>
<p><strong>Step 7 &#8211; consistent and very regular refactoring</strong></p>
<p>This, you might think, is not something specific to distributed teams — but I&#8217;m here to tell you you&#8217;re wrong. Sitting at home on your own, without a team mate next to you who reminds you to fix that broken window  <strong>now </strong>(kudos to the <a href="http://www.pragprog.com/" target="_blank">pragmatic programmers</a>), makes refactoring much less likely.  The code quality can decrease quite fast for a distributed team if the programmers do not really care about it. What to do?</p>
<p>It&#8217;s actually quite easy. At each pair programming session, we identify broken designs and foul code and write our own refactoring stories. We give those stories the highest priority in the backlog. It&#8217;s very important to keep these stories as small as possible, because refactoring can sometimes get out of hand and this should be avoided. We only put the most relevant refactoring tasks into stories, because otherwise the backlog gets too confusing.</p>
<p><strong>Step 8 &#8211; keep up the motivation </strong></p>
<p>This is by far the most relevant and hardest part for a team which does distributed work, especially when there is no investor yet. The 7 steps already described help a lot to keep up the motivation when done right, but that&#8217;s not everything which can be done.</p>
<p>Try to establish a culture of praise and respect in your team. As soon as people start blaming each other,  motivation will ebb and the team will break apart. If possible, the whole team should meet on a regular basis, as this helps a lot to improve communication and trust.</p>
<p>It&#8217;s also very important to have progress in all areas, not only the development part. Somebody has to care about investor relations, marketing issues, team building, business development etc.  The team needs to believe that the product will be a success and that it is worth selling to the customers.</p>
<p>That&#8217;s it for today. I hope I could shed some light on our Scrum and XP processes and if you have some improvements or suggestions for us, I would be very happy to hear them.</p>
<img src="http://blog.rough-sea.com/?ak_action=api_record_view&id=139&type=feed" alt="" /><p><a class="a2a_dd a2a_target addtoany_share_save" href="http://www.addtoany.com/share_save#url=http%3A%2F%2Fblog.rough-sea.com%2F2008%2F10%2Fscrum-and-xp-for-distributes-teams-part-two%2F&amp;title=Scrum%20and%20XP%20for%20distributed%20teams%20%28part%20two%29" id="wpa2a_8">Share/Bookmark</a></p>]]></content:encoded>
			<wfw:commentRss>http://blog.rough-sea.com/2008/10/scrum-and-xp-for-distributes-teams-part-two/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Scrum and XP for distributed teams (part one)</title>
		<link>http://blog.rough-sea.com/2008/09/scrum-and-xp-for-distributed-teams-part-one/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=scrum-and-xp-for-distributed-teams-part-one</link>
		<comments>http://blog.rough-sea.com/2008/09/scrum-and-xp-for-distributed-teams-part-one/#comments</comments>
		<pubDate>Tue, 30 Sep 2008 08:56:47 +0000</pubDate>
		<dc:creator>Matthias</dc:creator>
				<category><![CDATA[Management]]></category>
		<category><![CDATA[Methodology]]></category>
		<category><![CDATA[Programming]]></category>
		<category><![CDATA[Tips]]></category>
		<category><![CDATA[agile development]]></category>
		<category><![CDATA[distributed teams]]></category>
		<category><![CDATA[extreme programming]]></category>
		<category><![CDATA[Scrum]]></category>

		<guid isPermaLink="false">http://www.rough-sea.com/wordpress/?p=98</guid>
		<description><![CDATA[<a href="http://api.tweetmeme.com/share?url=http%3A%2F%2Fblog.rough-sea.com%2F2008%2F09%2Fscrum-and-xp-for-distributed-teams-part-one%2F"> <img src="http://api.tweetmeme.com/imagebutton.gif?url=http%3A%2F%2Fblog.rough-sea.com%2F2008%2F09%2Fscrum-and-xp-for-distributed-teams-part-one%2F&#38;style=compact&#38;b=2" height="61" width="50" /> </a> <p>As promised, this blog will include some thoughts about development processes and their impact on teams and projects. Today I will write about scrum and extreme programming (XP) for distributed teams, because at the moment we are one of those teams.</p> <p>Scrum is a well known and &#8230; </p><p><a class="more-link block-button" href="http://blog.rough-sea.com/2008/09/scrum-and-xp-for-distributed-teams-part-one/">Continue reading &#187;</a>]]></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%2Fblog.rough-sea.com%2F2008%2F09%2Fscrum-and-xp-for-distributed-teams-part-one%2F"><br />
				<img src="http://api.tweetmeme.com/imagebutton.gif?url=http%3A%2F%2Fblog.rough-sea.com%2F2008%2F09%2Fscrum-and-xp-for-distributed-teams-part-one%2F&amp;style=compact&amp;b=2" height="61" width="50" /><br />
			</a>
		</div>
<p>As promised, this blog will include some thoughts about development processes and their impact on teams and projects. Today I will write about scrum and extreme programming (XP) for distributed teams, because at the moment we are one of those teams.</p>
<p>Scrum is a well known and currently very popular agile project management process. XP is a technical process, for programmers, and is also an agile methodology. The basics of Scrum are summarized in this great <a href="http://geekswithblogs.net/emanish/archive/2008/07/27/124060.aspx" target="_blank">video</a> from Kent Schwaber. If you looking for a good overview on XP check the <a href="http://codebetter.com/blogs/darrell.norton/pages/50340.aspx" target="_blank">Codebetter.com blog</a>. More info on Scrum and XP can be found at the <a href="http://www.agilealliance.org/" target="_blank">Agile Alliance Website</a> and <a href="http://blog.mountaingoatsoftware.com" target="_blank">Mike Cohen&#8217;s blog.</a><br />
I know both processes quite well, read all the available books, and have had the great opportunity to build up a team using these agile approaches at full scale.  The team included some offsite workers, but that wasn&#8217;t too hard to organize.</p>
<p>To implement Scrum and/or XP in a team which does not share an office sounds almost impossible. Everything in agile methodologies relies on communication and transparency. A distributed team talking over e-mail/ICQ/wiki normally has difficulty communicating, and most team members have almost no idea what their colleagues are currently working on.</p>
<p>I will tell you what our team has done to improve communication, and why it is currently working like a charm.  I have to admit that all team members know each other and are quite experienced. All of them have used Scrum and XP methodologies before.  So the techniques described might not work for new teams which have never worked in an Agile way.</p>
<p><strong>Step 1 &#8211; a wiki substitutes for the daily Scrum</strong></p>
<p>We established a wiki as our major communication platform. WOW! That&#8217;s magic, isn&#8217;t it? <img src='http://blog.rough-sea.com/wp-includes/images/smilies/icon_wink.gif' alt=';)' class='wp-smiley' /><br />
Well, the magic is not in the wiki itself, it&#8217;s in the motivation of its participants. If the team doesn&#8217;t update the wiki several times a day, it becomes absolutely useless.</p>
<p>Every day, I post the latest technical and business news, and all team members, including me, write an update on their current tasks.  We still write e-mails and chat over ICQ, but most important communication happens in the wiki. It contains our business plan, the product backlogs, the complete (and current!) game design, helpful FAQs, various artwork and brainstorming thoughts. We even track our work hours and expenses in the wiki.  We are still trying to improve our communication processes, but for now it&#8217;s working out quite well.</p>
<p><strong>Step 2 &#8211; removed sprints, and introduced stories as mini sprints</strong></p>
<p>We are currently working part time on our project, because we are still looking for an investor. People work in their free time on weekends, vacation days and so on.  At first we tried to fix sprint timelines to certain dates, but that didn&#8217;t work at all. Working in your free time with (arbitrary) deadline pressure is horrific and far too much stress for everybody, so we skipped it.</p>
<p>Instead, Rafael put together a backlog in which the core game mechanics are written down as stories with acceptance tests. Stories get estimated by the programmers &#8212; not in a planning game, unfortunately, but the estimations do work out, because the team is quite experienced.  It is very important that the stories do not exceed 2.5 points (most of our stories have 0.5 to 1.5 points). One point is a perfect day, so you need 2.5 perfect days to complete a 2.5 point story. This might take up to 2 or 3 weeks, depending on the time available. So the size of the story is important because of motivation issues: completing work in a short time gives you a very good feeling.</p>
<p><strong>Step 3 &#8211; sprint demos are done for each story </strong></p>
<p>We have always a working build and our designer is able to update the svn repository whenever he wants to. After updating he just has to start FlashDevelop, press F5 and can play the game.  As soon as somebody moves the story to the &#8220;completed&#8221; section, Rafael checks the story directly in the current build and adds a comment if something has to change. If the change request is too big,  Rafael writes another story and adds it to the product backlog.  This works absolutely great so far; thanks go to Rafael for doing a fantastic job here!</p>
<p><strong>Step 4 &#8211; established test driven development from the start<br />
</strong></p>
<p>Fortunately there are some open source frameworks for Actionscript 3 which support test driven development. We are currently using one of them, which Manuel has improved a lot in the first weeks of the project.  Maybe Manuel can explain what he exactly did in some of his future blog posts.</p>
<p>We used TDD from the very first moment, and it proved to be a good decision, because it helps us to have very stable builds. Having a stable version of the game is a must for distributed teams, because it will highly affect the motivation and performance of the team.</p>
<p><strong>To be continued&#8230;</strong></p>
<p>So I guess that&#8217;s it for today. There is a lot more to say about this topic, so I will write part two in the upcoming week. I hope you enjoyed this post and are able get some valuable info out of it.</p>
<p>Cheers,<br />
Matthias</p>
<img src="http://blog.rough-sea.com/?ak_action=api_record_view&id=98&type=feed" alt="" /><p><a class="a2a_dd a2a_target addtoany_share_save" href="http://www.addtoany.com/share_save#url=http%3A%2F%2Fblog.rough-sea.com%2F2008%2F09%2Fscrum-and-xp-for-distributed-teams-part-one%2F&amp;title=Scrum%20and%20XP%20for%20distributed%20teams%20%28part%20one%29" id="wpa2a_10">Share/Bookmark</a></p>]]></content:encoded>
			<wfw:commentRss>http://blog.rough-sea.com/2008/09/scrum-and-xp-for-distributed-teams-part-one/feed/</wfw:commentRss>
		<slash:comments>8</slash:comments>
		</item>
	</channel>
</rss>

