<?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; Books</title>
	<atom:link href="http://bfwa.com/category/books/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: 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: 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>New column for Ziff Davis: &#8220;Surviving Complexity&#8221;</title>
		<link>http://bfwa.com/2008/06/05/new-column-for-ziff-davis-surviving-complexity/</link>
		<comments>http://bfwa.com/2008/06/05/new-column-for-ziff-davis-surviving-complexity/#comments</comments>
		<pubDate>Fri, 06 Jun 2008 00:09:14 +0000</pubDate>
		<dc:creator>bfwebster</dc:creator>
				<category><![CDATA[Articles]]></category>
		<category><![CDATA[Books]]></category>
		<category><![CDATA[Main]]></category>
		<category><![CDATA[Writing]]></category>

		<guid isPermaLink="false">http://bfwa.com/?p=61</guid>
		<description><![CDATA[I&#8217;ve been working for some time on a book called  Surviving Complexity. Many of my posts over at brucefwebster.com have adapted from materials I’m writing for that book.
Well, now I’ve been hired by Ziff Davis Enterprises to write a weekly column on IT Management for the online version of Baseline.  That column is [...]]]></description>
			<content:encoded><![CDATA[<p>I&#8217;ve been working for some time on a book called  <a href="http://and-still-i-persist.com/works-in-progress/surviving-complexity/"><strong>Surviving Complexity</strong></a>. Many of my posts over at brucefwebster.com have <a href="http://brucefwebster.com/category/surviving-complexity/">adapted from materials</a> I’m writing for that book.</p>
<p>Well, now I’ve been hired by Ziff Davis Enterprises to write a weekly column on IT Management for the online version of <a href="http://baselinemag.com/">Baseline</a>.  That column is titled “Surviving Complexity” and, again, draws upon work I’m doing for the book. My first column is up:  <a href="http://www.baselinemag.com/c/a/IT-Management/Lies-Damned-Lies-and-Project-Metrics-Part-1/">“Lies, Damned Lies, and Metrics (Part I)”</a>; here’s the opening paragraph:</p>
<blockquote><p>When Capers Jones published <strong>Assessment and Control of Software Risks</strong> (Yourdon Press, 1994), he identified the most serious software risk in IT projects as “Inaccurate Metrics,” and the second most serious software risk as “Inadequate Measurement”. I remember being startled when I first read that back in 1995—they certainly weren’t what I would have chosen—and other authorities in the field criticized his choices. Yet, in the intervening years, I have moved closer and closer to Jones’ point of view.</p></blockquote>
<p>Please feel free to <a href="http://www.baselinemag.com/c/a/IT-Management/Lies-Damned-Lies-and-Project-Metrics-Part-1/">check out the new column</a>.  Thanks.  ..bruce..</p>
]]></content:encoded>
			<wfw:commentRss>http://bfwa.com/2008/06/05/new-column-for-ziff-davis-surviving-complexity/feed/</wfw:commentRss>
		<slash:comments>0</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: 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>
		<item>
		<title>Pitfall: Picking the wrong horse</title>
		<link>http://bfwa.com/2008/05/21/pitfall-picking-the-wrong-horse/</link>
		<comments>http://bfwa.com/2008/05/21/pitfall-picking-the-wrong-horse/#comments</comments>
		<pubDate>Thu, 22 May 2008 02:24:59 +0000</pubDate>
		<dc:creator>bfwebster</dc:creator>
				<category><![CDATA[Books]]></category>
		<category><![CDATA[Development]]></category>
		<category><![CDATA[Main]]></category>
		<category><![CDATA[PMSE]]></category>
		<category><![CDATA[Pitfalls]]></category>
		<category><![CDATA[Politics]]></category>
		<category><![CDATA[Technology]]></category>

		<guid isPermaLink="false">http://bfwa.com/?p=53</guid>
		<description><![CDATA[[From Pitfalls of Modern Software Engineering by Bruce F. Webster (forthcoming)]
Categories: political
Face it: technology adoption is a gamble, and one often made at gunpoint. External market forces lead internal political forces to demand advances &#8212; often unrealistic ones &#8212; in information technology. Those who adopt too soon come to understand the cliché “bleeding edge”. 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>: political</p>
<p>Face it: technology adoption is a gamble, and one often made at gunpoint. External market forces lead internal political forces to demand advances &#8212; often unrealistic ones &#8212; in information technology. Those who adopt too soon come to understand the cliché “bleeding edge”. Those who adopt too late lose opportunities and possibly market share. And so you find yourself looking a dozen new technologies and trying to decide which to adopt, knowing that only two or three are likely to succeed: that is, deliver what you need and grow with your ever-increasing demands. A winner is always easier to pick in retrospect, but you seldom have that luxury. Instead, you need to decide between adopting a “safe” technology &#8212; which may not, in the end, really meet your needs &#8212; or leading out with a newer technology and thus run the risk of finding yourself in a dead end with a non-standard or even unsupported solution or approach.</p>
<p>But that&#8217;s why they pay you the big bucks, right?</p>
<p>Just as a personal note, I spent five years (1990-95) and $7 million in venture capital as part of a software start-up that developed and shipped a design-oriented desktop publishing system for . . . the NeXTstep operating system. As I tell people, it seemed like a good idea at the time. It was a great operating system (still is &#8212; go look at Mac OS X) and certainly better than anything else out in 1990. And we were in good company at the time, with firms such as WordPerfect, Ashton-Tate, and Adobe all developing for NeXTstep as well.</p>
<p>But it was the wrong horse.</p>
<h2>Symptoms</h2>
<p>Peers and managers above you start questioning your choice of technologies. The number of other organizations adopting the technology in question doesn&#8217;t seem to be growing much, or is even shrinking. Developers experienced with the technology are hard to find.</p>
<h2>Consequences</h2>
<p>Your system and/or development effort struggles due to the lack of developers and third-party tools for the technologies in question. If you&#8217;re developing a commercial product, you may find a very limited market, assuming you find one at all. If you&#8217;re developing an in-house system, you may end up deploying it, but the system may be difficult to maintain and keep in production for its original hoped-for lifetime. And if you were the champion for adopting that particular technology, you may find yourself losing influence, missing out on promotions, and possibly even out of a job.</p>
<h2>Detection</h2>
<p>Track down and talk frequently with other firms adopting the same technology. Fact-check, as best you can, claims by the technology&#8217;s vendor regarding adoption and market share. Pay particular attention to the products or systems based on this technology that are actually deployed into real-world use.</p>
<h2>Extraction</h2>
<p>If you think you&#8217;ve picked the wrong horse, then start to find the right one, quickly. Figure out what it&#8217;s going to take to move over to the better (or best) technology. Work up a careful transition plan &#8212; as accurate and conservative as you can make it &#8212; and then figure out what it&#8217;s going to take to sell this to upper management. There may be no good or easy paths at this point.</p>
<p>Note that there are cases where you may well be best off staying on the technology you originally picked, particularly if this is an in-house system. That is, it may be more cost effective to push into production, then plan for an earlier-than-expected end-of-life for that system, rather than try to switch horses in mid-race.</p>
<h2>Prevention</h2>
<p>This is hard precisely for the reasons stated above: in many cases, you just don&#8217;t know what will succeed and what won&#8217;t. If you&#8217;re talking about a major decision &#8212; such was what operating system to develop for and deploy on &#8212; your choices may be limited by other factors. In general, though, you want to avoid the leading/bleeding edges &#8212; never count on version 1.0 (or even 1.x) of anything. You want to choose technologies that have been out in the marketplace long enough to have the flaws exposed and &#8212; one hopes &#8212; the biggest problems addressed.</p>
<h2>References</h2>
<p>[<em>Professional observation</em>]</p>
]]></content:encoded>
			<wfw:commentRss>http://bfwa.com/2008/05/21/pitfall-picking-the-wrong-horse/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Pitfall: Underestimating the resistance</title>
		<link>http://bfwa.com/2008/05/16/pitfall-underestimating-the-resistance/</link>
		<comments>http://bfwa.com/2008/05/16/pitfall-underestimating-the-resistance/#comments</comments>
		<pubDate>Fri, 16 May 2008 18:53:33 +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[Methodology]]></category>
		<category><![CDATA[PMSE]]></category>
		<category><![CDATA[Pitfalls]]></category>
		<category><![CDATA[Politics]]></category>
		<category><![CDATA[Technology]]></category>

		<guid isPermaLink="false">http://bfwa.com/?p=50</guid>
		<description><![CDATA[[From Pitfalls of Modern Software Engineering by Bruce F. Webster (forthcoming)]
Categories: political
A particular technology or methodology (the &#8220;TOM&#8221;) is wonderful. At least, you think it is, based on anything from a breathless  magazine article to years of experience with solid, successful software development using this TOM.  Or you may not think it&#8217;s wonderful, [...]]]></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>: political</p>
<p>A particular technology or methodology (the &#8220;TOM&#8221;) is wonderful. At least, you think it is, based on anything from a breathless  magazine article to years of experience with solid, successful software development using this TOM.  Or you may not think it&#8217;s wonderful, but you do think it may offer advantages and  benefits to your development efforts. And, of course, what’s obvious to you should be  obvious—or, at least, understandable—to everyone else.</p>
<p>So you blithely push ahead&#8230;until people start pushing back. And before you know it,  you’re engaged in a political battle, fighting resistance to the TOM that may  range from guerrilla sniping to a full frontal assault.</p>
<p>Why might people resist accepting object technology? The reasons are varied and may  range from the well-founded to the completely irrational to the deliberately  obstructionist. Here are examples:</p>
<ul>
<li>They don’t understand the TOM.</li>
<li>They don’t want to understand the TOM.</li>
<li>They’re afraid they won’t be able to understand the TOM (and thus will have  less value to the company).</li>
<li>They know they won’t be able to understand the TOM, because they’ve been just skating by for the last ten years&#8211;taking advantage of the IT job shortage&#8211;and know that this will expose them for what they are.</li>
<li>They have very strong feelings about the language and/or programming  methodology, or tools or all three that they currently use.</li>
<li>They really detest the TOM and/or the associated language and/or tools that you’re  proposing they use.</li>
<li>They’re worried that the reasons for adopting the TOM aren’t well thought  through.</li>
<li>They’re worried that the plan for adopting the TOM has significant problems  or flaws.</li>
<li>They want to adopt the TOM, but they want to do it their way.</li>
<li>They want you to fail so that they (or someone they like better) can get your job.</li>
<li>They read this book.</li>
</ul>
<p>Compounding the situation is the fact that you may face several of the reasons  simultaneously, possibly from different sources.</p>
<h2>Symptoms</h2>
<p>Delays in getting approval or support. Rumors circulating behind your back. Objections  constantly brought up in meetings. Former supporters distancing themselves from you.  Reduction in project priority and resources.</p>
<h2>Consequences</h2>
<p>Significant project delays or project failure. Loss of influence. Loss of job.</p>
<h2>Detection</h2>
<p>If you suspect that resistance is deeper or more entrenched than you thought, you need  to find out the sources of resistance and the reasons behind it. This can be hard,  because the people resisting you may not be honest about what they’re doing, or why  they’re doing it.</p>
<p>Furthermore, if the resistance is coming from above, your boss(es) may feel no  obligation to explain their reasons.</p>
<h2>Extraction</h2>
<p>You have four choices, not necessarily mutually exclusive, based on the nature, depth,  and source of the resistance:</p>
<ul>
<li>Push ahead in spite of it.</li>
<li>Mollify or enlist those who resist.</li>
<li>Redirect the project to quell the objections.</li>
<li>Abandon the project gracefully and (maybe) try again later.</li>
</ul>
<h2>Prevention</h2>
<p>Make a list of everyone who might have any input or influence and judge where they  stand. If possible, meet with each one privately to sound out her or him—but recognize  that you may not get an honest answer. Offer each person a chance to make criticisms  and recommendations; let everyone feel a part of the project and the process. Build  enthusiasm, pointing out specific benefits, particularly those of interest to each  individual. Use each source to cross-check others. This process is known as “getting  your ducks in a row,” and you’d better do that before you start. This process may be  more critical for those below you than those above you; don’t underestimate the power  of developers to make your life wonderful or miserable.</p>
<p>Having done that, assess the costs and risks in pushing this project forward compared  to the possible benefits and rewards. Factor that with the probability of success and  make your call. If it looks too dangerous, scale back or redirect. If it looks impossible,  find somewhere else to work.</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/16/pitfall-underestimating-the-resistance/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Pitfall: Not educating and enlisting management before the fact</title>
		<link>http://bfwa.com/2008/05/14/pitfall-not-educating-and-enlisting-management-before-the-fact/</link>
		<comments>http://bfwa.com/2008/05/14/pitfall-not-educating-and-enlisting-management-before-the-fact/#comments</comments>
		<pubDate>Thu, 15 May 2008 04:03:13 +0000</pubDate>
		<dc:creator>bfwebster</dc:creator>
				<category><![CDATA[Books]]></category>
		<category><![CDATA[Development]]></category>
		<category><![CDATA[Main]]></category>
		<category><![CDATA[Methodology]]></category>
		<category><![CDATA[PMSE]]></category>
		<category><![CDATA[Pitfalls]]></category>
		<category><![CDATA[Politics]]></category>
		<category><![CDATA[Technology]]></category>

		<guid isPermaLink="false">http://bfwa.com/?p=49</guid>
		<description><![CDATA[[From Pitfalls of Modern Software Engineering by Bruce F. Webster (forthcoming)]
Categories: political
There is an oft-cited dictum in technology development groups: “It is easier to ask  forgiveness than permission.” It is often true and sometimes crucial to circumvent  bureaucratic foot-dragging and politics. But it is not always the best course, and the  danger [...]]]></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>: political</p>
<p>There is an oft-cited dictum in technology development groups: “It is easier to ask  forgiveness than permission.” It is often true and sometimes crucial to circumvent  bureaucratic foot-dragging and politics. But it is not always the best course, and the  danger of following it is commensurate with the technical, financial, and political risks  involved. And all three risks abound when an organization is moving to a new technology or methodology (the &#8220;TOM&#8221;).</p>
<p>Nevertheless, it is not uncommon for a development group to make the switch to the TOM  with only minimal involvement and education of upper management. Indeed,  management may not care very much or may even be supportive—having read an  article about the wonders of this particular TOM in a weekly business magazine.</p>
<p>And that is where the pitfall lies. For unless the project comes in within acceptable time  and budget limits, upper management will suddenly be asking hard questions reflecting  reasonable or unreasonable expectations, given what they know or were told.</p>
<h2>Symptoms</h2>
<p>Apparent lack of knowledge or overly positive expectations or both on the part of  management about the TOM and its role in the relevant projects. Sudden distancing or self- protecting activities if problems crop up.</p>
<h2>Consequences</h2>
<p>Lack of support and possibly active hostility from upper management if problems arise  or if their expectations aren’t met. Finding yourself twisting in the wind. Career damage,  lack of promotion, demotion, loss of job.</p>
<h2>Detection</h2>
<p>Sit down with upper management and find out how much they understand about this particular TOM and how it’s being applied in the relevant project(s). Have them detail their  expectations. Find out their level of enthusiasm or concern for the use of this TOM.</p>
<h2>Extraction</h2>
<p>There’s little to do except start the education and enrollment process much later than it  should have been. It may be really tough, depending on how current expectations  compare to reality, and the truth is, there’s no good reason for not having done this  before things got started.</p>
<h2>Prevention</h2>
<p>From the pitfall itself, it’s obvious that there are two separate (if related) tasks:  educating and enlisting. The first comprises letting management know exactly what  adopting this TOM entails, which means that you had better know yourself, and  you’d better know it well enough to explain it to nontechnical people. Work to contain  your own enthusiasm for this TOM; remember that it is safer to underpromise and overdeliver.</p>
<p>Second, and this is probably tougher, you need to enlist key people: those who can  affect your budget and resources, and those who can affect the scope and direction of  your project. If you can, prove yourself with small projects to establish credibility and to  give your sponsors a track record to point to (and take credit for).</p>
<h2>Reference</h2>
<p>Webster, from <em>Pitfalls of Object-Oriented Development </em>(1995).</p>
]]></content:encoded>
			<wfw:commentRss>http://bfwa.com/2008/05/14/pitfall-not-educating-and-enlisting-management-before-the-fact/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>
