<?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>Technoetic &#187; XPlanner</title>
	<atom:link href="http://blog.technoetic.com/categories/software-development/agile-techniques/xplanner/feed/" rel="self" type="application/rss+xml" />
	<link>http://blog.technoetic.com</link>
	<description></description>
	<lastBuildDate>Wed, 28 Jul 2010 10:55:39 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.0</generator>
		<item>
		<title>APM Tooling Survey and XPlanner</title>
		<link>http://blog.technoetic.com/2007/01/22/apm-tooling-survey-and-xplanner/</link>
		<comments>http://blog.technoetic.com/2007/01/22/apm-tooling-survey-and-xplanner/#comments</comments>
		<pubDate>Mon, 22 Jan 2007 12:07:51 +0000</pubDate>
		<dc:creator>Steve</dc:creator>
				<category><![CDATA[Agile]]></category>
		<category><![CDATA[Software Dev.]]></category>
		<category><![CDATA[XPlanner]]></category>

		<guid isPermaLink="false">http://blog.technoetic.com/2007/01/22/apm-tooling-survey-and-xplanner/</guid>
		<description><![CDATA[Trail Ridge Consulting has released the results of an agile project management tooling survey performed in late 2006. Apparently, APM tools are being widely used by both small and large organizations although the primary reasons differ with the size of the organization. It was interesting to me to see that card-based approaches are use less [...]]]></description>
			<content:encoded><![CDATA[<p>Trail Ridge Consulting has released the results of an agile <a href="http://trailridgeconsulting.com/surveys.html">project management tooling survey</a> performed in late 2006. Apparently, <a href="http://blog.technoetic.com/agile-pm-tools/">APM tools</a> are being widely used by both small and large organizations although the primary reasons differ with the size of the organization. It was interesting to me to see that card-based approaches are use less often than dedicated APM tools or MS Office tools like Excel.</p>
<p>It was also interesting to see that XP has been adopted in about half as many organizations as Scrum. Of course, I&#8217;d guess that many of the Scrum shops are using at least some XP software development practices.</p>
<p><img src="http://www.xplanner.org/images/logo.jpg" alt="XPlanner" align="left" hspace="4" /> <a href="http://www.xplanner.org">XPlanner </a> was the fourth most widely used APM tool and the only open source product in the top 10 most used tools. (There is a factual error in the survey results that says ScrumWorks is also open source. The ScrumWorks Basic product is free but not open source). XPlanner is also the most used tool focusing specifically on XP. It surprised me a little to see that XPlanner is adopted somewhat more by large organizations than small organizations. It&#8217;s possible that this is an indication that the licensing fees for the commercial tools are high enough to cause some pain for large organizations. I know at least one large organization that chose XPlanner over VersionOne for this reason.</p>
<p>As the founder<sup>[1]</sup> of the XPlanner project, I&#8217;m very happy to see it so widely used even with no marketing or sales resources. </p>
<hr /><span style="font-size: 0.9em">1. <a href="http://docs.codehaus.org/display/~jacmorel">Jacques Morel</a> is now the XPlanner project management and doing a great job.</span></p>
]]></content:encoded>
			<wfw:commentRss>http://blog.technoetic.com/2007/01/22/apm-tooling-survey-and-xplanner/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>XPlanner article in JavaWorld</title>
		<link>http://blog.technoetic.com/2005/08/21/xplanner-article-in-javaworld/</link>
		<comments>http://blog.technoetic.com/2005/08/21/xplanner-article-in-javaworld/#comments</comments>
		<pubDate>Sun, 21 Aug 2005 13:06:23 +0000</pubDate>
		<dc:creator>Steve</dc:creator>
				<category><![CDATA[Agile]]></category>
		<category><![CDATA[Open Source Devel.]]></category>
		<category><![CDATA[Software Dev.]]></category>
		<category><![CDATA[XPlanner]]></category>

		<guid isPermaLink="false">http://blog.technoetic.com/2005/08/21/xplanner-article-in-javaworld/</guid>
		<description><![CDATA[Check out the new article about XPlanner in JavaWorld. As a side note, I&#8217;ve had several people request the XPlanner on Rails code. It would be very interesting to have someone pursue that effort.]]></description>
			<content:encoded><![CDATA[<p>Check out the new <a href="http://www.javaworld.com/javaworld/jw-08-2005/jw-0815-xplanner.html">article about XPlanner</a> in JavaWorld.</p>
<p>As a side note, I&#8217;ve had several people request the XPlanner on Rails code. It would be very interesting to have someone pursue that effort.</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.technoetic.com/2005/08/21/xplanner-article-in-javaworld/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>XPlanner: A Selfish Application</title>
		<link>http://blog.technoetic.com/2005/07/05/selfish-xplanner/</link>
		<comments>http://blog.technoetic.com/2005/07/05/selfish-xplanner/#comments</comments>
		<pubDate>Tue, 05 Jul 2005 13:31:12 +0000</pubDate>
		<dc:creator>Steve</dc:creator>
				<category><![CDATA[Open Source Devel.]]></category>
		<category><![CDATA[XPlanner]]></category>

		<guid isPermaLink="false">http://blog.technoetic.com/2005/05/31/xplanner-a-selfish-application/</guid>
		<description><![CDATA[Back in 1997, Brian Foote and Joseph Yoder wrote about The Selfish Class. Their paper was focused on software artifacts, mostly at the class or class library level but I believe the patterns also describe how application usage spreads. According to Foote and Yoder&#8230; &#8220;THE SELFISH CLASS pattern examines how the sociobiological notion that evolving [...]]]></description>
			<content:encoded><![CDATA[<p>Back in 1997, Brian Foote and Joseph Yoder wrote about <a href="http://www.joeyoder.com/papers/patterns/Selfish/selfish.html">The Selfish Class</a>. Their paper was focused on software artifacts, mostly at the class or class library level but I believe the patterns also describe how application usage spreads.</p>
<p>According to Foote and Yoder&#8230;</p>
<blockquote><p>&#8220;THE SELFISH CLASS pattern examines how the sociobiological notion that evolving artifacts tend to behave in the interests of their own survival applies to evolving code. The radical shift in perspective that Dawkins proposed was that from the standpoint of a gene, the organism itself was just a convenient vehicle the gene employed to propagate itself. Our perspective is that programmers stand in just this sort of relationship to evolving code artifacts. The [following] six patterns examine specific strategies that code artifacts can employ to attract programmers.&#8221;
</p></blockquote>
<p>So the memes attract the artifacts and the artifacts attract the programmers? It sounds a bit far fetched. However, I do believe the Selfish Class patterns do have a role to play in how application usage spread.<br />
<span id="more-53"></span></p>
<p>It&#8217;s difficult to know exactly how many teams use XPlanner. There have been 60,000+ downloads on Source Forge (as of June 2005), which is many more than other similar projects whose download statistics are also tracked by Source Forge. Using the number of links on <a href="http://del.icio.us/sbate/agile%2Bprojectmanagement+tool">del.icio.us</a> as a rough indicator of interest gives similar results. I&#8217;ve been surprised by the rate of adoption of XPlanner over other open source and commercial agile planning tools. I believe these results are related to the Selfish Class patterns. Let&#8217;s look at these patterns in the XPlanner context.</p>
<p><strong>WORKS OUT OF THE BOX</strong></p>
<blockquote><p>Designers are more likely to reuse an object if it is easy to try it out and see how it works. A good initial impression can motivate the designer to spend the additional time to develop a detailed sense of an object&#8217;s reuse potential. When the designer can actually see that an object works, he or she develops the confidence that a more detailed exploration will be time well spent. Conversely, if an artifact, such as a class, framework, component, or application, can&#8217;t be made to work at all, or requires elaborate preparation in order to work, the designer may become discouraged, and look to other options.</p></blockquote>
<p>If you substitute &#8216;user&#8217; for &#8216;designer&#8217; in the quote above, then these statements are also relevant to application adoption. They can apply in at least two different ways. XPlanner is strong in one and weak in the other. XPlanner&#8217;s strength is that it&#8217;s easy to use once it&#8217;s been installed. My original goal was to make it easy enough to use that I&#8217;d never have to write a user manual. Even though the XPlanner community has added many features since the original release, we&#8217;ve been able to keep it simple enough that users can easily discover how to use it without a manual (who reads the manual anyway?).</p>
<p>Where XPlanner is currently weak is that it can be difficult to install the application. It&#8217;s a relatively easy installation for an individual or team with a J2EE servlet container and MySQL already running. Just drop in the JAR file and go. However,  it can be difficult for teams with limited Java/J2EE experience. XPlanner needs an installer program.</p>
<p>WORKS OUT OF THE BOX doesn&#8217;t mean that difficult tasks are as easy as with more complex tools and associated user interfaces. It&#8217;s more about the application should be easy to use, right from the start. More about that later.</p>
<p><strong>LOW SURFACE-TO-VOLUME RATIO</strong></p>
<blockquote><p>Objects that allow a user to control a large volume of complex machinery with a small, simple interface are more likely to flourish than those that don&#8217;t. An object with a simple interface relative to its internal complexity may be more likely to WORK OUT OF THE BOX.</p></blockquote>
<p>There&#8217;s a fair amount of complexity inside XPlanner. However, most of this complexity related to security, internationalization, web service interfaces, persistent data access, and so on has little or no impact on the user interface and it&#8217;s ease of use. However, under the hood exist the hooks that developers need for integrating XPlanner with other project tools.</p>
<p><strong>GENTLE LEARNING CURVE</strong></p>
<blockquote><p>&#8220;Complex interfaces can overwhelm beginning users.</p>
<p>In order to be Flexible and Adaptable, artifacts may provide a variety of Customizable and Tailorable interfaces. The variety and complexity of these interfaces can be confusing and intimidating to users who are unfamiliar with an artifact. These users are precisely the ones an artifact must attract if it is to broaden its mind-share. Artifacts that exhibit high Utility without imposing an up-front learning burden on the programmer have an advantage over those that do not.</p>
<p>An important force here is Time. Given unlimited time, a programmer might elect to learn a complex but powerful artifact as an investment in his or her skills. However, it is now far more likely that such a programmer, faced with the overwhelming array of choices that the marketplace now, will opt for the easier to Comprehend artifact every time.&#8221;</p></blockquote>
<p>There are two ways to look at the pattern when applied to XPlanner. From the user interface perspective, the effect is similar to WORKS OUT OF THE BOX. It doesn&#8217;t take much time for a new user to start working with an installed XPlanner application. For developers extending XPlanner, the situation isn&#8217;t quite so good. The architecture is relatively clean but has become more complex over the years as new features have been added. We&#8217;ve attempted to make XPlanner easy to extend by adding various plugin extension points, but there is definitely an opportunity for improvement here.</p>
<p>I&#8217;m not sure how much this pattern has influenced XPlanner adoption compared to similar tools.</p>
<p><strong>PROGRAMMING-BY-DIFFERENCE</strong></p>
<blockquote><p>&#8220;You want to adapt an artifact to address new requirements while maintaining the artifact’s integrity.&#8221;</p></blockquote>
<p>This is one of XPlanner strengths compared to most commercial offerings. Without source code or an extremely well designed and documented extension API, it&#8217;s difficult to adapt an application. Many installations of XPlanner have been adapted to work with existing tools. The many tests at the unit and system level also make it easier to adapt XPlanner while remaining confident that you haven&#8217;t completely broken the application.</p>
<p><strong>FIRST ONE’S FREE</strong></p>
<blockquote><p>&#8220;In order to survive, an artifact must become widely Available.</p>
<p>No matter how good an artifact is, it will have no chance of proliferating if other programmers never see it. In order to survive, an artifact must gain a wide audience. One of the forces that may limit an artifact’s Availability is it’s Cost. A countervailing force is Bankruptcy. With this strategy, there is always the risk of giving away the store.</p>
<p>Therefore, give the artifact away.&#8221;</p></blockquote>
<p>The first XPlanner is free, and so is every one after that. This is definitely a big &#8220;selling&#8221; point for the application. Many of the XPlanner competitors are overpriced, in my opinion. A team is likely to try XPlanner and see how it works for them rather than spend large sums of money on a commercial product. Often, XPlanner does most of what they need. In other words, it provides 80%+ of the functionality of the expensive commercial products at 0% of the cost. That&#8217;s a good trade off.</p>
<p><strong>WINNING TEAM</strong></p>
<blockquote><p>In order to survive, an artifact must become widely available.</p>
<p>No matter how good an artifact is, it will have no chance of proliferating if other programmers never see it. In order to survive, an artifact must gain a wide audience. One way an artifact can become widely Available is to hitch a ride on a popular platform. The way for an artifact to win big is to have its code universally included with every copy of a system that ships. One drawback to this strategy is that the artifact loses its Autonomy. It’s fate becomes tied to that of it’s platform.</p>
<p>Therefore, strive to become bundled with a popular platform.</p></blockquote>
<p>Several of XPlanner&#8217;s commercial competitors have chosen the .NET platform for their application and I believe this has hurt their adoption. I&#8217;m not saying that .NET is not a winning team, but in the context of wide application adoption, especially on the server side, I believe Java (or other cross platform languages like PHP, Ruby, Python, Perl, &#8230;) has an edge. A large number of XPlanner installations run on Linux and .NET applications are a hard sell for that crowd.</p>
<p>I&#8217;ve always thought that XPlanner might have had even wider adoption if it had been written in PHP or Ruby on Rails instead of J2EE. A few years (before Rails) I asked the XPlanner community about moving to PHP and there was strong resistance to it. Maybe there were just more Java programmers than PHP programmers on the list at the time. I don&#8217;t know, but I thought it was interesting.</p>
<p>The WINNING TEAM effect for XPlanner is more about flexibility in deploying the application across a wide variety of platforms than it is about J2EE per se.</p>
<p>The following list is ordered by how what I believe  is the effect of each  Selfish Class pattern on XPlanner&#8217;s popularity.</p>
<ol>
<li>FIRST ONE’S FREE</li>
<li>WINNING TEAM (cross platform)</li>
<li>WORKS OUT-OF-THE-BOX</li>
<li>GENTLE LEARNING CURVE</li>
<li>PROGRAMMING-BY-DIFFERENCE</li>
<li>LOW SURFACE-TO-VOLUME RATIO</li>
</ol>
<p>I believe the Selfish Class patterns are a great way to evaluate the forces that encourage application adoption, whether the application is open source or commercial.</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.technoetic.com/2005/07/05/selfish-xplanner/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>XPlanner Idea: Integrating LDAP users, Part 2</title>
		<link>http://blog.technoetic.com/2005/07/01/xplanner-ldap-users-2/</link>
		<comments>http://blog.technoetic.com/2005/07/01/xplanner-ldap-users-2/#comments</comments>
		<pubDate>Fri, 01 Jul 2005 19:33:59 +0000</pubDate>
		<dc:creator>Steve</dc:creator>
				<category><![CDATA[XPlanner]]></category>

		<guid isPermaLink="false">http://blog.technoetic.com/2005/07/01/xplanner-idea-integrating-ldap-users-part-2/</guid>
		<description><![CDATA[I did some experimentation with the technique for integrating LDAP data into XPlanner I wrote about yesterday. Unfortunately the results were not encouraging. The JdbcLDAP Bridge does provide some basic JDBC access to LDAP. However, it has some serious limitations when used with Hibernate. The getMetaData() function returns null in the released version of the [...]]]></description>
			<content:encoded><![CDATA[<p>I did some experimentation with the technique for integrating LDAP data into XPlanner <a href="http://blog.technoetic.com/2005/06/30/xplanner-ldap-users/">I wrote about yesterday</a>. Unfortunately the results were not encouraging.</p>
<p>The JdbcLDAP Bridge does provide some basic JDBC access to LDAP. However, it has some serious limitations when used with Hibernate. The getMetaData() function returns null in the released version of the JAR although this appears to be corrected in the JdbcLDAP CVS HEAD. After building the CVS version of the bridge, the next problem I encountered was that the bridge does not support table or select field aliases. Hibernate makes extensive use of these aliases. I modified the bridge to do some rudimentary handling of the aliases and I was actually able to map XPlanner Person objects from LDAP. That was cool. However, there was one other serious problem and this one is with XPlanner. The domain objects in XPlanner use an integer as the object identifier. I don&#8217;t know of any way to map the LDAP information to an integer ID. This is a good example of the wisdom of the Hibernate team&#8217;s advice to use objects as identifiers. That way the LDAP DN could be used as the Person identifier. XPlanner&#8217;s O/R mapping was designed before Hibernate and the integers are a legacy from that time. Modifying the identifier representation would mean changing all the domain classes. In other words, it&#8217;s not a trivial change.</p>
<p>Another approach might be to use a Hibernate interceptor to map LDAP DNs to an XPlanner identifier as an object is loaded. Sounds like quite a hack, but it might work.</p>
<p>I didn&#8217;t get far enough to try the C-JDBC driver for combining LDAP and MySQL.</p>
<p>I&#8217;ve read that Hibernate 3 can map a single object to multiple tables. Using that feature, it might be possible to have part of the Person object in the relational database and the other part in LDAP.</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.technoetic.com/2005/07/01/xplanner-ldap-users-2/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>XPlanner Idea: Integrating LDAP users</title>
		<link>http://blog.technoetic.com/2005/06/30/xplanner-ldap-users/</link>
		<comments>http://blog.technoetic.com/2005/06/30/xplanner-ldap-users/#comments</comments>
		<pubDate>Thu, 30 Jun 2005 19:50:01 +0000</pubDate>
		<dc:creator>Steve</dc:creator>
				<category><![CDATA[Agile]]></category>
		<category><![CDATA[Software Dev.]]></category>
		<category><![CDATA[XPlanner]]></category>

		<guid isPermaLink="false">http://blog.technoetic.com/2005/06/30/xplanner-idea-integrating-ldap-users/</guid>
		<description><![CDATA[I&#8217;ve been thinking about the problem of integrating existing LDAP user profiles into the XPlanner domain model. This is something that has been requested from users with large-scale XPlanner installations. The challenge is how to make the domain model easily and uniformly accessible to the XPlanner code when it&#8217;s partitioned across a combination of relational [...]]]></description>
			<content:encoded><![CDATA[<p>I&#8217;ve been thinking about the problem of integrating existing LDAP user profiles into the XPlanner domain model. This is something that has been requested from users with large-scale XPlanner installations. The challenge is how to make the domain model easily and uniformly accessible to the XPlanner code when it&#8217;s partitioned across a combination of relational tables and LDAP directories.</p>
<p>Here&#8217;s a wild idea&#8230; one that I haven&#8217;t tried yet, but it would be an interesting experiment.<br />
<span id="more-58"></span></p>
<p>XPlanner uses Hibernate. Hibernate uses JDBC connections to access relational data. What if we made the LDAP data look like a relational database, accessible through JDBC? There&#8217;s an open source tool called the <a href="http://www.octetstring.com/products/BridgeDriver.php">JDBC-LDAP Bridge</a> that provides access LDAPv3 repository using a Type 4 JDBC driver. OK, so that&#8217;s one problem potentially solved.</p>
<p>How do we use the new JDBC data source with Hibernate. Well, unfortunately, we have to use two Hibernate SessionFactory objects, one for the JDBC-LDAP Bridge and one for the relational database. This makes the partitioning of the data less transparent than I&#8217;d like. What if we could treat both JDBC connections as a single virtual JDBC connection?</p>
<p>We can. There&#8217;s an open source JDBC driver called <a href="http://c-jdbc.objectweb.org/">C-JDBC</a> that provides JDBC clustering. It has many interesting features, but for our purpose it will allow us to combine the JDBC-LDAP Bridge and MySQL (or other relational database) JDBC driver into a single virtual JDBC connection.</p>
<p>At least theoretically, if we configure Hibernate to use the C-JDBC driver it should see a unified view of the XPlanner domain model although it&#8217;s actually partitioned across LDAP and a relational database.</p>
<p>Like I said, I haven&#8217;t tried this yet. If you know of problems with the approach let me know.</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.technoetic.com/2005/06/30/xplanner-ldap-users/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>XPlanner and Distributed XP Teams</title>
		<link>http://blog.technoetic.com/2005/06/06/distributed-teams/</link>
		<comments>http://blog.technoetic.com/2005/06/06/distributed-teams/#comments</comments>
		<pubDate>Mon, 06 Jun 2005 11:00:05 +0000</pubDate>
		<dc:creator>Steve</dc:creator>
				<category><![CDATA[Agile]]></category>
		<category><![CDATA[Software Dev.]]></category>
		<category><![CDATA[XPlanner]]></category>

		<guid isPermaLink="false">http://blog.technoetic.com/2005/03/07/distributed-teams/</guid>
		<description><![CDATA[XPlanner was originally developed to support a distributed XP team. This team had been using note cards successfully for over a year but a key stakeholder had been required to travel extensively and they wanted to monitor the development progress. Later, we used XPlanner as part of a larger tool suite to support distributed developer [...]]]></description>
			<content:encoded><![CDATA[<p>XPlanner was originally developed to support a distributed XP team. This team had been using note cards successfully for over a year but a key stakeholder had been required to travel extensively and they wanted to monitor the development progress.  Later, we used XPlanner as part of a larger tool suite to support distributed developer teams. This article describes some of the tools and techniques we used.<br />
<span id="more-21"></span></p>
<p>The web-based, thin client approach used by XPlanner makes it very useful for a distributed team. I&#8217;ve participated in distributed planning games where most of the team was collocated and one or more team members were at other locations. We typically displayed XPlanner at the central site using a video projector and used a speakerphones and conference calls for verbal communication. As we clarified stories and created estimates, anybody at any location could make related changes in XPlanner. This worked very well.</p>
<p>Status tracking is equally facilitated by XPlanner&#8217;s web-based interface. Developers enter their actual hours and task status. Any authorized user can monitor the status of an iteration and see who is working on what tasks.</p>
<p>The ability to attach notes and documents to plan elements like stories and tasks can also be useful as a simple means of distributed communication. However, it practice I&#8217;ve seen this used much less than IM, email, phone calls, and wikis.</p>
<p>Our distributed team used a single CVS repository for development. We used an integration token (sometimes called an integration &#8220;hat&#8221;) to control integration activities. Some of the tokens we used included a toy light saber, a skeleton on a stick, a hard-hat, and so on. This became more problematic with remote developers. Initially the remote developer would call someone at the central location to hold the token for them until the integration was complete. The web-based integration token eliminated the need for those calls and, as a bonus, recorded a summary of recent integrations. The integration history was useful to see who was integrating what types of functionality. This type of transparency compensates partially for not having the whole team in one room.</p>
<p>As I mentioned earlier, XPlanner was only a part of a larger tool suite for supporting distributed development. The following is a summary of the tools I&#8217;ve used on distributed XP projects. The order of the tools list for each phase is an indication, more or less, of each tool&#8217;s usage frequency. Other tools like blogs may be useful for distributed teams but I haven&#8217;t personally used them yet for that purpose.</p>
<p>During story definition:</p>
<ul>
<li>XPlanner</li>
<li>issue tracker (Jira)</li>
<li>email</li>
<li>telephone</li>
<li>wiki</li>
</ul>
<p>During the planning game:</p>
<ul>
<li>XPlanner (video projector at central location)</li>
<li>issue tracker (Jira)</li>
<li>telephone (speakerphone)</li>
</ul>
<p>During the iteration:</p>
<ul>
<li>XPlanner (time tracking, integration tracking)</li>
<li>issue tracker (Jira)</li>
<li>wiki</li>
<li>instant messaging</li>
<li>email</li>
<li>telephone (standup meetings and as needed)</li>
</ul>
]]></content:encoded>
			<wfw:commentRss>http://blog.technoetic.com/2005/06/06/distributed-teams/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>XPlanner Tip: Multiple Backlogs</title>
		<link>http://blog.technoetic.com/2005/05/31/xplanner-tip-multiple-backlogs/</link>
		<comments>http://blog.technoetic.com/2005/05/31/xplanner-tip-multiple-backlogs/#comments</comments>
		<pubDate>Tue, 31 May 2005 18:07:05 +0000</pubDate>
		<dc:creator>Steve</dc:creator>
				<category><![CDATA[Agile]]></category>
		<category><![CDATA[Software Dev.]]></category>
		<category><![CDATA[XPlanner]]></category>

		<guid isPermaLink="false">http://blog.technoetic.com/2005/05/31/xplanner-tip-multiple-backlogs/</guid>
		<description><![CDATA[Have you worked on a project with multiple customers representing multiple customer roles? For example, there may be a product manager role, a customer support role, a system operator/administrator role, and so on. I&#8217;ve seen this happen several times. The stories might also be conceptually organized into new features and technical debt (including refactoring and [...]]]></description>
			<content:encoded><![CDATA[<p>Have you worked on a project with multiple customers representing multiple customer roles? For example, there may be a product manager role, a customer support role, a system operator/administrator role, and so on. I&#8217;ve seen this happen several times.  The stories might also be conceptually organized into new features and technical debt (including refactoring and bug fixes). Ideally, your group of customers is &#8220;speaking with one voice&#8221; but in actuality there are usually competing interests. Some stories are planned and some are not. Most teams maintain some type of story backlog for these unplanned stories. The problem is that, in the worst case, technical debt or administrative features might never be worked because the product manager is completely focused on new feature development.<br />
<span id="more-50"></span><br />
XPlanner has been criticized by some for not having an explicit mechanism for representing story backlogs. The reason this mechanism has never been added is that it generally works very well to create a <em>pseudo-iteration</em> to store the unplanned stories. As stories are planned they are then moved to a real iteration. One advantage of this approach is the extra flexibility compared to a built-in backlog mechanism that only supports only a single backlog.</p>
<p>If the backlog is viewed as a prioritized story queue, then some of the stories may become <em>starved</em> for attention (similar to starvation in prioritized task queue systems). One technique for preventing starvation is to set priorities of stories as a function of how long they&#8217;ve been in the backlog. The longer the stories have languished in the backlog, the higher the priority.</p>
<p>I don&#8217;t like this approach. The priorities have meaning to the team that set them and modifying the priorities automatically will risk losing that meaning. There&#8217;s also the problem of comparing priorities across different roles and types of stories. It can be difficult to compare the priority of a technical debt story to a new feature story, for example.</p>
<p>Another approach is to create multiple backlogs. In XPlanner, this means creating a pseudo-iteration for each customer role or story category (depending on how you want to group the stories). Given an overall effort budget for an iteration, the customers decide on how to partition that budget to the various roles. For example, new feature development might get 75% of the budget,  technical debt reduction is allocated 15%, and system administration features get 10%. The stories are then planned from each backlog, in priority order according to the specific backlog, until the budget has been allocated to stories.</p>
<p>This technique reduces the risk of starvation for categories of stories without requiring dynamic story priority modification or attempting to compare priorities between the story categories.</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.technoetic.com/2005/05/31/xplanner-tip-multiple-backlogs/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Ruby on Rails: Experimental XPlanner Port</title>
		<link>http://blog.technoetic.com/2005/04/02/xplanner-on-rails/</link>
		<comments>http://blog.technoetic.com/2005/04/02/xplanner-on-rails/#comments</comments>
		<pubDate>Sat, 02 Apr 2005 18:28:35 +0000</pubDate>
		<dc:creator>Steve</dc:creator>
				<category><![CDATA[Agile]]></category>
		<category><![CDATA[Software Dev.]]></category>
		<category><![CDATA[XPlanner]]></category>

		<guid isPermaLink="false">http://blog.technoetic.com/2005/04/02/ruby-on-rails-experimental-xplanner-port/</guid>
		<description><![CDATA[I&#8217;ve been hearing so much about Ruby on Rails lately that I wanted to try it for myself. As an experiment I decided to port the XPlanner planning tool for XP/agile teams. This was only a partial porting effect focused on the core XPlanner functionality. I experienced a few minor challenges at the start of [...]]]></description>
			<content:encoded><![CDATA[<p>I&#8217;ve been hearing so much about <a href="http://www.rubyonrails.com/">Ruby on Rails</a> lately that I wanted to try it for myself. As an experiment I decided to port the <a href="http://www.xplanner.org/">XPlanner</a> planning tool for XP/agile teams. This was only a partial porting effect focused on the core XPlanner functionality.</p>
<p>I experienced a few minor challenges at the start of this effort. I was working with an existing database schema which is a little trickier than creating a schema from scratch using Rails naming conventions. It wasn&#8217;t difficult to support the existing schema but some inaccuracies in the documentation led me astray temporarily.</p>
<p>When I&#8217;m learning a new framework I like to be able to easily browse the source code. This exploration fills in the information gaps in the documentation and in some cases resolves inaccuracies or ambiguities in the documentation. This type of exploration was very beneficial even back when my development environment was Emacs and ctags or the info application. However, I&#8217;ve been spoiled by modern IDEs with powerful cross referencing and source code navigation features. I used the Ruby Eclipse plugin and it was nice to have some basic syntax highlighting but it has no source code navigation support (version 0.5). I felt like I was somewhat crippled compared to exploring a Java framework. Obviously this is not a criticism of Ruby or Rails <em>per se</em>, but it&#8217;s a consideration in the total productivity evaluation. The next version of the Ruby Eclipse plugin will address some of these issue so I expect the situation to improve.</p>
<p><span id="more-45"></span><br />
The Rails MVC architecture was similar to the XPlanner internal architecture so porting the core functionality was not difficult. There&#8217;s definitely a serious increase in fun when developing a scripted web application. I enjoyed Ruby&#8217;s dynamic features and how they&#8217;ve been used in Rails. It&#8217;s not hype that there is no XML configuration is required with Rails. This is a real time save compared to a Java Struts application using Tiles.</p>
<p>Many people are evangelizing Rails as providing a 10x productivity improvement. I wouldn&#8217;t say I experienced that level of productivity increase compared to a Java web application but that could well be due to my newbie status with Rails compared to extensive experience with Java applications. To fully port XPlanner will require charting and advanced HTML table components (sorting, pagination, filtering).</p>
<p>I wasn&#8217;t able to find portable charting code (pure Ruby, no native libraries) at the time I wrote this article. The charting code that I did find didn&#8217;t appear as capable as open source Java charting packages like JFreeChart. I&#8217;m also concerned about packaging and installation issues when a web application requires native libraries.</p>
<p>I didn&#8217;t find any advanced HTML table components. It&#8217;s not extremely difficult to write one of these from scratch, but the time spent writing it offsets much of the benefits of the more productive language and web framework. I believe this situation will improve with Ruby and Rails over time and probably very quickly, but again it&#8217;s a consideration for now when considering productivity. If portability is not an issue and advanced web components are not needed for your application, then Rails may be a very good choice.</p>
<p><em>Note: I&#8217;m not currently planning to complete this experimental XPlanner port. However, if someone is interested in finishing the port and supporting it, I&#8217;d be happy to provide the source that I&#8217;ve developed so far. The current experimental code is compatible with existing XPlanner databases (as of XPlanner 0.6.2 and the upcoming 0.6.3 versions).</em></p>
]]></content:encoded>
			<wfw:commentRss>http://blog.technoetic.com/2005/04/02/xplanner-on-rails/feed/</wfw:commentRss>
		<slash:comments>7</slash:comments>
		</item>
	</channel>
</rss>
