<?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>Building Better Software &#187; Project Management</title>
	<atom:link href="http://www.stellman-greene.com/category/project-management/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.stellman-greene.com</link>
	<description>because people want their software to work</description>
	<lastBuildDate>Sat, 05 Nov 2011 14:19:07 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.3.1</generator>
		<item>
		<title>Admitting that you have a problem</title>
		<link>http://www.stellman-greene.com/2011/03/12/admitting-that-you-have-a-problem/</link>
		<comments>http://www.stellman-greene.com/2011/03/12/admitting-that-you-have-a-problem/#comments</comments>
		<pubDate>Sat, 12 Mar 2011 20:52:41 +0000</pubDate>
		<dc:creator>Andrew Stellman</dc:creator>
				<category><![CDATA[Project Management]]></category>
		<category><![CDATA[Software Development]]></category>

		<guid isPermaLink="false">http://www.stellman-greene.com/?p=596</guid>
		<description><![CDATA[It’s not always easy to recognize when your project is in trouble.  Yes, if your project crashes and burns and completely fails to deliver, it’s failed. But sometimes you don’t realize that you’ve  or you’ve  built the wrong software and are about to make your users very unhappy. The first step in fixing your project problems is admitting that you have a problem.]]></description>
			<content:encoded><![CDATA[<p><a href="http://www.stellman-greene.com/blog/wp-content/uploads/2011/03/Denial1.png"><a href="http://www.stellman-greene.com/blog/wp-content/uploads/2011/03/Denial2.png"><img class="alignnone size-full wp-image-617" title="Denial" src="http://www.stellman-greene.com/blog/wp-content/uploads/2011/03/Denial2.png" alt="" width="450" height="581" /></a></a></p>
<p>It’s not always easy to recognize when your project is in trouble. Yes, if your project crashes and burns and completely fails to deliver, it’s failed. But sometimes you don’t realize that you’ve  or you’ve built the wrong software and are about to make your users very unhappy. That’s why Jenny and I put together our <a href="http://www.stellman-greene.com/Why_Projects_Fail.pdf">Why Projects Fail talk [pdf]</a> a few years ago: to help people recognize when their projects are starting to go off the rails, and learn a few simple techniques for fixing them. If you learn to recognize the signs of project problems, it’s easier to take action quickly and turn your project around:</p>
<blockquote><p>Software projects are a lot like cheesy horror movies. After you’ve seen a few of them, you know that the first guy to leave the group is going to get an axe in his head. Projects are the same way. People keep making the same mistakes over and over, and it keeps getting their projects killed.</p>
<p>– <a href="http://www.stellman-greene.com/Why_Projects_Fail.pdf">Why Projects Fail presentation</a>, slide 6</p></blockquote>
<p>But what happens when your problems are bigger than just one project? What happens when you’ve got a team, a department, or a whole organization that runs into trouble repeatedly on projects?</p>
<p>When Jenny and I were doing research for our first book, <a href="http://www.stellman-greene.com/aspm">Applied Software Project Management</a> <em>(O&#8217;Reilly, 2005)</em>, we talked to many different people on all kinds of teams. And when we did, we started to notice something funny. We specifically reached out to people who had bad experiences with requirements, project management, Agile development—really, any way of trying to do things better. We were surprised that we kept hearing the same things over and over again, and started to suspect that they were symptoms of deep-rooted project management problems&#8230; and teams that were resistant to changing them.</p>
<p><span style="font-size: 20px; font-weight: bold;">Taking the first step</span></p>
<p>A list of the most common excuses—excuses that we’ve heard dozens or even hundreds of times, over and over again, from many different teams—is a surprisingly powerful tool. There have been many times when I’ve been brought in to try to help a team improve the way they build software. I&#8217;d be in the middle of an explanation of, say, why Agile has worked well for me in the past, and someone would give me an excuse that&#8217;s <em>almost exactly word-for-word right out of our book</em>. It’s actually pretty uncanny: how were we able to predict exactly what he would say in advance? But there it is, written down and printed in black and white.</p>
<p>That was the inspiration for the chapter in our book called <em>Understanding Change</em>. In it, we outline the most common excuses for sticking with a poor way of building software and not adopting something better. If you’ve ever tried to help your software team adopt a new tool, technique, or practice, you’ll see some very familiar arguments there.</p>
<p>Here are the top excuses that we’ve heard from teams that can’t admit that they have a problem. They’re all straight out of <em>Applied Software Project Management</em>. Treat each of these excuses as a big red flag, and you can use this to your advantage. If you’ve ever watched an episode of <a href="http://www.aetv.com/intervention/index.jsp">Intervention</a>, you probably know that the first step to fixing a serious issue is admitting that you have a problem. Do they sound familiar to you? Have you ever heard any of them before? If so, it’s time to take the first step.</p>
<p>But if you do take the step and admit that you have project problems, that’s good news! It means that there are plenty of time-tested, tried-and-true ways to help your team. (Of course, if you’re a regular reader of <a href="http://www.stellman-greene.com/">Building Better Software</a>, you already know that!)</p>
<p><em>Each of the following excuses is excerpted from pages 206 through 213 of <a title="Applied Software Project Management" href="http://www.stellman-greene.com/aspm">Applied Software Project Management</a> (Stellman A and Greene J, O</em><em>’</em><em>Reilly 2005). You can read a lot more about each one (and what you can do when you hear them from your team) in that chapter.</em></p>
<h4>We Already Build Software Well</h4>
<p>Denial is a common response to change. You may have identified a glaring problem, but people around you fail to even recognize it (or simply refuse to acknowledge it). Many professional software engineers and managers have never experienced a project that did not have enormous delays and serious problems; it’s often assumed that this is just part of how software is built. After all, they usually delivered something—most projects were eventually completed, and the software they built is now being used. Sure, some projects seem to always be eternally 90% done (with 90% left to go), but most of them seem to get something onto the users’ desktops (although many patches and bug fixes needed to be rolled out afterward). Isn’t that good enough?</p>
<h4>“Not Invented Here” Syndrome</h4>
<p>“Not Invented Here” syndrome (NIH syndrome) is a name given to a common type of organizational culture where people intentionally avoid research or innovations that were not developed within the organization. When faced with a problem, the people in the organization will typically reject a solution that is known to have worked elsewhere in the industry, solely on the grounds that it did not originate from inside the organization. They opt instead to build their own solution, often at far greater cost.</p>
<h4>It’s “Too Theoretical”</h4>
<p>When an idea does not make intuitive sense, many people will dismiss it as a result of “academic research,” which could not possibly apply to the world they live in. For example, to someone without a project management or software  engineering background, it may not be immediately obvious that reviews reduce defects, or that it’s important to write a specification before building software. To him, these procedures are time-consuming, with no obvious benefit. They sound good in a book, but would never work in the organization. In other words, they are “too theoretical.”</p>
<h4>It Just Adds More Bureaucracy</h4>
<p>An especially damaging attitude in some organizations holds that programming is the only important activity in a software project. Project management tools and techniques are seen as distractions that drain energy and effort away from the programmers’ “real job” of writing code. Any project activity that takes place before the programmers begin writing code simply amounts to “spinning our wheels,” and the goal of all early project activities should be to get the programmers doing the “real work” as quickly as possible.</p>
<h4>You Can’t Give Me More Work!</h4>
<p>Most of the changes that a project manager makes will increase the workload of other people. Software engineers, managers, and stakeholders who were not directly involved in building software will suddenly find themselves expected to attend status and review meetings, participate in planning and estimation activities, work with someone creating a vision and scope document or eliciting requirements, or perform other tasks that were never expected of them before. If you are making these changes, then you are the person piling additional work onto someone’s already overflowing plate. Not surprisingly, there are people who will not be happy with this arrangement.</p>
<h4>It’s Too Risky</h4>
<p>The economist John Maynard Keynes once wrote, “Worldly wisdom teaches that it is better for the reputation to fail conventionally than to succeed unconventionally.“ Legendary investor Warren Buffett put it this way: “Lemmings as a class may be derided but never does an individual lemming get criticized.” In other words, any manager who backs a change puts his reputation on the line; if that manager does nothing, he will not be criticized for maintaining the status quo.</p>
<p><em><br />
</em></p>
]]></content:encoded>
			<wfw:commentRss>http://www.stellman-greene.com/2011/03/12/admitting-that-you-have-a-problem/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Demoralize Your Teams Quickly And Efficiently With Micromanagement</title>
		<link>http://www.stellman-greene.com/2010/11/29/demoralize-your-teams-quickly-and-efficiently-with-micromanagement/</link>
		<comments>http://www.stellman-greene.com/2010/11/29/demoralize-your-teams-quickly-and-efficiently-with-micromanagement/#comments</comments>
		<pubDate>Mon, 29 Nov 2010 13:50:58 +0000</pubDate>
		<dc:creator>Andrew Stellman</dc:creator>
				<category><![CDATA[Project Management]]></category>
		<category><![CDATA[Teams]]></category>

		<guid isPermaLink="false">http://www.stellman-greene.com/?p=559</guid>
		<description><![CDATA[Apparently I’ve earned the dubious distinction of having become an expert in project failure. I’ve always had an interest in project failure—Jenny and I have been doing our “Why Projects Fail” talk for years now, and we’ve talked to many people in many different industries (like in our fourth book, Beautiful Teams) about what’s gone [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://www.stellman-greene.com/blog/wp-content/uploads/2010/11/utter_submission.png"><img class="alignnone size-full wp-image-565" title="utter_submission" src="http://www.stellman-greene.com/blog/wp-content/uploads/2010/11/utter_submission.png" alt="" width="550" height="547" /></a></p>
<p>Apparently I’ve earned the dubious distinction of having become an  expert in project failure. I’ve always had an interest in project  failure—Jenny and I have been doing our <a href="http://www.stellman-greene.com/Why_Projects_Fail.pdf"><span style="color: #0000ff;"><span style="text-decoration: underline;">“Why Projects Fail” talk</span></span></a> for years now, and we’ve talked to many people in many different industries (like in our fourth book, <em><a href="http://oreilly.com/catalog/9780596518028">Beautiful Teams</a></em>) about what’s gone wrong on their projects. We’ve looked at failures on projects through the years, from small misfires on our own projects to dramatic failures like the <a href="http://www.stellman-greene.com/about/galloping-gertie-the-tacoma-narrows-bridge-disaster/"><span style="color: #0000ff;"><span style="text-decoration: underline;">Tacoma Narrows Bridge disaster</span></span></a>, to try to figure out what software developers can learn from them.</p>
<p>One of my favorite ways that projects can fail is death by  micromanagement. It’s a nasty, insidious problem for a couple of  reasons. It’s easy for a boss to fall into the micromanagement trap,  especially for a project that’s starting to spiral out of control, because when you feel like your project is slipping away from you, it’s  hard to resist the urge to tighten your grip on every part of it that  you can.</p>
<p>And the people on the team have trouble recognizing it because a  lot of them have never worked any other way. I’ve said it before, and  I’m sure I’ll say it again: I’m willing to bet that if someone was able  to conduct an accurate survey, they would find that a surprisingly large number of managers are micromanagers.</p>
<p>On the other hand, if you’re a boss or a project manager looking  for a great way to demoralize your team and cause your projects to fail,  micromanagement is a great way to do it. Here are some handy tips to  make sure your team hates you and your project runs into serious trouble:</p>
<ul>
<li>Make sure you don’t give your team enough time to do the work, and then blame them for not getting it done on time.</li>
<li>Routinely ask people to stop working on whatever they’re doing right<strong> </strong>now to take care of urgent emergency work.</li>
<li>Then utterly fail to follow up on that urgent emergency work.</li>
<li>Never let anyone on your team release anything or even talk to a user without giving it to you to look over first.</li>
<li>When  they give you that work, make sure you send it back with a whole lot of  vague and poorly thought-out changes – but make sure you don’t give any  extra time to make them.</li>
<li>In fact, try to constantly find many small changes that your team should make, just to keep them on their toes.</li>
<li>Your  team needs constant attention! If it’s been more than two hours since  you’ve talked to someone on your team, drop by and tap one of them on  the shoulder and ask for an update.</li>
<li>All organizations run on  status. If the status updates stop flowing, a company can crumble and  perish! Also, developers feel lonely if they haven’t given a status  update in the last few hours. So make sure everyone has to fill out  elaborate status reports, and make sure you hold at least three two-hour-long status meetings  every week.</li>
<li>Did someone on your team do something differently  than how you would do it? Reprimand them! They might tell you that it  works just fine, and that their way is just as good. But it’s not <em>your</em> way, so it’s not right.</li>
<li>Remember: reading your mind is part of every team member’s job. That’s how they stay proactive!</li>
</ul>
<p>Most of all, though, remember rule #1: <strong>Nobody is ever allowed to make mistakes! </strong>If a developer makes a mistake, it reflects badly on you, and the whole  team suffers. Never admit that you were wrong about anything. If you  said it once, it’s now the law and should never be questioned.</p>
<p>If you follow this simple advice, then your team will be  demoralized in no time. Also, they’ll hate you. Oddly, though, there’s a  good chance that they won’t get their resumes together and start  looking for new jobs. I have a theory about this: when you micromanage a team, it drains their will to such an extent that they no  longer care. Psychologists call this state “learned helplessness.”  The <a href="http://en.wikipedia.org/wiki/Learned_helplessness"><span style="color: #0000ff;"><span style="text-decoration: underline;">Wikipedia article on learned helplessness</span></span></a> has a good description of a classic experiment by Martin Seligman and Steve Maier:</p>
<blockquote><p>In part one of Seligman and <a href="http://en.wikipedia.org/w/index.php?title=Steve_Maier&amp;action=edit&amp;redlink=1"><span style="color: #0000ff;"><span style="text-decoration: underline;">Steve Maier</span></span></a>&#8216;s experiment,  three groups of dogs were placed in harnesses. Group One dogs were  simply put in the harnesses for a period of time and later released.  Groups Two and Three consisted of &#8220;yoked pairs.&#8221; A dog in Group 2 would  be intentionally subjected to pain by being given electric shocks, which the dog could end by pressing a  lever. A Group 3 dog was wired in parallel with a Group 2 dog, receiving  shocks of identical intensity and duration, but his lever didn&#8217;t stop  the electric shocks. To a dog in Group 3, it seemed that the shock ended at random, because it was his paired dog in Group 2  that was causing it to stop. For Group 3 dogs, the shock was apparently  &#8220;inescapable.&#8221; Group 1 and Group 2 dogs quickly recovered from the  experience, but Group 3 dogs learned to be helpless, and exhibited symptoms similar to chronic <a href="http://en.wikipedia.org/wiki/Clinical_depression"><span style="color: #0000ff;"><span style="text-decoration: underline;">clinical depression</span></span></a>.</p>
<p>In  part two of the Seligman and Maier experiment, these three groups of  dogs were tested in a shuttle-box apparatus, in which the dogs could  escape electric shocks by jumping over a low partition. For the most part, the Group 3 dogs,  who had previously &#8220;learned&#8221; that nothing they did had any effect on the  shocks, simply lay down passively and whined. Even though they could  have easily escaped the shocks, the dogs didn&#8217;t try.</p></blockquote>
<p>If reading about the Group 3 dogs reminds you of work, then there’s a very good chance that you’re being micromanaged.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.stellman-greene.com/2010/11/29/demoralize-your-teams-quickly-and-efficiently-with-micromanagement/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>A Few Things Every Job-Seeking Programmer Should Know About Project Management (part 2)</title>
		<link>http://www.stellman-greene.com/2010/09/23/a-few-things-every-job-seeking-programmer-should-know-about-project-management-part-2/</link>
		<comments>http://www.stellman-greene.com/2010/09/23/a-few-things-every-job-seeking-programmer-should-know-about-project-management-part-2/#comments</comments>
		<pubDate>Fri, 24 Sep 2010 02:16:11 +0000</pubDate>
		<dc:creator>Andrew Stellman</dc:creator>
				<category><![CDATA[Careers]]></category>
		<category><![CDATA[Project Management]]></category>

		<guid isPermaLink="false">http://www.stellman-greene.com/?p=508</guid>
		<description><![CDATA[I’ve met a lot of programmers who really hate project management. And it’s not that surprising, because project management done poorly can be a pain. But if you’re a developer looking for a job, employers are more and more likely to expect you to know something about project management. Luckily, good project management can make [...]]]></description>
			<content:encoded><![CDATA[<p><em>I’ve met a lot of programmers who really hate project management. And it’s not that surprising, because project management <strong>done poorly</strong></em><em> can be a pain. But if you’re a developer looking for a job, employers are more and more likely to expect you to know something about project management. Luckily, good project management can make your life easier, and it’s worth knowing about it—not just for job interviews, but to help you get the most out of your own projects. In <a href="http://www.stellman-greene.com/2010/08/30/a-few-things-every-programmer-should-know-about-project-management-part-1/">part 1 of this post</a></em><em>, I talked about a few basic things that I think every developer ought to know about project management. Now I’ll finish up by going into a few details that can help you run your projects more smoothly—and deliver better software.</em></p>
<p><a href="http://www.stellman-greene.com/blog/wp-content/uploads/2010/08/Seaworthy-project.png"><img title="Seaworthy project" src="http://www.stellman-greene.com/blog/wp-content/uploads/2010/08/Seaworthy-project.png" alt="" width="575" height="356" /></a></p>
<h3>Why you should care about project management</h3>
<p><a href="http://www.stellman-greene.com/blog/wp-content/uploads/2010/08/Seaworthy-project.png"></a></p>
<p>I’ve had a lot of developers over the years tell me outright that they think project management is stupid.</p>
<p>Some of the best developers I’ve worked with had pretty negative opinions of project management. At best, they’d say something like, “Well, that sounds good for another team, especially a really big team, but our projects run just fine without the extra overhead.” At worst, they think it’s malignant bureaucracy imposed on them by pointy-haired bosses. One bad experience can sour a good developer on project management. And that’s pretty unfortunate, because good project management can make a developer’s life a lot easier.</p>
<p>So why should a developer care about project management?  I think the answer is in the <a title="Why Projects FAil" href="http://www.stellman-greene.com/Why_Projects_Fail.pdf">Why Projects Fail talk</a> that Jenny and I have done many times over the years, where we outline many different ways that projects fail. We got the idea from that presentation because we’ve spent years talking to many different people about the different kinds of project problems. We had to figure out exactly what it means for a project to fail. Obviously, if your project completely crashes and burns, it’s a failure. But the funny thing about a software project is that you can almost always deliver something – even on a project that everyone agrees is a failure, you’ll have code that compiles and runs.</p>
<p>So we came up with this definition of project failure:</p>
<ul>
<li>The project costs a lot more than it should</li>
<li>It takes a lot longer than anyone expected</li>
<li>The product doesn’t do what it’s supposed to do</li>
<li>Nobody is happy about it</li>
</ul>
<p>When we go through these things, we always get a lot of head-nodding, especially from developers. More importantly, we’ve never met a single professional software engineer with more than a few years of experience who hasn’t been on at least one failed project. We always ask for a show of hands to see if there’s anyone who’s never had a failed project. And we’ve yet to meet anyone who has. (We did get someone who raised his hand once, but I talked to him afterwards, and he was just messing with us.)</p>
<p>What does this have to do with project management? Well, everything! Have a look at a typical project management textbook, and you’ll learn about the “triple constraint” (which some people call the “iron triangle”) of scope, time, and cost.</p>
<p><a href="http://www.stellman-greene.com/blog/wp-content/uploads/2010/09/triple-constraint.png"><img class="size-full wp-image-509 alignnone" title="Triple Constraint" src="http://www.stellman-greene.com/blog/wp-content/uploads/2010/09/triple-constraint.png" alt="" width="525" height="351" /></a></p>
<address>(source: <a href="http://www.headfirstlabs.com/books/hfpmp/">Head First PMP</a>, 1st ed., O’Reilly 2007)</address>
<p>Project management really boils down to managing that triple constraint: balancing the scope of the work to be done, the cost of doing the work, and the time it takes to get the work done, all in order to get the best quality that you can. If you do that right, your project runs well, and your team is happy. If you do it badly, your project stinks, and you end up with a failure. And that’s why you, as a developer, should care.</p>
<p>I’ll go into a little depth about each of those things – scope, time, cost, and quality – just to give you an idea of why you should care about each of them. But the one that developers care about most is scope, so I&#8217;ll spend a little more time on that first.</p>
<h3>Scope: the work and features that go into the project</h3>
<p>Every project can be broken down into a small number (say, ten to twenty) features. For big projects, those features are big (“solid rocket boosters,” “reuse and reentry”); for small projects, those features are small (“holds 12 fluid ounces of liquid,” “screw-top cap”). And similarly, every project can be broken down into a small number of tasks that are needed to build those features. Project managers call the list of features the product scope, and they call the tasks the project scope – and a lot of people just talk about all of it as scope.</p>
<p>I’m consistently amazed by how much work a project team can put into a project without before they realize they’ve got a scope problem. Jenny and I talked about this in our book <a href="http://www.stellman-greene.com/aspm/">Applied Software Project Management</a> in the section on scope problems:</p>
<blockquote><p>A change in the project priorities partway through the project is one of the most frustrating ways that a software project can break down. After the software design and architecture is finalized, the code is under development, the testers have begun their preparation, and the rest of the organization is gearing up to use and support the software, a stakeholder “discovers” that an important feature is not being developed. This, in turn, wreaks havoc on the project schedules, causing the team to miss important deadlines as they frantically try to go back and hammer the new feature in.</p>
<p><a href="http://www.stellman-greene.com/aspm/">Applied Software Project Management</a>, p31</p></blockquote>
<p>Does that sound familiar? If so, talking about the scope earlier in the project can really help. One way to help fix this is to put together a Vision and Scope document. It’s a really simple document, usually only a page or two, but it can really help prevent scope problems. It’s also a staple of project management. Once in a while, I’m pulled into a project that’s been running into trouble. I’ll spend a few hours talking to each of the team members, managers, and anyone else I can find who knows something about the project or needs it done. I’ll throw together a quick vision and scope document, and what I’ll often find is everyone had very different ideas of what would actually get built. And it’s usually a big relief, because everyone – especially the lead developers! – realizes that they were going down a path that would have had them waste a lot of time building the wrong software.</p>
<p><a href="http://www.stellman-greene.com/blog/wp-content/uploads/2010/09/triple-constraint-broken.png"><img class="alignnone size-full wp-image-510" title="Broken Triplpe Constraint" src="http://www.stellman-greene.com/blog/wp-content/uploads/2010/09/triple-constraint-broken.png" alt="" width="525" height="398" /></a></p>
<p><em>(source: <a href="http://www.headfirstlabs.com/books/hfpmp/">Head First PMP</a></em><em>, 1st ed., O’Reilly 2007)</em></p>
<h3>Faster, better, cheaper—choose two&#8230; right?</h3>
<p>There’s a whole lot more that I’m tempted to write about managing time, cost, and scope in order to get to the right quality level, but I really want to pare this down to the basics. There’s an old (and somewhat cynical) project management saying: “faster,  cheaper, better: pick two.” What it means is that there’s no way to reduce cost, shorten the schedule, and increase quality all at the same time. At least one of those things absolutely has to give.</p>
<p>But there’s a reason that’s a saying and not a law! All three of those constraints are related to each other, and there’s almost never an easy, obvious trade-off where you can sacrifice one to improve the other two. If there were, project management would be a lot easier. It’s really easy to fall into a trap of trying to do the impossible, but the first step in avoiding a trap is knowing that it’s there. In this case, just knowing that every project is a balancing act between scope, time, and cost is a really good first step in making sure your project ends up running well.</p>
<p>I wanted to leave you with just a couple of thoughts:</p>
<ul>
<li>One thing that makes the “time” aspect of project management tricky is that developers really hate giving estimates – or, more specifically, they hate giving estimates because they know they’ll be misinterpreted as hard commitments. I wrote a blog post about this a while back (The Perils of a Schedule) .</li>
<li>Every project needs a start, middle, and end. My old friend Scott Berkun writes about this beautifully in his book, Making Things Happen.</li>
<li>Cost doesn’t have to mean dollars – it’s often more effective to measure cost in hours.</li>
<li>Burndown charts really help, because they can make the cost seem real.</li>
<li>Sometimes the word “quality” makes developers a little nervous, because they start to think that improving quality just means doing endless testing. Sometimes it helps to replace a phrase like “high-quality software” with “software that we can be proud of.”</li>
</ul>
]]></content:encoded>
			<wfw:commentRss>http://www.stellman-greene.com/2010/09/23/a-few-things-every-job-seeking-programmer-should-know-about-project-management-part-2/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>A Few Things Every Job-Seeking Programmer Should Know About Project Management (part 1)</title>
		<link>http://www.stellman-greene.com/2010/08/30/a-few-things-every-programmer-should-know-about-project-management-part-1/</link>
		<comments>http://www.stellman-greene.com/2010/08/30/a-few-things-every-programmer-should-know-about-project-management-part-1/#comments</comments>
		<pubDate>Mon, 30 Aug 2010 22:24:19 +0000</pubDate>
		<dc:creator>Andrew Stellman</dc:creator>
				<category><![CDATA[Careers]]></category>
		<category><![CDATA[Project Management]]></category>

		<guid isPermaLink="false">http://www.stellman-greene.com/?p=493</guid>
		<description><![CDATA[I’ve met a lot of programmers who really hate project management. And it’s not that surprising, because project management done poorly can be unnecessarily restrictive. But if you’re a developer looking for a job, employers are more and more likely to expect you to know something about project management. Luckily, good project management can make your life easier, and it’s worth knowing about it – not just for job interviews, but to help you get the most out of your own projects. Here are a few basic things that I think every developer ought to know about project management, and why I think you should care about them.]]></description>
			<content:encoded><![CDATA[<p><em>I’ve met a lot of programmers who really hate project management. And it’s not that surprising, because project management done poorly can be unnecessarily restrictive. But if you’re  a developer looking for a job, employers are more and more likely to expect you to  know something about project management. Luckily, good project  management can make your life easier, and it’s worth knowing about it – not just for job interviews, but to help you get the most out of your own projects. Here are a few basic things that I think every developer ought to know about project management, and why I think you should care about them.</em></p>
<p><a href="http://www.stellman-greene.com/blog/wp-content/uploads/2010/08/Seaworthy-project.png"><img class="alignnone size-full wp-image-494" title="Seaworthy project" src="http://www.stellman-greene.com/blog/wp-content/uploads/2010/08/Seaworthy-project.png" alt="" width="575" height="356" /></a></p>
<p><strong>Tough Programmer Interview Questions: Project Management</strong></p>
<p>Programmers are often surprised when a job interview shifts from  technical questions to questions about project management. I just saw a  great example of this in <a href="http://forums.oreilly.com/index.php?s=&amp;showtopic=20701&amp;view=findpost&amp;p=36259">a recent Head First C# forum post</a>:</p>
<div>
<blockquote><p>I am a C# programmer since 2003. I recently took a job interview where I was asked several questions about project management.</p>
<ul>
<li>How do you make an estimate for building a C# program?</li>
<li>How is a project with 3 programmers different from project with 15?</li>
</ul>
<p>- PiterKhasak</p></blockquote>
</div>
<p>This is a lot more common that developers realize. I’ve seen a lot  of discussion lately about how to do effective programmer job searching,  especially for relatively new developers who have three years of  experience or less. Did you ever ace the tech part of an interview, only to find that you didn’t get the job? I bet that a  lot of the time it comes down to questions that seem peripheral or less  relevant – to the a junior developer.</p>
<p>Not to a lot of senior developers. That’s one of the biggest  differences in attitude that I’ve seen between people who are new to  development and people who have been doing it for a long time. And in a  lot of cases, I think it really does come down to attitude. So my goal with this post is to outline the basics of project  management, the core things that really matter.</p>
<p><strong>Why should you care about project management?</strong></p>
<p>There’s a flip side to project management, too. A colleague of mine  once asked me, “What’s the most important part of project management?” I  told him that it’s managing stakeholder expectations – making sure that  the people who have control of the project or are affected by it are in the loop on all the important developments  as the project rolls along. If bad things happen, they know about them  in advance, and are prepared. The reason for this is that some projects  fail (more than you think!), often for reasons that have nothing to do with the team. If you manage everyone’s  expectations, get them on the team’s side, then the developers can come  out as heroes fighting a lost cause. On the other hand, a project can be  a roaring success, but if everyone expects something that’s not exactly what was delivered, the developers could be blamed  for something that they had no control over. Expectations matter,  communication matters, and these things can have a big impact on the  project and the team.</p>
<p>And that’s why developers should care about project management: it  affects your life, even when your job is to keep your nose buried in  code all day.</p>
<p>A lot of developers have a very poor opinion of project management  and project managers. I’ve spent a lot of my career writing books and  giving training to help project managers improve their skills. Over the  years, I’ve met many different types of project managers. And, unfortunately, while there are plenty of great ones out  there, there are a lot of really bad ones as well. In any field, there  is a wide range of skill level and aptitude. If you’re a developer who’s  only ever worked with poor project managers, it’s not surprising if you ended up with a dim view of the project  management as a whole.</p>
<p>But even if you’re a developer who doesn’t have a high opinion of  the field, you should at least acknowledge that learning more about it  can have an impact on your own career. I’ve personally seen employers  pass on good developers who didn’t know enough about project management, even ones who had the technical skills to do  the job.</p>
<p>I’ve also conducted a lot of developer interviews, easily several  hundred of them over the last decade. And one thing that I’ve noticed is  that really good developers have a healthy respect for exactly the same  things that really good project managers care about: the <strong>work</strong> and the <strong>features</strong> needed to create the software, the <strong>team</strong> that crafts it, the <strong>effort</strong> required to build it, and the <strong>quality</strong> of the final product. That’s why I think that learning more about project management can help make you a better developer.</p>
<p>In <a href="http://www.stellman-greene.com/2010/09/23/a-few-things-every-job-seeking-programmer-should-know-about-project-management-part-2/">the next part of this post</a>, I’ll outline those things, and make a case for why they should matter to you.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.stellman-greene.com/2010/08/30/a-few-things-every-programmer-should-know-about-project-management-part-1/feed/</wfw:commentRss>
		<slash:comments>4</slash:comments>
		</item>
		<item>
		<title>Our obsessive project tracking problem</title>
		<link>http://www.stellman-greene.com/2010/07/31/our-obsessive-project-tracking-problem/</link>
		<comments>http://www.stellman-greene.com/2010/07/31/our-obsessive-project-tracking-problem/#comments</comments>
		<pubDate>Sat, 31 Jul 2010 18:43:14 +0000</pubDate>
		<dc:creator>Andrew Stellman</dc:creator>
				<category><![CDATA[Project Management]]></category>

		<guid isPermaLink="false">http://www.stellman-greene.com/?p=450</guid>
		<description><![CDATA[As a group, we developers have a project tracking problem: the problem is that we constantly, almost obsessively want to track our projects, and it’s made worse by the fact that it’s so easy to abuse otherwise great tools like JIRA and Bugzilla. Unfortunately, while tracking projects may feel useful and productive, for most teams it’s just busywork – and it can lead to a self-imposed exercise in needless bureaucracy that just wastes our time. But with a few ground rules, you can escape the project tracking trap and use a tracking tool effectively.]]></description>
			<content:encoded><![CDATA[<p><span style="font-family: Calibri, sans-serif; font-size: x-small;"> </span></p>
<p><em>As a group, we developers have a project tracking problem: the problem is that we constantly, almost obsessively want to track our projects, and it’s made worse by the fact that it’s so easy to abuse otherwise great tools like <a href="http://www.atlassian.com/software/jira/">JIRA</a> and <a href="http://www.bugzilla.org/">Bugzilla</a></em><em>. Unfortunately, while tracking projects may feel useful and productive, for most teams it’s just busywork – and it can lead to a self-imposed <a href="http://www.willbeta.com/lose-weight-exercise/"><span style="display:none;">Lose Weight </span>Exercise</a> in needless bureaucracy that just wastes our time. But with a few ground rules, you can escape the project tracking trap and use a tracking tool effectively.</em></p>
<p><a href="http://www.stellman-greene.com/blog/wp-content/uploads/2010/07/project-tracking.png"><img class="alignnone size-full wp-image-453" title="Better code through project tracking" src="http://www.stellman-greene.com/blog/wp-content/uploads/2010/07/project-tracking.png" alt="" width="550" height="529" /></a></p>
<p><strong>Who needs Big Brother?</strong></p>
<p>About five years ago, a small company brought me in for a few months to help them do better project management. For about a year before I got there, they’d put a couple of their best developers on the problem, and they came up with an ingenious solution for tracking projects. The team built a database to keep track of all the projects they were working on, typically about a dozen and a half simultaneous projects running at any time. This tool gave them the ability to figure out exactly what tasks had been done, who did them, and how long they took. If you wanted to know what any specific programmer was working on eight weeks ago on Tuesday afternoon, their tool would be able to tell you that.</p>
<p>And it all worked perfectly.</p>
<p>Except that their projects were still late and full of bugs, and the users were losing their last shred of patience. This team had promised their users that things would get better with their fantastic new project tracking system. But even though the system was working exactly as advertised, the software still had serious problems, and everyone was unhappy.</p>
<p>I’ve been thinking a lot about that company lately because I’ve been doing a lot of work with <a href="http://www.atlassian.com/software/jira/">JIRA</a>. And while JIRA is a really good tool – one that can have a very positive effect on how you manage a project – it seems to really tempt a lot of good developers down the same project tracking trap that the small company fell into.</p>
<p>Programmers normally hate it when their time is tracked, which is obvious to anyone who makes the mistake of suggesting to a programming team that they should start filling out timecards that list out exactly what each person did that day. That happened at my first programming job after college: the boss, a newly minted MBA, told the programmers to fill out timecards that listed what project they were working on hour by hour, and there was nearly a rebellion. But for some reason, <a href="http://en.wikipedia.org/wiki/Comparison_of_issue-tracking_systems">JIRA, Bugzilla, and other issue tracking systems</a> cause programmers to step up and volunteer for exactly that treatment. It&#8217;s an odd phenomenon, and I think it has an interesting explanation.</p>
<p>Let’s get something straight, here: I really like JIRA a lot. It’s a great issue tracking tool, and a very good workflow tool when it’s used right. I’ve spent some time building JIRA plugins, and the plugin API is intuitive and easy to use. Sure, I’ve got a couple of nitpicks here and there (I’m not so happy with the user interface or the filters in version 3.x, although it’s definitely improved in JIRA 4). But for the most part, JIRA is one of the best issue management and workflow tools I’ve ever used.</p>
<p>When it’s used right.</p>
<p>But when you take a perfectly good tool and abuse it, you&#8217;re bound to get bad results. And that&#8217;s especially true when it comes to project tracking tools.</p>
<p><a href="http://www.stellman-greene.com/blog/wp-content/uploads/2010/07/nail-screwdriver-fail.png"><img class="alignnone size-full wp-image-456" title="FAIL" src="http://www.stellman-greene.com/blog/wp-content/uploads/2010/07/nail-screwdriver-fail.png" alt="" width="550" height="492" /></a></p>
<p><strong>Tracking projects is not a useful goal</strong></p>
<p>JIRA suffers from a problem that a lot of really good issue tracking tools suffer from. It’s really good at tracking things. And for a lot of developers, that causes a “when you’re holding a hammer, everything looks like a nail” problem. Actually, scratch that. It causes a &#8220;you&#8217;re holding a screwdriver, but for some reason you want to pound nails with it&#8221; problem. It&#8217;s odd when you step back from it, but it really seems to make sense at the time.</p>
<p>What happens is that some developers – and I admit that I&#8217;ve been guilty of this at least once or twice myself – see a tool that gathers information about what happened on a project, and this causes something to click for us. We  start tracking everything, from requirements to goals to user requests to every little ten-minute task that needs to be done. We become our own &#8220;big brother,&#8221; doing what amounts to voluntarily filling out the most detailed timecards possible.</p>
<p>The &#8220;big brother&#8221; style of project tracking is especially bad when the “pointy haired boss” type of managers pick up on it. Suddenly, the team is being nagged to start entering more and more granular estimates and updating dates in tickets. For a boss who’s nervous about delivering something, it seems like the right thing to do is to start nagging programmers about every little task that’s entered into the system, or chasing down anyone who’s got a task assigned without a due date.</p>
<p>Which is especially bad, because that’s not really what those tools are for. There’s a big difference between tracking a task or a bug so it doesn’t slip between the cracks and tracking every little thing that a the programmers do for posterity. I think it’s especially ironic that developers often volunteer for this themselves. I think it’s because we see a tool that can track something and it causes us to want to use it. “It tracks tasks? Then it should track <em>all the tasks</em>!”</p>
<p><strong>Better living through project tracking</strong></p>
<p>A while back the New York Times ran a story on people who use everyday tools like Foursquare and Twitter, blogs, spreadsheets, and datebooks to <a href="http://www.nytimes.com/2010/05/02/magazine/02self-measurement-t.html">obsessively track data about themselves</a>. I think this excerpt is telling, especially the bit at the very end (emphasis mine):</p>
<blockquote><p>At the center of this personal laboratory is the mobile phone. During the years that personal-data systems were making their rapid technical progress, many people started entering small reports about their lives into a phone. Sharing became the term for the quick post to a social network: a status update to <a href="http://www.facebook.com/">Facebook</a>, a reading list on <a href="http://www.goodreads.com/">Goodreads</a>, a location on <a href="http://www.dopplr.com/">Dopplr</a>, Web tags to <a href="http://delicious.com/">Delicious</a>, songs to<a href="http://www.last.fm/"></a><a href="http://Last.fm" target="_">Last.fm</a>, your breakfast menu on Twitter. “People got used to sharing,” says David Lammers-Meis, who leads the design work on the fitness-tracking products at Garmin. “The more they want to share, the more they want to <em>have</em> something to share.” Personal data are ideally suited to a social life of sharing. You might not always have something to say, <em><strong>but you always have a number to report</strong></em>.</p></blockquote>
<p>I think that the sort of person who becomes a developer is especially susceptible to whatever it is that causes <a href="http://www.kk.org/quantifiedself/2010/02/a-remarkable-life-logging-proj.php">some people to obsessively track things about their lives</a>. My personal theory is that this is caused by the same itch causes us to want to obsessively collect every last episode of MST3K (or whatever it is we happen to want to obsessively collect). And like that giant collection of, say, legos or video game cartridges or Start Wars figures memorabilia or dice, at some point we can&#8217;t actually play with most of it. That&#8217;s fine for collections (assuming you have it in a cool display case, and not strewn all around your home in piles so high that they cause a fire hazard). But for tracking data from projects, it&#8217;s worse than useless, because it takes effort to keep up, and it can demoralize the software team because they start to feel like they&#8217;re creating more tickets than new lines of code.</p>
<p>Luckily, if you follow a few ground rules, you can break the obsessive cycle and start using project tracking the way it should be used. Here&#8217;s what I&#8217;ve recommended to people in the past, and it seems to get good results:</p>
<ul>
<li><strong>Figure out in advance what you want to track.</strong> Most teams use an issue tracker for bugs. A lot of teams use it to figure out what work the developers are going to do. Some use it for new feature requests. I&#8217;ve seen people try to use an issue tracker for managing requirements (although personally, I really dislike that use of it). All of that could be fine, but any of it can potentially become obsessive. Before you start your project or the next iteration, sit down with the team for a few minutes and write down what you&#8217;ll be tracking. Stick it on a Wiki page, and add a sentence or two explaining how each one of those things needs to be used. I&#8217;m always amazed at how just a little bit of planning like this keeps the way we use a tool from creeping into &#8220;big brother&#8221; territory.</li>
</ul>
<ul>
<li><strong>Use post-mortem reports to track your lessons learned.</strong> One reason that &#8220;big brother&#8221; style project tracking makes intuitive sense is that we want to keep track of the lessons we learned on this project in order to make the next one run better. But there&#8217;s very little you can learn from an overwhelming pile of tracking tickets. Instead, try <a href="http://www.stellman-greene.com/2009/07/24/taking-stock-of-a-failed-project/">running a project post-mortem</a> at the end of the project. And don&#8217;t just do it for projects that ran badly. Post-mortems are really good for making sure you take a good project and turn it into great habits for the team by writing down the lessons you learned.</li>
</ul>
<ul>
<li><strong>Focus on trends and simple metrics, not complete history.</strong> A good project tracking system can spit out a lot of reports. So many reports, in fact, that it&#8217;s hard to make any real sense of them. That&#8217;s why I like to try to simplify the kind of data I get out of the system. I&#8217;m a big fan of simple metrics like (% of engineering effort per project phase) that let you compare projects or iterations against each other. Also, burn-down charts or other earned value metrics can be really valuable in figuring out how your current project is going.</li>
</ul>
<p>The bottom line is that there&#8217;s a difference between project tracking and actually managing your project. If you really want to use JIRA for project management, use a tool like <a href="http://www.atlassian.com/software/greenhopper/">Greenhopper</a> that was built for it. (I&#8217;ve been using Greenhopper lately, and I like it a lot. But if someone has a pointer to an open source tool they really like that ties a task board or agile project management into their issue tracker, I&#8217;d love to hear about it.) The most important thing to remember is that tracking your project is a means to an end, and not a goal by itself.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.stellman-greene.com/2010/07/31/our-obsessive-project-tracking-problem/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>The perils of a schedule</title>
		<link>http://www.stellman-greene.com/2009/08/14/the-perils-of-a-schedule/</link>
		<comments>http://www.stellman-greene.com/2009/08/14/the-perils-of-a-schedule/#comments</comments>
		<pubDate>Fri, 14 Aug 2009 10:14:10 +0000</pubDate>
		<dc:creator>Andrew Stellman</dc:creator>
				<category><![CDATA[Project Management]]></category>
		<category><![CDATA[Q&A]]></category>

		<guid isPermaLink="false">http://www.stellman-greene.com/?p=344</guid>
		<description><![CDATA[We got this e-mail a few days ago from one of our readers: Hello, I bought your book, &#8220;Applied Software Project Management.&#8221; It seems very good overall, but I can&#8217;t get past the fact that your book seems to imply that software requirements come after the project plan/WBS/scheduling. Am I missing something? On page 40, [...]]]></description>
			<content:encoded><![CDATA[<p><img class="alignnone size-full wp-image-357" title="The walls are closing in" src="http://www.stellman-greene.com/blog/wp-content/uploads/2009/08/The-walls-are-closing-in.png" alt="The walls are closing in" width="350" height="484" /></p>
<p>We got this e-mail a few days ago from one of our readers:</p>
<blockquote><p><em>Hello,</em></p>
<p><em>I bought your book, &#8220;<a title="Applied Software Project Management" href="http://stellman-greene.com/aspm">Applied Software Project Management</a>.&#8221; It seems very good overall, but I can&#8217;t get past the fact that your book seems to imply that software requirements come </em><em>after the project plan/WBS/scheduling. Am I missing something?</em></p>
<p><em>On page 40, the script for estimating states that the input is documentation that defines the scope of the work being performed. Does this include the SRS? If so, why is this not made more explicit in your book (since requirements plays such a big role)? If not, how can a good estimate and schedule be generator </em><em>before the requirements analysis has been performed?</em></p>
<p><em>I don&#8217;t get a solid sense of the relative timing of the activities (especially the requirements activity). Can you comment on this?</em></p>
<p><em>Thanks!!</em></p>
<p><em>&#8211; Wayne M.</em></p></blockquote>
<p>That’s an excellent question. I’ve got a straightforward answer, and I’ve got a more involved answer.</p>
<p>The straightforward answer is yes. If you’re using <a href="http://www.stellman-greene.com/delphi">Wideband Delphi</a> (or, really, almost any estimation practice) to come up with estimates that you’ll turn into a <a href="http://www.stellman-greene.com/schedule">schedule</a>, then you need to get a handle on exactly what you’re estimating. So yes, when we say in our book that the input to the process is the “Vision and Scope document, or other documentation that defines the scope of the work product being estimated,” the &#8220;other documentation&#8221; we&#8217;re referring to definitely includes any software requirements you have. (For any readers who haven’t read our book, you can download a <a href="http://www.stellman-greene.com/aspm/images/ch03.pdf">PDF of the estimation chapter</a> that this reader&#8217;s referring to.)</p>
<p>Let me be clear about something here. You’re absolutely right that requirements analysis leads to more accurate schedules. If you’re lucky enough to have a really detailed specification at the beginning of the project that describes, in detail, all of the software that you’re going to build, then that will give you a much more accurate schedule than if you had a three-page Vision and Scope document that simply lets you know who the users and stakeholders are, explains their needs, and gives you the broad strokes about what features the team will build to meet those needs.</p>
<p>But when’s the last time you actually had the luxury of a <strong>complete</strong> specification before you had to deliver a schedule? And I’m stressing the word “complete” for a reason: it’s very rare that you’re done with the requirements before you’ve started building the software. So rare, in fact, that neither Jenny nor I have ever seen it in our entire careers, and I suspect very few (if any) of our readers have, either.</p>
<p>A good Agile developer might point out that this is the reasoning behind one of the <a href="http://agilemanifesto.org/principles.html">core Agile principles</a>: “Welcome changing requirements, even late in development.” And, in fact, that’s exactly why we dedicated so much of the chapter on software requirements in <em>Applied Software Project Management</em> to <a href="http://www.stellman-greene.com/aspm/content/view/36/38/">change control</a>, because it’s important to not only accept that change happens, but to recognize it as a good thing. It’s better to change course partway through the project rather than to trundle on to an end goal that you know won’t actually meet your users’ needs or make your customers happy.</p>
<p>So with that in mind, go back to the process you mentioned. Specifically, take a look at the end of the script, because this is where it ties directly into the question you asked:</p>
<table border="1" align="center">
<tbody>
<tr>
<td>Exit Criteria</td>
<td><strong>The project plan has been updated</strong> to reflect the impact of the change, and work to implement the change has begun.</td>
</tr>
</tbody>
</table>
<p>There’s an important idea there in those first six words: the <a href="http://www.stellman-greene.com/project_plan">project plan</a> has been updated. That means that any time your world changes, you need to go back and update the scope, the WBS, the schedule, all the actual stuff you plan to deliverable (which might be written down in a statement of work), the list of people doing the work, a <a href="http://www.stellman-greene.com/risk_plan">risk plan</a> (if you built one)&#8230; all the stuff you used to plan your project.</p>
<h4>&#8230;because there&#8217;s no single one <em>Best Way™</em> to build software</h4>
<p>And that&#8217;s why we didn&#8217;t give an explicit order to the activities. Sometimes you&#8217;ll end up planning out your project and building a schedule before you do requirements analysis; sometimes you&#8217;ll build a schedule after. Our goal was to help you do it well in either case. And by not forcing our readers into a single process or methodology, we don&#8217;t have to pretend to know all the answers&#8230; because, as far as I know, there is no single one <em>Best Way™</em> to build software.  That&#8217;s the main idea, by the way, behind our <a href="http://www.stellman-greene.com/2008/01/31/dont-document-your-process/">&#8220;diagnose and fix&#8221; approach</a> to improving the way you build software. Trying to overhaul your whole software process by doing a major process improvement effort is hard; adopting specific practices that make incremental improvements to the areas that hurt the most is much easier and a lot less risky.</p>
<p>This may sound like we&#8217;re calling for a lot of documentation, but it doesn’t have to be like that. Obviously, if you’re working on a team with dozens or even hundreds of people (like the teams Jenny often leads), this can be a pretty big task. But if you’ve got a small team working on a project that will take a few weeks to do, then this may just amount to rearranging your <a href="http://www.mountaingoatsoftware.com/task-boards">task board</a>, updating your <a href="http://www.stellman-greene.com/2009/05/03/requirements-101-user-stories-vs-use-cases/">user story cards</a>, updating a couple of Wiki pages, and having a quick <a href="http://www.mountaingoatsoftware.com/daily-scrum">stand-up meeting</a> to make sure everyone’s in sync. That’s why people often talk about how running a really big team is like steering an aircraft carrier, because changing course requires miles of water, while running a small team is a lot more like piloting a speedboat that can change course really quickly.</p>
<p>So that’s the straightforward answer. But I think it’s worth delving a little deeper and asking an important question: What’s the nature of a schedule? I know, that probably seems like an odd question, but it’s actually important to understand what schedules are and how they’re used. (Technically, it’s only important if you want your projects to run well.)</p>
<p>A naïve answer might be to simply defer to that old project management chestnut: “Plan the work and work the plan.” If you haven’t heard that saying, take a minute and <a href="http://www.google.com/search?q=%22Plan+the+work+and+work+the+plan%22">do a Google search for it</a>. It’s one of those sayings that people love to quote, and it pretty much summarizes how a lot of people use (abuse?) project schedules.</p>
<p>I don’t like that saying, and there’s a reason for that.  I mean, don’t get me wrong, here. “Working the plan” is fine if it that plan accounts for changes. That’s one thing I really like about the PMBOK® and PMP approach: a whole lot of project planning revolves around how to handle changes, and specifically about dealing with change control. Also, it’s a great idea to make sure that you include a reserve for your project, and you can use risk planning to try to get a handle on the unknown.</p>
<p><em>To be continued in &#8220;<a href="http://www.stellman-greene.com/2009/08/20/the-perils-of-a-schedule-part-ii/">The perils of a schedule, part II</a>&#8220;</em></p>
]]></content:encoded>
			<wfw:commentRss>http://www.stellman-greene.com/2009/08/14/the-perils-of-a-schedule/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Taking stock of a failed project</title>
		<link>http://www.stellman-greene.com/2009/07/24/taking-stock-of-a-failed-project/</link>
		<comments>http://www.stellman-greene.com/2009/07/24/taking-stock-of-a-failed-project/#comments</comments>
		<pubDate>Fri, 24 Jul 2009 14:42:28 +0000</pubDate>
		<dc:creator>Andrew Stellman</dc:creator>
				<category><![CDATA[Project Management]]></category>

		<guid isPermaLink="false">http://www.stellman-greene.com/?p=304</guid>
		<description><![CDATA[Some projects just go wrong. It&#8217;s a fact of life. Projects go over budget, blow their schedules, squander their resources. Sometimes they go off the rails so spectacularly that there&#8217;s nothing you can do except (literally) pick up the pieces and try to learn whatever lessons you can so you don&#8217;t repeat the failure in [...]]]></description>
			<content:encoded><![CDATA[<p><img class="alignnone size-full wp-image-306" title="Oops?" src="http://www.stellman-greene.com/blog/wp-content/uploads/2009/07/oops.png" alt="Oops?" width="500" height="347" /></p>
<p>Some projects just go wrong.</p>
<p>It&#8217;s a fact of life. Projects go over budget, blow their schedules, squander their resources. Sometimes they go off the rails so spectacularly that there&#8217;s nothing you can do except (literally) pick up the pieces and try to learn whatever lessons you can so you don&#8217;t repeat the failure in the future.</p>
<p>Last week I got a phone call from a developer who was looking for some advice about exactly that. He&#8217;s being brought in to repair the damage from a disastrous software project. Apparently the project completely failed to deliver. I wasn&#8217;t 100% clear on the details—neither was he, since he&#8217;s just being brought in now—but it sounded like the final product was so utterly unusable that the company was simply scrapping the whole thing and starting over. This particular developer knows a lot about project management, and even teaches a project management course for other developers in his company. He&#8217;d heard me do a talk about project failure, and wanted to know if I had any advice, and maybe a postmortem report template or a lessons learned template.</p>
<p>I definitely had some advice for him, and I wanted to share it with you. Postmortem reports (reports you put together at the end of the project after taking stock of what went right and wrong) are an enormously valuable tool for any software team.</p>
<p>But first, let&#8217;s take a minute to talk about a bridge in the Pacific Northwest.</p>
<h3>The tragic tale of Galloping Gertie</h3>
<p>One of my favorite failed project case studies is Galloping Gertie, which was the nickname that nearby residents gave to the <a href="http://en.wikipedia.org/wiki/Tacoma_Narrows_Bridge_%281940%29">Tacoma Narrows Bridge</a>. Jenny and I talk about it in <a href="http://www.stellman-greene.com/Why_Projects_Fail.pdf">our &#8220;Why Projects Fail&#8221; talk</a> because it&#8217;s a great project failure example—and not just because it failed so spectacularly. It&#8217;s because the root causes for this particular project failure should sound really familiar to a lot of project managers, and especially to people who build software.</p>
<p>The Tacoma Narrows Bridge opened to the public on July 1, 1940. This photo was taken on November 7 of the same year:</p>
<p><img class="alignnone size-full wp-image-307" title="Galloping Gertie" src="http://www.stellman-greene.com/blog/wp-content/uploads/2009/07/galloping-gertie.png" alt="Galloping Gertie" width="450" height="320" /></p>
<p>While there were no human casualties, despite heroic attempts at a rescue the bridge disaster <a href="http://en.wikipedia.org/wiki/Tacoma_Narrows_Bridge_%281940%29#Tubby_the_dog">claimed the life of a cocker spaniel named Tubby</a>.</p>
<p>Jenny and I showed a video of the bridge collapsing during a presentation of our &#8220;Why Projects Fail&#8221; talk a while back in Boston. After the talk, a woman came up to us and introduced herself as a civil engineer. She gave us a detailed explanation of the structural problems in the bridge. Apparently it&#8217;s one of the classic civil engineering project failure case studies: there were aerodynamic problems, and there were structural problems due to the size of the supports, and there were other problems that combined to cause a distinctive resonance which gave the bridge its distinctive &#8220;gallop.&#8221;</p>
<p><script src="https://media.dreamhost.com/swfobject.js" type="text/javascript"></script></p>
<div id="GallopingGertie_450x240.flv">(We embedded the video of the Tacoma Narrows Bridge collapse here. If you <a href="http://www.macromedia.com/go/getflashplayer">get the Flash Player</a>, you&#8217;ll be able to see it!)</div>
<p><script type="text/javascript">// <![CDATA[
    var sd = new SWFObject('https://media.dreamhost.com/mediaplayer.swf','mpl','450','240','8'); sd.addParam('allowscriptaccess','always'); sd.addParam('allowfullscreen','true'); sd.addVariable('height','240'); sd.addVariable('width','450'); sd.addVariable('file','http://www.stellman-greene.com/video/GallopingGertie_450x240.flv'); sd.write('GallopingGertie_450x240.flv');
// ]]&gt;</script></p>
<p>But one of the most important lessons we took away from the bridge collapse isn&#8217;t technical. It has to do with the designer.</p>
<blockquote><p><span style="color: #333399;">[A]ccording to Eldridge, &#8220;eastern consulting engineers&#8221; petitioned the PWA and the <a title="Reconstruction Finance Corporation" href="http://en.wikipedia.org/wiki/Reconstruction_Finance_Corporation">Reconstruction Finance Corporation</a> (RFC) to build the bridge for less, about which Eldridge meant the renowned New York bridge engineer <a title="Leon Moisseiff" href="http://en.wikipedia.org/wiki/Leon_Moisseiff">Leon Moisseiff</a>, designer and consultant engineer of the <a title="Golden Gate Bridge" href="http://en.wikipedia.org/wiki/Golden_Gate_Bridge">Golden Gate Bridge</a>. Moisseiff proposed shallower supports—girders 8 feet (2.4 m) deep. His approach meant a slimmer, more elegant design and reduced construction costs compared to the Highway Department design. Moisseiff&#8217;s design won out, inasmuch as the other proposal was considered to be too expensive. On June 23, 1938, the PWA approved nearly $6 million for the Tacoma Narrows Bridge. Another $1.6 million was to be collected from tolls to cover the total $8 million cost.</span></p>
<p><span style="color: #333399;">(Source: <a href="http://en.wikipedia.org/wiki/Tacoma_Narrows_Bridge_%281940%29#Design_and_construction">Wikipedia</a>)</span></p></blockquote>
<p>Think back over your own career for a minute. Have you ever seen someone making a stupid, possibly even disastrous decision? Did you warn people around you about it until you were blue in the face, only to be ignored? Did your warnings turn out to be exactly true?</p>
<p>Well, from what I&#8217;ve read, that&#8217;s exactly what happened to Galloping Gertie. There was plenty of warning from many people in the civil engineering community who didn&#8217;t think this design would work. But these warnings were dismissed. After all, this was designed by the guy who designed the Golden Gate Bridge! With credentials like that, how could he possibly be wrong? And who are you, without those credentials, to question him? The pointy-haired bosses and bean counters won out. Predictably, their victory was temporary.</p>
<p>Incidentally, some people refer to this as one kind of <a href="http://en.wikipedia.org/wiki/Halo_effect">halo effect</a>: a person&#8217;s past accomplishments give others undue confidence in his performance at a different job, whether or not he&#8217;s actually doing it well. It&#8217;s a nasty little problem, and it&#8217;s a really common root cause of project failure, especially on software projects. I&#8217;ve lost count of the number of times I&#8217;ve encountered really terrible source code written by a programmer who&#8217;s been referred to by his coworkers as a &#8220;superstar.&#8221; Every time it happens, I think of the Tacoma Narrows Bridge.</p>
<p>But there&#8217;s a bigger lesson to learn from the disaster. When you look at the various root causes—problematic design, cocky designer, improper materials—one thing is pretty clear. The Tacoma Narrows Bridge <strong>was a failure before the first yard of concrete was poured</strong>. Failure was designed into the blueprints and materials, and even the most perfect construction would fail if it used them.</p>
<h3>Learning from project failures</h3>
<p>This leads me back back to the original question I was asked by that developer: how do you take stock of a failed project? (Or any project, for that matter!)</p>
<p>If you want to gain valuable experience from investigating a project—especially a failed one—it&#8217;s really important that you write down the lessons you learned from it. That shouldn&#8217;t be a surprise. If you want to do better software project planning tomorrow, you need to document your lessons learned today. You can think of a postmortem report as a kind of &#8220;lessons learned report&#8221; that helps you document exactly what happened on the project so you can avoid making the same missteps in the future.</p>
<p>So how do we take stock of a project that went wrong? How do we find root causes? How do we come up with ways to prevent this kind of problem in the future?</p>
<p>The first step is talking to your stakeholders&#8230; <em>all</em> of them. As many as you can find. You need to find everyone who was affected by the project, anyone who may have an informed opinion, and figure out what they know. This can be a surprisingly difficult thing to do, especially when you&#8217;re looking back at your own project. If people were unhappy (and people often are, even when the final product was nearly perfect), they&#8217;ll give you an earful.</p>
<p>This makes your life more difficult, because it&#8217;s hard to be objective when someone&#8217;s leveling criticisms at you (especially if they&#8217;re right!). But if you want to get the best information, it&#8217;s really important not to get defensive. You never know who will give you really valuable feedback until you ask them, and it often comes from the most unexpected places. As developers, we have a habit of dismissing users and business people because they don&#8217;t understand all of the technical details of the work we do. But you might be surprised at how much your users actually understand about what went wrong—and even if they don&#8217;t, you&#8217;ll often find that listening to <em>them</em> today can help make them more friendly and willing to listen to <em>you</em> in the future.</p>
<p>Talking to people is really important, and having discussions is a great way to get people thinking about what went wrong.  But most effective postmortem project reviews involve some sort of survey or checklist that lets you get written feedback from everyone involved in or affected by the project. Jenny and I have a section on building postmortem reports in our first book, <a title="Applied Software Project Management" href="http://www.stellman-greene.com/aspm">Applied Software Project Management</a>, that has a bunch of possible postmortem survey questions:</p>
<ul>
<li>Were the tasks divided well among the team?</li>
<li>Were the right people assigned to each task?</li>
<li>Were the reviews effective?</li>
<li>Was each work product useful in the later phases of the project?</li>
<li>Did the software meet the needs described in the vision and scope document?</li>
<li>Did the stakeholders and users have enough input into the software?</li>
<li>Were there too many changes?</li>
<li>How complete is each feature?</li>
<li>How useful is each feature?</li>
<li> Have the users received the software?</li>
<li>How is the user experience with the software?</li>
<li>Are there usability or performance issues?</li>
<li>Are there problems installing or configuring the software?</li>
<li>Were the initial deadlines set for the project reasonable?</li>
<li>How well was the overall project planned?</li>
<li> Were there risks that could have been foreseen but were not planned for?</li>
<li>Was the software produced in a timely manner?</li>
<li>Was the software of sufficient quality?</li>
<li>Do you have any suggestions for how we can improve for our next project?</li>
</ul>
<p>We definitely recommend using a survey where the questions are grouped together and each question is scored, so that you can start your postmortem report with an overview that shows the answers in a chart. (If you&#8217;re looking for a kind of &#8220;lessons learned template,&#8221; this is a really good start.)</p>
<p><img class="alignnone size-full wp-image-317" style="border: 1px solid black;" title="Postmortem survey results" src="http://www.stellman-greene.com/blog/wp-content/uploads/2009/07/postmortem-survey-results.png" alt="Postmortem survey results" width="484" height="323" /></p>
<p>The rest of the report delves into each individual section, pulling out specific (anonymous) answers that people wrote down or told you. Here&#8217;s an example:</p>
<blockquote>
<p style="text-align: justify;"><span style="color: #000080;"><strong>Beta<br />
</strong><em>Was the beta test effective in heading off problems before clients found them?<br />
</em>Score: 2.28 out of 5 (12 Negative [1 to 2], 13 Neutral [3], 9 Positive [4 to 5])<br />
All of the comments we got about the beta were negative, and only 26% (9 of 34) of the survey respondents felt that the beta exceeded their expectations. The general perception was that many obvious defects were not caught in the beta. Suggestions for improvement included lengthening the beta, expanding it to more client sites, and ensuring that the software was used as if it were in production.<br />
Individual comments:</span></p>
<ul style="text-align: justify;">
<li><span style="color: #000080;">I feel like Versions 2.0 and 2.1 could have been in the beta field longer so that we might have discovered the accounting bugs before many of the clients did.</span></li>
<li><span style="color: #000080;"> We need to have a more in-depth beta test in the future. Had the duration of the beta been longer, we would have caught more problems and headed them off before they became critical situations at the client site.</span></li>
<li><span style="color: #000080;"> I think that a lot of problems that were encountered were found after the beta, during the actual start of the release. Shortly thereafter, things were ironed out.</span></li>
<li><span style="color: #000080;">Overall, the release has gone well. I just feel that we missed something in the beta test, particularly the performance issues we are experiencing in our Denver and Chicago branches. In the future, we can expand the beta to more sites.</span></li>
</ul>
<p style="text-align: justify;"><span style="color: #000080;">(Source: <a title="Applied Software Project Management" href="http://www.stellman-greene.com/aspm">Applied Software Project Management</a>, Stellman &amp; Greene 2005)</span></p>
</blockquote>
<p>There&#8217;s another approach to coming up with postmortem survey results that I think can be really useful. Jenny and I have spent the last few years learning a lot about the <a href="http://www.pmi.org/Resources/Pages/Library-of-PMI-Global-Standards-projects.aspx">PMBOK® Guide</a>, since that&#8217;s what the PMP exam is based on. If you&#8217;ve studied for the PMP exam, one thing you learned is that you need to document lessons learned throughout the entire project.</p>
<p>The exam takes this really seriously: you&#8217;ll actually see a lot of PMP exam questions about lessons learned, and understanding where lessons learned come from is really important for PMP exam preparation.</p>
<p>The PMBOK® Guide categorizes the activities on a project into <em>knowledge areas</em>. Since there are lessons learned in every area of the project, those categories (the knowledge area definitions) give you a useful way to approach them them:</p>
<ul>
<li>How well you executed the project and managed changes throughout (what the PMBOK® Guide calls &#8220;Integration Management&#8221;)</li>
<li>The scope, both product scope (the features you built) and project scope (the work the team planned to do)</li>
<li>How well you stayed within your schedule or if you had serious scheduling problems</li>
<li>Whether or not budget was tight, and if that had an effect on the decisions made during the project</li>
<li>What steps you took to ensure the quality of the software</li>
<li>How you managed the people on the team</li>
<li>Whether communication—especially with stakeholders—was effective</li>
<li>How well risks were understood and managed throughout the project</li>
<li>If you worked with consultants, whether the buyer-seller relationship had an impact on the project</li>
</ul>
<p>For each of these areas, you should ask a few basic questions:</p>
<ol>
<li>How well did we plan? (Did we plan for this at all?)</li>
<li> Were there any unexpected changes? How well did we handle them?</li>
<li> Did the scope (or schedule, or staff, or our understanding of risks, etc.) look the same at the end of the project as it did at the beginning? If not, why not?</li>
</ol>
<p>If you can get that information from your stakeholders and write it down in a way that&#8217;s meaningful and that you can come back to in the future, you&#8217;ll be in really good shape to learn the lessons you need to learn from any project. Even a failed one.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.stellman-greene.com/2009/07/24/taking-stock-of-a-failed-project/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
<enclosure url="http://www.stellman-greene.com/video/GallopingGertie_450x240.flv" length="1899276" type="video/x-flv" />
		</item>
		<item>
		<title>Iterative development is not unplanned development</title>
		<link>http://www.stellman-greene.com/2009/07/16/iterative-development-is-not-unplanned-development/</link>
		<comments>http://www.stellman-greene.com/2009/07/16/iterative-development-is-not-unplanned-development/#comments</comments>
		<pubDate>Thu, 16 Jul 2009 13:37:05 +0000</pubDate>
		<dc:creator>Andrew Stellman</dc:creator>
				<category><![CDATA[Agile]]></category>
		<category><![CDATA[Project Management]]></category>
		<category><![CDATA[Q&A]]></category>

		<guid isPermaLink="false">http://www.stellman-greene.com/?p=298</guid>
		<description><![CDATA[I got a great question from a software developer who also happens to be a fellow CMU alum. I have a question related to managing scope creep with respect to “on-going”/iterative development processes. I’m currently managing a project where we’re redesigning my application&#8217;s primary workflow. Simply put, the app is currently designed to have users [...]]]></description>
			<content:encoded><![CDATA[<p><img class="alignnone size-full wp-image-118" title="What the..." src="http://www.stellman-greene.com/blog/wp-content/uploads/2007/12/what-the.png" alt="What the..." width="484" height="486" /></p>
<p>I got a great question from a software developer who also happens to be a fellow <a href="http://www.cs.cmu.edu/">CMU</a> alum.</p>
<blockquote><p>I have a question related to managing scope creep with respect to “on-going”/iterative development processes.</p>
<p>I’m currently managing a project where we’re redesigning my application&#8217;s primary workflow. Simply put, the app is currently designed to have users to signoff all items and we’re redesigning it to be exception-based (only require certain items to be signed off).</p>
<p>As we’ve progressed down the path of planned iterative development, a lot of good/new ideas for future enhancements/requirements spring up. I find myself regularly working with my users and “working group” to prioritize and analyze if any of these new ideas need to be considered to build sooner rather than later (and thus triggering plan adjustments or delays).</p>
<p>I often feel like I’ll end up delivering a product that does deliver the initial vision, but still doesn’t make my users happy, as they’ve already shifted their expectations to wanted the “next” thing (aka phase 2).</p>
<p>Do you have any other tips about how to manage this process?</p>
<p>I’ve used things like taking a timeline-style roadmap and adjusting it by overlaying the new requirements and shifting the timeline out. Do you have an recommendations of ways to present this type of information?</p>
<p>Curious your thoughts. Thanks.</p>
<p>— Seth L.</p></blockquote>
<p>Iterative software development can be a really useful—and highly effective—tool for software development, but it’s also one of the most abused tools I’ve seen. Even as recently as a few days ago, someone in charge of a software team that&#8217;s critical to his comapny came to me with the (incorrect) assertion that iteration just means diving into a prototype without talking to anyone or doing any investigation. Iteration done well can lead to very high quality software. But as Seth saw, iteration done poorly can lead to scope creep and serious planning issues.</p>
<p>Making your users “happy” means managing their expectations. They need to see exactly what you’re working on, and what’s coming next. If all people see is deadlines and they don’t have a sense of what’s going on, then they naturally start looking to the next deadline, because that’s all they see. The more visibility you can give them into the way you build software, the more understanding they’ll have – that’s just human nature.</p>
<p>There are a few things that work well for improving visibility into your project’s iterations. One of them is a <a href="http://www.mountaingoatsoftware.com/task-boards">task board</a>, which typically involves sticking index cards with your user stories or scenarios on a whiteboard or wall. This means that you actually need to have <a href="http://www.stellman-greene.com/2009/05/03/requirements-101-user-stories-vs-use-cases/">user stories or scenarios</a>. Scope creep is often an indication of a requirements problem, and getting consensus on at least the scenario level about exactly what’s going into the iteration. Having the index cards arrayed on a task board, with each index card showing the status (&#8220;planned&#8221;, &#8220;in development&#8221;, &#8220;completed&#8221;, &#8220;out of scope&#8221;) gives a lot more visibility into exactly what you’re building and how you’re building it. In a lot of ways, this is a sort of iterative development project plan.</p>
<p>Another way to prevent iteration-related scope problems is committing to delivering releasable code at the end of each iteration. Test-driven development (or, at least, developing complete unit tests) and continuous integration are effective ways to help make that happen. If your stakeholders are comfortable that you’ll deliver high-quality code at each iteration, they’ll feel less pressure to get the new features in immediately, and will be more willing to wait until the next iteration.</p>
<p>If this sounds like something that might help you, I definitely recommend reading the interview Jenny and I did with <a href="http://blog.mountaingoatsoftware.com/">Mike Cohn</a> for <a href="http://www.amazon.com/Beautiful-Teams/dp/0596518021/">Beautiful Teams</a>, who knows more about agile and iterative planning than pretty much everyone . He has a lot to say about effective iteration planning. There are pictures of task boards he’s used in the past.</p>
<p>That gets me back to the basic idea—one which I give Mike a whole lot of credit for helping people understand—that iterative development, especially in an Agile project, works best when we take the time to plan each iteration. It still faces the same problems: requirements need to be discovered, scope needs to be controlled, and progress needs to be communicated to everyone who cares about it&#8230; especially to anyone who can potentially make the developers&#8217; lives more difficult. That&#8217;s why the most successful Agile development projects collect requirements and document them using user stories (or other techniques for writing down what the software needs to do). They plan their progress using task boards, forecast them using calculations and charts like project velocity and burn down rates, and constantly keep any business owners and other stakeholders up to date on their progress.</p>
<p>It&#8217;s a great way to develop software, and it&#8217;s been really effective for a lot of teams. And I think it shows that iterative development does <em>not</em> necessarily mean unplanned development.</p>
<p>When I sent this to the developer who sent me the question, he had an interesting follow-up, which I thought deserved a response:</p>
<blockquote><p><em>So I’ve been digesting this a bit and I am curious to get your thoughts about adapting project management fundamentals into the often fluid process of app management. I manage a few virtual projects within </em><em>my company and at times have struggled to keep things focused as business demands and/or interests shift over time. Similarly, the “iterative” approach has helped to clarify requirements while building out new flows/apps, but as you pointed out can be very tricky to get “right”.</em></p></blockquote>
<p>It’s funny how often I hear people say, “Well, this project management stuff works in theory, but my project is fluid” (or “changing,” or “under too much pressure from the business,” or “critical,” etc.). It turns out that pretty much every project is challenging, and project management is set up specifically to deal with that kind of challenging project.</p>
<p>Here are two thoughts I had relating to this idea.</p>
<p>First, the iterative development model works very well, as long as you’re committed to delivering a high-quality product at the end of each iteration. Whether or not you develop using an iterative approach, you need to manage change: prevent unnecessary changes, and make sure you understand the impact of any change that you make. It also means that you need some sort of scope baseline, so that you know what is and is not a change. It’s faster and easier to update software on paper, before it’s written into code, so the more changes you can move to the “write it down and review it” phase of your project, the better.</p>
<p>And second, if your business is overly demanding, it often means that you could manage your stakeholders’ expectations better. Make sure you identify them – and write down their names and needs! – from the very beginning of the project. Talk to them… <em>a lot</em>. Make sure they’re in the loop. If possible, see them so often that they’re sick of seeing you. If they’re always aware of what you’re doing, there won’t be nearly as many surprises. Also, the more your stakeholders understand the details of the work that you’re doing, the more slack they’ll cut you when they ask you for changes. Often, when someone puts a lot of pressure on you to do the impossible, it’s because they don’t realize that’s what they’re asking.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.stellman-greene.com/2009/07/16/iterative-development-is-not-unplanned-development/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>It&#8217;ll take about three weeks&#8230;</title>
		<link>http://www.stellman-greene.com/2008/03/20/itll-take-about-three-weeks/</link>
		<comments>http://www.stellman-greene.com/2008/03/20/itll-take-about-three-weeks/#comments</comments>
		<pubDate>Thu, 20 Mar 2008 20:06:10 +0000</pubDate>
		<dc:creator>Andrew Stellman</dc:creator>
				<category><![CDATA[Estimation]]></category>
		<category><![CDATA[Project Management]]></category>

		<guid isPermaLink="false">http://www.stellman-greene.com/2008/03/20/itll-take-about-three-weeks/</guid>
		<description><![CDATA[If you&#8217;ve been reading our posts here, you probably noticed that we like to give our &#8220;Why Projects Fail&#8221; talk. (If you&#8217;re curious, here&#8217;s a link to the slides [PDF].) One reason we really like it is that it seems to go over well with a lot of different audiences, from hard-core architects and programmers [...]]]></description>
			<content:encoded><![CDATA[<p>If you&#8217;ve been reading our posts here, you probably noticed that we like to give our &#8220;Why Projects Fail&#8221; talk. (If you&#8217;re curious, <a href="http://www.stellman-greene.com/Why_Projects_Fail.pdf">here&#8217;s a link to the slides [PDF]</a>.) One reason we really like it is that it seems to go over well with a lot of different audiences, from hard-core architects and programmers to grey-haired project managers. It&#8217;s a pretty informal talk &#8212; we interrupt each other and go off on the occasional tangent, which keeps the mood pretty light. And that&#8217;s always a good thing, especially when you&#8217;re doing a talk to people at a PMI meeting or a user group who just spent the day at work and don&#8217;t need to sit through yet another boring slide presentation.</p>
<p>I was thinking about that presentation yesterday, after getting off the phone with a manager at a company that wants to hire us to do <a href="http://www.stellman-greene.com/training">software estimation training</a> for their programmers. One problem that they&#8217;re having is a pretty common one. Their programmers, testers, and even project managers seem reluctant to give estimates. That reminded me of this slide from the talk:</p>
<p><img src="http://www.stellman-greene.com/blog/wp-content/uploads/2008/03/why-projects-fail-team-slide.png" alt="Things the team should’ve done slide" /></p>
<p>When we get to this slide in the talk, I usually say something like this:</p>
<blockquote><p>There&#8217;s something we call the &#8220;about three weeks&#8221; problem. Have you ever noticed that when you ask a programmer how long it&#8217;ll take to do something, it&#8217;s always going to take &#8220;about three weeks&#8221;? I&#8217;ve done it myself many times over the last fifteen years or so. How long to build a simple website to do a few calculations? About three weeks. What about a utility that will automate some file operations and generate a few reports? About three weeks. A new feature for our core product? Sure, it&#8217;ll take about three weeks. See, the problem is that three weeks seems like a long enough time to get something significant done. And if you think for thirty seconds about pretty much any programming project, you can do enough hand-waving and ignore enough details so that it&#8217;ll seem to fit into about three weeks.</p></blockquote>
<p>What does this have to do with why programmers are so reluctant to give estimates?</p>
<p>There are many reasons for this, more than I&#8217;ll go into here. But a big one might just be because we&#8217;ve all quoted &#8220;about three weeks&#8221; for a programming project that ends up taking a whole lot longer than that, and we never want to be stuck in that situation again. So after we&#8217;ve been burned enough, we just stop giving estimates. I was at a job a few years ago, sitting at a full conference table with a dozen developers. The CTO &#8212; an abrasive guy who clearly went home every evening to lift <a href="http://www.willbeta.com/lose-weight-exercise/"><span style="display:none;">Lose </span>Weight<span style="display:none;"> Exercise</span></a>s, and spent most of his day yelling at the people who reported to him &#8212; growled an &#8220;order&#8221; at the team, demanding an estimate. Everyone at the table knew that they&#8217;d be yelled at individually, threatened with dismissal, and generally made miserable if they didn&#8217;t come up with an estimate. Yet nobody looked up and volunteered anything. Eventually a junior guy in the back cleared his throat, and in almost a whisper he said, &#8220;I&#8217;m not sure about the rest of it, but I think my piece will take about three weeks.&#8221;</p>
<p>And there it is. Nobody wants to go on the record and say how long they think it&#8217;ll take to do a job. We all know it&#8217;ll take as long as it takes. If the estimate is right, then there&#8217;s no great reward or recognition. But if the estimate is wrong, then we&#8217;re on the hook for it, and we get to look forward to status meetings where we get to take the blame for whatever terrible consequence happened because the project was late.</p>
<p>So what do we do about it?</p>
<p>Jenny and I put a lot of thought into this problem when we were working on our first book, <a href="http://www.stellman-greene.com/aspm" title="Applied Software Project Management">Applied Software Project Management</a>. It turns out that there&#8217;s a really effective way to get a good idea of how long the software will take <strong>without</strong> putting any one person on the hook, and it&#8217;s our favorite way of generating estimates. It&#8217;s called <a href="http://www.stellman-greene.com/delphi" title="Wideband Delphi">Wideband Delphi</a>, and we talk a lot about it in the Estimation chapter in the book (which you can <a href="http://www.stellman-greene.com/chapter3">download for free [PDF]</a>). It&#8217;s a straightforward technique &#8212; it just takes two two-hour meetings to nail down estimates for even a large project. It&#8217;s very iterative and highly interactive, which helps the team all come to a consensus and agree on the final result. It&#8217;s collaborative, so that no one person is solely responsible &#8212; usually, everyone ends up buying into the final numbers. And best of all, it doesn&#8217;t require any special expertise beyond what you need to actually do the project.</p>
<p>My favorite part about Wideband Delphi is that it&#8217;s really focused on assumptions. That&#8217;s another thing I like to talk about in the &#8220;Why Projects Fail&#8221; talk. If you think that building a particular program is going to take nine weeks, but I think it&#8217;s going to take four weeks, we usually aren&#8217;t disagreeing on how long it&#8217;ll take to do the task. Usually, we&#8217;re disagreeing on some basic assumption about the task. For example, you might think that we&#8217;ll be building a big GUI with printing support, while I might think that it&#8217;s just going to be a console application. That means that we can assume for the sake of the estimate that we&#8217;ll either build a GUI or build a console application, and we&#8217;ll write down that assumption. That way, if it turns out to be incorrect, we&#8217;ll know exactly why the estimate was wrong&#8230; and if someone in a meeting later wants to blame us, we can point to that assumption and give a good reason for the delay. (That&#8217;s why Delphi has two meetings: the first meeting is mostly taken up with a discussion of those assumptions.)</p>
<p>One nice thing about Delphi is that it&#8217;s not some esoteric, theoretical thing. Both Jenny and I have done this in the real world, many times, with all sorts of software teams. Delphi really does work, and it actually does a good job of helping team come up with numbers. And those numbers are pretty accurate, at least on the projects I&#8217;ve worked on. If you&#8217;re having trouble convincing your reluctant team to come up with an estimate, I definitely recommend giving Delphi a shot.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.stellman-greene.com/2008/03/20/itll-take-about-three-weeks/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>PMI Mass Bay &#8211; Thanks for a great time!</title>
		<link>http://www.stellman-greene.com/2007/09/25/pmi-mass-bay-thanks-for-a-great-time/</link>
		<comments>http://www.stellman-greene.com/2007/09/25/pmi-mass-bay-thanks-for-a-great-time/#comments</comments>
		<pubDate>Tue, 25 Sep 2007 22:24:31 +0000</pubDate>
		<dc:creator>Andrew Stellman</dc:creator>
				<category><![CDATA[PMI]]></category>
		<category><![CDATA[Presentations]]></category>
		<category><![CDATA[Project Management]]></category>

		<guid isPermaLink="false">http://www.stellman-greene.com/2007/09/25/pmi-mass-bay-thanks-for-a-great-time/</guid>
		<description><![CDATA[The folks at the PMI Mass Bay chapter contacted me and Jenny a while back (using our convenient contact page) and invited us to give a talk at a chapter meeting, which we did last Thursday. We had a great time, and met some really interesting people. They&#8217;ve got one of the biggest PMI chapters [...]]]></description>
			<content:encoded><![CDATA[<p>The folks at the <a href="http://pmimassbay.org/2007/" title="PMI Mass Bay">PMI Mass Bay chapter</a> contacted me and Jenny a while back (using our convenient <a href="http://www.stellman-greene.com/contact-us/" title="Contact us!">contact page</a>) and invited us to give a talk at a chapter meeting, which we did last Thursday. We had a great time, and met some really interesting people. They&#8217;ve got one of the biggest PMI chapters in the country, with over 2,000 members. We had a full house, and they asked a bunch of great questions.</p>
<p><img src="http://www.stellman-greene.com/blog/wp-content/uploads/2007/09/maybe-this-isnt-the-reception.png" alt="Maybe this ISN’T the Rosenstein wedding reception" /></p>
<p>Here&#8217;s a <a href="http://www.stellman-greene.com/blog/wp-content/uploads/2007/09/how-to-keep-your-projects-afloat.pdf" title="How to keep your project afloat">PDF of the slides</a> from the talk. The fourth slide is <a href="http://www.stellman-greene.com/blog/wp-content/uploads/2007/09/galloping-gertie.avi" title="Galloping Gertie">this video of the 1940 Tacoma Narrows Bridge disaster</a>. And to anyone who attended, we&#8217;re always happy to answer questions &#8212; feel free to <a href="http://www.stellman-greene.com/contact-us/" title="Contact us!">get in touch with us</a> if you want to follow up on anything we spoke about.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.stellman-greene.com/2007/09/25/pmi-mass-bay-thanks-for-a-great-time/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
<enclosure url="http://www.stellman-greene.com/blog/wp-content/uploads/2007/09/galloping-gertie.avi" length="2120180" type="video/x-msvideo" />
		</item>
		<item>
		<title>IASA / NYCJava &#8211; thanks for having us by!</title>
		<link>http://www.stellman-greene.com/2007/06/27/iasa-nycjava-thanks-for-having-us-by-2/</link>
		<comments>http://www.stellman-greene.com/2007/06/27/iasa-nycjava-thanks-for-having-us-by-2/#comments</comments>
		<pubDate>Wed, 27 Jun 2007 16:58:28 +0000</pubDate>
		<dc:creator>Andrew Stellman</dc:creator>
				<category><![CDATA[News]]></category>
		<category><![CDATA[Presentations]]></category>
		<category><![CDATA[Project Management]]></category>

		<guid isPermaLink="false">http://www.stellman-greene.com/2007/06/27/iasa-nycjava-thanks-for-having-us-by-2/</guid>
		<description><![CDATA[Jenny and I had a great time doing our &#8220;Why Projects Fail&#8221; talk at a joint meeting between the International Association of Software Architects and NYC Java SIG (a couple of announcements) at the Microsoft office in midtown Manhattan last night. (Fun trivia fact: my first job out of college was in the same building, [...]]]></description>
			<content:encoded><![CDATA[<p>Jenny and I had a great time doing our &#8220;Why Projects Fail&#8221; talk at a joint meeting between the <a href="http://www.iasahome.org/web/home/home" title="International Association of Software Architects">International Association of Software Architects</a> and <a href="http://www.nycjava.net/" title="NYC Java SIG">NYC Java SIG</a> (a <a href="http://blogs.msdn.com/peterlau/archive/2007/06/18/iasa-new-york-chapter-meeting-tuesday-june-26-6pm.aspx">couple</a> of <a href="http://channel9.msdn.com/ShowPost.aspx?PostID=317757">announcements</a>) at the Microsoft office in midtown Manhattan last night. (Fun trivia fact: my first job out of college was in the same building, working as a programmer at EMI-Capitol Records.) It was an after-work session, so we&#8217;d only expected to spend half an hour or forty-five minutes, but we got so many great questions from people that we kept going until the folks at Microsoft had to close down the meeting room.</p>
<p><img src="http://www.stellman-greene.com/blog/wp-content/uploads/2007/06/why-projects-fail-presentation-screenshot.png" alt="Why Projects Fail presentation screenshot" /></p>
<p>We promised to upload the slides and post a couple of links, so here they are. Here&#8217;s <a href="http://www.stellman-greene.com/blog/wp-content/uploads/2007/06/why-projects-fail.ppt" title="Why Projects Fail… and what you can do about it (PPT)">the PowerPoint presentation [PPT]</a> and a <a href="http://www.stellman-greene.com/blog/wp-content/uploads/2007/06/why-projects-fail.pdf" title="Why Projects Fail… and what you can do about it (PDF)">PDF version [PDF]</a>.You guys asked great questions &#8212; some of the best we&#8217;ve ever gotten at one of our talks. Here are a few of the answers that we promised:</p>
<ul>
<li>A few of you had questions about estimation, specifically the Wideband Delphi process that we&#8217;ve had a lot of success with. You can read about it in Chapter 3 of our first book, <a href="http://www.stellman-greene.com/aspm" title="Applied Software Project Management">Applied Software Project Management</a>&#8211; here&#8217;s a link to <a href="http://www.stellman-greene.com/chapter3" title="Chapter 3 of Applied Software Project Management">a PDF of the chapter [PDF]</a>. We give a pretty detailed description of exactly how to hold a Wideband Delphi meeting, and how you can use it on your own projects to improve how they&#8217;re estimated.</li>
<li>One person brought up a really good point about integration, and how that&#8217;s an important failure point that gets neglected, and we mentioned that we&#8217;d post a link to an article we wrote for Dr. Dobb&#8217;s Journal on integration testing called &#8220;<a href="http://www.ddj.com/dept/debug/190302526" title="Bigger, Stronger, Faster Integration Testing">Better, Stronger, Faster Integration Testing: Giving developers a personal stake in software quality</a>.&#8221;</li>
<li>I think a lot of the questions near the end of the talk about open source projects were answered in our ONLamp.com article called <a href="http://www.onlamp.com/pub/a/onlamp/2006/02/27/what-corp-projects-learn-from-open-source.html" title="What Corporate Projects Should Learn from Open Source">&#8220;What Corporate Projects Should Learn from Open Source&#8221;</a>. Also, here&#8217;s a link to the <a href="http://www.stellman-greene.com/opensource/" title="What Makes Open Source Projects Work">&#8220;What Makes Open Source Projects Work&#8221;</a> presentation I gave last January at the <a href="http://sdexpo.in" title="SD Best Practices India 2007">SD Best Practices India 2007</a> conference.</li>
<li>No, we don&#8217;t have an official release date for &#8220;Head First C#&#8221; yet, but we&#8217;re definitely making good progress on it. Keep watching this blog &#8212; as soon as O&#8217;Reilly has an official release date for it, we&#8217;ll post about it. And yes, it <strong><em>is</em></strong> really fun to write a Head First book.</li>
<li>After the talk, a few people asked about our availability to come in and do training. Our consulting schedule is a little tight because of our pretty aggressive writing schedule for O&#8217;Reilly, but we do have some availability. You can <a href="http://www.stellman-greene.com/contact-us/" title="Conact us">use our &#8220;Contact Us&#8221; page to get in touch with us about</a> consulting and speaking &#8212; serious inquiries only, please.</li>
</ul>
<p>We&#8217;re always happy to answer questions about anything we talk or write about. Feel free to <a href="http://www.stellman-greene.com/contact-us/">get in touch with us any time</a>!</p>
]]></content:encoded>
			<wfw:commentRss>http://www.stellman-greene.com/2007/06/27/iasa-nycjava-thanks-for-having-us-by-2/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>&#8220;That estimate seems a little long.&#8221;</title>
		<link>http://www.stellman-greene.com/2007/05/31/that-estimate-seems-a-little-long/</link>
		<comments>http://www.stellman-greene.com/2007/05/31/that-estimate-seems-a-little-long/#comments</comments>
		<pubDate>Thu, 31 May 2007 15:20:54 +0000</pubDate>
		<dc:creator>Jennifer Greene</dc:creator>
				<category><![CDATA[Project Management]]></category>
		<category><![CDATA[Software Development]]></category>
		<category><![CDATA[Software Engineering]]></category>

		<guid isPermaLink="false">http://www.stellman-greene.com/2007/05/31/that-estimate-seems-a-little-long/</guid>
		<description><![CDATA[Ever spend time working up an accurate estimate with your team, and find that it gets rejected because it doesn&#8217;t match a magic number in somebody&#8217;s head? You did your homework; talked to the people who&#8217;ve done this kind of work before, compared your estimate to past projects, and made sure that your estimates are [...]]]></description>
			<content:encoded><![CDATA[<p>Ever spend time working up an accurate estimate with your team, and find that it gets rejected because it doesn&#8217;t match a magic number in somebody&#8217;s head? You did your homework; talked to the people who&#8217;ve done this kind of work before, compared your estimate to past projects, and made sure that your estimates are coming from the people who will actually do the work. But, your boss thinks the project should be done a few months earlier.  He doesn&#8217;t doubt your work, the estimate just doesn&#8217;t feel right.</p>
<p><a href='http://www.stellman-greene.com/blog/wp-content/uploads/2007/05/schedulereview13.jpg' title='Estimate'><img src='http://www.stellman-greene.com/blog/wp-content/uploads/2007/05/schedulereview13.jpg' alt='Estimate' /></a></p>
<p>Estimates have a tendency to be more accurate when they&#8217;re based on experience.  Having actual data on your past projects is so important when you sit down to figure out how long it&#8217;s going to take you to do a new one. The best estimates come from people who really understand the work that&#8217;s going to get done. And <a href="http://www.stellman-greene.com/delphi">practices for estimation that stay grounded in project experience</a> are less likely to be wrong. </p>
<p>That&#8217;s why your project will probably be really late if you just cave in and start shaving off time arbitrarily.  It might not be easy, but you need to explain the reasoning behind the estimates your team has come up with and set your boss&#8217;s expectations realistically.  Too many projects are in a bad position before they ever really get started because a project manager doesn&#8217;t correct this kind of misunderstanding.</p>
<p>It&#8217;s one of the toughest parts of the job because your boss doesn&#8217;t want to know all the details.  He just wants you to get it done faster.  And sometimes you can get done faster with more resources or with a different scope of work. But it&#8217;s <em>always</em> a mistake to just cut an estimate because it doesn&#8217;t match what people expect.  You need to turn the conversation around and help everybody get to see what the <em>real </em> choices are.  Just saying that project will take less time, never makes it happen that way&#8211; no matter how influential the person who wants it done yesterday is. </p>
<p>If you estimate right, you should never go back to your team and tell them to arbitrarily cut those estimates down.  Instead, you should work with your boss to understand if there might be some work that can be cut from schedule, or some other ways to accomplish what needs to be done in parallel. If you set up a relationship where you and your boss are both doing everything you can to come up with a reasonable plan together, you stand a much better chance of succeeding. </p>
]]></content:encoded>
			<wfw:commentRss>http://www.stellman-greene.com/2007/05/31/that-estimate-seems-a-little-long/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Late projects, man-months and the software crisis</title>
		<link>http://www.stellman-greene.com/2007/05/15/late-projects-man-months-and-the-software-crisis/</link>
		<comments>http://www.stellman-greene.com/2007/05/15/late-projects-man-months-and-the-software-crisis/#comments</comments>
		<pubDate>Tue, 15 May 2007 14:38:48 +0000</pubDate>
		<dc:creator>Andrew Stellman</dc:creator>
				<category><![CDATA[Project Management]]></category>
		<category><![CDATA[Software Engineering]]></category>

		<guid isPermaLink="false">http://www.stellman-greene.com/2007/05/15/late-projects-man-months-and-the-software-crisis/</guid>
		<description><![CDATA[I recently got a question recently asking about Fred Brooks&#8217; famous quote: &#8220;Adding manpower to a late software project makes it later.&#8221; The person asking the question took it literally, and was asking about whether this meant that there&#8217;s no way any schedule estimation technique could indicate that adding manpower could shorten delivery time. Fred [...]]]></description>
			<content:encoded><![CDATA[<p>I recently got a question recently asking about Fred Brooks&#8217; famous quote: &#8220;Adding manpower to a late software project makes it later.&#8221; The person asking the question took it literally, and was asking about whether this meant that there&#8217;s no way any schedule estimation technique could indicate that adding manpower could shorten delivery time.</p>
<p>Fred Brooks wasn&#8217;t really talking about schedule estimation techniques, or writing hard-and-fast rules. He was trying to help software engineers break some very bad habits.  And trying to fix a failing project by throwing bodies at it is one of the worst habits software engineers have. See, as it turns out, some tasks take however long they&#8217;re going to take, and throwing bodies at the problem won&#8217;t change that. Or, as Brooks wrote, &#8220;The bearing of a         child takes nine months, no matter how many women are assigned.&#8221;</p>
<p><img src="http://www.stellman-greene.com/blog/wp-content/uploads/2007/05/business-plan-2007-05-14.png" alt="Business Plan" /></p>
<p>I think the best way to understand that Brooks quote was to understand why he first wrote &#8220;The Mythical Man-Month&#8221; back in 1975. At the time there was something called the <a href="http://en.wikipedia.org/wiki/Software_crisis">software crisis</a>. The field of software engineering, still young at the time, had run in to a serious problem: people were having a whole lot of trouble writing software on time and under budget.</p>
<p>By the time the software crisis was in full effect, the engineering world had already matured a great deal. The great civil engineering projects of the early 20th century taught us how to manage enormous projects effectively. (<a href="http://en.wikipedia.org/wiki/Hoover_dam">Hoover Dam</a> was finished two years ahead of schedule! And <a href="http://en.wikipedia.org/wiki/Henry_Gantt">Henry Gantt</a> invented of <a href="http://www.stellman-greene.com/projectschedule">everybody&#8217;s favorite scheduling tool</a> around 1910.) And by the mid-1970s, the world of computers had matured to the point where most large corporations had computer programming teams and IBM &#8220;<a href="http://ibmmainframes.com/">big iron</a>&#8221; timesharing mainframes. It seemed like the tools were there, and the people had the skills to use them.</p>
<p>So why were all of our software projects so late?</p>
<p>Personally, I blame the person who coined the term &#8220;software&#8221;. The thinking, I believe, went like this: &#8220;Hardware is really expensive, and basically impossible to change. But luckily, we&#8217;ve got these programs that we can constantly tweak to suit our needs! That&#8217;s the opposite of hardware, which can&#8217;t be changed.&#8221;</p>
<p>By the time the mid-1990s came around, the field of software project management had matured to the point where we knew that change was the biggest factor in late software projects. Changing needs and requirements meant pulling apart the underpinnings of our code and caused us to have to do expensive (and often ineffective rework). Changing technology kept giving programmers &#8220;silver bullets&#8221; that they thought would make this next project run a whole lot more smoothly than the last one. And the (perceived) ability to change the software architecture and design in the middle of the project caused a lot of teams to fail to plan their projects well (or at all!).</p>
<p>The worst part of it was that it seemed like the software crisis never ended &#8212; there were still an enormous number of projects that were still coming in very late and over budget, or failing to complete at all. But at least by that point we knew the root cause of the problem and had tools to help us fix it. In fact, we were learning that adapting to change and getting those changes under control was an important part of effective software projects.</p>
<p>So how did we know that those things were causing the crisis in the first place, and that fixing those problems would get our software out the door on time and within budget? We can thank Fred Brooks for that. &#8220;The Mythical Man-Month&#8221; was, as far as I know, the most important software engineering book of its time. It laid out the real problems that caused software projects to run into trouble, and showed us a lot of very useful ideas about planning our software projects, structuring our teams, estimating the work, communicating with each other and our stakeholders, and writing our documentation. And a lot of what he wrote still resonates very well with modern software projects. (A lot of the <a href="http://www.stellman-greene.com/aspm/content/blogcategory/15/38/">tools and techniques</a> that Jennifer Greene and I wrote about in <a href="http://www.stellman-greene.com/aspm/">Applied Software Project Management</a> were designed specifically to address those root causes of software project problems.)</p>
<p>And that gets back to Brooks&#8217; quote about adding manpower to a late project. When Brooks talked about a late software project, he was talking about a project that had constantly shifting requirements and needs, poor planning, and communications problems both among the team members and between the team and the stakeholders. In a situation like that, many project managers will panic and just try to throw bodies at the situation. (I&#8217;ve seen this many, many times &#8212; and so have almost all software engineering professionals.) But those extra people will just cause the bad project plan to become even more inaccurate, and they will compound the already serious communications problems. That, in turn, will cause the team to spend extra effort dealing with those problems. And that extra effort will often be larger than the man-hours that the newly added team member will add to the team.</p>
<p>That&#8217;s why Brooks called his book &#8220;The Mythical Man-Month&#8221;. If you need to get your two-person project done in six months, you can&#8217;t just add another person on and magically get it done in four months. Adding a person to a project for a month doesn&#8217;t automatically reduce the total effort by one man-month. The effort that one person can contribute to a project varies enormously based on the project circumstances. His &#8220;adding manpower&#8221; is saying that if the project is already late, then adding an extra person can actually subtract man-months from the project.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.stellman-greene.com/2007/05/15/late-projects-man-months-and-the-software-crisis/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Useful ideas for really large projects.</title>
		<link>http://www.stellman-greene.com/2007/05/01/useful-ideas-for-really-large-projects/</link>
		<comments>http://www.stellman-greene.com/2007/05/01/useful-ideas-for-really-large-projects/#comments</comments>
		<pubDate>Tue, 01 May 2007 13:18:54 +0000</pubDate>
		<dc:creator>Andrew Stellman</dc:creator>
				<category><![CDATA[PM Clinic]]></category>
		<category><![CDATA[Project Management]]></category>

		<guid isPermaLink="false">http://www.stellman-greene.com/2007/05/01/useful-ideas-for-really-large-projects/</guid>
		<description><![CDATA[How do you manage a large project? There&#8217;s a big difference between managing a project team with, say, ten people and a team with a hundred. That shouldn&#8217;t be too surprising. But if you&#8217;re managing your first large project, it can be really daunting. Luckily, there&#8217;s been a lot of good work done on understanding [...]]]></description>
			<content:encoded><![CDATA[<p>How do you manage a large project? There&#8217;s a big difference between managing a project team with, say, ten people and a team with a hundred. That shouldn&#8217;t be too surprising. But if you&#8217;re managing your first large project, it can be really daunting.  Luckily, there&#8217;s been a lot of good work done on understanding large projects and how to manage them. The risks are bigger, and different, than anything you&#8217;ve seen on a smaller project. But if you pay attention to the tools that you&#8217;re using, you should be able to get a handle on things.</p>
<p>When you&#8217;re talking about a large project, communication is the area with the biggest potential risk. That shouldn&#8217;t be a surprise; after all, some people say that <strong>90% of project management is communication</strong>. The larger your project, the more complex the communications can get.</p>
<p><img src="http://www.stellman-greene.com/blog/wp-content/uploads/2007/04/crowd-2007-04-30.png" alt="Crowd 2007-04-30" /></p>
<p>Anyone who&#8217;s studied for the PMP already exam knows about this stuff. Remember that formula you had to memorize for counting lines of communication? Well, this is exactly why you need it! As you add more and more people to the project, the number of potential lines of communication goes up exponentially. And if you&#8217;re not prepared for it, you can really <a href="http://www.willbeta.com/lose-weight-exercise/">lose<span style="display:none;">Weight Exercise</span></a> track of who&#8217;s talking to who, and about what. So communications management &#8212; putting together a communications plan, keeping your project teams informed, managing your stakeholders&#8217; expectations, and generally serving as a hub of communications &#8212; really starts to make a big difference.</p>
<p>Recently, I had to face a situation with increasingly complex communications. I was working with a consulting company that specialized in outsourced software engineering projects. We were assigned a large part of a much larger project, one that was bigger than any other project the client company had taken on. There was another major vendor on the project as well, also doing a large amount of work. In previous projects for this client, we normally didn&#8217;t do much work alongside other vendors. But in this case, I saw that the project was divided into several teams on our side, and several more teams in the other vendor&#8217;s group. It was clear to me that there would be a large risk of communications problems. So I worked with the project manager from the other vendor to establish communications channels between our leads and theirs (getting buy-in from the client, of course). By planning for and establishing a separate line of communication, we were able to take some early steps to mitigate communications risks. This is definitely paying off now, and the project is going relatively smoothly.</p>
<p>As your project gets bigger, your risk management also becomes a lot more complicated. Which means you need to take more care with <a href="http://www.stellman-greene.com/risk_plan" title="Some good advice for risk planning">how you plan and track your risks</a>. If you don&#8217;t already keep a risk register, start. And definitely spend a lot more time talking with your team about risk planning at the beginning of the project. <a href="http://scottberkun.com/" title="Scott Berkun">Scott Berkun</a> has a lot of good advice in <a href="http://www.oreilly.com/catalog/artprojectmgmt/"><em>The Art of Project Management</em></a> about brainstorming and talking to your team about ideas. All of that good stuff applies to discovering and analyzing risks. Take extra time at the start of the project to work with the team to identify risks, and figure out how to handle them. Are you going to mitigate them? Which ones do you need to accept? Can you figure out ways to transfer the risks? These are all questions you should be able to answer BEFORE the risk materializes. Revisit your risks at regular team meetings. This is one of those areas that really benefits from economies of scale &#8212; the more your team is thinking about risk management, the more potential and actual project problems you&#8217;ll avoid.</p>
<p><img src="http://www.stellman-greene.com/blog/wp-content/uploads/2007/04/risk-mitigation-2007-04-30.png" alt="Risk mitigation" /></p>
<p>Is your project REALLY large? If you&#8217;re managing a project with 1,000 people, then you really need a solid metrics system. You&#8217;re never going to get a good handle on what your team is doing by just talking to people &#8212; there are simply too many people to talk to! That doesn&#8217;t mean you don&#8217;t communicate, of course. But you do need to reliably collect data, and then analyze that data statistically. This is what tools like run charts, control charts (or Shewhart charts) and trend analysis were developed for. Here&#8217;s a tip: If you&#8217;re playing in that arena, and if you have budget for consultants, find yourself someone who&#8217;s familiar with those tools to help you set up a system to gather and analyze project data. That sort of thing is very hard to set up once the project wheels are already turning, though, so you&#8217;ve got a limited window of opportunity to get it established.</p>
<p>(Inicidentally, if you haven&#8217;t read Scott Berkun&#8217;s book, you definitely should. I had the pleasure of being a technical reviewer for it, and it&#8217;s one of the best books on project management I&#8217;ve ever read.)</p>
]]></content:encoded>
			<wfw:commentRss>http://www.stellman-greene.com/2007/05/01/useful-ideas-for-really-large-projects/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>What about Agile?</title>
		<link>http://www.stellman-greene.com/2007/04/27/what-about-agile/</link>
		<comments>http://www.stellman-greene.com/2007/04/27/what-about-agile/#comments</comments>
		<pubDate>Fri, 27 Apr 2007 17:57:22 +0000</pubDate>
		<dc:creator>Andrew Stellman</dc:creator>
				<category><![CDATA[Agile]]></category>
		<category><![CDATA[Project Management]]></category>
		<category><![CDATA[Software Development]]></category>

		<guid isPermaLink="false">http://www.stellman-greene.com/2007/04/27/what-about-agile/</guid>
		<description><![CDATA[One of the best things about writing a Head First book is that you get feedback from other Head First authors. Our editor, Brett (who you may know from Head First OOA&#38;D), got some interesting feedback from Bert Bates. Bert was going through Head First PMP, and pointed out &#8212; and rightly so &#8212; that [...]]]></description>
			<content:encoded><![CDATA[<p>One of the best things about writing a Head First book is that you get feedback from other Head First authors. Our editor, <a href="http://headfirstlabs.com/brett.php" title="Brett McLaughlin, our editor and guide to all things Head First">Brett</a> (who you may know from <a href="http://headfirstlabs.com/books/hfooad/" title="Head First Object Oriented Analysis &amp; Design">Head First OOA&amp;D</a>), got some interesting feedback from <a href="http://headfirstlabs.com/bert.php" title="Bert Bates, Head First author">Bert Bates</a>. Bert was going through Head First PMP, and pointed out &#8212; and rightly so &#8212; that at first glance here seems to be some distance between the PMP approach to projects and the Agile approach.So he&#8217;s right. There&#8217;s definitely some distance between what you&#8217;ll see on the PMP exam and in the <a href="http://www.pmibookstore.org/PMIBookStore/productDetails.aspx?itemID=358&amp;varID=1" title="PMBOK® Guide">PMBOK® Guide</a>, and what you&#8217;ll see in an Agile development process like XP, SCRUM, or Crystal. There&#8217;s a lot of stuff Agile does that isn&#8217;t addressed in the PMBOK, and there&#8217;s a lot that&#8217;s on the PMP exam that Agile doesn&#8217;t address. But this shouldn&#8217;t really be a surprise to anyone.  See, the PMBOK wasn&#8217;t written specifically for developers. A lot of projects that use the PMBOK processes and principles are things that you can&#8217;t do iteratively &#8212; like, say, highway construction or building a skyscraper. That&#8217;s why you see a lot of focus on things like subcontracting and procurement, risk management, communications (which you need to plan for really carefully when you&#8217;ve got a thousand people working on a project!), and budgeting. These are things that Agile doesn&#8217;t address because they&#8217;re just out of its scope.That&#8217;s not to say the PMP stuff doesn&#8217;t work on software &#8212; in fact, it works really well. So why isn&#8217;t the opposite true? Why couldn&#8217;t an Agile process work for, say, building a high-rise?<img src="http://www.stellman-greene.com/blog/wp-content/uploads/2007/04/needs-more-windows.png" alt="Needs More Windows" />Jenny and I were lucky enough to have a lot of contact with some of the people who created the PMBOK while we were working on the book. And as it turns out, they were very much into iteration and iterative development. But the PMBOK and the PMP exam need to apply to all kinds of projects, including non-iterative, non-software ones. And iteration does have its place, even in construction. You should <em>definitely</em> approach the design and planning iteratively. But while iteration may work fine for project plans and blueprints, but it doesn&#8217;t work particularly well once you&#8217;ve broken ground.But there is one big area where Agile and the PMBOK Guide are really similar: <strong>managing change</strong>. Change management is <em>really</em> important in the processes you need to know for the PMP exam. They are very clear on the fact that changes happen on every project, and that you need to make sure that you plan for change and expect it to happen. Every single knowledge area you need to study stresses that no matter what sort of project you&#8217;re working on, you need to constantly look for changes, and make sure that you change course whenever changes are necessary.Sound familiar? It should! Because it&#8217;s one of the fundamental goals of Agile development &#8212; the Agile manifesto itself says that we&#8217;ve come to value &#8220;responding to change over following a plan&#8221;. And that&#8217;s really similar to what the PMBOK tells us: that when there&#8217;s a change, we need to modify our plans in order to accommodate that change. (It also wants us to make sure that we know how much the change is going to impact the project, and that everyone involved agrees that the cost of making the change is worth the benefit&#8230; which is definitely a good idea too.)<img src="http://www.stellman-greene.com/blog/wp-content/uploads/2007/04/when-to-iterate.png" alt="When to iterate" />All in all, I think that there&#8217;s a lot of value in the ideas behind the PMBOK and the PMP exam, and that an Agile shop could benefit from understanding and applying them. I definitely <strong>don&#8217;t</strong> think that the PMBOK and Agile development are incompatible. But it&#8217;s important to keep in mind that they solve different problems&#8230; and that neither Agile nor the PMBOK are intended to be a silver bullet to automatically repair all troubled projects!Oh, one more thing to remember. Jenny and I are software people, and we&#8217;ve spent most of our careers trying to figure out how to deliver software projects better. That&#8217;s what our <a href="http://stellman-greene.com/aspm" title="Applied Software Project Management">first book</a> was about. We spend some time in that book talking about Agile &#8212; and a lot of time talking about some specific practices that were popularized along with Agile development: refactoring, test-driven development, continuous integration, pair programming and a few others. We love those practices, and regularly use them on the job. Personally, I always do test-driven development when <a href="http://stellman-greene.com/PublicationHarvester" title="Publication Harvester project page">writing my own code</a>. But that&#8217;s definitely an area that you simply don&#8217;t see on the PMP exam, and for good reason. What does it even mean to build, say, a highway on-ramp using test-driven development? (Actually, that question may actually turn out to have a meaningful answer. If anyone can think of one, please let us know!)</p>
]]></content:encoded>
			<wfw:commentRss>http://www.stellman-greene.com/2007/04/27/what-about-agile/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
	</channel>
</rss>

