<?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>auberger.com</title>
	
	<link>http://auberger.com</link>
	<description>Epicurean, cyclist and geek extraordinaire.</description>
	<lastBuildDate>Mon, 16 Aug 2010 19:14:49 +0000</lastBuildDate>
	<generator>http://wordpress.org/?v=2.9.2</generator>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
			<atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="self" type="application/rss+xml" href="http://feeds.feedburner.com/auberger_com" /><feedburner:info uri="auberger_com" /><atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="hub" href="http://pubsubhubbub.appspot.com/" /><item>
		<title>The Eagle Has Left the Nest</title>
		<link>http://feedproxy.google.com/~r/auberger_com/~3/37i-atZBZho/the-eagle-has-left-the-nest</link>
		<comments>http://auberger.com/archives/2010/08/the-eagle-has-left-the-nest#comments</comments>
		<pubDate>Mon, 16 Aug 2010 19:14:49 +0000</pubDate>
		<dc:creator>Georges</dc:creator>
				<category><![CDATA[agile]]></category>
		<category><![CDATA[software]]></category>
		<category><![CDATA[coaching]]></category>
		<category><![CDATA[development]]></category>
		<category><![CDATA[iphone]]></category>
		<category><![CDATA[ruby on rails]]></category>
		<category><![CDATA[songbird]]></category>
		<category><![CDATA[ternary labs]]></category>
		<category><![CDATA[vp engineering]]></category>

		<guid isPermaLink="false">http://auberger.com/?p=871</guid>
		<description><![CDATA[
After three fascinating years shepherding development for Songbird, the popular open media player platform, I&#8217;m excited to announce that I&#8217;ve recently left the nest and embarked on a new adventure.
Throughout my career, I&#8217;ve spent many years at startups backed by top VCs (Sequoia Capital, KPCB, Atlas Venture and Sutter Hill Ventures to name a few), [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://xkcd.com/733/"><img src="http://imgs.xkcd.com/comics/eagle.png" /></a></p>
<p>After three fascinating years shepherding development for <a href="http://getsongbird.com">Songbird</a>, the popular open media player platform, I&#8217;m excited to announce that I&#8217;ve recently left the <a href="http://www.flickr.com/photos/songbirdteam/sets/72157622700631167/">nest</a> and embarked on a new adventure.</p>
<p>Throughout my career, I&#8217;ve spent many years at startups backed by top VCs (<a href="http://www.sequoiacap.com/">Sequoia Capital</a>, <a href="http://www.kpcb.com/">KPCB</a>, <a href="http://www.atlasventure.com/">Atlas Venture</a> and <a href="http://www.shv.com/">Sutter Hill Ventures</a> to name a few), building engineering teams from the ground up.  During those years, I discovered the best way to manage development organizations and keep them at peak performance.  I&#8217;ve elaborated a unique and pragmatic approach to the balancing act of managing process, team and technology, yielding great results.</p>
<p>It&#8217;s been challenging, humbling and rewarding and I would do it all over again in a heart beat.  I&#8217;ve come to a point where I have the desire to share that knowledge and expertise more broadly and mentor many more upcoming technical talent along the way.  To that end, I&#8217;ve started a boutique software engineering consulting practice called <a href="http://ternarylabs.com">Ternary Labs</a>.</p>
<p>I&#8217;m offering a service I call &#8220;<a href="http://ternarylabs.com/what/coaching/">Engineering Coaching</a>&#8221; which focuses on providing technical guidance, establishing processes and coaching engineering teams.  Startups immediately benefit from an experienced VP Engineering, at a fraction of the cost and without the hassle of recruiting a full time senior executive.</p>
<p>Having experienced how difficult it is to find a reliable partner to outsource projects to, I also <a href="http://ternarylabs.com/what/development/">build custom software</a> under contract.  We specialize in Ruby on Rails and iPhone development. More information can be found at:</p>
<p><a href="http://ternarylabs.com">http://ternarylabs.com</a></p>
<p>If you&#8217;re trying to figure out how to organize your engineering team, experiencing growing pain, lacking good process, having problems with your technology or just need something built, <a href="http://ternarylabs.com/contact/">give us a shout</a>.</p>
<img src="http://feeds.feedburner.com/~r/auberger_com/~4/37i-atZBZho" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://auberger.com/archives/2010/08/the-eagle-has-left-the-nest/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		<feedburner:origLink>http://auberger.com/archives/2010/08/the-eagle-has-left-the-nest</feedburner:origLink></item>
		<item>
		<title>Inside Job</title>
		<link>http://feedproxy.google.com/~r/auberger_com/~3/-v3bUi8bAyo/inside-job</link>
		<comments>http://auberger.com/archives/2010/03/inside-job#comments</comments>
		<pubDate>Fri, 19 Mar 2010 18:35:19 +0000</pubDate>
		<dc:creator>Georges</dc:creator>
				<category><![CDATA[agile]]></category>
		<category><![CDATA[engineering]]></category>
		<category><![CDATA[songbird]]></category>

		<guid isPermaLink="false">http://auberger.com/?p=838</guid>
		<description><![CDATA[
Over the years, we&#8217;ve taken pride in making our tools, product and development process, as open and transparent as possible. Our tools (Bugzilla, Litmus, Wiki) are publicly accessible, our source code open (svn) and we&#8217;ve blogged on many occasions about our Agile practices.
Today we&#8217;re taking a step further by publishing our Development Survival Guide. This [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://auberger.com/wp-content/uploads/2010/03/ruby-bird.png" rel="lightbox[838]"><img src="http://auberger.com/wp-content/uploads/2010/03/ruby-bird-239x300.png" alt="" title="ruby-bird" width="150"  class="alignleft size-medium wp-image-842" /></a></p>
<p>Over the years, we&#8217;ve taken pride in making our tools, product and development process, as open and transparent as possible. Our tools (<a href="http://bugzilla.songbirdnest.com/">Bugzilla</a>, <a href="http://litmus.songbirdnest.com/">Litmus</a>, <a href="http://wiki.songbirdnest.com">Wiki</a>) are publicly accessible, our source code open (<a href="http://publicsvn.songbirdnest.com/">svn</a>) and we&#8217;ve <a href="http://auberger.com/archives/category/agile">blogged</a> on many occasions about our Agile practices.</p>
<p>Today we&#8217;re taking a step further by publishing our Development Survival Guide. This presentation is an internal step-by-step guide that we take new engineers thru during their orientation. It&#8217;s a good summary of what to expect on a day-to-day basis as an engineer working at Songbird (other than daily Fussball tournament and unfettered access to the beer stocked mini-fridge). It&#8217;s your opportunity to take a peek from within. </p>
<p>Want to get even closer? <a href="http://getsongbird.com/jobs/">Apply for one of our openings</a>.</p>
<div style="width:425px" id="__ss_3469649">
<strong style="display:block;margin:4px 0 4px"></p>
<p><object width="425" height="355"><param name="movie" value="http://static.slidesharecdn.com/swf/ssplayer2.swf?doc=songbird-dev-survival-guide-100318133538-phpapp02&#038;rel=0&#038;stripped_title=songbird-devsurvivalguide" /><param name="allowFullScreen" value="true"/><param name="allowScriptAccess" value="always"/><embed src="http://static.slidesharecdn.com/swf/ssplayer2.swf?doc=songbird-dev-survival-guide-100318133538-phpapp02&#038;rel=0&#038;stripped_title=songbird-devsurvivalguide" type="application/x-shockwave-flash" allowscriptaccess="always" allowfullscreen="true" width="425" height="355"></embed></object><br />
</strong></div>
<p><a href='http://auberger.com/wp-content/uploads/2010/03/songbird-dev-survival-guide.pdf' onClick="javascript: pageTracker._trackPageview('/downloads/songbird-dev-survival-guide.pdf');">Download</a> Songbird Development Survival Guide 1.2 in pdf.</p>
<img src="http://feeds.feedburner.com/~r/auberger_com/~4/-v3bUi8bAyo" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://auberger.com/archives/2010/03/inside-job/feed</wfw:commentRss>
		<slash:comments>20</slash:comments>
		<feedburner:origLink>http://auberger.com/archives/2010/03/inside-job</feedburner:origLink></item>
		<item>
		<title>Make long term planning possible in an Agile environment</title>
		<link>http://feedproxy.google.com/~r/auberger_com/~3/F4_iXYHo-7M/make-long-term-planning-possible-in-an-agile-environment</link>
		<comments>http://auberger.com/archives/2010/02/make-long-term-planning-possible-in-an-agile-environment#comments</comments>
		<pubDate>Mon, 01 Feb 2010 14:30:28 +0000</pubDate>
		<dc:creator>Georges</dc:creator>
				<category><![CDATA[agile]]></category>
		<category><![CDATA[planning]]></category>
		<category><![CDATA[songbird]]></category>

		<guid isPermaLink="false">http://auberger.com/?p=768</guid>
		<description><![CDATA[Agile development methods are well suited to plan and execute near term release cycle. For instance, the tools we developed and processes we&#8217;ve adopted help us plan and steer a release to completion with a good level of accuracy and repeatability. However, there are instances when the time horizon needs to be further out than [...]]]></description>
			<content:encoded><![CDATA[<p>Agile development methods are well suited to plan and execute near term release cycle. For instance, the <a href="http://auberger.com/archives/tag/sdpbot">tools</a> we developed and <a href="http://auberger.com/archives/category/agile">processes</a> we&#8217;ve adopted help us plan and steer a release to completion with a good level of accuracy and repeatability. However, there are instances when the time horizon needs to be further out than the current cycle. The need to create a budget, synchronize a roadmap with a partner or determine future hiring needs, make it necessary to have an effective mechanism for long term planning.</p>
<p>Fortunately, the metrics gathered during each Agile release cycle can be very helpful for that purpose. Once we gain a good understanding on what is being worked on, for how long and by how many people, we should be able to extrapolate this to forecast future releases.</p>
<p>Let&#8217;s take a look at what activities take place during a typical release cycle:</p>
<p>1) Plan release<br />
2) Write code<br />
3) Test<br />
4) Fix bugs</p>
<p>Then repeat ad nauseam.</p>
<p><span id="more-768"></span></p>
<p>In that context, the programming tasks can be categorized as follow:</p>
<h3>1. Planned work</h3>
<p>This is the body of work identified during the planning stage. This is the <em>raison d&#8217;être</em> of the release. For the most part, this covers new features or less tangible things such as performance improvements. This is what we&#8217;ll want to talk about when the product gets released. It&#8217;s an easy planning trap to think that this is the only work required.</p>
<h3>2. Unplanned work</h3>
<p>As the name implies, this is work that was unforeseen at the beginning of the release but is required to be completed before the product can ship. It can be further refined as follow:</p>
<p>a) Change in requirements<br />
This should not be unexpected. In fact, any Agile methodology assumes that there will be changes down the road. This is not a problem per se as long as there is a mechanism to trade features, extend duration or increase resources.</p>
<p>b) Omissions in planning<br />
Because the planning period is relatively short, it is assumed that not everything is fully specified or researched upfront. As development proceeds, new pieces are discovered and introduced into the plan.</p>
<h3>3. Bugs</h3>
<p>Defects can be considered a side effect of software development. They can affect the product in different ways:</p>
<p>a) Regression<br />
These are defects introduced when working on new code. They usually impact unrelated functionality that used to work before.</p>
<p>b) Defect in new feature<br />
These are problems in a newly coded feature. The feature does not work quite as expected.</p>
<p>c) Existing bug<br />
These are bugs present in the previous version of the software. They are either known or newly discovered during the course of the release and prioritized to be fixed now because they affect existing users.</p>
<h3>Learning from the past to project in the future</h3>
<p>A believable long term plan needs to layout new features on a timeframe against a set of resources. Because there is only a limited amount of time and people allocated to thinking through the issues upfront, the initial estimates are always very rough. It is then very difficult to predict how much time certain things will take or how many people will be required. To increase accuracy, you&#8217;d have to invest more time and resources, which is not practical, mostly because these are the very same resources that are critical to deliver against the current release plan.</p>
<p>You need a model to help forecast based on imperfect data. You could decide to simply pad all the current estimates, but you&#8217;d still need to figure out a factor that&#8217;s sufficient.</p>
<p>A better model is to find a way to anticipate the additional work that will be generated by the introduction of a brand new feature. With that model, we can layout a plan that should allow sufficient room in every release to accommodate for all the work, planned, unplanned and bugs.</p>
<p>Let&#8217;s take a look at historical data from previous Songbird releases:</p>
<style>
table td, table th { border: solid 1px #ffffff; } table th { background-color: #999999; } table th, table td { padding: 5px; } table td { background-color: #DDDDDD; }
</style>
<table>
<thead>
<tr>
<th></th>
<th>Fugazi</th>
<th>Genesis</th>
<th>Hendrix</th>
<th>Isan</th>
<th>Jackson 5</th>
<th>Kanye</th>
<th>Led Zeppelin</th>
</tr>
</thead>
<tbody>
<tr>
<th>Planned Features [pts]</th>
<td>198</td>
<td>300</td>
<td>145</td>
<td>100</td>
<td>160</td>
<td>153</td>
<td>86</td>
</tr>
<tr></tr>
<tr>
<th>Actual Completed [pts]</th>
<td>696</td>
<td>946</td>
<td>527</td>
<td>419</td>
<td>432</td>
<td>694</td>
<td>303</td>
</tr>
<tr>
<th>Actual Completed Features [pts]</th>
<td>290</td>
<td>304</td>
<td>183</td>
<td>151</td>
<td>214</td>
<td>284</td>
<td>145</td>
</tr>
<tr>
<th>Planned/Completed Features ratio</th>
<td>146%</td>
<td>101%</td>
<td>126%</td>
<td>151%</td>
<td>134%</td>
<td>186%</td>
<td>169%</td>
</tr>
<tr>
<th>Actual duration [days]</th>
<td>39</td>
<td>55</td>
<td>56</td>
<td>50</td>
<td>50</td>
<td>55</td>
<td>30</td>
</tr>
</tbody>
</table>
<p>The first row in the table contains the budgeted points for each release. That number represents the sum of all planned work as determined at the end of the planning phase for that release. The release schedule was set based on that number and the historical team velocity.</p>
<p>The second row represents the total actual points completed during the release, including features and bugs. This represents that amount of effort to get the release out.</p>
<p>The third row represents the actual completed feature points only. Next row computes ratio of planned vs. actual work.</p>
<p>It&#8217;s very tempting to compute a velocity based on total completed points and use it as a predictor for how much work the team can accomplish. While it&#8217;s true that it is a measure of total effort, it can&#8217;t be used against planned work only.</p>
<p>What we want to determine is that given 1 point of planned feature work, how much unplanned work and bugs will be generated and thus how long will it take to complete. Then normalize this for team size and you get a factor that can be used for long term planning.</p>
<p>To get there, I&#8217;ve computed a velocity for each release based on planned work divided by actual release duration (in days) and number of engineers. I then use the median value across release as a factor to turn estimated planned points into calendar days. With that in hand, I created a simple model where scope, duration and resources are linked. Set two values and the third one gets computed automatically. This model becomes very handy to run through what-if scenario during roadmap sessions. It provides answers to business questions such as: &#8220;How long would it take to do feature X?&#8221;, &#8220;Can you meet deadline Y?&#8221;, &#8220;How many more engineers would it take to do Z in Y time frame?&#8221;.</p>
<p>Hope you enjoyed learning more about our approach to the difficult task of long term planning. I&#8217;d be interested to hear about how you&#8217;ve approached the problem, so feel free to share your story.</p>
<p>Lastly, let&#8217;s remember the words of the famous Danish physicist <a href="http://en.wikipedia.org/wiki/Niels_Bohr">Niels Bohr</a>:</p>
<blockquote><p>“Prediction is very difficult, especially if it’s about the future.”</p></blockquote>
<img src="http://feeds.feedburner.com/~r/auberger_com/~4/F4_iXYHo-7M" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://auberger.com/archives/2010/02/make-long-term-planning-possible-in-an-agile-environment/feed</wfw:commentRss>
		<slash:comments>1</slash:comments>
		<feedburner:origLink>http://auberger.com/archives/2010/02/make-long-term-planning-possible-in-an-agile-environment</feedburner:origLink></item>
		<item>
		<title>Dashboard for Agile project tracking</title>
		<link>http://feedproxy.google.com/~r/auberger_com/~3/wissgzJZvk8/dashboard-for-agile-project-tracking</link>
		<comments>http://auberger.com/archives/2010/01/dashboard-for-agile-project-tracking#comments</comments>
		<pubDate>Thu, 14 Jan 2010 22:53:39 +0000</pubDate>
		<dc:creator>Georges</dc:creator>
				<category><![CDATA[agile]]></category>
		<category><![CDATA[sdpbot]]></category>
		<category><![CDATA[songbird]]></category>

		<guid isPermaLink="false">http://auberger.com/?p=710</guid>
		<description><![CDATA[This is a following post to the series on Agile development at Songbird. As covered previously, we&#8217;ve created in-house tools to help with the planning and tracking of our release trains. The tool works off of Bugzilla and extracts meaningful information for project tracking. As it was originally meant to periodically generate an email status, [...]]]></description>
			<content:encoded><![CDATA[<p>This is a following post to the series on <a href="http://auberger.com/archives/category/agile">Agile development</a> at <a href="http://getsongbird.com">Songbird</a>. As <a href="http://auberger.com/archives/2008/12/songbird-path-to-agility-part-iii">covered previously</a>, we&#8217;ve created in-house tools to help with the planning and tracking of our release trains. The tool works off of <a href="http://www.bugzilla.org/">Bugzilla</a> and extracts meaningful information for project tracking. As it was originally meant to periodically generate an email status, it became apparent that it was too static for daily project tracking needs.</p>
<div id="attachment_725" class="wp-caption aligncenter" style="width: 310px"><a href="http://auberger.com/wp-content/uploads/2010/01/Songbird-Release-Trains-200911201.png" rel="lightbox[710]"><img class="size-medium wp-image-725" title="Songbird Release Trains" src="http://auberger.com/wp-content/uploads/2010/01/Songbird-Release-Trains-200911201-300x251.png" alt="" width="300" height="251" /></a><p class="wp-caption-text">Songbird Release Trains</p></div>
<p>We concluded that a dashboard that was more dynamic and worked in real time with Bugzilla would provide a more accurate picture of development progress. This is an overview of the couple of extensions we added to the tool.</p>
<p><span id="more-710"></span></p>
<h3>Dashboard</h3>
<p>The dashboard focuses on the current iteration (all P1 stories/tasks/bugs for a release target milestone). It provides a transparent and dynamic view of what&#8217;s under active development for the week.</p>
<p>Items are grouped by developer so we can easily review what each person is working on in this iteration. There are few additions that make it more useful than a plain Bugzilla query. When an item is carried over from a previous iteration, it gets highlighted, providing visibility on something that may require more work than anticipated or might be blocked by some dependencies. That kind of view was lacking before and it made it difficult to figure out what was happening when tasks got carried over. Similarly, when a new task gets added to the plan mid-iteration, it&#8217;s identified as such, making the tracking of intake very easy.</p>
<p>Because of our code review system, often time tasks are completed from a programmer standpoint but can&#8217;t be checked in until a positive review (R+) is performed by someone else. Additionally, some code requires the re-compilation of large amounts of 3rd party libraries before the patch is available. This kind of information is now bubbled up on the tracking page so the exact status of a particular issue is visible at a quick glance.</p>
<div id="attachment_714" class="wp-caption aligncenter" style="width: 559px"><a href="http://auberger.com/wp-content/uploads/2010/01/tracking.png" rel="lightbox[710]"><img class="size-full wp-image-714 " title="Dashboard" src="http://auberger.com/wp-content/uploads/2010/01/tracking.png" alt="" width="549" height="472" /></a><p class="wp-caption-text">Iteration Dashboard</p></div>
<p>This dashboard is helping us to know what everyone is doing at any given time. It fosters a sense of accountability and ownership of the issues and provides a sense of accomplishment when the work is completed.</p>
<p>Below is a view of the legend for the Dashboard. Most attributes for an item are extracted from Bugzilla and represented via an icon.</p>
<div id="attachment_715" class="wp-caption aligncenter" style="width: 165px"><a href="http://auberger.com/wp-content/uploads/2010/01/tracking-legend.png" rel="lightbox[710]"><img class="size-full wp-image-715" title="Legend" src="http://auberger.com/wp-content/uploads/2010/01/tracking-legend.png" alt="" width="155" height="360" /></a><p class="wp-caption-text">Dashboard Legend</p></div>
<h3>Punchlist</h3>
<p>Once a release reaches QA, a release branch is cut and the focus of the team switches from working on planned features to fixing bugs. We found that this period is best managed by using a punch list which contains all the issues remaining to be resolved before the release can ship as opposed to a weekly plan of what gets accomplished for the period. It keeps the team focused on the entirety of what&#8217;s on our collective plate. During that period, issues are being promoted to Blocker status to represent what is blocking the next milestone (e.g. Beta, RC, Final). It also signals what can be landed on the branch automatically and what needs further clearance. This allows us to throttle the rate of change being introduced into the source tree so that QA can be ensured stable builds.</p>
<div id="attachment_721" class="wp-caption aligncenter" style="width: 570px"><a href="http://auberger.com/wp-content/uploads/2010/01/Release-Madonna-Punchlist-All-remaining-P1-20100112.png" rel="lightbox[710]"><img class="size-full wp-image-721 " title="Punchlist" src="http://auberger.com/wp-content/uploads/2010/01/Release-Madonna-Punchlist-All-remaining-P1-20100112.png" alt="" width="560" height="515" /></a><p class="wp-caption-text">Release Punchlist</p></div>
<p>When in punchlist mode, it&#8217;s critical that all issues are being assigned. The list reflects that by highlighting items that have no owner yet.</p>
<h3>Pretty Graphs</h3>
<p>Two frequently tracked Agile metrics are Burndown and Velocity. Those are now being graphed automatically for each release. The Burndown helps forecast when the work will be completed. The Velocity gives us a historical perspective on what the team was able to accomplish and thus helps us plan better.</p>
<p>The Burndown graph breaks down tasks (what we refer to as &#8220;planned work&#8221;) from bugs (unplanned consequences of software development). When the Burndown line cross the horizontal axis, we&#8217;re done. Notice in the graph below the bug points going up during the QA period.</p>
<div id="attachment_713" class="wp-caption aligncenter" style="width: 670px"><a href="http://auberger.com/wp-content/uploads/2010/01/Picture-1.png" rel="lightbox[710]"><img class="size-full wp-image-713 " title="Burndown Graph" src="http://auberger.com/wp-content/uploads/2010/01/Picture-1.png" alt="" width="660" height="334" /></a><p class="wp-caption-text">Burndown Graph</p></div>
<p>The Velocity graph plots the team velocity, normalized per day. Actual Velocity is computed at the end of each iteration and plotted along side the Planned Velocity for easy comparison.</p>
<div id="attachment_720" class="wp-caption aligncenter" style="width: 633px"><a href="http://auberger.com/wp-content/uploads/2010/01/velocity.png" rel="lightbox[710]"><img class="size-full wp-image-720 " title="Velocity" src="http://auberger.com/wp-content/uploads/2010/01/velocity.png" alt="" width="623" height="379" /></a><p class="wp-caption-text">Velocity Graph</p></div>
<p>These new tools provide a dynamic view of the state of the release. They bring transparency into the development process for everyone involved.</p>
<img src="http://feeds.feedburner.com/~r/auberger_com/~4/wissgzJZvk8" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://auberger.com/archives/2010/01/dashboard-for-agile-project-tracking/feed</wfw:commentRss>
		<slash:comments>7</slash:comments>
		<feedburner:origLink>http://auberger.com/archives/2010/01/dashboard-for-agile-project-tracking</feedburner:origLink></item>
		<item>
		<title>Songbird path to Agility – Part III</title>
		<link>http://feedproxy.google.com/~r/auberger_com/~3/WNJ8qfgdqOI/songbird-path-to-agility-part-iii</link>
		<comments>http://auberger.com/archives/2008/12/songbird-path-to-agility-part-iii#comments</comments>
		<pubDate>Mon, 15 Dec 2008 23:57:09 +0000</pubDate>
		<dc:creator>Georges</dc:creator>
				<category><![CDATA[agile]]></category>
		<category><![CDATA[bugzilla]]></category>
		<category><![CDATA[sdpbot]]></category>
		<category><![CDATA[songbird]]></category>
		<category><![CDATA[tool]]></category>

		<guid isPermaLink="false">http://auberger.com/?p=568</guid>
		<description><![CDATA[
This is a repost of a series of article I originally published on Songbird&#8217;s blog
In the previous two installments of this series on Agile development at Songbird, I&#8217;ve covered our move from waterfall to Agile and provided an in-depth look at some actual release cycles. In this last post, I&#8217;m going to introduce a tool [...]]]></description>
			<content:encoded><![CDATA[<p><img src="http://files.songbirdnest.com/tracking.png" alt="Tracking" /></p>
<p><em>This is a repost of a series of article I originally published on <a href="http://blog.songbirdnest.com/author/georges/" target="_blank">Songbird&#8217;s blog</a></em></p>
<p>In the previous two installments of this series on Agile development at Songbird, I&#8217;ve covered our move from <a href="http://auberger.com/archives/2008/06/songbird-path-to-agility-part-i-2">waterfall to Agile</a> and provided an in-depth look at some <a href="http://auberger.com/archives/2008/09/songbird-path-to-agility-part-ii-2">actual release cycles</a>. In this last post, I&#8217;m going to introduce a tool &#8211; which I gave the uninspiring name sdpbot &#8211; built internally to help facilitate the tracking of our releases.</p>
<h3>Wrestling Bugzilla into shape</h3>
<p>Because so much of our existing workflow occurred in <a href="http://www.bugzilla.org/">Bugzilla</a>, we&#8217;ve decided to use it as a central database to drive our process. Every actionable project artifact lives in Bugzilla, a Feature, Story, Task or Bug. From a release standpoint, the only actionable items are Story, Tasks or Bug and hence, we only track these. Here is how we&#8217;ve organized our <a href="http://bugzilla.songbirdnest.com">bugzilla.songbirdnest.com</a> to help us track each release.</p>
<h4>Release train</h4>
<p>Every release train has a name and is used to create a <a href="http://bugzilla.songbirdnest.com/page.cgi?id=fields.html#target_milestone">target milestone</a> in Bugzilla. This allows us to put items in release buckets. See some examples of what was included in the <a href="http://bugzilla.songbirdnest.com/buglist.cgi?query_format=advanced&amp;short_desc_type=allwordssubstr&amp;short_desc=&amp;product=Songbird&amp;target_milestone=Fugazi&amp;long_desc_type=substring&amp;long_desc=&amp;bug_file_loc_type=allwordssubstr&amp;bug_file_loc=&amp;status_whiteboard_type=allwordssubstr&amp;status_whiteboard=&amp;keywords_type=allwords&amp;keywords=&amp;bug_status=RESOLVED&amp;bug_status=VERIFIED&amp;bug_status=CLOSED&amp;emailassigned_to1=1&amp;emailtype1=substring&amp;email1=&amp;emailassigned_to2=1&amp;emailreporter2=1&amp;emailqa_contact2=1&amp;emailcc2=1&amp;emailtype2=substring&amp;email2=&amp;bugidtype=include&amp;bug_id=&amp;votes=&amp;chfieldfrom=&amp;chfieldto=Now&amp;chfieldvalue=&amp;cmdtype=doit&amp;order=Reuse+same+sort+as+last+time&amp;field0-0-0=noop&amp;type0-0-0=noop&amp;value0-0-0=">Fugazi</a> and <a href="http://bugzilla.songbirdnest.com/buglist.cgi?query_format=advanced&amp;short_desc_type=allwordssubstr&amp;short_desc=&amp;product=Songbird&amp;target_milestone=Genesis&amp;long_desc_type=substring&amp;long_desc=&amp;bug_file_loc_type=allwordssubstr&amp;bug_file_loc=&amp;status_whiteboard_type=allwordssubstr&amp;status_whiteboard=&amp;keywords_type=allwords&amp;keywords=&amp;bug_status=RESOLVED&amp;bug_status=VERIFIED&amp;bug_status=CLOSED&amp;emailassigned_to1=1&amp;emailtype1=substring&amp;email1=&amp;emailassigned_to2=1&amp;emailreporter2=1&amp;emailqa_contact2=1&amp;emailcc2=1&amp;emailtype2=substring&amp;email2=&amp;bugidtype=include&amp;bug_id=&amp;votes=&amp;chfieldfrom=&amp;chfieldto=Now&amp;chfieldvalue=&amp;cmdtype=doit&amp;order=Reuse+same+sort+as+last+time&amp;field0-0-0=noop&amp;type0-0-0=noop&amp;value0-0-0=">Genesis</a> releases.</p>
<p><span id="more-568"></span></p>
<h4>Priority field</h4>
<p>As we create stories, tasks and bugs we assign them to the release milestone and place them in a <a href="http://bugzilla.songbirdnest.com/page.cgi?id=fields.html#priority">priority</a> bucket. Each priority level indicates how the item is being treated during the release:</p>
<ul>
<li><strong>P2</strong> &#8211; must have for the release, next candidates for promotion to P1</li>
<li><strong>P3</strong> &#8211; nice to have for the release, we may ship without it</li>
<li><strong>P4 </strong>-<strong> </strong>nice to have and low risk. This represent the kind of work that we probably will undertake during the QA phase as it is low risk and won&#8217;t likely cause a regression.</li>
<li><strong>P1</strong> has a special meaning. It is used as a flag to represent what is being committed by the team for the current weekly iteration. Everything in P1 signals our tool that this is our &#8220;plan&#8221; for the week and is under active development (We are considering changing this in the future to use the assigned bug functionality since Bugzilla 3.2 will now allow you to accept and assign a bug in one operation).</li>
</ul>
<div>From an overall release tracking standpoint, the tool includes P1, P2 and P3. P4 are not considered part of the plan. If we get to them during QA, they are freebies.</div>
<h4>Costing</h4>
<div>We would not be able to track anything without costing. Every item is being assigned a cost of 1, 2 or 3 based on complexity, scope and past experience. We also use 0 when an artifact exists but is not actionable by itself. For instance, we often start creating stories and cost them. Then, as we refine our plan, we may create one or several tasks to represent the particular engineering implementation of that story. When this occurs, each tasks has a cost, and the story cost field is zeroed out so we don&#8217;t double count. Also, the story to task relationship is being identified with the blocks/depend on field of Bugzilla. See story <a href="http://bugzilla.songbirdnest.com/show_bug.cgi?id=12066">12066</a> for an example of that.</div>
<h3>Weekly iterations</h3>
<p>Every Monday, we plan our work for the week. Every member of the team elects items to P1 status. We then tally up the total points and determine if the plan is sound. Once we are all in agreement, the plan gets locked. This simply means that the tool takes a snapshot of all the items marked as P1 and saves their ids.</p>
<h3>Daily reports</h3>
<p>The main function of the bot is to compute delta and generate a daily report. Let&#8217;s take a look at every sections of the report.</p>
<h6>Iteration</h6>
<p>A simple number to represent the iteration (week)</p>
<h6>Plan</h6>
<p>This section represent the plan of records as snapshot at the beginning of each iteration. Once the plan is locked, it becomes immutable.</p>
<h6>Duration</h6>
<p>Duration of the iteration. Usually 5 working days, but it automatically adjusts for holidays.</p>
<h6>Remaining</h6>
<p>Total points for P1, P2 and P3 items which status is open (e.g. UNCONFIRMED, NEW, ASSIGNED or REOPENED)</p>
<h6>Planned</h6>
<p>Total points for P1 items that are opened.</p>
<h6>Planned Velocity</h6>
<p>Normalized points per work day.</p>
<h6>Actual</h6>
<p>This section represent the actual metrics computed at the end of each iteration. The iteration ends on Sunday at midnight.</p>
<h6>Intake</h6>
<p>Represent everything that was either added or removed to the P1 list (the plan) during the iteration.</p>
<h6>Intake Velocity</h6>
<p>Normalized intake points per work day.</p>
<h6>Completed</h6>
<p>Total point of everything that was marked fixed during that iteration.</p>
<h6>Team Velocity</h6>
<p>Normalized completed points per work day.</p>
<h6>Carried over</h6>
<p>Everything planned at the beginning or added during the week and not completed by the end of the iteration.</p>
<h6>Environment</h6>
<p>Originally, this was introduce to track distractions outside of the core release that could impact the team velocity. The idea being that it would give us a gauge of what the &#8220;environment&#8221; was like during that period. This columns would capture everything open or closed in the special ASAP Bugzilla milestone. We used this classification to track urgent issues, infrastructure work, etc. As our process matured, the need for this diminished and we no longer use this.</p>
<p>Here is a sample of such report for Fugazi</p>
<p style="text-align: center;"><a href="http://files.songbirdnest.com/fugazi-tracking.png" rel="lightbox[568]"><img class="s3-img aligncenter" style="border: 0px initial initial;" src="http://files.songbirdnest.com/fugazi-tracking.png" border="0" alt="fugazi-tracking.png" width="100%" /></a></p>
<p style="text-align: center;">
<h3>What to look for</h3>
<p>Every day an email report is being generated allowing us to track progress to date. For every column described above, a link is provided. The link points back to Bugzilla and contains a list of ids for the items included in the list. Every item can then be reviwed independently.</p>
<p>At our weekly planning meeting, we usually start by reviewing what was carried over from last week. Ideally, we want this to be a null set, but the reality is that it often contains a fair amount of items. It&#8217;s primarily due to intake during the iteration. Items are being added because of regression introduced and discovered, new tasks being identified or slight adjustment to the plan. This is definitely an area we need to improve on.</p>
<p>The next view is the planned items for the new iteration. This allows us to make some tweak to our plan before we commit.</p>
<p>The intake views are very useful to analyze what is being added or removed during the cycle.</p>
<p>The team velocity gives us a measure on how well we are doing and how much load we think we can carry during the next iteration.</p>
<p>Finally, the remaining points tally gives us our burn down number. This is how much work is left and by dividing this with our historical velocity gives us a sense of how long it will be until we are done.</p>
<h2>Open source library</h2>
<p style="text-align: left;">SDPBOT is built as a Ruby library. The source code has been open sourced under the MIT license. You can download it here: <a href="http://code.google.com/p/sdpbot/">http://code.google.com/p/sdpbot/</a></p>
<p style="text-align: left;">We have made no attempt to make it generic, so do expect to do some work to customize it for your own needs. If you&#8217;re using Bugzilla and want to generate some type of reports you will hopefully find the library to scrape and instantiate objects from Bugzilla very valuable. Enjoy!</p>
<p style="text-align: left;">
<img src="http://feeds.feedburner.com/~r/auberger_com/~4/WNJ8qfgdqOI" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://auberger.com/archives/2008/12/songbird-path-to-agility-part-iii/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		<feedburner:origLink>http://auberger.com/archives/2008/12/songbird-path-to-agility-part-iii</feedburner:origLink></item>
		<item>
		<title>Riding up and down Haleakala</title>
		<link>http://feedproxy.google.com/~r/auberger_com/~3/Zkal1rtLbc4/riding-up-and-down-haleakala</link>
		<comments>http://auberger.com/archives/2008/10/riding-up-and-down-haleakala#comments</comments>
		<pubDate>Thu, 23 Oct 2008 04:09:42 +0000</pubDate>
		<dc:creator>Georges</dc:creator>
				<category><![CDATA[cycling]]></category>
		<category><![CDATA[climb]]></category>
		<category><![CDATA[descent]]></category>
		<category><![CDATA[haleakala]]></category>
		<category><![CDATA[house of the sun]]></category>

		<guid isPermaLink="false">http://auberger.com/?p=360</guid>
		<description><![CDATA[Why do people climb mountains? Because it&#8217;s there. When it comes to mountain, Haleakala is not your average hill. It&#8217;s a dormant volcano and you can ride it from sea level to summit, 10,023 feet (3&#8242;055 m) of elevation gain in one uninterrupted climb. Some claim it&#8217;s the highest paved road on earth. Here&#8217;s my [...]]]></description>
			<content:encoded><![CDATA[<p>Why do people climb mountains? Because it&#8217;s there. When it comes to mountain, Haleakala is not your average hill. It&#8217;s a dormant volcano and you can ride it from sea level to summit, 10,023 feet (3&#8242;055 m) of elevation gain in one uninterrupted climb. Some claim it&#8217;s the highest paved road on earth. Here&#8217;s my account of attempting such climb.</p>
<p>I rented a bike from South Maui Bike. They now feature Trek 5000, all carbon for $250/week. You can call in advance to reserve it and make sure you get the proper frame size. The bike was in decent condition, but don&#8217;t expect too much. I started from <a href="http://maps.google.com/maps?client=safari&amp;rls=en-us&amp;q=paia,+hi&amp;ie=UTF-8&amp;oe=UTF-8&amp;um=1&amp;sa=X&amp;oi=geocode_result&amp;resnum=1&amp;ct=title">Paia</a> as planned, and got rolling shortly after 6:30 am. Plenty of daylight at that time of the year. <a href="http://www.hawaiiweb.com/maui/beaches/HABaldwinBeachPark.htm">Baldwin Beach Park</a> is the perfect location to take a picture and a toe dip in the water before starting the ascent.</p>
<div class="wp-caption aligncenter" style="width: 583px"><br />
<img class="  " title="Baldwin Beach Park, Paia HI" src="http://gallery.me.com/gauberger/100277/P1000925/web.jpg" alt="" width="573" height="410" /><br />
<p class="wp-caption-text">Baldwin Beach Park, Paia HI</p></div>
<p><span id="more-360"></span></p>
<p>Here is what I carried with me:</p>
<ul>
<li>Arm warmers</li>
<li>Knee warmers</li>
<li>Rain jacket</li>
<li>Long finger gloves</li>
<li>2 extra portions of cytomax in ziplock bags</li>
<li>4 energy bars</li>
<li>4 dates</li>
<li>Some chocolate covered coffee beans</li>
<li>Digital camera</li>
<li>Cell phone (reception can be a bit spotty up top)</li>
<li>Cash to pay for the park entrance ($5) and for emergency ($60)</li>
<li>iPod shuffle</li>
<li>Additional sunscreen</li>
<li>Trek seat 75-cubic-inch seat pack</li>
<li>2 spare tubes</li>
<li>Tire levers, compact multi-tool, patches</li>
</ul>
<p>I ended up eating everything and wore all the clothes I brought. The weather was pretty good, slightly overcast. The arm warmer came handy once I reached 8,000 feet. I wore everything for the descent and I was glad that I did. Unless you like more abuse than necessary, don&#8217;t attempt a descent without long finger gloves and a wind jacket at a minimum.</p>
<p>You should check out the weather forecast and pick the best day to ride. You will notice a big difference between weather at the summit and forecast at the base.</p>
<ul>
<li><a href="http://forecast.weather.gov/MapClick.php?zoneid=HIZ022">Haleakala Summit weather forecast</a></li>
<li><a href="http://forecast.weather.gov/MapClick.php?zoneid=HIZ020">Windward Haleakala weather forecast</a></li>
</ul>
<p>The route is pretty straight forward. The only tricky part is the right turn off Baldwin or else you&#8217;ll be climbing an extra 1,700 feet for nothing like <a href="http://www.chainreaction.com/haleakala.htm">Mike</a> did. When you see the horse arena on the left, it&#8217;s your cue to make a right.</p>
<div class="wp-caption aligncenter" style="width: 727px"><br />
<img title="Horse Arena" src="http://gallery.me.com/gauberger/100277/P1000929/web.jpg" alt="" width="717" height="538" /><br />
<p class="wp-caption-text">Turn right after the horse arena</p></div>
<p>The first 3,500 feet of the ride are pretty easy. I stopped at Sunrise market and indulged on Maui potato chips and fresh cut pineapple chunks. Apparently, you get good karma points for going up judging by my short exchange with the cashier:</p>
<blockquote><p>Cashier: Are you going up hon?<br />
Me: Yes.<br />
Cashier: You&#8217;re a good man.</p></blockquote>
<p>After a short rest, downhill riders in full gears including motorcycle helmets and rain coveralls started to appear. Expect to see a lot of them. As of end of 2007, the tour operators are no longer allowed in the park proper because of <a href="http://news.yahoo.com/s/ap_travel/20071008/ap_tr_ge/travel_brief_haleakala&lt;br &gt;&lt;/a&gt;">too many accidents</a> resulting in death. As a result, their tour start right below the entrance of the park at around the 6,500 feet mark.</p>
<p>Make sure to refill on water at the Sunrise market. Your next opportunity will be at the visitor center in the park at 7,000 feet. The next leg of the climb is pretty cool. Lots of switch back with pretty vistas.</p>
<div class="wp-caption aligncenter" style="width: 727px"><img class=" " title="One of many switchbacks" src="http://gallery.me.com/gauberger/100277/P1000940/web.jpg" alt="One of many switchbacks" width="717" height="538" /><p class="wp-caption-text">One of many switchbacks</p></div>
<p>Along the way, you won&#8217;t see many elevation signs but if you pay attention, there are marking on the asphalt. A blue number below a yellow sun. I&#8217;m assuming that they are for the <a href="http://www.cycletothesun.net/">Cycle to the sun</a> race.</p>
<div class="wp-caption aligncenter" style="width: 727px"><img class=" " title="Elevation markers" src="http://gallery.me.com/gauberger/100277/P1000942/web.jpg" alt="Elevation markers" width="717" height="512" /><p class="wp-caption-text">Elevation markers</p></div>
<p>The marking stops as you enter the park.</p>
<div class="wp-caption aligncenter" style="width: 727px"><img class=" " title="Park entrance" src="http://gallery.me.com/gauberger/100277/P1000957/web.jpg" alt="Park entrance" width="717" height="512" /><p class="wp-caption-text">Park entrance</p></div>
<p>I payed the $5 entrance fee and off I went. Next stop is the visitor center several hundred feet up. There is a water fountain by the restroom and plenty of space to sit, relax and recharge.</p>
<p>As I continued the ascent, I started to feel the effect of the elevation. I don&#8217;t know if it was the lack of oxygen in my brain but the sight of the 9,000 feet sign felt exhilarating and I could not suppress reading it out loud with the mandatory expletive: nine f#&amp;*ing thousand feet!</p>
<p>The last 1,000 feet go by pretty quickly. Once you see the summit and <a href="http://www.ifa.hawaii.edu/haleakala/">Science City</a>, you know you&#8217;re home.</p>
<div class="wp-caption aligncenter" style="width: 727px"><img class=" " title="Summit and Science city" src="http://gallery.me.com/gauberger/100277/P1000989/web.jpg" alt="Summit and Science city" width="717" height="538" /><p class="wp-caption-text">Summit and Science city</p></div>
<p>The steepest portion of the ride is on the road joining the lower parking lot to the upper obeservation deck. Or maybe it just felt like it.</p>
<div class="wp-caption aligncenter" style="width: 727px"><img class=" " title="Mandatory summit picture" src="http://gallery.me.com/gauberger/100277/P1000998/web.jpg" alt="Mandatory summit picture" width="717" height="512" /><p class="wp-caption-text">Mandatory summit picture</p></div>
<p>Although the ride is pretty long, once I reached the 10,023 feet mark I was surprise that it was over already. I took the time to look around and take pictures of the crater. I had fun watching people&#8217;s reaction of finding a lonely rider that far up. A nice couple took my picture and confessed they thought about taking a picture of themselves in front of the bike so they could pretend they rode up.</p>
<p>The ascent took a little over 6 hours with plenty of time to stop, enjoy the vista and take <a href="http://gallery.me.com/gauberger#100277&amp;view=null&amp;bgcolor=black&amp;sel=24">pictures</a>. Although the climb is never very steep, I found the ride to be somewhat difficult because of its length and elevation. I also think that I screwed up the adjustment of the seat and had it too high. As a result, I developed a pain on my left glute that made it pretty uncomfortable to stay seated. I also did not train much prior to it, relying on miles accumulated previously in the season. Ok, that should be enough excuses to ignore the crushing realization that the best rider in the <a href="http://cycletothesun.net/reports2008/ResultsCombined.PDF">Cycle to the sun race</a> made it in 2 hours and 51 minute, wow.</p>
<p>After dressing up with all the clothes I brought, I started the descent. I was surprise how easy and pleasant the downhill turned out to be. As I lost elevation, the weather warmed up gradually and I passed a couple riders on their way up.</p>
<p>I made it back to Paia in a couple of hours, in time for a celebratory Gianduia Gelato at <a href="http://www.onogelatocompany.com/">Ono Gelato</a>.</p>
<p>Overall, the ride went very well. The only problem was a total failure of my Garmin Edge 305 computer. After I turn it off at Sunrise Market to preserve batteries, it would not re-acquire satellite signals. Because the bike was a rental, there were no sensor mounted so without GPS, I lost elevation and distance tracking. So, no route and no stats to share for posterity. I guess I&#8217;ll have to do it again.</p>
<p><a href="http://gallery.me.com/gauberger#100277">Complete picture gallery</a></p>
<h3>Route</h3>
<ul>
<li>0: Start on Baldwin Ave (downtown Paia).</li>
<li>6.5: Pass Makawao Park and town. Baldwin change into Olinda Rd.</li>
<li>8: RIGHT to Hanamu Road (as you&#8217;re passing the horse stables).</li>
<li>9: LEFT at intersection.</li>
<li>9.1: LEFT on Haleakala Hwy.</li>
<li>13.5: LEFT on Haleakala Hwy.</li>
<li>14: Last chance for food STOP at Sunrise Market (3,500 feet)</li>
<li>23: Park entrance (7,000 feet)</li>
<li>34: Summit (10,000 feet)</li>
</ul>
<p><a href="http://www.gmap-pedometer.com/?r=2301846">Google map</a> or <a href="http://cycletothesun.net/details/coursemaplarge.htm">Cycle to the sun map</a></p>
<img src="http://feeds.feedburner.com/~r/auberger_com/~4/Zkal1rtLbc4" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://auberger.com/archives/2008/10/riding-up-and-down-haleakala/feed</wfw:commentRss>
		<slash:comments>2</slash:comments>
		<feedburner:origLink>http://auberger.com/archives/2008/10/riding-up-and-down-haleakala</feedburner:origLink></item>
	</channel>
</rss>
