<?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>Practically Agile &#187; Process</title>
	<atom:link href="http://practicallyagile.com/category/process/feed/" rel="self" type="application/rss+xml" />
	<link>http://practicallyagile.com</link>
	<description>Using Agile in less-than-perfect situations since Y2K</description>
	<lastBuildDate>Mon, 27 Dec 2010 18:15:20 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=</generator>
		<item>
		<title>Formality, Not Rigidity</title>
		<link>http://practicallyagile.com/2009/06/formality-not-rigidity/</link>
		<comments>http://practicallyagile.com/2009/06/formality-not-rigidity/#comments</comments>
		<pubDate>Fri, 19 Jun 2009 22:06:31 +0000</pubDate>
		<dc:creator>Mike</dc:creator>
				<category><![CDATA[Process]]></category>
		<category><![CDATA[agile]]></category>
		<category><![CDATA[retrospectives]]></category>

		<guid isPermaLink="false">http://practicallyagile.com/?p=103</guid>
		<description><![CDATA[Many people conflate formality and rigidity, treating them as inseparable. It is easy to see why. Formality leads to rigidity as mechanisms are put into place to ensure formalized practices and processes are followed. You have likely seen this go wrong as I know I have. Architecture groups and PMOs shift their focus. No longer [...]]]></description>
			<content:encoded><![CDATA[<p>Many people conflate formality and rigidity, treating them as inseparable. It is easy to see why. Formality leads to rigidity as mechanisms are put into place to ensure formalized practices and processes are followed. You have likely seen this go wrong as I know I have. Architecture groups and PMOs shift their focus. No longer an aid to progress, they become an obstruction. They keep their formality, but lose their purpose as they become rigid.</p>
<p>Agile is, in part, a reaction to the rigid process models of the past. It is no surprise that many throw formality out as well. However, without a degree of formality, we lose repeatability. This has happened in countless efforts to implement Agile methods. The team, seeing a chance to break from the rigidity, pushes off any attempts at formality as well. As the project progresses, cracks begin to form. There is no formal test plan, so high-level bugs creep in. That is, while the expressed stories may work as requested, certain aspects are simply not covered. Because there was no formal effort to design the user interface flow, usability of the product starts to plummet as the complexity of the combined requirements weighs upon each successive screen.</p>
<p>These, and other aspects, are things we as software development professionals have learned to do reasonably well in the last 30-plus years. Ignoring them hurts our chances of success. Are these things non-Agile or anti-Agile?</p>
<p>No they are not. To completely ignore formality would be to throw even Agile practices out the window. Software development requires people to coordinate actions. The amount of formality to do so varies based upon the team and its goal. However, some degree of formality can be an aid when more than one person is involved.</p>
<p>It is all in how we apply formality. Things such as test plans, information architecture and user interface flow, and domain modeling applied in an &#8220;all up front&#8221; fashion would be difficult to reconcile. However, none of these things has to be rigid. They can adapt just as easily as we can refactor our code. If the plans are designed with this in mind, small adaptations are easy while larger ones remain possible.</p>
<p>It is worth repeating that not every effort requires the same degree or type of formality. If a project is just starting or has only minimal and very simple user interactions, perhaps a comprehensive outline of user interface flow really isn&#8217;t necessary. However, we must train ourselves to recognize when it becomes necessary. As soon as anyone in a retrospective or user demo says, &#8220;I can&#8217;t find a screen where I can do X,&#8221; it might be time to examine the flow. In fact, it may be worth formalizing a list of &#8220;smells&#8221; that point to the need for adding some of these practices. Somewhat similar to those in <a href="http://www.amazon.com/gp/product/0321514521?ie=UTF8&amp;tag=practagile-20&amp;linkCode=as2&amp;camp=1789&amp;creative=390957&amp;creativeASIN=0321514521">Agile Adoption Patterns</a><img style="border:none !important; margin:0px !important;" src="http://www.assoc-amazon.com/e/ir?t=practagile-20&amp;l=as2&amp;o=1&amp;a=0321514521" border="0" alt="" width="1" height="1" />. What do you think?</p>
]]></content:encoded>
			<wfw:commentRss>http://practicallyagile.com/2009/06/formality-not-rigidity/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Full-Court Press and the Evils of Local Optimization</title>
		<link>http://practicallyagile.com/2009/06/full-court-press-and-the-evils-of-local-optimization/</link>
		<comments>http://practicallyagile.com/2009/06/full-court-press-and-the-evils-of-local-optimization/#comments</comments>
		<pubDate>Wed, 03 Jun 2009 03:48:27 +0000</pubDate>
		<dc:creator>Mike</dc:creator>
				<category><![CDATA[Process]]></category>
		<category><![CDATA[agile]]></category>
		<category><![CDATA[lean]]></category>
		<category><![CDATA[pitfalls]]></category>

		<guid isPermaLink="false">http://practicallyagile.com/?p=99</guid>
		<description><![CDATA[Great post from Bill Mill. Go on, read it. When you&#8217;re done, here&#8217;s the key quote: The Warriors could optimize like crazy for the press, but they&#8217;d be training and working and trading and drafting to be, at best, a pretty good team. This is why those that preach from the gospel of Lean try [...]]]></description>
			<content:encoded><![CDATA[<p><a title="What Gladwell is Missing: Institutional Memory" href="http://billmill.org/institutional_memory.html">Great post</a> from Bill Mill. Go on, read it. When you&#8217;re done, here&#8217;s the key quote:</p>
<blockquote><p>The Warriors could optimize like crazy for the press, but they&#8217;d be training and working and trading and drafting to be, at best, a pretty good team.</p></blockquote>
<p>This is why those that preach from the gospel of Lean try to impress upon us that local optimization is an insidious evil. It often looks good from a certain viewpoint, but it can hide other improvements that would provide a more holistic benefit. It can even prevent you from reaching your true goal.</p>
]]></content:encoded>
			<wfw:commentRss>http://practicallyagile.com/2009/06/full-court-press-and-the-evils-of-local-optimization/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Agile Retrospectives &#124; Book Review</title>
		<link>http://practicallyagile.com/2009/03/agile-retrospectives-book-review/</link>
		<comments>http://practicallyagile.com/2009/03/agile-retrospectives-book-review/#comments</comments>
		<pubDate>Mon, 09 Mar 2009 21:26:50 +0000</pubDate>
		<dc:creator>Mike</dc:creator>
				<category><![CDATA[Process]]></category>
		<category><![CDATA[book review]]></category>
		<category><![CDATA[retrospectives]]></category>

		<guid isPermaLink="false">http://practicallyagile.com/?p=82</guid>
		<description><![CDATA[I am a fan of The Pragmatic Progammers series of books. They have mostly good material and I like their publishing methods. One of their books I have been meaning to read for a while is Agile Retrospectives: Making Good Teams Great by Esther Derby and Diana Larsen. I am happy to say that while [...]]]></description>
			<content:encoded><![CDATA[<p>I am a fan of The <a title="The Pragmatic Bookshelf" href="http://www.pragprog.com/">Pragmatic Progammers</a> series of books. They have mostly good material and I like their <a title="look for the &quot;Tools&quot; header -- they use Subversion!" href="http://pragprog.com/write-for-us">publishing methods</a>. One of their books I have been meaning to read for a while is <a title="Agile Retrospectives on Amazon.com" href="http://www.amazon.com/gp/product/0977616649?ie=UTF8&#038;tag=practagile-20&#038;linkCode=as2&#038;camp=1789&#038;creative=390957&#038;creativeASIN=0977616649">Agile Retrospectives: Making Good Teams Great</a> by <a title="Esther Derby Associates" href="http://www.estherderby.com/">Esther Derby</a> and <a title="FutureWorks, where Diana is a Senior Partner" href="http://futureworksconsulting.com/">Diana Larsen</a>. I am happy to say that while it may not be the best of the Pragmatic series, it keeps up the good name. I would give it a seven out of ten.</p>
<p>Those of you who run in Agile circles should recognize those Author&#8217;s names. Esther wrote another Pragmatic book, <a title="Behind Closed Doors at Amazon.com" href="http://www.amazon.com/gp/product/0976694026?ie=UTF8&amp;tag=practagile-20&amp;linkCode=as2&amp;camp=1789&amp;creative=9325&amp;creativeASIN=0976694026">Behind Closed Doors</a>, with Johanna Rothman. I&#8217;ve read a number of <a title="Esther's blog - insights you can use" href="http://www.estherderby.com/weblog/blogger.html">her blog</a> postings and articles over the years and generally like her style. She is also active at the Agile Conference, running the &#8220;Open Jam&#8221; stage/sessions. Diana was a director of the Agile Aliance from 2004-2006 and speaks at number of conferences.</p>
<p>The book follows a common pattern: a topic introduction, a set of &#8220;recipes&#8221;, and some wrap-up. In this case, the introduction covers the first three chapters. The first describes what a retrospective is, providing a framework for retrospectives by breaking them into five parts:</p>
<ol>
<li>Set the Stage</li>
<li>Gather Data</li>
<li>Generate Insights</li>
<li>Decide What to Do</li>
<li>Close the Retrospective</li>
</ol>
<p>The second chapter describes the importance of fitting the retrospective to the organization, schedule, and other factors. The advice here is generally good. Using the same activities in every situation is at best not going to be as successful as using activities properly tailored to the context.</p>
<p>Chapter 3 gives some advice on how to effectively lead a retrospective. I found this reasonably informative, but some of the specifically recommended dialog felt a little like &#8220;pop psychology.&#8221; For example, &#8220;I&#8217;m hearing labels and &#8216;you&#8217; language.&#8221; However, that is not to say that it isn&#8217;t good advice, or that I haven&#8217;t used something very like it before. And, of course, having lead a few retrospectives, some of this may have been more obvious to me than it would to someone without that experience.</p>
<p>The majority of the book&#8217;s content is in Chapters 4 through 8. These work much like a prix fixe menu for your retrospective. That is, they provide a set of activities from which to choose in building a retrospective with the parts described in the first chapter. Each chapter focuses on activities for one of those parts. If you have ever been in a retrospective, you will likely have seen at least a few of these. You may also have seen some that are not mentioned. What makes this valuable is not that it is unique or complete. It serves as a reference when trying to build a retrospective. I can easily see a team turning to this each iteration, especially when their last retrospective may have seemed stale or less productive.</p>
<p>Chapter 9 outlines some of the differences between retrospectives at iteration end compared to project or release retrospectives. These can be different in multiple ways (length of history being discussed, number of people involved) and the book provides some good insight here.</p>
<p>Chapter 10 is short, but provides some good advice and tips for how to get a team (and to a lesser extent an organization) to follow through on the decisions made as a result of the retrospective. After all, retrospection without adaptation is worse than wasteful.</p>
<p>Overall, I like the book. That said, if you are about to lead a retrospective for the first time, this book will not take the place of having been in a retrospective or having a good coach. This book <em>can</em> serve as good preparatory material to help build your confidence and give you options for when things take unexpected turns.</p>
<p>I would recommend this book more strongly to those involved in or leading retrospectives and finding them to be getting stale or losing effectiveness. The lists of activities provided in the middle chapters might just help.</p>
]]></content:encoded>
			<wfw:commentRss>http://practicallyagile.com/2009/03/agile-retrospectives-book-review/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Iterative and Incremental: Part 2 &#8211; 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 [...]]]></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/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>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Iterative and Incremental: Part 1 &#8211; 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/Alistair+Cockburn">Alistair Cockburn</a> wrote <a title="Incremental versus Iterative Development" href="http://alistair.cockburn.us/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>
		<slash:comments>1</slash:comments>
		</item>
	</channel>
</rss>

