<?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>Webster &#38; Associates LLC &#187; PMSE</title>
	<atom:link href="http://bfwa.com/category/pmse/feed/" rel="self" type="application/rss+xml" />
	<link>http://bfwa.com</link>
	<description>We can help.</description>
	<lastBuildDate>Thu, 27 May 2010 02:24:14 +0000</lastBuildDate>
	<generator>http://wordpress.org/?v=2.9.2</generator>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
			<item>
		<title>Pitfall: Using the wrong developers</title>
		<link>http://bfwa.com/2008/06/23/pitfall-using-the-wrong-developers/</link>
		<comments>http://bfwa.com/2008/06/23/pitfall-using-the-wrong-developers/#comments</comments>
		<pubDate>Mon, 23 Jun 2008 18:48:44 +0000</pubDate>
		<dc:creator>bfwebster</dc:creator>
				<category><![CDATA[IT Project Management]]></category>
		<category><![CDATA[Main]]></category>
		<category><![CDATA[Management]]></category>
		<category><![CDATA[PMSE]]></category>
		<category><![CDATA[Pitfalls]]></category>
		<category><![CDATA[Recruiting]]></category>

		<guid isPermaLink="false">http://bfwa.com/?p=68</guid>
		<description><![CDATA[[From Pitfalls of Modern Software Engineering by Bruce F. Webster (forthcoming)]
Categories: managerial
Various industry studies cite the productivity gap between the best and the worst  developers. While there is some controversy over the ranges often cited (such as the  famous 26:1 figure), anyone who has managed a diverse group of developers won’t  argue [...]]]></description>
			<content:encoded><![CDATA[<p>[From <a href="../2008/02/25/pitfalls-of-modern-software-engineering-an-explanation"><strong>Pitfalls of Modern Software Engineering</strong></a> by Bruce F. Webster (forthcoming)]</p>
<p><strong>Categories</strong>: managerial</p>
<p>Various industry studies cite the productivity gap between the best and the worst  developers. While there is some controversy over the ranges often cited (such as the  famous 26:1 figure), anyone who has managed a diverse group of developers won’t  argue with the fact that there can be a dramatic difference in productivity among  individuals.</p>
<p>What is less obvious is that given a group of developers who are roughly equal in having  a sufficient or even superior level of competence and productivity, not all of them will  readily adapt to a new language, technology or development approach. Some  developers will take to it quickly and do very well; others will have to work harder, but  will eventually come up to speed; yet others may never become skilled even  though they may not be aware of this fact.</p>
<p>When this happens, all the developers may be working hard, but the relative quality of  their work &#8212; measured by adherence to best practices for the language/technology in question &#8212; can vary dramatically. This  may not be apparent for some time, and when it does appear, it can be difficult to  correct, from both a technical and organizational viewpoint.</p>
<h2>Symptoms</h2>
<p>Product architecture that must constantly be revised or refactored. Subsystems that are  less stable than others or that are hard to integrate with the rest of the project.  Developers consistently complaining about the quality or utility of a given developer’s  code.</p>
<h2>Consequences</h2>
<p>Failure to achieve the expected benefits of the language/technology. Varying quality within the system under development; friction and even  serious rifts between team members; project or product failure.</p>
<h2>Detection</h2>
<p>It’s a big help to have one or more team members who you know are skilled with the language/technology in question. That can be harder to  determine than you think, even (or especially) if you think that you’re skilled with the language/technology as well. Process, design and/or code reviews may help to shine light on the problems.</p>
<h2>Extraction</h2>
<p>This can be one of the hardest issues for a manager, especially if the developer doesn’t  recognize the deficiencies. The best solution is probably one of obvious or subtle  mentoring: partnering that developer with someone of proven language/technology skills. This approach  has two aims: to get the project back on track and to bring the developer’s skills up to  speed.</p>
<h2>Prevention</h2>
<p>Seek the best developers. That may sound obvious, but a lot of companies are more  interested in head count than talent and adaptability. The developer should be a self- starter and keenly interested in the language/technology in question, and should also have professional software  engineering skills and the discipline to match.</p>
<p>Before the project even starts, spend time to train the developers, and promote the  explicit understanding that their language/technology skills will be evaluated on a regular basis. Provide  incentives for honesty and alternative assignments, such as building tools, for those  whose skills lie elsewhere.</p>
<h2>References</h2>
<p>Webster, <strong>Pitfalls of Object-Oriented Development</strong> (1995).</p>
]]></content:encoded>
			<wfw:commentRss>http://bfwa.com/2008/06/23/pitfall-using-the-wrong-developers/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Pitfall: Using the wrong metrics (or none at all)</title>
		<link>http://bfwa.com/2008/06/23/pitfall-using-the-wrong-metrics-or-none-at-all/</link>
		<comments>http://bfwa.com/2008/06/23/pitfall-using-the-wrong-metrics-or-none-at-all/#comments</comments>
		<pubDate>Mon, 23 Jun 2008 18:32:44 +0000</pubDate>
		<dc:creator>bfwebster</dc:creator>
				<category><![CDATA[IT Project Management]]></category>
		<category><![CDATA[Main]]></category>
		<category><![CDATA[Management]]></category>
		<category><![CDATA[Metrics]]></category>
		<category><![CDATA[PMSE]]></category>
		<category><![CDATA[Pitfalls]]></category>

		<guid isPermaLink="false">http://bfwa.com/?p=67</guid>
		<description><![CDATA[[From Pitfalls of Modern Software Engineering by Bruce F. Webster (forthcoming)]
Categories: managerial
That which gets measured gets accomplished or, at least, evaluated. That’s why  various software metrics are used as an indication of progress and accomplishment.  The best known and easiest to compute is lines of code (LOC), usually measured as  thousands of [...]]]></description>
			<content:encoded><![CDATA[<p>[From <a href="../2008/02/25/pitfalls-of-modern-software-engineering-an-explanation"><strong>Pitfalls of Modern Software Engineering</strong></a> by Bruce F. Webster (forthcoming)]</p>
<p><strong>Categories</strong>: managerial</p>
<p>That which gets measured gets accomplished or, at least, evaluated. That’s why  various software metrics are used as an indication of progress and accomplishment.  The best known and easiest to compute is lines of code (LOC), usually measured as  thousands of lines of code (KLOC). Luckily, LOC has lost its appeal of the years because it  encourages verbosity and constant additions to the code base, even though simplicity  and refinement of existing code are ideal. Function points (FPs) are trendier, but they’re  also harder to measure and so don’t get used as often.</p>
<p>The point is that these metrics and many others have little bearing on modern software engineering.</p>
<p>Use of the &#8220;wrong&#8221; metrics may in some circumstances be better than no metrics at all. In one project I  worked on, we tracked the change in LOC on a subproject basis week by week; it gave a  rough indication of activity in and stability of a subproject. But the wrong metric may turn out to be a bane if misused or misinterpreted by those above you.</p>
<h2>Symptoms</h2>
<p>Use of metrics that don’t appear to be meaningful or that, worse yet, are misleading. Misuse of metrics as a management club.</p>
<h2>Consequences</h2>
<p>Time is spent generating information that is of little value and that may give a  misleading or erroneous indication of how the project is progressing. More seriously,  developers may be encouraged, consciously or unconsciously, to &#8220;produce&#8221; in ways that  run counter to the goals of the project.</p>
<h2>Detection</h2>
<p>Find out which metrics are being used (if any). Consider their influence and impact; see  whether they help predict time or quality of development. Ask other people how they  interpret these metrics.</p>
<h2>Extraction</h2>
<p>Abandon all irrelevant metrics and adopt appropriate ones. Educate all parties involved  about what is being done and why. Establish benefits and rewards for those who take  the time to use the metrics and whose development efforts improve as a result.</p>
<h2>Prevention</h2>
<p>From the outset, educate everyone &#8212; developers, technical managers, upper  management &#8212; about what are the appropriate metrics and what they mean. Develop  tools to automate metric generation as much as possible. Use the metrics regularly;  distribute the results and discuss their meaning.</p>
<p>Be sure to automate these metrics as much as possible; trying to do these by hand will  work once or twice but will not give you the constant feedback you need to make them  truly useful. Case in point: Do you think anyone would use or continue to use the old  &#8220;lines of code&#8221; metric if they had to count them by hand?</p>
<h2>References</h2>
<p>Webster, Bruce F. &#8220;Lies, Damned Lies, and Project Metrics&#8221; (Parts 1, 2, and 3). <a href="http://www.baselinemag.com/cp/bio/Bruce-F.-Webster/"><em>Baseline</em></a> (online edition).</p>
<p><a href="http://brucefwebster.com/2008/06/20/issue-metrics-for-tester-productivity/#comments">Comments posted by Gerald Weinberg</a> at brucefwebster.com.</p>
]]></content:encoded>
			<wfw:commentRss>http://bfwa.com/2008/06/23/pitfall-using-the-wrong-metrics-or-none-at-all/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Pitfall: Lying to yourself and others</title>
		<link>http://bfwa.com/2008/06/23/pitfall-lying-to-yourself-and-others/</link>
		<comments>http://bfwa.com/2008/06/23/pitfall-lying-to-yourself-and-others/#comments</comments>
		<pubDate>Mon, 23 Jun 2008 18:23:41 +0000</pubDate>
		<dc:creator>bfwebster</dc:creator>
				<category><![CDATA[Books]]></category>
		<category><![CDATA[IT Project Management]]></category>
		<category><![CDATA[Main]]></category>
		<category><![CDATA[Management]]></category>
		<category><![CDATA[PMSE]]></category>
		<category><![CDATA[Pitfalls]]></category>

		<guid isPermaLink="false">http://bfwa.com/?p=66</guid>
		<description><![CDATA[[From Pitfalls of Modern Software Engineering by Bruce F. Webster (forthcoming)]
Categories: managerial
Self delusion and group delusion are all too common in software development projects.  Several factors combine to bring this about. One is the natural optimism prevalent  among software engineers, particularly when they are not allowed, encouraged, or  required to spend sufficient [...]]]></description>
			<content:encoded><![CDATA[<p>[From <a href="../2008/02/25/pitfalls-of-modern-software-engineering-an-explanation"><strong>Pitfalls of Modern Software Engineering</strong></a> by Bruce F. Webster (forthcoming)]</p>
<p><strong>Categories</strong>: managerial</p>
<p>Self delusion and group delusion are all too common in software development projects.  Several factors combine to bring this about. One is the natural optimism prevalent  among software engineers, particularly when they are not allowed, encouraged, or  required to spend sufficient time specifying and designing what they will develop.  Another cause is the presumption that no major roadblocks or difficulties will be  encountered along the way, either technical or organizational. A third factor is the  persistent (if illogical) attitude on the part of upper management that because a project  must be completed by a certain date, therefore it can and will be completed by that  date, and information to the contrary is not welcome. Mix these and related factors and  you have a major disaster in the making.</p>
<p>New technologies and/or methodologies (&#8220;TOMs&#8221;) have a way of magnifying these tendencies. Engineers become even more optimistic, technical  managers see fewer roadblocks, and upper management, having read all the glowing  articles about these particular TOMs in the business and trade publications, expects unrealistic results.</p>
<h2>Symptoms</h2>
<p>Irritation, anger, and disbelief when someone gives unpopular but honest appraisals of  how things are going. Long, earnest explanations of why the standard rules of software  development don’t apply in this case. And, of course, serious discrepancies between the  planned schedule and actual results.</p>
<h2>Consequences</h2>
<p>Constant slips in the schedule, as expectations are continually reset to adjust to the new  version of reality. Projects that ship very late, if at all. Loss of credibility for managers  and developers. In the end, you end up looking dishonest, incompetent, or both.</p>
<h2>Detection</h2>
<p>Take aside the developers, managers, and others involved in the project, one at a time,  and ask each person, “Do you think there’s anything we’re fooling ourselves about?”  Make notes of the points each person brings up. Make a second pass through, but this  time show them the list you’ve compiled and ask them what they agree with, what they  disagree with, and what they’d like to add. The number and significance of items on the  list should give you a good idea whether you and others are fooling yourselves about  how the project is going.</p>
<h2>Extraction</h2>
<p>Given a significant list of items, you need to reschedule and plan again based on the  information collected. This may not be easy or popular; in some cases, it may not even  be possible, depending on how upper management reacts. Your choice may then be to  either push ahead as best you can or find another job.</p>
<h2>Prevention</h2>
<p>Use the process described under Detection from the start of project planning and  design. You may sacrifice popularity, but you’ll gain credibility—provided, of course,  that they don’t reassign (or fire) you and put someone more amenable in charge.</p>
<h2>References</h2>
<p>[<em>Professional experience</em>]</p>
]]></content:encoded>
			<wfw:commentRss>http://bfwa.com/2008/06/23/pitfall-lying-to-yourself-and-others/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Pitfall: Not identifying and managing risks</title>
		<link>http://bfwa.com/2008/06/09/pitfall-not-identifying-and-managing-risks/</link>
		<comments>http://bfwa.com/2008/06/09/pitfall-not-identifying-and-managing-risks/#comments</comments>
		<pubDate>Mon, 09 Jun 2008 17:37:31 +0000</pubDate>
		<dc:creator>bfwebster</dc:creator>
				<category><![CDATA[Main]]></category>
		<category><![CDATA[Management]]></category>
		<category><![CDATA[PMSE]]></category>
		<category><![CDATA[Pitfalls]]></category>

		<guid isPermaLink="false">http://bfwa.com/?p=63</guid>
		<description><![CDATA[[From Pitfalls of Modern Software Engineering by Bruce F. Webster (forthcoming)]
Categories: managerial
What are the risks in modern software development? Look at the pitfalls  listed in this book to start. Kind of makes you want to take up gardening, doesn’t it? On  the other hand, being able to identify those risks and then manage [...]]]></description>
			<content:encoded><![CDATA[<p>[From <a href="../2008/02/25/pitfalls-of-modern-software-engineering-an-explanation"><strong>Pitfalls of Modern Software Engineering</strong></a> by Bruce F. Webster (forthcoming)]</p>
<p><strong>Categories</strong>: managerial</p>
<p>What are the risks in modern software development? Look at the pitfalls  listed in this book to start. Kind of makes you want to take up gardening, doesn’t it? On  the other hand, being able to identify those risks and then manage them puts you way  ahead in the development game and can make you extremely valuable as a technical  manager.</p>
<p>Why do we sometimes fail to see and handle risks? There are various reasons. We don’t  want to confront others and ask hard questions. We don’t want to expose our own  ignorance. We keep hoping things will correct themselves. We don’t want to disappoint  or upset those above us. We don’t want to have to fire anyone. We don’t want to appear  not to trust others. We face resistance, forceful or subtle, as we try to point out these  risks and deal with them.</p>
<p>Risk management is essential in modern software engineering. It’s essential for all the reasons it would be in any  software development project. But it&#8217;s particularly essential if you are adopting a new technology or methodology (the &#8220;TOM&#8221;), because:</p>
<ul>
<li>the number of IT engineers that you have who are both skilled and experienced in the TOM is likely to be small;</li>
<li>non-IT personnel, particularly upper management, are likely to have high expectations and mistaken perceptions regarding the TOM.</li>
</ul>
<p>In short, adoption of a new TOM is likely to increase the risks of the project.</p>
<h2>Symptoms</h2>
<p>Closed door, closed eyes, closed mind. Constant trickle (or stream) of bad news from  developers. Spending more time putting out fires and explaining problems to upper  management than actively managing and completing tasks.</p>
<h2>Consequences</h2>
<p>Slipped schedules, missed milestones, project failures, lost jobs.</p>
<h2>Detection</h2>
<p>Ask everyone involved with the project what risks they think the project currently faces,  with &#8220;risks&#8221; meaning anything that could cause the project to ship behind schedule,  over budget, lacking specified features, in a form not acceptable to customers. If  anything comes up you haven’t considered and which you aren’t handling, then you  know you’ve fallen into this particular pit.</p>
<h2>Extraction</h2>
<p>Make an exhaustive list detailing all the previously unidentified and unhandled risks that  you gleaned from the questioning in Detection. Distribute the list through the development  group and then ask for any additions or corrections (a risk identified by one person may  be handled by another). Come up with an assessment of each risk: how probable it is,  how it could affect the project, and how it can be managed. Pass this list to upper  management. Reset and reschedule the project, if necessary.</p>
<h2>Prevention</h2>
<p>Risk identification and management should be part of project planning and scheduling  from the beginning. The more actively you work as a team to anticipate and handle  risks, the fewer problems you’ll encounter. Be aware that this takes political courage,  though; those above you don’t always want to hear what the risks are or why the project  may not be completed in the time frame demanded.</p>
<h2>References</h2>
<p>Webster, from <em>Pitfalls of Object-Oriented Development </em>(1995).</p>
]]></content:encoded>
			<wfw:commentRss>http://bfwa.com/2008/06/09/pitfall-not-identifying-and-managing-risks/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Pitfall: Misjudging relative costs</title>
		<link>http://bfwa.com/2008/06/09/pitfall-misjudging-relative-costs/</link>
		<comments>http://bfwa.com/2008/06/09/pitfall-misjudging-relative-costs/#comments</comments>
		<pubDate>Mon, 09 Jun 2008 17:27:55 +0000</pubDate>
		<dc:creator>bfwebster</dc:creator>
				<category><![CDATA[Books]]></category>
		<category><![CDATA[Main]]></category>
		<category><![CDATA[Management]]></category>
		<category><![CDATA[Methodology]]></category>
		<category><![CDATA[PMSE]]></category>
		<category><![CDATA[Pitfalls]]></category>
		<category><![CDATA[Quality assurance]]></category>

		<guid isPermaLink="false">http://bfwa.com/?p=62</guid>
		<description><![CDATA[[From Pitfalls of Modern Software Engineering by Bruce F. Webster (forthcoming)]
Categories: managerial
This is a classic pitfall in software engineering. Typically, insufficient time is allocated  for the problem specification, research, design, architecture, and review that should  occur before coding and during each development cycle. Likewise, software quality assurance (SQA) is often given  little [...]]]></description>
			<content:encoded><![CDATA[<p>[From <a href="../2008/02/25/pitfalls-of-modern-software-engineering-an-explanation"><strong>Pitfalls of Modern Software Engineering</strong></a> by Bruce F. Webster (forthcoming)]</p>
<p><strong>Categories</strong>: managerial</p>
<p>This is a classic pitfall in software engineering. Typically, insufficient time is allocated  for the problem specification, research, design, architecture, and review that should  occur before coding and during each development cycle. Likewise, software quality assurance (SQA) is often given  little time, money, or people. The whole focus is on coding, and often that is  underestimated by assuming that development will be linear and that  nothing will go wrong.</p>
<p>Adopting a new technology or methodology (the &#8220;TOM&#8221;) tends to compound this effect in several ways, some of  which are discussed elsewhere. First, unrealistic expectations can creep in. Second,  rapid prototyping and feature development can cause a false sense of progress. Third,  coding time may well be genuinely reduced by the TOM.</p>
<p>As a result, an expectation can arise that all aspects of the development cycle, not just  the coding portion, will be compressed. The first few times you use the TOM, it may require  more time up front for design and architecture, and it’s likely to require as much or  more testing time. As your development group gains more experience and expertise in the TOM, the entire cycle may start to compress, but that comes with time.</p>
<h2>Symptoms</h2>
<p>Non-coding tasks taking longer than the time allotted to them. Slowdowns during  development due to a need to rethink design. Alpha and beta testing taking much longer  than planned.</p>
<h2>Consequences</h2>
<p>Slipped schedules and missed deadlines. Rude surprises as design must be repeated or  testing takes much longer than expected.</p>
<h2>Detection</h2>
<p>Apply Brooks’ rule of thumb: the time required for a project should break down into  one-third for design and prototyping, one-sixth for implementing, and half for testing. If  your proportions are radically different, then you may have misjudged the relative costs  or at least, mislabeled them; a lot of design and testing gets buried inside  implementation.</p>
<p>If you’re far along in your project, keep a close eye on time required for SQA and particularly for testing, which is usually underestimated. Agile methodologies do a better job of addressing testing up front, but SQA remains the poor cousin for most software projects.</p>
<h2>Extraction</h2>
<p>First, throw out your current schedule and do a hard reset of expectations, particularly  among upper management. This is not easy to do, but honesty is always the best policy.  Good luck.</p>
<p>Second, set up a development cycle—specify, design, prototype, review, implement,  test—with the time allocated to each step in the cycle based roughly on the proportions  given above. Recognize that the actual time for each step in each cycle will vary: An  early cycle will tend to have more specification and design and less testing; a later cycle  will reverse those proportions.</p>
<p>Third, manage through one complete cycle and see how well your estimated costs  match reality. Adjust and repeat.</p>
<h2>Prevention</h2>
<p>First, get some project management software. It doesn’t have to be fancy; it just has to  automate the task of adding the estimated times for each task, noting critical paths,  and calculating a final date. This is important; attempting to schedule anything except  the smallest and simplest project in your head will lead to unpleasant surprises.</p>
<p>Second, use steps two and three under Extraction to set up your schedule and to  estimate relative costs. If possible, try this first with a relatively small project and then  work up to larger projects. The goal is to be able to estimate both relative and absolute  costs within a certain margin of error (say, 10 percent) on a regular basis.</p>
<h2>References</h2>
<p>Brooks, Frederick P., Jr. <em>The Mythical Man-Month</em>. Reading, MA: Addison-Wesley, 1995.</p>
<p>Webster, from <em>Pitfalls of Object-Oriented Development </em>(1995).</p>
]]></content:encoded>
			<wfw:commentRss>http://bfwa.com/2008/06/09/pitfall-misjudging-relative-costs/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Pitfall: Allowing new features to creep (or pour) in</title>
		<link>http://bfwa.com/2008/06/03/pitfall-allowing-new-features-to-creep-or-pour-in/</link>
		<comments>http://bfwa.com/2008/06/03/pitfall-allowing-new-features-to-creep-or-pour-in/#comments</comments>
		<pubDate>Wed, 04 Jun 2008 00:33:45 +0000</pubDate>
		<dc:creator>bfwebster</dc:creator>
				<category><![CDATA[Books]]></category>
		<category><![CDATA[Change management]]></category>
		<category><![CDATA[IT Project Management]]></category>
		<category><![CDATA[Main]]></category>
		<category><![CDATA[Management]]></category>
		<category><![CDATA[Methodology]]></category>
		<category><![CDATA[PMSE]]></category>
		<category><![CDATA[Pitfalls]]></category>
		<category><![CDATA[Software engineering]]></category>
		<category><![CDATA[Technology]]></category>

		<guid isPermaLink="false">http://bfwa.com/?p=60</guid>
		<description><![CDATA[[From Pitfalls of Modern Software Engineering by Bruce F. Webster (forthcoming)]
Categories: managerial
The impulse to constantly add new and incremental features to a software program  certainly isn’t unique to modern software develoment, or to a particular technology or methodology. It derives largely from three  sources. Upper management and marketing want, and sometimes need, those [...]]]></description>
			<content:encoded><![CDATA[<p>[From <a href="../2008/02/25/pitfalls-of-modern-software-engineering-an-explanation"><strong>Pitfalls of Modern Software Engineering</strong></a> by Bruce F. Webster (forthcoming)]</p>
<p><strong>Categories</strong>: managerial</p>
<p>The impulse to constantly add new and incremental features to a software program  certainly isn’t unique to modern software develoment, or to a particular technology or methodology. It derives largely from three  sources. Upper management and marketing want, and sometimes need, those  additional features to win a customer, to better position the product against a  competitor, or to better justify the expense of an in-house project. Engineers often find it  far more fun, more interesting, and more rewarding to add or extend features than to  make existing features work completely and perfectly. And customers supply a constant  flow of demand for new and improved functionality.</p>
<p>The problem is that many modern technologies and methodologies intensify all these tendencies. With a decent software design and implementation, based on current technology, it can take literally only a few minutes to add or extend  features. Frankly, that’s the payoff that lures many engineers to modern technologies in the first place:  They get to do really neat stuff, do it quickly, and impress the boss while they’re at it.  The boss, having seen how quickly engineers can extend or create functionality, doubles  or trebles the list of must-have features. The technical manager, caught in the middle,  wonders how to deal with all this.</p>
<h2>Symptoms</h2>
<p>Engineers focusing on adding new features instead of getting old ones working  completely. Upper management passing down long (or even short) lists of additional  features when the engineering schedule will be hard-pressed to accommodate the  current ones. Customers failing to distinguish between what they’d like and what they’re  willing to live with.</p>
<h2>Consequences</h2>
<p>Features that don’t work as completely or well as they were intended. Missed  milestones and schedule slippage.</p>
<h2>Detection</h2>
<p>Review all existing features with the engineering team and get an honest assessment of  where each feature is and what it will take to complete it. If necessary, do a design and  code review for each feature. Compare the documented “essential features” list—and  the schedule required to complete them—with the current feature set as well as those  proposed by engineers and upper management, and find where the differences are  coming in.</p>
<h2>Extraction</h2>
<p>Nothing fancy here: Get the absolute “drop dead” release date for the software and work  backward from there, allocating time to design, implement, debug, and test each  feature that is not yet completed. Show everyone (especially customers) the gap  between the time and resources allocated those required for just the currently planned  and requested features. Use whatever process works in your company for performing  feature triage: keeping those that are absolutely essential, dropping those that can wait  for the next release, and negotiating on the others.</p>
<h2>Prevention</h2>
<p>Use the process given in Extraction before a line of code is ever written. As features are  proposed, collect them in a list, but do not allow any work on them. At intervals, repeat  the process: You might have time (or need) to schedule some of the proposed features,  but you may well have to drop previously required ones.</p>
<p>As with <a href="http://bfwa.com/2008/06/03/pitfall-allowing-the-specification-to-drift-or-change-without-agreement/">a prior pitfall on features</a>, this pitfall is so an obvious and well-known that I’m almost embarrassed to include it here. Again, it is still so common that I must.</p>
<h2>References</h2>
<p>Webster, from <em>Pitfalls of Object-Oriented Development </em>(1995).</p>
]]></content:encoded>
			<wfw:commentRss>http://bfwa.com/2008/06/03/pitfall-allowing-new-features-to-creep-or-pour-in/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Pitfall: Allowing the specification to drift or change without agreement</title>
		<link>http://bfwa.com/2008/06/03/pitfall-allowing-the-specification-to-drift-or-change-without-agreement/</link>
		<comments>http://bfwa.com/2008/06/03/pitfall-allowing-the-specification-to-drift-or-change-without-agreement/#comments</comments>
		<pubDate>Wed, 04 Jun 2008 00:17:53 +0000</pubDate>
		<dc:creator>bfwebster</dc:creator>
				<category><![CDATA[Books]]></category>
		<category><![CDATA[Change management]]></category>
		<category><![CDATA[Development]]></category>
		<category><![CDATA[Main]]></category>
		<category><![CDATA[Management]]></category>
		<category><![CDATA[PMSE]]></category>
		<category><![CDATA[Pitfalls]]></category>

		<guid isPermaLink="false">http://bfwa.com/?p=59</guid>
		<description><![CDATA[[From Pitfalls of Modern Software Engineering by Bruce F. Webster (forthcoming)]
Categories: managerial
Let’s start by freely acknowledging that, with rare exceptions, software of any complexity changes between original specification and actual delivery. This is to be expected, and to a certain extent encouraged, when the changes represent a refinement of our understanding of the problem domain [...]]]></description>
			<content:encoded><![CDATA[<p>[From <a href="../2008/02/25/pitfalls-of-modern-software-engineering-an-explanation"><strong>Pitfalls of Modern Software Engineering</strong></a> by Bruce F. Webster (forthcoming)]</p>
<p><strong>Categories</strong>: managerial</p>
<p>Let’s start by freely acknowledging that, with rare exceptions, software of any complexity changes between original specification and actual delivery. This is to be expected, and to a certain extent encouraged, when the changes represent a refinement of our understanding of the problem domain and the required solutions. Hence Brooks’ assertion that we must be prepared to &#8220;throw one away&#8221; &#8212; we just don’t know for sure what we’ll need to build and how to build it until we’ve built one. One of the advantages of modern technologies and methodologies is that such changes and adaptations can often be made readily and at lower cost in time and risk than for earlier development approaches.</p>
<p>Let’s also acknowledge that, given the time required to deliver a significant piece of software, customer requirements, technical expectations, and market conditions may change dramatically between the time a project is specified and when it is delivered. As John Donovan noted many years ago, the distance between the leading edge of technology and the trailing edge appears to be constantly shrinking. You may need to redirect or revamp projects as they go along in order to respond to such shifts.</p>
<p>But that’s not what this pitfall is about. This pitfall is about specifications that aren’t nailed down, or that aren’t firmly specified at all. A given feature or aspect of the project is discussed (or maybe it isn’t). As time goes on, the person(s) implementing it have one idea as to what it means or may even have new and improved ideas for it. Those not implementing it may be assuming something quite different from what is being written. Those not involved—including, and especially, upper management—may have quite a different (and erroneous) idea of what the feature will be. And customer expectations may be something else again. When the time comes for feature completion, code integration, project review, or customer acceptance, all hell breaks loose.</p>
<h2>Symptoms</h2>
<p>Lack of specification documentation. Engineers showing off “new features.” Mismatched  subsystems. Constant delays in completing given features.</p>
<h2>Consequences</h2>
<p>Schedule slips due to ever-changing specification and integration problems. Lack of  management, marketing, or customer acceptance of the delivered project.</p>
<h2>Detection</h2>
<p>First, see whether you can put your hands on a detailed list of features. If no such list  exists or if it is incomplete or vague, then you have problems.</p>
<p>Second, see whether you can find a detailed description for each feature, including clear  information about what it will not do. Missing or incomplete information is another  danger sign.</p>
<p>Third, compare the specification against what is actually being implemented. Variations  are yet another indication of trouble.</p>
<p>Fourth, propose a change in specification and see what is the process for making it. The  more informal and undocumented the process, the greater the danger of this pitfall.</p>
<h2>Extraction</h2>
<p>The Detection exercise should give you a good idea about your current state and how to  get out of it: Produce the documents described and then use them as a hard spec for  the project.</p>
<p>A second (not necessarily exclusive) approach is to write a complete user’s manual for  the project and let that be the final specification. This is what we did many years ago at Pages Software: the user  documentation, complete with screen shots, was printed a full nine months before the  product was released. The president and CEO of Pages gave a copy to every engineer  and said, “Here’s the final specification.” It saved all of us from the temptation of  making further changes.</p>
<h2>Prevention</h2>
<p>Establish a process to create, review, modify, and enforce the specification. This is, in  effect, the documentation of the design phase of your methodology. This process won’t  be easy or popular, but it will pay off significantly in the long run.</p>
<p>This is such an obvious and well-known pitfall that I&#8217;m almost embarrassed to include it here. But it is still so common that I must.</p>
<h2>References</h2>
<p>Webster, from <em>Pitfalls of Object-Oriented Development </em>(1995).</p>
]]></content:encoded>
			<wfw:commentRss>http://bfwa.com/2008/06/03/pitfall-allowing-the-specification-to-drift-or-change-without-agreement/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Pitfall: Attempting too much, too fast, too soon</title>
		<link>http://bfwa.com/2008/05/30/pitfall-attempting-too-much-too-fast-too-soon/</link>
		<comments>http://bfwa.com/2008/05/30/pitfall-attempting-too-much-too-fast-too-soon/#comments</comments>
		<pubDate>Sat, 31 May 2008 03:12:49 +0000</pubDate>
		<dc:creator>bfwebster</dc:creator>
				<category><![CDATA[Books]]></category>
		<category><![CDATA[Main]]></category>
		<category><![CDATA[Management]]></category>
		<category><![CDATA[PMSE]]></category>
		<category><![CDATA[Pitfalls]]></category>
		<category><![CDATA[Technology]]></category>

		<guid isPermaLink="false">http://bfwa.com/?p=58</guid>
		<description><![CDATA[[From Pitfalls of Modern Software Engineering by Bruce F. Webster (forthcoming)]
Categories: managerial
If your organization is adopting some new technology or methodology (the &#8220;TOM&#8221;), it is likely because of wonderful claims about how it will improve your software engineering efforts: faster development time, higher quality, lower complexity, and so on. Leaving aside the likelihood of  [...]]]></description>
			<content:encoded><![CDATA[<p>[From <a href="../2008/02/25/pitfalls-of-modern-software-engineering-an-explanation"><strong>Pitfalls of Modern Software Engineering</strong></a> by Bruce F. Webster (forthcoming)]</p>
<p><strong>Categories</strong>: managerial</p>
<p>If your organization is adopting some new technology or methodology (the &#8220;TOM&#8221;), it is likely because of wonderful claims about how it will improve your software engineering efforts: faster development time, higher quality, lower complexity, and so on. Leaving aside the likelihood of  achieving such claims, these hypothetical benefits still inspire or tempt managers and developers alike to leap  feet first into adopting the TOM, using it to tackle large projects with short deadlines.</p>
<p>The result is like crossing a swamp. The ground starts out a bit damp and the  undergrowth a bit thick, but you can make good progress with your new TOM machete. As  you push ahead, however, you face mud, vines, snakes, water, and alligators in ever- increasing proportions. You may choose to push ahead or to go back, but in either case  the effort and cost are greater than if you had used caution before plunging in. And  those above you want to know what happened to all the wonderful benefits of this TOM.</p>
<h2>Symptoms</h2>
<p>A project that doesn’t seem to be making much progress or one that seems ill-defined.</p>
<h2>Consequences</h2>
<p>Schedule slips and project failure. If initial adoption of the TOM in question (or some key variant thereof), loss of acceptance of that technology and loss of professional credibility.</p>
<h2>Detection</h2>
<p>Enumerate all that you hope to accomplish with this project. See how soon in the  process the coding and prototyping started. Measure current status against the  announced schedule and make a realistic assessment of where you are.</p>
<h2>Extraction</h2>
<p>This can be really tough. Once you’re in the middle of a project, you have a lot of people  counting on you to deliver certain solutions by a particular date. You might be hesitant  to stop everything and plan the entire development effort again. On the other hand,  there is a good chance &#8212; in fact, almost a certainty &#8212; that if you have stumbled into this pitfall,  your efforts to get out of it may not be fully understood or appreciated by those in  authority.</p>
<p>Nevertheless, the best solution is to halt development and take the time to scale down  the project and train developers; then you can set realistic deadlines.</p>
<h2>Prevention</h2>
<p>Look again at the pitfall: too much, too soon, too fast. First, start out small when using  the new TOM for the first (or second or third!) time. Use well-defined,  small-scale pilot projects. Or whittle down your large project into a small one on which  you can build in later development cycles.</p>
<p>Second, take time for education, analysis, and design. Make sure that everyone involved  understands the concepts, techniques, and &#8212; yes &#8212; the pitfalls of this particular TOM. Resist the temptation to start prototyping and coding immediately; go  through an explicit, detailed analysis phase and take time to go through a design phase.</p>
<p>Third, plan for your initial TOM-based projects to take at least as long as they would if  developed using traditional software engineering approaches. You may be pleasantly  surprised; you almost certainly won’t have a rude awakening. After you get several  projects under your belt, you’ll become more accurate at projecting development  cycles.</p>
<h2>References</h2>
<p>Webster, from <em>Pitfalls of Object-Oriented Development </em>(1995).</p>
]]></content:encoded>
			<wfw:commentRss>http://bfwa.com/2008/05/30/pitfall-attempting-too-much-too-fast-too-soon/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Pitfall: Abandoning good software engineering practices</title>
		<link>http://bfwa.com/2008/05/29/pitfall-abandoning-good-software-engineering-practices/</link>
		<comments>http://bfwa.com/2008/05/29/pitfall-abandoning-good-software-engineering-practices/#comments</comments>
		<pubDate>Fri, 30 May 2008 01:58:38 +0000</pubDate>
		<dc:creator>bfwebster</dc:creator>
				<category><![CDATA[Development]]></category>
		<category><![CDATA[Main]]></category>
		<category><![CDATA[Management]]></category>
		<category><![CDATA[Methodology]]></category>
		<category><![CDATA[PMSE]]></category>
		<category><![CDATA[Pitfalls]]></category>
		<category><![CDATA[Software engineering]]></category>
		<category><![CDATA[Technology]]></category>

		<guid isPermaLink="false">http://bfwa.com/?p=56</guid>
		<description><![CDATA[[From Pitfalls of Modern Software Engineering by Bruce F. Webster (forthcoming)]
Categories: managerial
Why would the use of a new technology or methodology (the &#8220;TOM&#8221;) cause managers and developers to neglect or even abandon solid software engineering practices? Because those practices are under pressure from the start. Many engineers don’t know them and aren’t willing to spend [...]]]></description>
			<content:encoded><![CDATA[<p>[From <a href="../2008/02/25/pitfalls-of-modern-software-engineering-an-explanation"><strong>Pitfalls of Modern Software Engineering</strong></a> by Bruce F. Webster (forthcoming)]</p>
<p><strong>Categories</strong>: managerial</p>
<p>Why would the use of a new technology or methodology (the &#8220;TOM&#8221;) cause managers and developers to neglect or even abandon solid software engineering practices? Because those practices are under pressure from the start. Many engineers don’t know them and aren’t willing to spend (or aren’t given) the time to learn them. Those who do know them often aren’t willing to spend (or aren’t given) the time to practice them. Technical managers, who often do understand such techniques, find themselves caught in a vise, trapped between ever-increasing (and possibly unrealistic) demands of upper management and the productivity level of the engineers they supervise.</p>
<p>The introduction of a new TOM can cause a new set of problems. Upper management, having read articles about the benefits of this particular TOM, may see it as an opportunity to increase demands. Developers, already under pressure to produce, milk the benefits of the TOM for all they’re worth and may find even less incentive to focus on solid software engineering. And the technical managers in the middle have to cope with the specifics of the TOM while still fighting the software engineering battles.</p>
<h2>Symptoms</h2>
<p>Upper management expects the TOM to immediately shorten the software development lifecycle and is unwilling to allocate the necessary time and resources pilot projects. Engineers neglect common sense and best practices, feeling instead that the TOM somehow magically supersedes both.  Unrealistic expectations from upper management puts pressure on the development team, resulting in even more shortcuts.</p>
<h2>Consequences</h2>
<p>Failure to achieve expected benefits of the TOM, possibly leading to (unwarranted) rejection of the TOM for future projects. Delayed, buggy, and/or failed projects.</p>
<h2>Detection</h2>
<p>It’s usually not hard to detect the pressure from upper management; indeed, the problem is resisting the pressure. As for the engineering-level problems, the best detection comes from regular team meetings and project reviews to go over standard (TOM-independent) software engineering practices.</p>
<h2>Extraction</h2>
<p>This pitfall is a hard one to get out of, because upper management needs to allocate more time and resources, and the engineers need the self-discipline and education to change how they’re doing things. The key is to educate everyone about the benefits of good software engineering &#8212; established practices, predictable schedules, and higher quality &#8212; and <em>then </em>work the TOM into that setting.</p>
<h2>Prevention</h2>
<p>It is sad that there is often so much resistance to doing things right in the first place.  The approach is direct: realistic scheduling, definition of engineering standards, and  enforcement of engineering practices. For starters, make everyone &#8212; especially upper  managemen t&#8211; reads <em>The Mythical Man-Month</em> by Frederick P. Brooks. Then refer to it  again and again as these problems arise.</p>
<h2>References</h2>
<p>Webster, from <em>Pitfalls of Object-Oriented Development </em>(1995).</p>
]]></content:encoded>
			<wfw:commentRss>http://bfwa.com/2008/05/29/pitfall-abandoning-good-software-engineering-practices/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Pitfall: Adopting a technology or methodology without well-defined objectives</title>
		<link>http://bfwa.com/2008/05/26/pitfall-adopting-a-technology-or-methodology-without-well-defined-objectives/</link>
		<comments>http://bfwa.com/2008/05/26/pitfall-adopting-a-technology-or-methodology-without-well-defined-objectives/#comments</comments>
		<pubDate>Mon, 26 May 2008 22:48:49 +0000</pubDate>
		<dc:creator>bfwebster</dc:creator>
				<category><![CDATA[Books]]></category>
		<category><![CDATA[Main]]></category>
		<category><![CDATA[Management]]></category>
		<category><![CDATA[PMSE]]></category>
		<category><![CDATA[Pitfalls]]></category>

		<guid isPermaLink="false">http://bfwa.com/?p=55</guid>
		<description><![CDATA[[From Pitfalls of Modern Software Engineering by Bruce F. Webster (forthcoming)]
Categories: managerial
One of the defining moments in American politics during the 2nd half of the 20th century came early in the 1980 presidential campaign. Senator Ted Kennedy, heir apparent to the Kennedy legacy, was challenging his party’s incumbent, Jimmy Carter, for the nomination. Carter was [...]]]></description>
			<content:encoded><![CDATA[<p>[From <a href="../2008/02/25/pitfalls-of-modern-software-engineering-an-explanation"><strong>Pitfalls of Modern Software Engineering</strong></a> by Bruce F. Webster (forthcoming)]</p>
<p><strong>Categories</strong>: managerial</p>
<p>One of the defining moments in American politics during the 2nd half of the 20th century came early in the 1980 presidential campaign. Senator Ted Kennedy, heir apparent to the Kennedy legacy, was challenging his party’s incumbent, Jimmy Carter, for the nomination. Carter was seen as vulnerable to a Republican challenger, so Kennedy was ready to step up to fill the shoes of his two martyred brothers. Whatever his past troubles, he was still considered a shoo-in for the Democratic nomination and a credible response to the Republicans.</p>
<p>Then during an interview for a CBS news profile on Ted Kennedy, journalist <a href="http://en.wikipedia.org/wiki/Roger_Mudd#Ted_Kennedy_interview">Roger Mudd asked Kennedy why he wanted to be president</a>. For only a minute or two &#8212; but for what must have seemed like an eternity &#8212; Kennedy struggled inarticulately, unable to utter a coherent sentence, much less a compelling, thoughtful response. It seemed that either the question had never occurred to him or he was unwilling to express his true reasons and unable to come up with an acceptable substitute on a moment’s notice. Whatever the case, his support peaked at that moment and slid downward from there. He lost the nomination to Carter, who in turn lost the election to Ronald Reagan.</p>
<p>What’s the point? Just this: If you’re going to adopt a new technology or methodology (the &#8220;TOM&#8221;), be sure you know exactly why you’re doing it and what you hope to get out of it. It is not uncommon for development groups to decide to adopt a new TOM because it is a Good Thing; yet they fail to establish what exactly they expect to get out of it. &#8220;Faster development,&#8221; &#8220;greater flexibility,&#8221; and &#8220;code reuse&#8221; are nice phrases, but so are &#8220;the flag,&#8221; &#8220;motherhood,&#8221; and &#8220;apple pie.&#8221; Many groups explore a particular TOM because it’s interesting and new. A pilot project may be well defined &#8212; for example, the creation of a simple custom application &#8212; but often no clear follow-up exists.</p>
<h2>Symptoms</h2>
<p>Lack of measurable progress; lack of defined deliverables; lack of understanding as to  what comes next.</p>
<h2>Consequences</h2>
<p>Loss of focus and direction; pilot projects seem to drag on forever; real projects are  constantly redefined.</p>
<h2>Detection</h2>
<p>Describe in writing the ideal state of this TOM in your firm in, say, two to five  years (depending upon the size of your company and team). If this is hard to do, or if  what you write seems vague, then you have a good indication that you’ve fallen into this  pitfall.</p>
<p>Once you are satisfied with this statement, then describe in detail &#8212; working backward  from your long-term goal &#8212; each of the steps to get you from where you are now to where  you want to be. If you run into gaps or leaps of faith, then you know you’re facing this  pitfall.</p>
<h2>Extraction</h2>
<p>Follow the process in Detection: work backward from your long-term goal in a series of  steps, filling in any gaps that you encounter. Be very about identifying and defining the  objectives for each step.</p>
<h2>Prevention</h2>
<p>Follow the process described in Detection and Extraction. You may end up deciding that  your long-term goal is unrealistic; if so, adjust it. Remember that conditions will likely  change over three to five years, so make sure that you aren’t locked into that single  goal. Instead, make sure that at each step or phase, you have a chance to re-evaluate or  reset the eventual goal and shift accordingly.</p>
<h2>References</h2>
<p>Webster, from <em>Pitfalls of Object-Oriented Development </em>(1995).</p>
]]></content:encoded>
			<wfw:commentRss>http://bfwa.com/2008/05/26/pitfall-adopting-a-technology-or-methodology-without-well-defined-objectives/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>
