<?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"
	>

<channel>
	<title>Practically Agile</title>
	<atom:link href="http://practicallyagile.com/feed/" rel="self" type="application/rss+xml" />
	<link>http://practicallyagile.com</link>
	<description>Using Agile in less-than-perfect situations since Y2K</description>
	<pubDate>Fri, 14 Nov 2008 21:11:07 +0000</pubDate>
	<generator>http://wordpress.org/?v=abc</generator>
	<language>en</language>
			<item>
		<title>MiniBarBCS (Before)</title>
		<link>http://practicallyagile.com/2008/11/minibarbcs-before/</link>
		<comments>http://practicallyagile.com/2008/11/minibarbcs-before/#comments</comments>
		<pubDate>Fri, 14 Nov 2008 21:11:07 +0000</pubDate>
		<dc:creator>Mike</dc:creator>
		
		<category><![CDATA[Conferences and Talks]]></category>

		<category><![CDATA[barcamp]]></category>

		<category><![CDATA[bryan]]></category>

		<category><![CDATA[college station]]></category>

		<category><![CDATA[conferences]]></category>

		<guid isPermaLink="false">http://practicallyagile.com/?p=12</guid>
		<description><![CDATA[I&#8217;m sitting in one of the rooms we&#8217;re going to use for MiniBarBCS. There are cleaning staff all over the 5th floor of the Varisco. We&#8217;ve got 4-5 rooms. I expect it is going to be hard to decide which one to be in at any given moment. If you&#8217;re in the area of Bryan-College [...]]]></description>
			<content:encoded><![CDATA[<p>I&#8217;m sitting in one of the rooms we&#8217;re going to use for <a title="MiniBarBCS on Barcamp.org" href="http://barcamp.org/MiniBarBCS">MiniBarBCS</a>. There are cleaning staff all over the 5th floor of the Varisco. We&#8217;ve got 4-5 rooms. I expect it is going to be hard to decide which one to be in at any given moment. If you&#8217;re in the area of Bryan-College Station, Texas tonight (that would include Houston and Austin), think about coming &#8212; forget that, just come on. With topic suggestions of everything from iPhone development to Agile practices to trans-humanism, there&#8217;s bound to be something worth your time.</p>
]]></content:encoded>
			<wfw:commentRss>http://practicallyagile.com/2008/11/minibarbcs-before/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Joel on Commissions</title>
		<link>http://practicallyagile.com/2008/10/joel-on-commissions/</link>
		<comments>http://practicallyagile.com/2008/10/joel-on-commissions/#comments</comments>
		<pubDate>Mon, 13 Oct 2008 23:01:36 +0000</pubDate>
		<dc:creator>Mike</dc:creator>
		
		<category><![CDATA[Management]]></category>

		<category><![CDATA[compensation]]></category>

		<category><![CDATA[joel]]></category>

		<category><![CDATA[pitfalls]]></category>

		<guid isPermaLink="false">http://practicallyagile.com/?p=8</guid>
		<description><![CDATA[I generally like reading what Joel has to say. I respect that he is running a reasonably successful software shop and doing it in what he believes is the best way possible. Even though I often find my own version of the &#8220;best way possible&#8221; a little different, his writings are thoughtful and good fodder [...]]]></description>
			<content:encoded><![CDATA[<p>I generally like reading what <a title="Joel on Software" href="http://www.joelonsoftware.com/">Joel</a> has to say. I respect that he is running a reasonably successful software shop and doing it in what he believes is the best way possible. Even though I often find my own version of the &#8220;best way possible&#8221; a little different, his writings are thoughtful and good fodder for further discussion. However, I have a bit of an issue with his <a title="Joel in Inc - Sins of Commissions" href="http://www.inc.com/magazine/20081001/how-hard-could-it-be-sins-of-commissions.html">latest article in Inc</a>.</p>
<p>I agree wholeheartedly with the majority of this article. I have heard of <a title="Robert Austin's bio at Harvard" href="http://drfd.hbs.edu/fit/public/facultyInfo.do?facInfo=bio&amp;facEmId=raustin">Robert Austin</a>&#8217;s <a title="Amazon - Measuring and Managing Performance in Organizations" href="http://www.amazon.com/gp/product/0932633366/qid=1134395121/sr=8-1/ref=pd_bbs_1/002-7376019-8208802?n=507846&amp;s=books&amp;v=glance">work</a> before, and agreed with it then. I have personally seen incentive programs fail for numerous reasons. No, it&#8217;s not the overall article I have a problem with. It is the very last paragraph. Joel spends the entire article building up a great case for not using traditional incentives because they can&#8217;t be set up to work and then, just when you expect a sage solution, completely backtracks and says in essence, &#8220;Forget all that. They will work if you set up the right rules.&#8221;</p>
<p>Huh? No they won&#8217;t. People often don&#8217;t even realize they are gaming the system. The problem is not that the right rules are not in place. The problem is that the right thing to encourage is the overall success of the company or (maybe) the project, not success in a single dimension or even of some set of &#8220;key performance indicators&#8221;.</p>
<p>First and foremost, do not give individuals bonuses at all if you can help it. For example, provide a team with a bonus based on working software delivered to production that has been bug-free for 30 days. If that won&#8217;t work for some reason, make sure the bonus is tied to long-term effects. Tie the sales bonuses/incentives to customers that are sold profitably and still happy and profitable 30, 60, or 90 days after delivery.</p>
<p>Frankly, better yet, just pay people a good salary and forget the bonus. Or, if it makes you feel better, go back to a Christmas bonus, but base it on the health of the company as a whole.</p>
]]></content:encoded>
			<wfw:commentRss>http://practicallyagile.com/2008/10/joel-on-commissions/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Aligning Agile with Enterprise Architecture</title>
		<link>http://practicallyagile.com/2008/07/aligning-agile-with-enterprise-architecture/</link>
		<comments>http://practicallyagile.com/2008/07/aligning-agile-with-enterprise-architecture/#comments</comments>
		<pubDate>Wed, 09 Jul 2008 00:26:10 +0000</pubDate>
		<dc:creator>Mike</dc:creator>
		
		<category><![CDATA[Architecture]]></category>

		<category><![CDATA[agile]]></category>

		<category><![CDATA[design]]></category>

		<category><![CDATA[domain modeling]]></category>

		<category><![CDATA[streamlined object modeling]]></category>

		<guid isPermaLink="false">http://practicallyagile.com/?p=5</guid>
		<description><![CDATA[A mailing list pointed me to a recent post by Jeremy Miller on Agile design and an older one by Joe Ocampo. Both discuss how design happens in an Agile project. Both are great posts. Jeremy&#8217;s post sticks largely to what is considered the Agile &#8220;party line&#8221;: design is done all the time rather than [...]]]></description>
			<content:encoded><![CDATA[<p>A mailing list pointed me to a <a title="Jeremy D. Miller - How does design get done on an Agile Project?" href="http://codebetter.com/blogs/jeremy.miller/archive/2008/07/06/how-does-design-get-done-on-an-agile-project.aspx">recent post</a> by Jeremy Miller on Agile design and an <a title="AgileJoe - Cont: Where does the Ubiquitous Language come from?" href="http://www.lostechies.com/blogs/joe_ocampo/archive/2007/09/28/cont-where-does-the-ubiquitous-language-come-from.aspx">older one</a> by Joe Ocampo. Both discuss how design happens in an Agile project. Both are great posts. Jeremy&#8217;s post sticks largely to what is considered the Agile &#8220;party line&#8221;: design is done all the time rather than up front. Joe&#8217;s post talks about using <a title="Wikipedia - Domain-Driven Design" href="http://en.wikipedia.org/wiki/Domain-driven_design">Domain-Driven Design</a> to develop the &#8220;ubiquitous language&#8221; that teams need for communication. Jeremy admits in the comments that a <em>bit</em> of up-front establishment of a domain is useful as context, but distinguishes it from design. Presumably he is equating it with analysis. Having written <a title="Streamlined Modeling Home Page" href="http://www.streamlinedmodeling.com">a book</a> that, in part, shows how use of consistent domain modeling patterns can inform design and implementation, I would say it&#8217;s both. But that&#8217;s not what I want to talk about&#8230;.</p>
<p>Reading these posts and exploring a bit further, I began to relate the establishing of a domain context for stories with establishing an architectural context.</p>
<p>One of the main challenges I have faced and hear others describe is how to maintain agility when there is a scope of multiple Agile projects (what the PMBOK would call a program) or an enterprise portfolio that really needs <em>consistent</em> architecture. I am generally a believer in simple, evolutionary design. However, as Jeremy points out in his post, it requires people with the proper skills to maintain an open design/architecture and who know how to tell when they have reached the <a title="Mary Poppendieck in Doctor Dobb's" href="http://www.ddj.com/architect/184415014">last responsible moment</a>. What I have discovered is that as the scope of systems under development scale, the last responsible moment for certain architectural decisions tends to shift earlier.</p>
<p>As such, a reasonable step would be to include a (short) architectural analysis session for each release that would mirror the domain modeling exercises Joe mentions late in his post. In that way, those with architectural knowledge could get involved and discuss what architectures support the features required and which decisions need to be agreed up front. Provided this is timeboxed and the group puts appropriate emphasis on postponing that which can be, this is in line with Agile values as well.</p>
<p>I should also note that I would only add this practice if the team found it necessary. As a coach, I might recommend it upon seeing the following things either in a retrospective or during planning or other working sessions:</p>
<ul>
<li>multiple components, libraries, and/or frameworks in use that accomplish the same goals</li>
<li>&#8220;not invented here&#8221; syndrome</li>
<li>lack of integration testing between project teams&#8217; output</li>
<li>failure of or difficulty with coordinated deployment (usually preceded by the lack of integration testing)</li>
<li>no or limited consideration of nonfunctional requirements (performance, stability, etc.)</li>
<li>failure to meet nonfunctional requirements</li>
</ul>
<p>I&#8217;m sure there are other smells that would indicate a need for architectural planning. If you think of others, let me know in the comments.</p>
]]></content:encoded>
			<wfw:commentRss>http://practicallyagile.com/2008/07/aligning-agile-with-enterprise-architecture/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Iterative and Incremental: Part 2 - 1+1&gt;2</title>
		<link>http://practicallyagile.com/2008/05/iterative-and-incremental-part-2-112/</link>
		<comments>http://practicallyagile.com/2008/05/iterative-and-incremental-part-2-112/#comments</comments>
		<pubDate>Tue, 13 May 2008 16:01:16 +0000</pubDate>
		<dc:creator>Mike</dc:creator>
		
		<category><![CDATA[Process]]></category>

		<category><![CDATA[incremental]]></category>

		<category><![CDATA[iterative]]></category>

		<category><![CDATA[pitfalls]]></category>

		<guid isPermaLink="false">http://practicallyagile.com/?p=4</guid>
		<description><![CDATA[This is the second part of a long post on iterative and incremental development. In Part 1, definitions were provided to distinguish both practices from the general term &#8220;iterative development&#8221;. This part describes some pitfalls of doing one without the other and how each adds value to the other.
The pitfalls of only iterating without incrementing [...]]]></description>
			<content:encoded><![CDATA[<p>This is the second part of a long post on iterative and incremental development. In <a title="Definition" href="http://practicallyagile.com/2008/05/iterative-and-incremental-part-1-definition/">Part 1</a>, definitions were provided to distinguish both practices from the general term &#8220;iterative development&#8221;. This part describes some pitfalls of doing one without the other and how each adds value to the other.</p>
<p>The pitfalls of only iterating without incrementing are simple to summarize: nothing new is added. That is, if iterating is the practice of improving what already exists, then it provides no facility to add functionality to a system. While — in theory — the product and/or process would eventually be as near to perfect as humans can make it, the overall value would not increase.</p>
<p>Though it seems contrived, this happens in real projects. For example, assume that a new project starts its first iteration with requirements that are not properly thought out. The product that is created will not make the customers happy. They will want changes: improvements. They iterate on the requirements themselves, resulting in iteration on the product. The project team then discovers that the new implementation could support the changed requirements better with a change in architecture. They convince the customer to allow them to make the improvements. Meanwhile, the customer has spent so much time thinking about this one requirements set that they start to &#8220;need&#8221; more bells and whistles. Soon, updates to the requirements are created, and the cycle begins again.</p>
<p>The pitfalls of only incrementing without iterating are a little more complex. If incrementing only adds to what exists, then it is not spending effort to improve what is already there. At an extreme, this would be like sealing each iteration result in a shared library file (DLL, jar, etc.) and requiring each subsequent iteration to only use those pre-compiled artifacts. In a more realistic example, this is simply not allowing time for refactoring. Another version is skipping the retrospective or not implementing any of the improvements suggested by the retrospective. Both result in creating or failing to remove hurdles that slow or block progress.</p>
<p>Incrementing without iterating is more common in my experience. It is somewhat easier to see the lack of value increasing when nothing new is being created. It is more difficult to tell when the rate of value increase is stymied by technical, project, or other debt.</p>
<p>If you spend a portion of each period of work improving what has been done before, you can remove those hurdles that prevent progress. By making sure that a portion of each period of work is spent on adding new features or practices, we reduce or prevent unnecessary gold-plating and particularly wasteful forms of analysis paralysis. In short, each practice fills gaps left by the other.</p>
<p>At some point (1994 according to <a title="Incremental versus Iterative Development" href="http://alistair.cockburn.us/index.php/Incremental_versus_iterative_development">Alastair Cockburn&#8217;s article</a>), the project management and process community made the interesting decision to combine these to in the single term &#8220;iterative&#8221;.<br />
Was it, as Alastair says, because they were just happy to be &#8220;repeating the cycle&#8221;? My hope is that it is more because they saw the need for both to work together. The term may have been a poor choice, but combining them is a great choice.</p>
]]></content:encoded>
			<wfw:commentRss>http://practicallyagile.com/2008/05/iterative-and-incremental-part-2-112/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Iterative and Incremental: Part 1 - Definition</title>
		<link>http://practicallyagile.com/2008/05/iterative-and-incremental-part-1-definition/</link>
		<comments>http://practicallyagile.com/2008/05/iterative-and-incremental-part-1-definition/#comments</comments>
		<pubDate>Sun, 04 May 2008 16:25:03 +0000</pubDate>
		<dc:creator>Mike</dc:creator>
		
		<category><![CDATA[Process]]></category>

		<category><![CDATA[definitions]]></category>

		<category><![CDATA[incremental]]></category>

		<category><![CDATA[iterative]]></category>

		<guid isPermaLink="false">http://practicallyagile.com/?p=3</guid>
		<description><![CDATA[There are few people who argue against iterative development. However, it seems that while most of us consider iterative and incremental development to be part and parcel of iterations, not everyone seems to do both — at least not consciously and effectively. In a pair of posts, I will explain why both have more value [...]]]></description>
			<content:encoded><![CDATA[<p>There are few people who argue against iterative development. However, it seems that while most of us consider iterative and incremental development to be part and parcel of iterations, not everyone seems to do both — at least not consciously and effectively. In a pair of posts, I will explain why both have more value together than either does separately. This post will build the ground-work, describing what each of these practices is and their separate value. Part 2 will describe how they become more valuable when used together and the pitfalls of doing one without the other.</p>
<p>Iterative development is a means of scheduling time to improve the process and product. Think about retrospectives. An amount of time is spent working on the product. A discussion of strengths and needed improvements is held. Then, an amount of time is spent reworking the product just built and the practices in use. The point is that you spend time working on the <strong>same</strong> pieces each work period (iteration).</p>
<p>This iteration on the same thing allows considered improvement. It is similar to refactoring. This allows for paying off of technical debt, enhanced security and performance, and improvements in understanding, testing, and implementation. It increases overall quality and efficiency of the system under development and the practices in use.</p>
<p>Incremental development is a means of growing a large product through delivery of a series of smaller pieces. Think about use cases or user stories or features. The overall product is described as a set of discrete pieces, each having value on their own (see <a title="Bill Wake's INVEST defintition" href="http://xp123.com/xplor/xp0308/index.shtml">INVEST</a>). The pieces are related enough that when put together, they form a larger, cohesive system. In incremental development time is spent working on <span style="color: #000000;"><strong>new</strong></span> pieces each work period (iteration).</p>
<p>This iteration on small pieces allows for each new increment to be considered for deployment to production. A release plan may set goals for timing or scoping of releases, but the actual ability to demonstrate the working portion may lead to a decision that a set of functionality that is delivered earlier may have enough value to warrant an early release. Delivery of properly prioritized increments also helps to avoid getting to the end of a schedule without something valuable to deploy. The most important (and risky) parts of the system are guaranteed to be there early.</p>
<p>While writing this post, I noticed that <a title="Alistair's Main Site" href="http://alistair.cockburn.us/index.php/Main_Page">Alistair Cockburn</a> wrote <a title="Incremental versus Iterative Development" href="http://alistair.cockburn.us/index.php/Incremental_versus_iterative_development">something similar</a> in August of last year. His ending statement says in part that iterative development improves the product, while incremental improves the process. While Alistair is an authority and my experience and understanding is consistent with everything else he writes on that page, I disagree with this summation. It is more appropriate to say instead that iterative <strong>improves</strong> both product and process, while incremental <strong>builds upon</strong> both product and process.</p>
]]></content:encoded>
			<wfw:commentRss>http://practicallyagile.com/2008/05/iterative-and-incremental-part-1-definition/feed/</wfw:commentRss>
		</item>
	</channel>
</rss>
