<?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>Wed, 25 Jan 2012 13:23:47 +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>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>
		<item>
		<title>Problems with Typical Definitions of Project Success</title>
		<link>http://www.basilv.com/psd/blog/2010/problems-with-typical-definitions-of-project-success</link>
		<comments>http://www.basilv.com/psd/blog/2010/problems-with-typical-definitions-of-project-success#comments</comments>
		<pubDate>Mon, 01 Mar 2010 14:11:01 +0000</pubDate>
		<dc:creator>Basil Vandegriend</dc:creator>
				<category><![CDATA[management]]></category>
		<category><![CDATA[project management]]></category>
		<category><![CDATA[software development]]></category>

		<guid isPermaLink="false">http://www.basilv.com/psd/?p=494</guid>
		<description><![CDATA[My previous article discussed the importance of defining success as it relates to software projects and products. Now I want to look at some typical definitions of success and identify problems or short-comings with these definitions. From this analysis I aim to point the way towards a better definition of what success entails. Typical Definitions [...]]]></description>
			<content:encoded><![CDATA[<p>My previous article discussed the <a href="http://www.basilv.com/psd/blog/2010/the-importance-of-defining-success">importance of defining success</a> as it relates to software projects and products. Now I want to look at some typical definitions of success and identify problems or short-comings with these definitions. From this analysis I aim to point the way towards a better definition of what success entails. </p>
<h3>Typical Definitions of Success</h3>
<p>What are common definitions of success? </p>
<p>The fourth edition of the <a href="http://www.pmi.org">Project Management Body of Knowledge</a> (PMBOK) frequently refers to project success, but does not appear to give a concrete definition which I find a little unsettling. All it seems to state on the subject is that the project charter should define the success criteria / objectives. </p>
<p>The <a href="http://www.standishgroup.com/">Standish Group</a> is well known for publishing their Chaos report that identifies leading causes of I.T. project failure. Success is defined as a software project that finishes on time, on budget, and within scope (e.g. with no missing functionality).</p>
<p>The article <a href="http://www.it-cortex.com/Stat_Failure_Rate.htm">http://www.it-cortex.com/Stat_Failure_Rate.htm</a> provides a number of different assessements of I.T. project success including the Standish group`s Chaos report that generally involve time, budget, and scope.</p>
<p>Formal definitions of success may seem too theoretical. Perhaps more relevant is how are projects measured and assessed within the organization, both in terms of the project status while it is in progress, and the evaluation of project success after the conclusion of the project. While I cannot speak for your organization, the ones I have worked for, observed, or heard case studies about all measure time and budget, and usually measure scope.</p>
<p>Many definitions of software project success that I was able to find generally correspond to the following definition: "A high-quality product that satisfies agreed requirements within time and budget" taken from the book <a href="http://www.amazon.ca/gp/product/0387953213?ie=UTF8&#038;tag=basilvandegri-20&#038;linkCode=as2&#038;camp=15121&#038;creative=330641&#038;creativeASIN=0387953213">A Practical Approach to Software Quality</a><img src="http://www.assoc-amazon.ca/e/ir?t=basilvandegri-20&#038;l=as2&#038;o=15&#038;a=0387953213" width="1" height="1" border="0" alt="" style="border:none !important; margin:0px !important;" /> by Gerard O'Reagan on page 215. For the remainder of this article I refer to this as the typical definition of success.</p>
<h3>Success and Failure Scenarios</h3>
<p>The typical definition of success may be quite popular and common, but is it useful, accurate, or comprehensive? To put it to the test I present a number of project scenarios – some real, some hypothetical – and see whether the typical definition of success matches what the situation suggests. </p>
<h4>Death March</h4>
<p>The project schedule and/or scope was overly aggressive. The project team worked long hours for an extended period of time in order to get the software completed within budget and schedule. A few team members quit or burnt out during the project, and most resigned shortly after the project finished. </p>
<p>
Strictly speaking this is a hypothetical scenario, but I have heard of a few projects at various game companies that have come close. The book <a href="http://www.amazon.ca/gp/product/013143635X?ie=UTF8&#038;tag=basilvandegri-20&#038;linkCode=as2&#038;camp=15121&#038;creative=330641&#038;creativeASIN=013143635X">Death March</a><img src="http://www.assoc-amazon.ca/e/ir?t=basilvandegri-20&#038;l=as2&#038;o=15&#038;a=013143635X" width="1" height="1" border="0" alt="" style="border:none !important; margin:0px !important;" /> by Edward Yourdon would not have become a classic if this scenario was not a common occurance within the industry.
</p>
<p><em>Analysis:</em> While the typical definition would call this project a success, I consider it a failure, and I would hope most reasonable organizations would as well. Definitions of success need to consider the project's impact on the team.
</p>
<h4>Unsatisfied Users</h4>
<p>
The project completed within schedule and budget with slightly more functionality than the original scope. But the users felt that their requirements had been misunderstood by the project team and that the software did not meet their needs.
</p>
<p>
This scenario is based on a project I was involved with a few years ago.</p>
<p><em>Analysis:</em> My initial reaction at hearing of unsatisfied users is to label the project a failure, even though it qualifies as a success according to the typical definition. Definitions of success should consider the satisfaction of the customer and end users of the software.
</p>
<p>However, given my experience with this scenario, I know that an important question to ask is whether the users' dissatisfaction was reasonable- i.e. did they know what they wanted, and was it achievable? I am reminded of a Dilbert cartoon where Dilbert is gathering requiremnts from a marketing person who starts fantasizing about a telepathic user interface. Some people you cannot make happy, no matter how hard you try.
</p>
<h4>Marketplace Failure</h4>
<p>
Company executives considered the project a success because it had been run by the book and the final system was very similar to the initial specification. But an external expert who evaluated the project found that it scored poorly in quality and productivity and faired poorly in the marketplace. Ironically, a second project that company executives considered a failure because the project was continually changing in efforts to respond to changes in the marketplace ended up quite successful in the marketplace.
</p>
<p>
This scenario is described in page 30 of the book <a href="http://www.amazon.ca/gp/product/0321437381?ie=UTF8&#038;tag=basilvandegri-20&#038;linkCode=as2&#038;camp=15121&#038;creative=330641&#038;creativeASIN=0321437381">Implementing Lean Software Development: From Concept to Cash</a><img src="http://www.assoc-amazon.ca/e/ir?t=basilvandegri-20&#038;l=as2&#038;o=15&#038;a=0321437381" width="1" height="1" border="0" alt="" style="border:none !important; margin:0px !important;" /> by Mary and Tom Poppendieck and comes from a <a href="http://www.roundtable.com/research-publications/publication/161">paper by Alan MacCormack</a>, a professor at Harvard who was the outside expert.
</p>
<p><em>Analysis:</em> There are several lessons here. The first is that definitions of success should consider how the product performs in the marketplace. This relates to the prior point regarding satisfaction of customers / end users - the more satisfied the consumer is, the more likely the product will excell in the marketplace. One question to consider, however, is whether the success of the project should be completely dependent on the success of the software that is produced. One can easily imagine scenarios where a team does a great job producing a great product, but it fails in the marketplace for reasons outside their control (e.g. bad marketing).
</p>
<p>The second lesson is to observe the danger of having a wrong definition of success. Those company executives, who presumably make decisions to approve and fund projects and reward project teams, evaluated project success completely opposite to the level of success in the marketplace. The risk is that these executives cancel the 'bad' projects and fund more projects like the 'good' one, and put their company out of business as a result.</p>
</p>
<h4>Late but Leader</h4>
<p>
The project was <em>years</em> late before it was finally delivered: at no point in time was the project estimated to take more than about one year, but it actually took just over five years to ship. The software, however, became number one in the marketplace and a flagship product for the company.</p>
<p>
This story is told in the book <a href="http://www.amazon.ca/gp/product/1556159005?ie=UTF8&#038;tag=basilvandegri-20&#038;linkCode=as2&#038;camp=15121&#038;creative=330641&#038;creativeASIN=1556159005">Rapid Development</a><img src="http://www.assoc-amazon.ca/e/ir?t=basilvandegri-20&#038;l=as2&#038;o=15&#038;a=1556159005" width="1" height="1" border="0" alt="" style="border:none !important; margin:0px !important;" /> by Steve McConnell (pages 207 - 208) about  Microsoft Word for Windows version 1.0. I assume you have heard of this piece of software :)
</p>
<p><em>Analysis:</em> This scenario is essentially the opposite of the prior scenario and thus raises the same question about whether product success means project success. In this case, given how badly the project was estimated and the negative impact that the overly-aggressive schedule had on the team's efforts, I would be hard-pressed to call the project itself a success, although the product itself was extremely successful.
</p>
<h4>Stopped for Higher Priority</h4>
<p>
The project was stopped by management part-way through with only partial functionality delivered in order for the team to start a new, much higher priority project to take advantage of an excellent opportunity in the marketplace.
</p>
<p>
This scenario is hypothetical.
</p>
<p><em>Analysis:</em> The typical definition of success would call this project a failure. But why, exactly? Because not all the functionality was delivered? If management determined that continuing to work on the remaining functionality was less valuable than starting the new project, then wouldn't the really failure have been to continue with the project (assuming no other people were available to start the new project)? When a project is started, certain decisions are made regarding its scope, schedule, and budget, usually based on limited information. If these decisions are changed later on the basis of more accurate information, how is this a failure? Another point I've hinted at here is that worthwhile projects must be delivering value to some customer or stakeholder, and defintiions of success should consider this.
</p>
<h4>Cancelled</h4>
<p>
The project was cancelled after a few months after it became clear that the new leading-edge technology being piloted was not working out and that the project's expected return on investment would not be achieved.
</p>
<p>
This scenario is hypothetical.
</p>
</td>
<p><em>Analysis:</em> This continues the theme of the last scenario regarding the delivery of value. Projects that are not delivering value should be stopped (or fixed). But is a cancelled project a failure? You might be tempted to say yes. I was. But consider that the typical definition of success considers cancelled projects failures, whereas if such a project was left running to its conclusion it would be considered a success, irrespective of the value produced. People try to avoid failure, so calling this scenario a failure motivates people to avoid it and continue down the path of not providing value. But is it right to call this project a success? One could argue that it did provide value in terms of the organization learning that the new technology was unworkable. If evaluating the technology was one of the primary goals of the project, then that goal was definitely achieved.
</p>
<h4>Simultaneous Success and Failure</h4>
<p>
The project was considered a failure by management due to not meeting its estimates (it was 400% over budget), but a majority of the developers considered it their most successful project.</p>
<p>
This scenario is told in the book <a href="http://www.amazon.ca/gp/product/0321117425?ie=UTF8&#038;tag=basilvandegri-20&#038;linkCode=as2&#038;camp=15121&#038;creative=330641&#038;creativeASIN=0321117425">Facts and Fallacies of Software Engineering</a><img src="http://www.assoc-amazon.ca/e/ir?t=basilvandegri-20&#038;l=as2&#038;o=15&#038;a=0321117425" width="1" height="1" border="0" alt="" style="border:none !important; margin:0px !important;" /> by Robert Glass, page 39, and comes from research performed by K.R. Linberg.
</p>
<p><em>Analysis:</em> Robert Glass's analysis of this situation identifies that one of the underlying factors behind this disagreement is an "unspoken controversy ... about what constitutes project success." (page 41). My view is that different stakeholders can hold widely differing views of success. (And yes, I consider the project team to be a significant stakeholder in the project - they are the ones dedicating a portion of their lives to it.) Definitions of success should take into consideration these different views, but how do you reconcile them when they conflict? Is one stakeholder's view better or more correct than anothers? This goes back to my prior discussion on customer and user satisfaction, and what happens if they are unreasonable. The same can be said of management's expectations - if the initial schedule or budget is completely unrealistic (which the developers in this scenario did identify as a reason the project was late), then why shouldn't the management view of success be disregarded?
</p>
<h4>No Budget or No Schedule</h4>
<p>
Some projects, for all intents and purposes, have no budget or no schedule. The best example is open source projects. Some of bigger open source projects do have a target date for their next release, but keep the actual release date flexible based on when the software is ready. And virtually all open source projects have no budget at all.
</p>
<p><em>Analysis:</em> The typical definition of success is unable to even evaluate the success or failure of such projects, which seems wrong for a supposedly universal definition. You might try to claim that open source development does not consitute a project, but any given release of open source software has a clearly defined start and end, with activities being performed within that duration to achieve the goal of shipping that release. That sounds like a project to me. How would you judge the success of open source development if there is no budget, a fluid schedule (maybe), and maybe not even a defined scope? I think the answer lies in determining whether the stakeholders are satisfied and whether value is being produced for these stakeholders.
</p>
<h3>Conclusion</h3>
<p>I purposely selected scenarios that challenge the typical definition of sucesss in order to highlight its flaws and to identify considerations that can lead towards a better definition of success. The essential underlying problem, I believe, is a broken paradigm, which I illustrate by rewording the typical definition of success in story form: </p>
<p>When we are about to start a project is when we know the least about it, which means that our estimates will be the worst possible. Let us guess, up front, precisely the scope (functionality) we want to deliver and then guess the budget and schedule required to deliver that scope. These guesses may then be arbitrarily revised downward for budget and schedule and upward for scope for political reasons. Let us then commit to these guesses. If we do not achieve them our project will be judged a failure, no matter what we might learn throughout the project. </p>
<p>Hopefully worded in that fashion it is clear that there is something fundamentally disfunctional about evaluating projects in this manner. My next article in this series on success will focus on coming up with a better definition of success. </p>
<p>P.S. I must point out that I am being somewhat unfair in using the term "typical definition of success" as others have had similar thoughts to myself and have come forward with alternate definitions. See for example <a href="http://www.ddj.com/architect/202800777">Scott Ambler's analysis</a>.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.basilv.com/psd/blog/2010/problems-with-typical-definitions-of-project-success/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>The Importance of Defining Success</title>
		<link>http://www.basilv.com/psd/blog/2010/the-importance-of-defining-success</link>
		<comments>http://www.basilv.com/psd/blog/2010/the-importance-of-defining-success#comments</comments>
		<pubDate>Mon, 25 Jan 2010 14:00:08 +0000</pubDate>
		<dc:creator>Basil Vandegriend</dc:creator>
				<category><![CDATA[management]]></category>
		<category><![CDATA[IT industry]]></category>
		<category><![CDATA[project management]]></category>
		<category><![CDATA[software development]]></category>

		<guid isPermaLink="false">http://www.basilv.com/psd/?p=482</guid>
		<description><![CDATA[Can you define what makes a successful software development project or product? Do you know the criteria by which your current assignment will be judged a success? Does everyone associated with the project or product share the same definition? Defining what it means to be successful may seem obvious or trivial, but I expect that [...]]]></description>
			<content:encoded><![CDATA[<p>Can you define what makes a successful software development project or product? Do you know the criteria by which your current assignment will be judged a success? Does everyone associated with the project or product share the same definition? Defining what it means to be successful may seem obvious or trivial, but I expect that many people will answer “No” to at least one of the above questions.</p>
<p>Defining what makes for a successful project / product is critically important at every level: the individual, the team, the organization, and even the entire I.T. industry. (In the remainder of this article I will refer solely to projects with the understanding that the material applies as well to ongoing work on software products.) </p>
<h3>Individual</h3>
<p>Individual performance is often evaluated at least in part by the success or failure of the projects you work on, more so if you are in a leadership or management role. This can impact your compensation (raises, bonuses), future assignments and promotions, and even your job (if the project is a bad failure). </p>
<p>Being clear about the project’s definition of success should help guide you in the day-to-day decisions you make and actions you take on the project. This provides two benefits: you are more likely to be personally judged a success (even if the project fails), and the project is more likely to be successful.</p>
<h3>Team</h3>
<p>The choices to make in assembling a team – how many people will be on it, and what skill levels &#038; abilities will they have – are significantly influenced by the project’s definition of success. For example, if minimal budget expenditure is a critical success factor then a small team should be used. </p>
<p>Once the team is assembled having a clear definition of success shared by the team members helps provide coordination of activity rather than disjointed efforts. </p>
<p>The practices &#038; methods used by the team should be selected and tailored to maximize the likelihood and magnitude of success. </p>
<h3>Organization</h3>
<p>Within an organization that produces software decisions must be made regarding what projects to proceed or continue with and what level of funding and people to allocate to these projects. In a rational organization these decisions should be based on a cost-benefit analysis which should, in turn, be linked to the project’s definition of success. For example, if a project is conceived of to produce software targeted to hit the market in time for the Christmas selling season then hitting the delivery date becomes a significant factor of project success. </p>
<h3>I.T. Industry</h3>
<p>Our favorite pastime within the I.T. industry may well be promoting or debating the merits of various programming languages, environments, tools, practices, and methods. But what is the basis for making these evaluations? Presumably this is based on the likelihood of the tool, practice, or method making the project more successful (or less likely to fail). This evaluation should depend, therefore, on the definition of success being used, but this is seldom defined explicitly as part of the promotion / evaluation being done. (I am as guilty of this as everyone else.) </p>
<p>One notable exception is the book <a href="http://www.amazon.ca/gp/product/1556159005?ie=UTF8&#038;tag=basilvandegri-20&#038;linkCode=as2&#038;camp=15121&#038;creative=330641&#038;creativeASIN=1556159005">Rapid Development</a><img src="http://www.assoc-amazon.ca/e/ir?t=basilvandegri-20&#038;l=as2&#038;o=15&#038;a=1556159005" width="1" height="1" border="0" alt="" style="border:none !important; margin:0px !important;" /> by Steve McConnell. Part III of the book lists 27 ‘best’ practices. For each practice a section on efficacy is provided that evaluates the practice based on three separate factors: potential reduction from nominal schedule, improvement in progress visibility, and effect on schedule risk. (Other project success factors such as quality or cost were omitted because the book focuses on minimizing schedule – thus the name Rapid Development.) McConnell explicitly advocates “selecting rapid-development practices that meet the needs of your specific project” (page 396). </p>
<p>Some might argue that virtually all projects share the same definition of success (usually along the lines of delivering required functionality with sufficient quality on time and on budget), and this then allows for meaningful discussion of 'best' practices independent of the definition of project success. I disagree with this position, but will save further discussion for a subsequent article: <a href="http://www.basilv.com/psd/blog/2010/problems-with-typical-definitions-of-project-success">Problems with Typical Definitions of Project Success</a></p>
]]></content:encoded>
			<wfw:commentRss>http://www.basilv.com/psd/blog/2010/the-importance-of-defining-success/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Why You Need a Definition of Done</title>
		<link>http://www.basilv.com/psd/blog/2009/why-you-need-a-definition-of-done</link>
		<comments>http://www.basilv.com/psd/blog/2009/why-you-need-a-definition-of-done#comments</comments>
		<pubDate>Mon, 28 Sep 2009 14:09:49 +0000</pubDate>
		<dc:creator>Basil Vandegriend</dc:creator>
				<category><![CDATA[management]]></category>
		<category><![CDATA[definition of done]]></category>
		<category><![CDATA[getting things done]]></category>
		<category><![CDATA[process]]></category>
		<category><![CDATA[Scrum]]></category>
		<category><![CDATA[software development]]></category>

		<guid isPermaLink="false">http://www.basilv.com/psd/?p=442</guid>
		<description><![CDATA[Whether you are working on a small task or a large project, do you and your team have a clear understanding of what it takes to complete a piece of work? The Scrum method of software development calls this Definition of Done and touts this as a critical practice for high-performing teams. While I have [...]]]></description>
			<content:encoded><![CDATA[<p>Whether you are working on a small task or a large project, do you and your team have a clear understanding of what it takes to complete a piece of work? The Scrum method of software development calls this <a href="http://www.scrumalliance.org/articles/105-what-is-definition-of-done-dod">Definition of Done</a> and touts this as a critical practice for high-performing teams. While I have used an implicit, <a href="http://www.basilv.com/psd/blog/2007/strategies-for-effective-code-reviews">informal definition of done for coding</a> for years, recently I have been enlightened as to the value of having an explicit, written definition that the team agrees to and understands. </p>
<p>Why is having a definition of done so valuable? I have grouped the benefits it provides into the following categories:</p>
<h3>Higher Quality</h3>
<p>Definitions of done should typically focus less on the activities people normally do and focus more on the activities that tend to be neglected or forgotten. In software development this means specifying activities that ensure the quality of the code being produced, rather than the actual act of coding. Quality often means much more than just few defects: it can also mean readable code, a clean design, or achieving any number of other non-functional requirements such as security, performance, and scalability. A definition of done that includes quality aspects serves, therefore, as both a reminder of the importance of quality in the day-to-day work and as a set of expectations regarding the level of quality to strive for.</p>
<p>Out of curiosity I decided to check out a number of publicly available definitions of done and count the percentage of items that clearly related to quality. Here are the results:</p>
<table class="fancy" cellspacing="0">
<tr>
<th>Definition of Done</th>
<th>% of Items Relating to Quality</th>
</tr>
<tr>
<td><a href="http://www.agile-software-development.com/2007/07/definition-of-done-10-point-checklist.html">http://www.agile-software-development.com/2007/07/definition-of-done-10-point-checklist.html</a></td>
<td>50% (5 / 10)</td>
</tr>
<tr>
<td><a href="http://www.scrumalliance.org/articles/37-are-we-there-yet">http://www.scrumalliance.org/articles/37-are-we-there-yet</a></td>
<td>46% (6 / 13)</td>
</tr>
<tr>
<td><a href="http://www.scrumalliance.org/articles/107-how-do-we-know-when-we-are-done">http://www.scrumalliance.org/articles/107-how-do-we-know-when-we-are-done</a></td>
<td>60% (3 / 5)</td>
</tr>
</table>
<h3>Standardization</h3>
<p>A written, clearly-specified definition of done is essentially a standard. Standards provide many benefits when properly applied using <a href="http://www.basilv.com/psd/blog/2006/are-you-a-rule-maker-or-a-rule-breaker">a lean (pragmatic) mindset rather than a bureaucratic mindset</a>. The proper mindset can be summarized using the following dichotomy: a standard represents the best way we know today of doing some activity within some context, yet each day we search for a better way so as to improve the standard. As implied by this summary, standards help form the foundation for future improvements. This is because following standards brings consistency which makes it easier to analyze the results of the work being done, determine the root cause of problems, and identify how to improve. For more on how standards help improvement efforts see my article on <a href="http://www.basilv.com/psd/blog/2009/continuous-improvement-framework">a framework for continuous improvement</a>.</p>
<p>Standards have a number of other benefits. Checklists can be created from the standards for use by both the people doing the work (as a reminder of what to do), and by the people verifying the work (as a quality assurance check). Standards are helpful in training new team members. Having documented standards can also be helpful for achieving certain certifications like ISO or passing regulatory requirements such as Sarbanes-Oxley.</p>
<p>Most definitions of done do not mandate the specific step-by-step procedures to follow, but rather set expectations regarding the final product produced. To illustrate, a definition of done for coding features will likely mandate that certain kinds of testing be done (automated unit testing, functional testing, etc.), but will typically not mandate the sequence in which the testing and coding activities are done. (So unit tests could be written before the code as per test-driven development, or they could be written afterward - either approach will satisfy the definition of done.) Team may choose to standardize which procedures are used, but this is typically kept separate from a definition of done.</p>
<h3>More Accurate Estimates</h3>
<p>Having a definition of done helps estimation accuracy in two ways. First, it serves as a checklist of all the steps required to complete an activity that can likewise be used to estimate the effort remaining. When estimating the work left on a feature, for example, a definition of done can help ensure that time is estimated not just for the coding, but also for reviewing and testing. </p>
<p>Second, a definition of done makes it easier to track the actual progress, since activities reported as done are more likely (but not guaranteed, unfortunately) to actually be done. This means there will be less surprises in terms of additional work required for previously 'completed' assignments. These surprises, of course, significantly reduce estimation accuracy, so the more they can be eliminated the better the estimates.</p>
<h3>Better Teamwork</h3>
<p>The previous benefits apply when you are working on your own, but software development is more commonly a team activity. And in addition to these prior benefits, having a definition of done will make your team more effective. Many of the challenges of working in terms such as achieving unity of purpose, clear communication, and coordination of effort, benefit from having a definition of done. When team members are communicating about the work that has been and needs to be done, having a clear definition of done helps avoid misunderstandings. The definition functions, in essence, as a communications technique for ensuring that when team members use the word "done" they all mean the same thing. </p>
<p>For examples of what happens without a clear definition see <a href="http://agilesoftwaredevelopment.com/2006/05/definition-of-done">this story of a team of five having three different viewpoints regarding done</a> and <a href="http://www.scrumalliance.org/articles/37-are-we-there-yet">this story of someone reporting a status of 'finished' that really wasn't</a>.</p>
<h3>Concluding Thoughts</h3>
<p>This article has mostly discussed definition of done in the context of software development and specifically coding, but the concept is much more broadly applicable both within I.T. and beyond. Staying within I.T. I can see the benefits of having definitions of done for activities such as incident resolution by support staff, product high-level requirements definition, and pursuing sales. So I challenge you to look for opportunities to use a definition of done to help achieve superior performance.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.basilv.com/psd/blog/2009/why-you-need-a-definition-of-done/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>

