<?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>Basil Vandegriend: Professional Software Development &#187; management</title>
	<atom:link href="http://www.basilv.com/psd/blog/category/management/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.basilv.com/psd</link>
	<description></description>
	<lastBuildDate>Fri, 17 May 2013 13:13:07 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.3</generator>
		<item>
		<title>Funding by Backlog</title>
		<link>http://www.basilv.com/psd/blog/2012/funding-by-backlog</link>
		<comments>http://www.basilv.com/psd/blog/2012/funding-by-backlog#comments</comments>
		<pubDate>Mon, 30 Jul 2012 12:39:37 +0000</pubDate>
		<dc:creator>Basil Vandegriend</dc:creator>
				<category><![CDATA[management]]></category>
		<category><![CDATA[backlog]]></category>
		<category><![CDATA[budget]]></category>
		<category><![CDATA[maintenance]]></category>

		<guid isPermaLink="false">http://www.basilv.com/psd/?p=836</guid>
		<description><![CDATA[Managers responsible for a portfolio of existing applications must decide how to allocate their budget for application enhancements across their portfolio. For the purposes of this discussion, I am going to assume the following constraints: There are too many applications for the manager to make decisions on individual application enhancements. Instead, the manager must delegate [...]]]></description>
			<content:encoded><![CDATA[<p>Managers responsible for a portfolio of existing applications must decide how to allocate their budget for application enhancements across their portfolio. For the purposes of this discussion, I am going to assume the following constraints:</p>
<ul>
<li>There are too many applications for the manager to make decisions on individual application enhancements. Instead, the manager must delegate this to product owners who have responsibility for specific applications.
</li>
<li>Enhancements would optimally be prioritized by expected return on investment (ROI), but ROI is difficult to calculate especially for comparisons between applications.
</li>
<li>Development teams are available for making these enhancements and need to be kept busy.
</li>
</ul>
<p>I have seen a number of strategies used for budget allocation that encounter difficulties:</p>
<ul>
<li>Allocate by historical spending. This is based on the immediately prior budgeting period . For example, assuming a 6 month budget, the amount spent per application from January to June would be the basis for allocation in July to December. The most serious difficulty this approach runs into is that it assumes that future work per application will match past needs, which is not always true. Some applications will have spikes of need driven by business changes that this allocation strategy does not take into account. Another difficulty with this approach is that it encourages each applications to spend all of their enhancement budget even if the return on investment is low (or negative) so that their budget is not reduced the following period.
</li>
<li>Allocate by application criticality and longevity. A common practice in application portfolio management is to assess each application according to its importance to the organization and expected lifespan, and then allocate budget accordingly. One difficulty with this approach is that the more critical and longer-lifespan applications may be very stable and require very little in terms of enhancements, whereas newly-built applications, irrespective of criticality or longevity, often have a higher volume of enhancements needed.
</li>
</ul>
<p>I propose a different strategy - allocating budget based on the backlog of work available for each application. This strategy avoids the disadvantages of the above approaches and makes it much easier to keep development teams busy since the money is being allocated to where the work is. Another key advantage of this approach is that it provides strong motivation for product owners to maintain backlogs. This helps provide insight to stakeholders (like the development team) within the organization regarding the future direction of the application, and makes it much easier to do activities like release planning.</p>
<p>Like all strategies, allocation by backlog can lead to some issues revolving around the backlog. Product owners may create overly large backlogs, typically padded with items that are either very low-value or that represent vague ideas that no one (including the product owner) would know what to do with. One possible refinement to the strategy to help avoid these issues is to only count clearly defined backlog items when allocating budget. One easy definition of "clearly-defined" is items that the development team can start working on immediately.</p>
<p>I will note in conclusion that any allocation strategy should not be used blindly - flexibility should be maintained to allow for budget adjustments both initially, at the start of the budget period, and over time as new information comes to light.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.basilv.com/psd/blog/2012/funding-by-backlog/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>My Concerns with Process Certification</title>
		<link>http://www.basilv.com/psd/blog/2012/my-concerns-with-process-certification</link>
		<comments>http://www.basilv.com/psd/blog/2012/my-concerns-with-process-certification#comments</comments>
		<pubDate>Fri, 23 Mar 2012 14:15:11 +0000</pubDate>
		<dc:creator>Basil Vandegriend</dc:creator>
				<category><![CDATA[management]]></category>
		<category><![CDATA[certification]]></category>
		<category><![CDATA[process]]></category>

		<guid isPermaLink="false">http://www.basilv.com/psd/?p=791</guid>
		<description><![CDATA[In I.T. there are a number of process-based certifications that organizations can obtain based on standards like ISO-9001, ITIL via ISO 20000, and CMMI. The process of qualifying for a certification is similar across these standards: the organization defines and/or revises their internal processes to comply with the requirements of the standard, documents these processes, [...]]]></description>
			<content:encoded><![CDATA[<p>In I.T. there are a number of process-based certifications that organizations can obtain based on standards like <a href="http://www.iso.org/iso/iso_catalogue/catalogue_tc/catalogue_detail.htm?csnumber=46486">ISO-9001</a>, <a href="http://en.wikipedia.org/wiki/Information_Technology_Infrastructure_Library">ITIL</a> via <a href="http://www.iso.org/iso/iso_catalogue/catalogue_tc/catalogue_detail.htm?csnumber=51986">ISO 20000</a>, and <a href="http://www.sei.cmu.edu/library/abstracts/reports/10tr033.cfm">CMMI</a>. The process of qualifying for a certification is similar across these standards: the organization defines and/or revises their internal processes to comply with the requirements of the standard, documents these processes, and then goes through an external audit on a periodic basis to demonstrate compliance and obtain or maintain the certification. I have written previously about <a href="http://www.basilv.com/psd/blog/2010/drawbacks-of-formal-audits">the drawbacks of formal audits</a> which is an accompanying issue, but today I just want to focus on my concerns with the idea of organizational process certification in general.</p>
<p>To be clear, I am not talking about process certifications for individuals like the popular <a href="http://www.scrumalliance.org/pages/CSM">Certified ScrumMaster</a> and <a href="http://www.pmi.org/Certification/Project-Management-Professional-PMP.aspx">Project Management Professional</a>. I view these certifications as recognition of a person achieving a certain level of knowledge with a particular process - what the person does with this information is entirely up to them. (The value of these certifications is a completely separate debate I do not want to get into today.)</p>
<p>So what is my key issue with organizational process certification? It stems from my <a href="http://www.basilv.com/psd/blog/2008/becoming-a-champion-of-continuous-improvement">passion for continuous improvement</a>. In my mind there is a fundamental mismatch between a true culture of continuous improvement, such as I have read about regarding Toyota in books like <a href="http://www.amazon.ca/gp/product/0071392319/ref=as_li_tf_tl?ie=UTF8&#038;tag=basilvandegri-20&#038;linkCode=as2&#038;camp=15121&#038;creative=330641&#038;creativeASIN=0071392319">The Toyota Way</a><img src="http://www.assoc-amazon.ca/e/ir?t=basilvandegri-20&#038;l=as2&#038;o=15&#038;a=0071392319" width="1" height="1" border="0" alt="" style="border:none !important; margin:0px !important;" /> by Jeffrey Liker, and the requirement to comply with a particular process to maintain certification. Continuous improvement may identify activities or aspects of the process that can be altered or eliminated due to lack of value (waste, in lean terms), but if these aspects are required by the certification, then the certification itself becomes an impediment to change.</p>
<p>One example comes from software development teams starting with Scrum and then inspecting and adapting their process as they proceed (which is a key aspect of Scrum). Some teams end up with an arguably different Agile process such as Kanban that can no longer be called Scrum, and other teams end up with some hybrid version of Scrum that may or may not be as effective, but may be more achievable given the limitations of the organizational context. (Jeff Sutherland, co-creator of Scrum, <a href="http://scrum.jeffsutherland.com/2008/08/agile-2008-money-for-nothing.html">derisively labels limited adoptions as "ScrumButt".</a>) The frequent debates that occur as to whether such teams are really doing Scrum are lively but largely irrelevant to the more important question of whether such teams are as effective and successful as they can be. This dynamic would look completely different if a team or organization was required to use Scrum via formal certification (something, fortunately, I have not heard of happening.) Then the question of effectiveness would take a back seat to the question of compliance.</p>
<p><a href="http://www.basilv.com/psd/wp-content/uploads/2012/03/Yin-Yang.png"><img src="http://www.basilv.com/psd/wp-content/uploads/2012/03/Yin-Yang.png" alt="Yin-Yang" title="Yin-Yang" width="150" height="150" style="float:right" class="alignright size-full wp-image-792" /></a><br />
The Asian philosophical concept of <a href="http://en.wikipedia.org/wiki/Yin_and_yang">yin-yang</a> seems to be the source of inspiration for the Japanese attitude that avoids this mismatch between process compliance and continuous improvement. This viewpoint holds that a process represents the best way known at <em>this point in time</em> to accomplish an objective, but to always search for a better process via continuous improvement. In my readings regarding Toyota and <a href="http://www.amazon.ca/gp/product/0743249275/ref=as_li_tf_tl?ie=UTF8&#038;tag=basilvandegri-20&#038;linkCode=as2&#038;camp=15121&#038;creative=330641&#038;creativeASIN=0743249275">lean thinking</a><img src="http://www.assoc-amazon.ca/e/ir?t=basilvandegri-20&#038;l=as2&#038;o=15&#038;a=0743249275" width="1" height="1" border="0" alt="" style="border:none !important; margin:0px !important;" />, it appears that continuous improvement is the ultimate priority which all processes are subordinate to.</p>
<p>Some standards claim to be process-neutral in the sense that they do not require a specific process. For example CMMI specifies many process areas with objectives that must be met (the what), but allows you to specify the process that meets the objective (the how). However, the requirement to meet the objectives and to produce the evidence necessary to demonstrate that the objectives have been met both introduce significant constraints on what your processes are. In addition, in my experience the CMMI appraisers / consultants seem to have a bias towards particular processes being used. As a result pursuing such standards tends to push organizations towards a certain set of practices that may or may not be appropriate.</p>
<p>Just because I do not like process certifications does not mean I do not like the underlying standards. There are a lot of good ideas embedded in standards like ITIL and CMMI. But there are also aspects I think are often inappropriate depending on the context. Certification prevents you from intelligently picking and choosing - the full standard is forced upon you.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.basilv.com/psd/blog/2012/my-concerns-with-process-certification/feed</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Meeting Milestones via Swarming and Reserves</title>
		<link>http://www.basilv.com/psd/blog/2012/meeting-milestones-via-swarming-and-reserves</link>
		<comments>http://www.basilv.com/psd/blog/2012/meeting-milestones-via-swarming-and-reserves#comments</comments>
		<pubDate>Sun, 12 Feb 2012 14:06:44 +0000</pubDate>
		<dc:creator>Basil Vandegriend</dc:creator>
				<category><![CDATA[management]]></category>
		<category><![CDATA[overtime]]></category>
		<category><![CDATA[project management]]></category>
		<category><![CDATA[schedule]]></category>
		<category><![CDATA[time management]]></category>

		<guid isPermaLink="false">http://www.basilv.com/psd/?p=774</guid>
		<description><![CDATA[No matter what method of software development a team uses, there will be times when the team struggles to meet planned milestones. The milestone could be completing committed stories for an iteration or reaching the feature-complete point in a release. The struggle to meet the milestone might be caused by any number of factors like [...]]]></description>
			<content:encoded><![CDATA[<p>No matter what method of software development a team uses, there will be times when the team struggles to meet planned milestones. The milestone could be completing committed stories for an iteration or reaching the feature-complete point in a release. The struggle to meet the milestone might be caused by any number of factors like requirements churn, poor quality work, or insufficient resources. Whatever the cause, the question facing the team is how will they meet their milestone?</p>
<p>I have faced this problem yet again recently and wanted to share two approaches that I have found useful: <em>swarming</em> and <em>reserves</em>.</p>
<h3>Swarming</h3>
<p>The basic idea behind swarming is to throw extra people at the outstanding work necessary to meet the milestone. In project management terms this typically involves sacrificing effort (budget) to save time (schedule). Effort is typically sacrificed due to two factors. First, more than the optimal number of people are working on one piece of work and some effort is lost through extra coordination. Second, people get involved doing work outside their normal expertise and thus require more time than normal. </p>
<p>An example of swarming is a scrum team pulling together at the end of an iteration to finish their committed stories. Developers could pair up to more quickly resolve the remaining defects. Once done testing their own functionality testers could jump in to help test other features they are unfamiliar with. Business analysts can delay working on future requirements to help test.</p>
<p>There are a couple of guidelines to swarming effectively. The first is to focus on the critical path - the activities that are predicted to take the longest and drive what the final completion date will be. This is typically accomplished by pulling people off of non-critical-path activities, but you have to be careful that you do not inadvertently slow down something else so much that it then becomes critical path.</p>
<p>The second guideline is similar: focus on work necessary for completing the milestone instead of non-milestone-related work. This may seem obvious, but in practice it is surprising how people will tend to choose the more interesting tasks over more tedious but necessary tasks (for example, updating end-user documentation prior to release). One way of achieving this focus is to clearly define what is part of the milestone versus what is not. One team I know uses a task board with post-it notes colored by release to visualize this. </p>
<p>Swarming only works when you have people on the team who are available to swarm - i.e. not all busy on critical path and/or milestone work. This leads us to the topic of <em>reserves</em>.</p>
<h3>Reserves</h3>
<p>The basic idea behind reserves is to hold back a portion of some type of resource so that it is available if an unforeseen situation arises - usually a problem, or sometimes an opportunity. </p>
<p>One very common approach is to set aside a period of time in the schedule as contingency. This may be an extra iteration per release, an end-of-release iteration to finalize the software for release, or simply extending the original estimated schedule by a certain percentage. </p>
<p>Another approach is to ensure that the team members are working normal hours - i.e. no overtime. If a time crunch does occur, then a short burst of overtime acts as a reserve. You have to be careful using this approach, as <a href="http://www.basilv.com/psd/blog/2006/overtime-considered-harmful">too much overtime is dangerous</a>. You need to allow time for recovery afterwards, once the milestone is met, or risk disengagement, reduction in productivity, burnout, and loss of personnel. </p>
<p>A more advanced version of this approach is to ensure that each person is not normally 100% busy, as espoused by the book <a href="http://www.amazon.ca/exec/obidos/redirect?link_code=as2&#038;path=ASIN/0767907698&#038;tag=basilvandegri-20&#038;camp=15121&#038;creative=330641">Slack: Getting Past Burnout, Busywork, and the Myth of Total Efficiency</a><img src="http://www.assoc-amazon.ca/e/ir?t=basilvandegri-20&#038;l=as2&#038;o=15&#038;a=0767907698" width="1" height="1" border="0" alt="" style="border:none !important; margin:0px !important;" /> by Tom Demarco. It is suspected that this is one of the reasons that companies such as Google provides 20% time for each employee to pursue personal projects. The first benefit of slack is that this minimizes time to completion by reducing delays due to work waiting in queues (as per lean theory). This thus reduces the chance of needing to struggle to meet a milestone in the first place. The second benefit is that, like overtime, people have the capacity to increase their efforts if a milestone is threatened</p>
<p>A related approach that has worked well in my own experience is to have some project members normally be assigned part time with flexibility in how they spend their non-project time. During crunch periods they can then easily increase the percentage of time they spend on project work.</p>
<p>I would like to hear your experiences regarding swarming and maintaining reserves - please share by leaving a comment.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.basilv.com/psd/blog/2012/meeting-milestones-via-swarming-and-reserves/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>The Importance of Hiring</title>
		<link>http://www.basilv.com/psd/blog/2011/the-importance-of-hiring</link>
		<comments>http://www.basilv.com/psd/blog/2011/the-importance-of-hiring#comments</comments>
		<pubDate>Mon, 12 Dec 2011 13:33:56 +0000</pubDate>
		<dc:creator>Basil Vandegriend</dc:creator>
				<category><![CDATA[management]]></category>
		<category><![CDATA[hiring]]></category>

		<guid isPermaLink="false">http://www.basilv.com/psd/?p=753</guid>
		<description><![CDATA[One of my many responsibilities at work as part of my role as Java Practice Lead is the hiring of Java programmers, developers, and architects in collaboration with human resources. Recently I have been adjusting our hiring process and clarifying the roles and people involved. I am always juggling a multitude of requests and demands [...]]]></description>
			<content:encoded><![CDATA[<p>One of my many responsibilities at work as part of my role as Java Practice Lead is the hiring of Java programmers, developers, and architects in collaboration with human resources. Recently I have been adjusting our hiring process and clarifying the roles and people involved. I am always juggling a multitude of requests and demands for my time, balancing what is important short-term versus long-term and what is truly urgent versus what is artificially or superficially urgent. So when I focused on hiring, I was acutely aware of the other activities that I was deferring or ignoring. </p>
<p>As I often do, I found myself reflecting at the end of these days as to whether I had properly prioritized my time. I could have been resolving tricky technical issues and advancing progress towards our desired future state in terms of architecture, technology, and development practices. But I am only one person. I realized that the focus on growing our group of solid Java developers and architects would pay off in the long run by increasing the overall capacity of problem-solving and progress-advancing. </p>
<p>Another consideration is that the implementation of the improvements that I wanted to see happen are limited by the capabilities and knowledge of the developers who actually put these things into practice. In the past, I have experienced problematic developers who inadvertently introduce issues that others are stuck resolving and use older technologies and/or less-effective practices through lack of awareness or poor habits. Hiring highly capable developers, in contrast, makes it much easier to make progress on these improvements. So for a limited short-term investment of my time, focusing on hiring has staggeringly immense long-term benefits.</p>
<p>The above logic regarding my personal limits apply just as equally to my direct involvement with hiring. As much as I may like to personally interview each applicant, I simply do not have the time, especially during hiring booms. So my objective in working on the hiring process is to put a system in place that can, if need be, operate without my involvement while obtaining the same results.</p>
<p>I received feedback recently from one director that the new hires we have brought on since my involvement in hiring have been almost entirely working out just fine. This is very rewarding to hear and is confirmation that my efforts in building an effective hiring system have indeed paid off.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.basilv.com/psd/blog/2011/the-importance-of-hiring/feed</wfw:commentRss>
		<slash:comments>5</slash:comments>
		</item>
		<item>
		<title>Stop Staring at the Spreadsheet</title>
		<link>http://www.basilv.com/psd/blog/2011/stop-staring-at-the-spreadsheet</link>
		<comments>http://www.basilv.com/psd/blog/2011/stop-staring-at-the-spreadsheet#comments</comments>
		<pubDate>Fri, 11 Mar 2011 15:38:40 +0000</pubDate>
		<dc:creator>Basil Vandegriend</dc:creator>
				<category><![CDATA[management]]></category>
		<category><![CDATA[project management]]></category>
		<category><![CDATA[tools]]></category>

		<guid isPermaLink="false">http://www.basilv.com/psd/?p=616</guid>
		<description><![CDATA[As a scrum master or technical lead do you find yourself frittering away your time staring at the spreadsheet (or other tool) you use to track progress of the team? Do you keep studying the velocity and burndown or keep tweaking the numbers or formulas? I have heard of this becoming a chronic problem for [...]]]></description>
			<content:encoded><![CDATA[<p>As a scrum master or technical lead do you find yourself frittering away your time staring at the spreadsheet (or other tool) you use to track progress of the team? Do you keep studying the velocity and burndown or keep tweaking the numbers or formulas? I have heard of this becoming a chronic problem for a few scrum masters, and I find myself faced with a constant temptation to do this.</p>
<p>What is it about the spreadsheet that is so alluring? There is some value to studying it - I think of it as uploading the numbers into my subconscious to get an intuitive feel for where there might be obstacles or challenges that the team is facing now or will face shortly in the future. But the value of doing so quickly drops off and yet we keep staring. Part of the temptation I feel is to find ways to bump that daily or weekly burndown just a little higher by finding that task that is actually complete or is over-estimated. This is especially true if progress has not been good. </p>
<p>So what can we do to stop starting at the spreadsheet? </p>
<ol>
<li>Remember that identifying obstacles is no good unless they are dealt with. Focus on removing or mitigating the obstacles instead.
</li>
<li>Ask yourself what activity you can do that will best accelerate the team's progress. This might be helping a developer that is stuck on a technical issue, freeing up the time from a tester who has become a bottleneck, or clarifying requirements for upcoming work. More studying of the spreadsheet is never the answer. This is especially useful when the team's progress has been lower than expected.
</li>
<li>Remember that minor errors in the spreadsheet are inconsequential in the grand scheme of things. Forgetting to burn down a task or two is dwarfed by the innate inaccuracies of the estimates you are using to track progress. If you miss updating a task this week, you will likely catch it next week.
</li>
<li>Remind yourself that the spreadsheet is merely a tool, and that you are the master of the tool - not the other way around.
</li>
<li>Throw away the spreadsheet and use a simpler approach - perhaps a paper burndown chart on the team wall. Just ensure you do not then start staring at the wall.
</li>
</ol>
]]></content:encoded>
			<wfw:commentRss>http://www.basilv.com/psd/blog/2011/stop-staring-at-the-spreadsheet/feed</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Mistaking Plans for Goals</title>
		<link>http://www.basilv.com/psd/blog/2010/mistaking-plans-for-goals</link>
		<comments>http://www.basilv.com/psd/blog/2010/mistaking-plans-for-goals#comments</comments>
		<pubDate>Mon, 01 Nov 2010 13:33:54 +0000</pubDate>
		<dc:creator>Basil Vandegriend</dc:creator>
				<category><![CDATA[management]]></category>
		<category><![CDATA[goal]]></category>
		<category><![CDATA[plan]]></category>
		<category><![CDATA[software development]]></category>

		<guid isPermaLink="false">http://www.basilv.com/psd/?p=574</guid>
		<description><![CDATA[I believe there are two primary flaws in focusing on plans. The first flaw is the assumption that following the plan will achieve the goal. Sure, the plan is assembled with the intent of meeting the objectives, but what guarantee is there that this will actually happen? The second flaw is putting one's primary attention [...]]]></description>
			<content:encoded><![CDATA[<p>I believe there are two primary flaws in focusing on plans. The first flaw is the assumption that following the plan will achieve the goal. Sure, the plan is assembled with the intent of meeting the objectives, but what guarantee is there that this will actually happen? The second flaw is putting one's primary attention on the plan. People generally have difficulties dividing their attention between multiple things. Focusing on the plan means that from their perspective the goal loses importance. If this only happened to a limited degree then I would not feel the need to write this article. Let me provide some examples of the extremes to which I have seen people and organizations go. </p>
<p>In one prior project as we approached the planned deadline for starting user acceptance testing (UAT), I warned the project manager that the code quality was poor and only limited testing had been done so UAT would likely be a disaster. My advice was to miss the deadline and ensure good quality prior to entering UAT. Unfortunately, the manager decided the milestone was more important than getting the software to a working state. The code went into UAT and was soon thereafter rejected as being too buggy and unstable.</p>
<p>On another project a number of factors including excessive bureaucracy and externally-driven requirement changes caused delay after delay. After a few years (yes, multiple years) of delays, everyone from the project sponsor down to the project team members were so tired of the project dragging on that scope was massively cut and it was essentially rammed into production in a mostly non-functional shape, leaving the maintenance team to pick up the pieces.  </p>
<p>Instead of focusing primarily on the plan, I propose to focus primarily on the goal - the real objectives. Progress should be evaluated as much as possible in terms of achieving objectives. I expect a common objection from plan-driven proponents would be goals are at too high a level for tracking progress. The solution is to decompose goals into the smallest possible objectives that retain meaning. In software development this means decomposing requirements or features into the smallest possible size that is still business-meaningful. Ron Jeffries calls this the <a href="http://xprogramming.com/articles/its-all-about-value/">minimum marketable feature</a> (MMF) and views the delivery of working software that achieves MMFs as the <a href="http://xprogramming.com/articles/jatrtsmetric/">fundamental unit of progress for software development</a>.</p>
<p>Focusing on the goal means that a change in objectives should result in a change in action as soon as possible. Plan-driven methods seek to limit change, often explicitly, in order to stay aligned with the plan. This leads to misalignment with the goal, which over time leads to unhappy customers/users or effort wasted on pursuing the wrong direction. Most software development projects involve continual learning by both the business and by the developers about the problem domain, the solution domain, and the technical implementation of the solution. This inherently leads to objectives changing over time.</p>
<p>I do believe in planning, but it must remain subordinate to the objectives. The plan must remain flexible and easy to adjust based on how the objectives are being met and how they are evolving over time. <a href="http://en.wikiquote.org/wiki/Dwight_D._Eisenhower">Dwight D. Eisenhower</a> is reported to have said "Plans are worthless, but planning is everything." This quote captures the essence of my philosophy. The act of planning is critically important - determining the correct course of action based on <em>current</em> understanding - but plans based on old and likely outdated knowledge are not. </p>
]]></content:encoded>
			<wfw:commentRss>http://www.basilv.com/psd/blog/2010/mistaking-plans-for-goals/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Ten Audit Warning Signs</title>
		<link>http://www.basilv.com/psd/blog/2010/ten-audit-warning-signs</link>
		<comments>http://www.basilv.com/psd/blog/2010/ten-audit-warning-signs#comments</comments>
		<pubDate>Thu, 28 Oct 2010 15:14:15 +0000</pubDate>
		<dc:creator>Basil Vandegriend</dc:creator>
				<category><![CDATA[management]]></category>
		<category><![CDATA[Audit]]></category>
		<category><![CDATA[corporate culture]]></category>

		<guid isPermaLink="false">http://www.basilv.com/psd/?p=572</guid>
		<description><![CDATA[I describe in my prior article how formal audits suffer from a number of drawbacks, and hopefully I have alerted you to the potential harm they can do. But some audits are necessary or can be helpful. So how do you detect when audits are causing you harm? Here are ten specific warning signs you [...]]]></description>
			<content:encoded><![CDATA[<p>I describe in my prior article how <a href="http://www.basilv.com/psd/blog/2010/drawbacks-of-formal-audits">formal audits suffer from a number of drawbacks</a>, and hopefully I have alerted you to the potential harm they can do. But some audits are necessary or can be helpful. So how do you detect when audits are causing you harm?</p>
<p>Here are ten specific warning signs you can look for, expressed as questions to ask of yourself, your management, and your organization as a whole.</p>
<ol>
<li>Given the choice between delivering service requested by a customer in variance with a defined process versus following the process and leaving the customer unhappy, what is the normal choice?</li>
<li>How would management react to the deviation from process above?</li>
<li>Can processes be easily changed when improvements are proposed, or is this difficult due to the need to pass audits involving the process.</li>
<li>Is the focus of most process improvement on addressing audit non-conformities and passing the next audit, or is the focus on improving business-meaningful objectives?</li>
<li>What percentage of management activities such as communicating in team meetings or providing direction to subordinates consists of instructing people to follow processes with the primary rationale being to pass audits.</li>
<li>Does management provide special directions to subordinates immediately prior to an audit?</li>
<li>Immediately prior to an audit, do teams spend time ensuring documented evidence is up-to-date, or worse forge it, in order to pass the audit?</li>
<li>Are teams routinely producing documentation solely for the sake of producing audit-able evidence?</li>
<li>Do teams regularly complain about certain portions of an audited process? Do they provide feedback that they do not see the point of a specific portion of the process (or all of it)?
</li>
<li>Do you find yourself frustrated with a particular audited process? Do you find yourself daydreaming about how to change it or eliminate it?</li>
</ol>
]]></content:encoded>
			<wfw:commentRss>http://www.basilv.com/psd/blog/2010/ten-audit-warning-signs/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Drawbacks of Formal Audits</title>
		<link>http://www.basilv.com/psd/blog/2010/drawbacks-of-formal-audits</link>
		<comments>http://www.basilv.com/psd/blog/2010/drawbacks-of-formal-audits#comments</comments>
		<pubDate>Fri, 22 Oct 2010 14:13:56 +0000</pubDate>
		<dc:creator>Basil Vandegriend</dc:creator>
				<category><![CDATA[management]]></category>
		<category><![CDATA[Audit]]></category>
		<category><![CDATA[corporate culture]]></category>
		<category><![CDATA[lean]]></category>
		<category><![CDATA[productivity]]></category>
		<category><![CDATA[project management]]></category>

		<guid isPermaLink="false">http://www.basilv.com/psd/?p=569</guid>
		<description><![CDATA[In heavily-regulated or bureaucratic environments formal audits are a common occurrence. Such audits typically consist of an auditor external to the team or organization who analyzes historical evidence of the work done to find non-conformities with respect to the documented process being audited. To those with a bureaucratic mindset process and audits are the answer [...]]]></description>
			<content:encoded><![CDATA[<p>In heavily-regulated or bureaucratic environments formal audits are a common occurrence. Such audits typically consist of an auditor external to the team or organization who analyzes historical evidence of the work done to find non-conformities with respect to the documented process being audited.</p>
<p>To those with a <a href="http://www.basilv.com/psd/blog/2006/are-you-a-rule-maker-or-a-rule-breaker">bureaucratic mindset</a> process and audits are the answer to every problem: if something goes wrong, add more process and then audit to ensure it is followed.</p>
<p>Audits serve a purpose, but they do have drawbacks. Over-reliance on audits can actually cause negative consequences to the organization which are often not taken into account by those pushing for more auditing. Audits should be designed to minimize these drawbacks, and the organization should introduce additional mitigations as necessary. In fact, I would go as far as saying that the use of audits should be kept to a minimum.</p>
<p>So what are these drawbacks? I have organized them into the following categories which are explored in detail in the remainder of this article.</p>
<ul>
<li>Reduces Productivity</li>
<li>Harms Organizational Culture</li>
<li>Limits of Assessment</li>
</ul>
<h3>Reduces Productivity</h3>
<p>I define productivity as the amount of value produced for stakeholders based on the effort expended. In other industries such as manufacturing with more concrete notions of value it is possible to effectively measure productivity. In I.T., however, this is difficult to do, and I have never heard of an I.T. audit that evaluates productivity, value produced, or even effort expended. Audits typically instead measure compliance to documented processes based on historical documentation regarding the work that was done. This disconnect inevitably leads to a reduction in productivity in the following ways:</p>
<h4>Do work to pass audit rather than deliver value</h4>
<p>Auditing documented evidence of following documented processes causes people to produce documentation, whether or not it provides value, in order to pass the audit. This is especially true when the work becomes about producing the documentation instead of producing value. </p>
<h4>Assessing quality after the fact is wasteful</h4>
<p>Two important concepts from lean thinking are that any time delay in a process is waste, and that quality should be built into the process to avoid the waste associated with undetected quality problems remaining in the work-in-progress. Performing an audit long after an activity has been performed violates both of these concepts. In some cases I have seen audits are performed months after the activity has been completed - for example, an audit of a software enhancement that has already been deployed to production. If problems are found, it is too late for that activity. And the follow-up to determine if the problem has been resolved typically does not happen until the next audit, which is an even longer delay.</p>
<h3>Harms Organizational Culture</h3>
<p>An organization in which formal audits are a common occurrence risks, in my opinion, serious harm to the organizational culture by shifting the culture towards a more bureaucratic, stagnant, and confrontational atmosphere. This can happen in a number of ways:</p>
<h4>Shift of focus away from organizational objectives</h4>
<p>People generally have difficulty focusing on more than one or two priorities at a time. When the focus is placed on passing audits, attention is diverted away from achieving the organization's objectives or purpose. This is similar to the <a href="http://www.basilv.com/psd/blog/2010/problems-with-typical-definitions-of-project-success">problem faced by traditional project management</a> - making scope, schedule, and budget the goal runs the risk of not actually meeting the business needs.</p>
<h4>Compliance mindset rather than improvement mindset</h4>
<p>Formal audits, especially when they are treated strictly by management, tends to lead to a fear-based compliance mindset. The unspoken message is "pass the audit, or else...". This is inimical to a mindset of <a href="http://www.basilv.com/psd/blog/2009/continuous-improvement-framework">continuous improvement</a>, specifically the attitude of being willing to change the process when a better approach is found. In theory a process-centric mindset and a continuous improvement mindset can coexist - Toyota seems to be successful at this. But adding audits into the mix adds a rigidity or bureaucracy to processes that impedes continuous improvement. Worse is when people blindly follow process rather than question whether there is a better way.</p>
<h4>Attitude of confrontation rather than collaboration</h4>
<p>Formal audits almost always involve separate auditors external to the group being audited, and sometimes external to the organization. And these auditors are trained and motivated to find non-conformities - deviations from process. Auditors are not engaged to work with the group to understand what they have done and to help them do better. In fact, they are often instructed to remain aloof in order to remain impartial. This tends to lead to an attitude of confrontation rather than collaboration - an us-versus-them mentality - which means that any useful feedback that the auditors might have is at risk of being denied or ignored.</p>
<h4>Discourages context-based expert judgement, creativity, and initiative</h4>
<p>The <a href="http://en.wikipedia.org/wiki/Dreyfus_model_of_skill_acquisition">Dreyfus model of skill acquisition</a> explains the difference between beginners and experts. Having a clearly defined, step-by-step process to follow is essential for beginners, but has been demonstrated to actually reduce the performance of experts, who use their judgement based on the context at hand to determine what to do and how to do it.<br />
Enforcing adherence to a common process also discourages creativity, initiative, and innovation. This can happen in a bureaucratic environment without audits, of course, but I believe that a regime of formal audits will exasperate the problem.</p>
<h3>Limits of Assessment</h3>
<p>Audits at their essence are about assessing a group with respect to some standard. This assessment has certain fundamental limitations due to the nature of audits, and over-reliance on audits risks developing an incomplete or inaccurate picture of reality. These limitations include:</p>
<h4>Cannot assess intangibles</h4>
<p>Audits only assess concrete items that are documented and completely ignore intangible aspects of work such as motivation, creativity, and initiative. (Some of these intangibles can be assessed by other 'formal' mechanisms - e.g. assessing motivation through surveys.) The corollary to the adage "you get what you measure" is that you risk not getting what you don't measure. This would not be a problem if the intangibles were not important. But software development is knowledge work, and the research is clear that people are by far the most significant factor determining productivity, far ahead of process. So relying on audits, which typically only look at process, ignores the more intangible, people factors.</p>
<h4>Assessment is twice removed from objectives</h4>
<p>Each group or organization has a purpose for existence, and objectives by which it tries to achieve that purpose. Audits do not assess this. Organizations put processes into place to support meeting these objectives. But audits, strictly speaking, do not assess this either. Audits assess the historical, documented evidence that the processes were followed. This means they are twice removed from the true objectives, which makes them an incredibly weak tool for helping an organization meet its objectives.</p>
<h4>Audit results may be invalid</h4>
<p>Audits suffer from four failure modes which can cause them to report invalid results:</p>
<ol>
<li>The group is actually following the process being audited, but is not correctly producing the evidence.</li>
<li>The group deliberately deviates from the process in order to meet organizational objectives or in order to be more effective.</li>
<li>The group produces the documentation used as evidence for following the process without properly following the process. They will pass the audit, but there is a hidden problem. Rubber-stamping, where a review or approval is given without any actual check or thought, is an example of this.</li>
<li>The group properly follows the process and produces the evidence, but fails to achieve organizational objectives.</li>
</ol>
<p>In conclusion, be very careful in how you use audits and watch out for the drawbacks. Maybe you should audit your use of audits :)</p>
]]></content:encoded>
			<wfw:commentRss>http://www.basilv.com/psd/blog/2010/drawbacks-of-formal-audits/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Predictability and Planning for Done</title>
		<link>http://www.basilv.com/psd/blog/2010/predictability-and-planning-for-done</link>
		<comments>http://www.basilv.com/psd/blog/2010/predictability-and-planning-for-done#comments</comments>
		<pubDate>Mon, 14 Jun 2010 14:00:16 +0000</pubDate>
		<dc:creator>Basil Vandegriend</dc:creator>
				<category><![CDATA[management]]></category>
		<category><![CDATA[definition of done]]></category>
		<category><![CDATA[estimate]]></category>
		<category><![CDATA[project management]]></category>
		<category><![CDATA[schedule]]></category>
		<category><![CDATA[software development]]></category>

		<guid isPermaLink="false">http://www.basilv.com/psd/?p=518</guid>
		<description><![CDATA[There is an interesting relationship between having predictable estimates for project management and using a thorough definition of done. Achieving the full definition of done for a feature or release (often called being done-done) is surprisingly difficult. You may have heard the anecdotal rule of thumb that it takes 80% of the time to achieve [...]]]></description>
			<content:encoded><![CDATA[<p>There is an interesting relationship between having predictable estimates for project management and using a thorough <a href="http://www.basilv.com/psd/blog/2009/my-definition-of-done">definition of done</a>.</p>
<p>Achieving the full definition of done for a feature or release (often called being done-done) is surprisingly difficult. You may have heard the anecdotal rule of thumb that it takes 80% of the time to achieve 80% complete on a feature, and another 80% time-wise to achieve the remaining 20%. This is not due to using a strict definition of done. Anyone who has worked on an undisciplined waterfall project that has 'finished' coding the functionality and is now in test knows that sinking feeling of having defect after defect reported with no end in sight – and hence no predictability.</p>
<p>Using an imprecise or overly-simplistic definition of done will definitely impede predictability because you have only a vague idea of what the current state of your software is, and hence have high uncertainty regarding your progress to date.</p>
<p>Using a specific definition of done combined with the lean principle of minimizing work-in-progress greatly improves your knowledge of the current state of your software and hence your progress. Most of the uncertainty has been driven out by forcing work to done-done. This is not enough, however, to improve the predictability of your budget or schedule estimates for your outstanding work. You need to ensure your planned tasks and estimates include everything required to get to done-done.</p>
<p>On my last project, we tried just tracking coding tasks in the sprint plan. The remaining effort to get to done-done was treated as part of the general overhead that was used to calculate our velocity. This provided poor predictability in terms of both budget and schedule, especially as a feature neared code-complete. The estimate on the remaining coding tasks approached zero, but the time required for reviews, testing, and fixes remained roughly constant, thus exceeding what could be accounted for by velocity.</p>
<p>We then started to track most checklist items from our definition of done as individual tasks for each feature in addition to the regular coding tasks provided by the developer(s). This worked better, but we still suffered predictability problems as the feature went through review and test. Defects discovered had to be fixed, impacting the schedule and budget for the feature.</p>
<p>The next tweak we made was to allocate time up front for these fixes by adding an entry titled "Anticipated Issues" to each feature that provided an allocation of effort (budget, from which schedule was derived) that could be used to address defects, review corrections, poorly estimated tasks,  and discovered work. The amount of effort allocated to this item was estimated per feature based on the size and complexity of the feature and the experience and quality level of the developers working on the feature.</p>
<p>Our most recent adjustment was to the front-end of feature development. Over several sprints, we noticed a trend that when developers started a new feature, especially one that was significantly new, they often had a day or even two where they did not make the expected progress on their tasks. We eventually determined that developers consistently had to spend time familiarizing themselves with the feature, especially learning the requirements and getting clarifications regarding how the feature was to be implemented, and that they virtually never allocated time in their tasks / estimates for this. So we added a new task to each feature named "Feature Clarification" to make this explicit.</p>
<p>By planning for all the components of our definition of done, we have achieved much better predictability. While our variance from our estimates per feature remained fairly high, the average variance across features was much closer to the original estimate, rather than being consistently over. As progress is made on a feature, we have much better estimates and better visibility into the outstanding work.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.basilv.com/psd/blog/2010/predictability-and-planning-for-done/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Using Feature Done Checklists</title>
		<link>http://www.basilv.com/psd/blog/2010/using-feature-done-checklists</link>
		<comments>http://www.basilv.com/psd/blog/2010/using-feature-done-checklists#comments</comments>
		<pubDate>Thu, 15 Apr 2010 14:00:23 +0000</pubDate>
		<dc:creator>Basil Vandegriend</dc:creator>
				<category><![CDATA[management]]></category>
		<category><![CDATA[definition of done]]></category>
		<category><![CDATA[process]]></category>
		<category><![CDATA[project management]]></category>
		<category><![CDATA[software development]]></category>

		<guid isPermaLink="false">http://www.basilv.com/psd/?p=504</guid>
		<description><![CDATA[I have written previously about the importance of having a definition of done that the team understands and adheres to. At the level of features (use cases, user stories, etc.) a comprehensive definition of done will often consist of a number of items, some involving non-developer roles such as tester, business analyst, and architect. Tracking [...]]]></description>
			<content:encoded><![CDATA[<p>I have written previously about the importance of having a <a href="http://www.basilv.com/psd/blog/2009/my-definition-of-done">definition of done</a> that the team understands and adheres to. At the level of features (use cases, user stories, etc.) a comprehensive definition of done will often consist of a number of items, some involving non-developer roles such as tester, business analyst, and architect. Tracking the status of a given feature and ensuring it gets to done is thus non-trivial.</p>
<p>One solution to this problem that I have worked with and now recommend is to use a <em>feature done checklist</em> to track the completion of the definition of done for a specific feature. At its essence the checklist consists of the major elements of the definition of done listed as rows in a table with additional columns for the person verifying the completion of the item to enter their name and date. Here is a simple example:</p>
<table class="fancy" cellspacing="0">
<tr>
<th colspan="3">Feature:</th>
</tr>
<tr>
<th>Item</th>
<th>Person Verifying</th>
<th>Date Verified</th>
</tr>
<tr>
<td>Coding completed</td>
<td></td>
<td></td>
</tr>
<tr>
<td>Peer reviewed</td>
<td></td>
<td></td>
</tr>
<tr>
<td>Architect reviewed</td>
<td></td>
<td></td>
</tr>
<tr>
<td>Testing completed</td>
<td></td>
<td></td>
</tr>
<tr>
<td>Meets user requirements</td>
<td></td>
<td></td>
</tr>
<tr>
<td>All defects resolved and tasks completed</td>
<td></td>
<td></td>
</tr>
<tr>
<td>Feature is Done!</td>
<td></td>
<td></td>
</tr>
</table>
<p>You need to decide whether to use digital or printed checklists. I prefer using paper-based checklists for several reasons:</p>
<ul>
<li>I find it more meaningful to sign a piece of paper than to add my name electronically, so I tend to treat the completion of the checklist more seriously than I would an electronic form. This attitude may be due to my engineering background.</li>
<li>A paper copy is more tangible and real. It can be waved around at a team meeting to celebrate the completion of a feature or posted on a team wall. It can be placed on a coworker’s keyboard in order to focus their attention on an outstanding item.</li>
</ul>
<h3>Evolving the Checklist</h3>
<p>I have found it useful on occasion to evolve the basic feature done checklist beyond the team’s definition of done to provide support for the team’s development process. This is usually done as part of <a href="http://www.basilv.com/psd/blog/2009/continuous-improvement-framework">continuous improvement</a> to resolve issues identified during retrospectives. Here are some examples:</p>
<ul>
<li>On one project we had issues with developers rushing into coding new features without fully understanding the requirements, so we added an initial checklist item for feature clarification to focus attention on the activity.</li>
<li>For each item you can specify the role (e.g. developer, tester, architect) responsible for signing that it is done. I strongly recommend doing this for two reasons: it minimizes confusion over who signs off each item, and it minimizes the problem of having the developer of the feature quickly sign off all the checklist items without doing the necessary checking so they can say the feature is done.</li>
<li>You can specify dependencies between the items. On one project we had a problem with people treating the items as a linear sequence of activities, so we defined dependencies to explicitly show that some activities could be done in parallel.</li>
<li>You can add a feature start date to indicate when work began on the feature. This in combination with the feature done date allows you to calculate the duration of time spent on the feature. In lean terminology, this gives you the cycle time for the feature, which you want to minimize. When aggregated across the team, this defines the team’s overall throughput in completing features.</li>
</ul>
<h3>Checklist Challenges</h3>
<p>I have encountered a number of challenges when using feature done checklists. Some of these issues are due to the actual checklists, but many are actually due to using a strict definition of done – the checklists just make the issue visible. </p>
<ol>
<li>The checklist needs to be meaningful to the team - you must avoid the risk of it just becoming a form that people sign without doing the necessary work / checking that the item entails. (This is sometimes called rubber-stamping or pencil-whipping.) I have used many strategies to mitigate this risk:
<ul>
<li>Use a paper-based checklist rather than electronic.</li>
<li>Keep the checklist to a single page with as few items as possible for each role to complete.</li>
<li>For items involving ‘checking’ activities, assign these to roles / people whose primary responsibility is checking, separate from the developers doing the coding.</li>
</ul>
</li>
<li>Extra effort is involved in getting a feature fully complete. This is often not accounted for in estimates, particularly if the estimate is provided by the developer. The time required for checking by other roles can be accommodated by having separate estimated tasks for these activities. What I find particularly challenging is accounting for extra time needed by the developer to resolve issues found in reviews or testing.</li>
<li>Having a through definition of done with multiple hand-offs of the feature to various roles will typically extend the duration of time required to complete the feature. The mitigation is to allow as many items as possible to be done concurrently. The best example is using pair programming as the means for doing the peer code review.</li>
<li>A single role / person with multiple review items per feature can end up becoming a bottleneck that ends up delaying feature completion. This is especially problematic if you are using a methodology like Scrum which focuses on getting features (user stories) done within the iteration – you tend to get a backlog of checklist items forming at the bottleneck near the end of the iteration which jeopardizes their completion.</li>
<li>One problem with using paper-based checklists is that they can get misplaced, or you end up looking for who has a form. This can be addressed by defining a location for checklists to be returned to. One option I like is to post them on a team wall, which provides the additional benefit of visibility.</li>
</ol>
]]></content:encoded>
			<wfw:commentRss>http://www.basilv.com/psd/blog/2010/using-feature-done-checklists/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>
