<?xml version="1.0" encoding="utf-8"?>
<rss xmlns:atom="http://www.w3.org/2005/Atom" xmlns:sy="http://purl.org/rss/1.0/modules/syndication/" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:wfw="http://wellformedweb.org/CommentAPI/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
  version="2.0">
  <channel>
    <title>Stephen Cohen's Thoughts on Agile and Project Recovery</title>
    <atom:link
      href="https://docs.microsoft.com/archive/blogs/stephen_cohen/feed.xml"
      rel="self"
      type="application/rss+xml" />
    <link>https://docs.microsoft.com/archive/blogs/stephen_cohen/feed.xml</link>
    <description />
    <lastBuildDate>Tue, 16 Apr 2019 05:31:12 GMT</lastBuildDate>
    <language>en-US</language>
    <sy:updatePeriod>hourly</sy:updatePeriod>
    <sy:updateFrequency>1</sy:updateFrequency>
    <item>
      <title>Has Agile jumped the shark?</title>
      <link>https://docs.microsoft.com/archive/blogs/stephen_cohen/has-agile-jumped-the-shark</link>
      <pubDate>Mon, 02 May 2011 17:28:00 GMT</pubDate>
      <dc:creator><![CDATA[stephen cohen]]></dc:creator>
      <guid
        isPermaLink="false">https://blogs.msdn.microsoft.com/stephen_cohen/2011/05/02/has-agile-jumped-the-shark/</guid>
      <description><![CDATA[The Agile community is in danger.&nbsp; As someone who has been around Agile for a very long time I...]]></description>
      <content:encoded><![CDATA[<p><span style="font-size: x-small;">The Agile community is in danger.&nbsp; As someone who has been around Agile for a very long time I find myself asking; Has Agile abandoned its core premise and begins a decline in quality that is beyond recovery.</span></p>
<p><span style="font-size: x-small;">First the punch line.&nbsp; Go to Wikipedia and search for "Jumping the Shark". </span><a href="http://en.wikipedia.org/wiki/Jumping_the_shark"><span style="font-size: x-small;">http://en.wikipedia.org/wiki/Jumping_the_shark</span></a><span style="font-size: x-small;">&nbsp;&nbsp; Here's an excerpt;</span></p>
<p><span style="font-size: x-small;">"Jumping the shark is a widely used idiom, first employed to describe a moment in the evolution of a television show, characterized by absurdity, when a particular show abandons its core premises and begins a decline in quality that is beyond recovery."</span></p>
<p><span style="font-size: x-small;">I am old enough to remember the television show referenced.&nbsp; Happy days.&nbsp; Specifically the episode where the Fonzie, a character that for the most part was endearing and, for kids of a certain age, epitomized cool and confident, with just a bit of the leather-jacket-wearing-don't-listen-to-your-parents rebel mixed in, was inexplicitly required to literally jump over a shark on water skis.&nbsp; Indulge me in a bit of revisionist history as I prefer the often retold, but unfortunately inaccurate version that has Fonzie&nbsp; jumping a shark tank on his motorcycle.&nbsp; Keep this image in mind, we will be coming back to it.</span></p>
<p><span style="font-size: x-small;">Agile began as an uprising.&nbsp; Individuals coming together to&nbsp; ever so quietly rail against the way things were.&nbsp; Some who are now nearly household names and others that were, and remain even today nearly nameless, focused raw emotion, real world tested skills, and a penchant for philosophy and patterns to create the Agile Manifesto and the supporting principles.&nbsp;&nbsp; Without intentional marketing the ideas took on a life of their own.&nbsp; Individuals became groups and soon whole communities.&nbsp; The earliest Agile conferences brought likeminded agilest together to debate quality, technology, and philosophy.&nbsp; The early gatherings&nbsp; while serious in intent, never failed to loose site of a core tenant at that time.&nbsp; Great software was a team sport.&nbsp; Inclusive, open, and adaptable it seemed to be inherently fun to build, fun to use, and fun to talk about.&nbsp;&nbsp; </span></p>
<p><span style="font-size: x-small;">Agile hadn't yet moved from early adopters to main stream.&nbsp; Agile leaders and the growing number of followers were innovating.&nbsp; Much like the early seasons of Happy Days, being different engaged an audience, being entertaining grew that audience at an impressive rate.&nbsp; Somewhere around the fourth conference (and the fourth season of the TV show) things took off.&nbsp; The number of attendees skyrocketed.&nbsp; Agile was being discussed well beyond the original community.&nbsp; If they had the funding they could have easily sold lunch boxes and action figures.&nbsp; Happy Days did.</span></p>
<p><span style="font-size: x-small;">Not much after the 6th Agile conference you could begin to hear it.&nbsp; The soft rumble of the motorcycle idling just out of sight.&nbsp; The Agile community was splitting into camps and worse yet, being Agile became a way to make money.&nbsp; For some, it was absolutely justified.&nbsp; They had taken the freedoms, the open mindedness, and the focus on delivering high quality value to heart and were measurably better at delivering software. [Short aside; no one was really able to measure Agile in the real world until many years later when Scott Ambler was able to conduct well-formed surveys.]&nbsp; Others were seemingly focused on making Agile bigger, branding, marketing, training , and certification were the new foci.&nbsp; Knowing how to help others be Agile was becoming more important than actually being agile.&nbsp; It was as if you could see the crew pulling the shark tank onto the conference floor.&nbsp; The ramp was there and that idling engine was becoming a full throttle roar.</span></p>
<p><span style="font-size: x-small;">The conference was consistently beating prior year attendance records.&nbsp; Agile books were top sellers.&nbsp; New generations wanted to know how to be agile.&nbsp; They needed to know how to be agile.&nbsp; Software had become more complex and projects were, at least in the popular consciousness, failing at unprecedented rates.&nbsp;&nbsp; Large system contract bid packages began requiring Agile teams as a condition of award.&nbsp; Agile was booming.&nbsp; Being process focused, having a methodology, made Agile look like a necessary and undeniably correct way to deal with the chaos.&nbsp; No longer relegated to ideals of a few radicals it had become a full-fledged industry.&nbsp; And just then, like the fictional character it was to become, our Agile motorcycle began a full throttle approach toward the shark tank.</span></p>
<p><span style="font-size: x-small;">The long slow fall from Fonz (cool and capable)&nbsp; to Fozzy (the bear Muppet empty of real value but oh so entertaining in his own way) happened with little resistance.&nbsp; The philosophy, the fun, the ideals of being agile (with a small a) was now an industry with rules, dues, and on-going attempts to define those who are Agile from those not deemed worthy of being Agile (with a capital A).&nbsp; Barely a shadow of its former self Agile is now doing the unthinkable.&nbsp; Agile is performing.&nbsp; Agile has come to need an audience and Agile seems to believe that when it lands on the other side of that shark tank it will be met with applause.&nbsp;&nbsp; And it might &hellip; others in the now very large, completely main stream Agile camp will applaud their hero.&nbsp; What they won't get is respect, at least not mine. Not for that.</span></p>
<p><span style="font-size: x-small;">The originally conceived agile is still out there, doing good, helping people, delivering software.&nbsp; Free from the prescriptive methodologies and in many ways providing value well beyond developers and the software industry.&nbsp; These quiet champions continue without regard for the circus that the Agile brand has become.&nbsp; They are smart enough to leverage the popularity of Agile without becoming distracted by the applause, the self-congratulating, and business driven industry parts.</span></p>
<p><span style="font-size: x-small;">Just like Happy Days after the Fonz jumped the shark, Agile still believes it's popular, even famous.&nbsp; And like the television show it will undoubtedly continue on for many years trying to meet its own expectations&nbsp; and recapture the greatness it had if only for a moment.&nbsp; I do hope it will.&nbsp; I will continue, in whatever small way I can, to do what I can to support agile .&nbsp; If only to draw attention to the shark still in its tank, still swimming in small circles, ramp and motorcycle long gone, wondering what the noise was and whether its next meal will come suddenly from above or not.</span></p>
<p><span style="font-size: x-small;">&nbsp;</span></p>]]></content:encoded>
    </item>
    <item>
      <title>Just when is it good enough?</title>
      <link>https://docs.microsoft.com/archive/blogs/stephen_cohen/just-when-is-it-good-enough</link>
      <pubDate>Sat, 27 Nov 2010 14:35:02 GMT</pubDate>
      <dc:creator><![CDATA[stephen cohen]]></dc:creator>
      <guid
        isPermaLink="false">https://blogs.msdn.microsoft.com/stephen_cohen/2010/11/27/just-when-is-it-good-enough/</guid>
      <description><![CDATA[In theory, software development is precise.&#160; Some even argue it's a kind of engineering.&#160;...]]></description>
      <content:encoded><![CDATA[<p><a name="OLE_LINK5"></a><a name="OLE_LINK4"></a><a name="OLE_LINK3"></a><a name="OLE_LINK2"></a><a name="OLE_LINK1">In theory, software development is precise.&#160; Some even argue it's a kind of engineering.&#160; After all it's just ones and zeros ... processor gates and electrons.&#160; Personally, I disagree. </a></p>  <p>   <br />Software is an ethereal manifestation built by people for people.&#160; It's barely bound by the laws of nature and rarely if ever viewed by any 2 people the same way.&#160; Even those who truly understand how it’s made rarely agree on how it should work. </p>  <p>   <br />Consider the simple requirement; “Add two numbers and return the result.”     <br />Child's play right?&#160; Computing power is clearly purpose built to do math.&#160; So just what does it take, what do we need to understand to be good enough to call this one, very simple requirement, done?&#160; </p>  <p>A little decomposition is in order.</p>  <p>   <br /><b>Add.      <br /></b>A quick internet search on 'Add' returns nothing about math in the first dozen entries.&#160; Both Bing and Google think a request to understand Attention deficit disorder is more likely than someone trying to understand this simple mathematical term.&#160; Dictionary.com has 4 possible verb definitions and the first has two 'or' statements.&#160; Seems the meaning of Add isn't so clear.&#160; Darn ambiguous English.&#160; Let's run with &quot;to find the sum of&quot; for now.</p>  <p>   <br /><b>Two numbers.      <br /></b>Oh yes, another trap.&#160; Is this any two numbers?&#160; Can we allow 5 and VI to be summed to 11?&#160; Will they be constrained to whole numbers? Will 4.967832 be okay or should it be rounded to 5?&#160; What about 4 1/3 or Pi?&#160; Convert to decimal and round first or after summing?&#160;&#160;&#160; Is there any additional requirement to validate the two numbers individually, or as a pair?&#160; Are these numbers abstract or maybe representing reference numbers of a known set?&#160; Something like classic library reference numbers from the Dewey decimal system.&#160; They went from 000 to 900 with 2 places of precision following the main classification.&#160; So numbers above 999 would be inappropriate.</p>  <p>   <br /><b>And.      <br /></b>Let's face it.&#160; Good requirements shouldn't be compound statements.     <br />Is this a condition of success?&#160; Would correctly solving the mathematical expression without returning be another form of, or maybe a partial, success?</p>  <p>   <br /><b>Return.      <br /></b>Although common parlance among technical types, return is no more precise than the rest of the requirement.&#160; Return to where?&#160; A function can return to its caller without ever leaving volatile memory.&#160; Display is implied but where isn't clear. Should it be on screen or on paper via a printer?&#160; Does it need to be placed somewhere specific on the screen such as a labeled field?&#160; And does it need to be in a specific state, say available to the system clipboard?</p>  <p>   <br /><b>The result.      <br /></b>Not to put too fine a point on it but 'the' certainly requires a singular thing effectively forbidding ranges, sets, and abstract numbers which don't result in a specific answer.&#160;&#160; Unfortunately since simple math is only a small percentage of the complete set of math operations, we would be remiss to assume... right?&#160; Even TRUE or FALSE could be as valid a return as any number.     <br />Clearly even the simplest requirement needs deeper understanding and could be implemented in more than one, and only one way.&#160; But let's make the leap. Let’s assume we know what it means to add two numbers and return the result. We still have a variety of unstated requirements to deal with;</p>  <p>   <br />How are the numbers provided?     <br />What about errors and exceptions?     <br />Do we maintain state between sessions?     <br />Can a result be used as an input later?</p>  <p>   <br />What about the quality attributes?&#160; Is it secure per session, per user, per role, or organization?&#160; How about performance and scale?&#160; Will this be done one addition at a time by a user or hundreds of times per minute by another block of code?&#160; Is it limited to direct users input, if so, how many concurrent users does it need to support?</p>  <p>JUST WHEN IS IT GOOD ENOUGH?</p>  <p>Our customers and the industry suffer from this seemingly simple question. For some it’s never good enough. They dig and they plan, and test, and retry, never quite finishing … and never releasing a product. To others it’s always good enough. Work is released constantly, sometimes great, sometimes good, and occasionally useless. It’s left up to the consumer to decide if they should use it.</p>  <p>There are some, the professionals, who strive for and more often than not achieve a balance. They hold back when necessary, dig for details as required and release valuable, useful, usable products knowing they aren’t perfect. For me, it’s not just engineering. Software development is engineering, art, craftsmanship, diplomacy, and philosophy. The result may be quantifiable, but, like ‘good enough’ the process isn’t. </p>]]></content:encoded>
    </item>
    <item>
      <title>Who cares about your Agile development processes?</title>
      <link>https://docs.microsoft.com/archive/blogs/stephen_cohen/who-cares-about-your-agile-development-processes</link>
      <pubDate>Mon, 12 Jul 2010 08:10:00 GMT</pubDate>
      <dc:creator><![CDATA[stephen cohen]]></dc:creator>
      <guid
        isPermaLink="false">https://blogs.msdn.microsoft.com/stephen_cohen/2010/07/12/who-cares-about-your-agile-development-processes/</guid>
      <description><![CDATA[I find myself thinking that the software industry is far too focused on impressing itself instead of...]]></description>
      <content:encoded><![CDATA[<p>I find myself thinking that <strong>the software industry is far too focused on impressing itself instead of delivering solutions to people</strong>.&nbsp; That somehow it's all about us.&nbsp; It isn&rsquo;t.&nbsp; In recent years we have pasted the tipping point where the means, methods, processes, and techniques we use to build bigger, more challenging, more complex things is a more significant portion of what we do than producing products, improving our skills, and sharing experience with more junior developers combined.&nbsp; The assumption that projects will fail is so rampant that it is nearly impossible to find a practitioner who will accept a gig without first declaring the process that will ensure success.&nbsp;&nbsp; Unfortunately software development isn't about process or methodologies.&nbsp; It&rsquo;s not about change or risk management, documents, or estimation. It's about providing real value to real people. It's about outcomes. Not our outcomes.&nbsp; Not how well, quickly, or even easily we created something.&nbsp; It's about what we produce and how it helps the users that should matter most. </p>
<p>We, the practicing developers of the world, have managed to share so much of how we provide value that we have actually convinced those around us that the skills we leverage to do so are so important that they too should fixate on the process not the product. We did this. We can undo it. We can undo it while keeping an eye on the quality and repeatability of the process.&nbsp; <strong>Process is, after all, only part of what we do</strong>; it&rsquo;s just one tool, something we use not something we deliver.&nbsp; It&rsquo;s certainly of no value in and of itself.&nbsp; No one should get paid solely to ensure process quality.&nbsp; Instead we should only get paid when quality is an undeniable part of our solutions to our customers problems.</p>
<p>We have to set our egos aside and ask each other, if not ourselves, why do customers want to know or even care how we do things.&nbsp; For me, it&rsquo;s simple.&nbsp; They are tired of being lied to.&nbsp; After years of unfulfilled promises and undelivered products ... hold on to your hat... they don't trust us.&nbsp; Hard to believe I know.&nbsp; After all, we are the ones who understand and control the machines they so desperately need to do their bidding.&nbsp; We, the few, have been empowered (or at least employed) to stand as judge and jury over the efficiencies of our customers business and choose for them what magic the machines should produce.&nbsp; </p>
<p>As things stand, many if not most of our customers need to seek any evidence they can proving that all of the work reportedly happening and all of the money they are spending is actually getting them closer to what they believe they are supposed to receive.&nbsp; They want, and righteously deserve, to know not just believe.&nbsp; They need assurances they can use to justify the expenses not just endless invoices for hours leading to some promise of future delivery.&nbsp; They need milestones, quality gates, reviews, weekly meetings, and status reports.&nbsp; They want to hold us accountable and in response we offer them transparency.&nbsp; <strong>Let me be clear here, transparency isn't accountability</strong>.</p>
<p>My good friend Scott Ambler has taken to discussing the integrity debt of the industry.&nbsp; I think he is really on to something.&nbsp; This is the debt that accumulates when we do stupid things like charge our customers to learn about us and how we do things (Bing "Certified scrum product owner".&nbsp; That&rsquo;s right we are going to charge our customers to be better&hellip; uh ... customers ). Integrity has become as scarce a commodity as truly successful projects.&nbsp; It's out there and when you do come across it, you are likely to be facing mountains of it.&nbsp; Integrity attracts integrity.&nbsp; Nonetheless, its absence is nothing less than a cancer in the industry, eroding trust, driving more meetings, more milestones, and paying for new cars and college funds for attorneys everywhere.&nbsp; <strong>Without integrity and trust we can never truly elevate our industry to a true profession</strong>.&nbsp; </p>
<p>In the most recent batch of prescriptive methodologies flying the "Agile" banner as if it were theirs and theirs alone, there seems to be a compulsion to treat everyone remotely related to a project as peers, equally responsible for success or failure.&nbsp; <strong>Self organizing, self managing, self evaluating, self-testing ... just plain selfish.&nbsp; </strong>The mob, justified by group think and zealously sure that doing things "their way" will ensure success, takes every opportunity to communicate.&nbsp; As valuable as communication is to any team it's far from a universal suave healing wounds left by information overflow, analysis driven paralysis, loss of focus, and many, many other ailments that haunt any team working on complex tasks.&nbsp; Like transparency, high levels of communication are a good even necessary component but far from a dominate force for success.</p>
<p>I'm not calling for a full fledge revolt on process and process improvement.&nbsp; Just tone it down. Great process will not guarantee delivery nor will poor processes doom a similar attempt.&nbsp; Process is merely part of a larger whole.&nbsp; It&rsquo;s true, we need to be better and yes, process, rigor, and repeatability are some very important tools in our toolbox.&nbsp; I know people entering the profession want to believe there is a way that works.&nbsp; They want to learn from those who came before them and understand how they too can best serve their customers.&nbsp; Ah, who am I kidding; like anyone new to a job they want to be productive now without the pesky burden of experience.&nbsp; </p>
<p>I propose that <strong>process transparency is more akin to an effective sewage system than a crowning achievement</strong>.&nbsp; It sure was an important advancement in its day and it has clearly improved the lives of many.&nbsp; After all this time, users should be able to assume it&rsquo;s there, and it has an inherent capacity to serve all who need it.&nbsp; No pomp, no circumstance, no lengthy discussions on it value or impact.&nbsp; And much like a sewer system, no one really cares about how it works.</p>]]></content:encoded>
    </item>
    <item>
      <title>Requirements aren't evil, we are.</title>
      <link>https://docs.microsoft.com/archive/blogs/stephen_cohen/requirements-arent-evil-we-are</link>
      <pubDate>Mon, 05 Jul 2010 12:58:54 GMT</pubDate>
      <dc:creator><![CDATA[stephen cohen]]></dc:creator>
      <guid
        isPermaLink="false">https://blogs.msdn.microsoft.com/stephen_cohen/2010/07/05/requirements-arent-evil-we-are/</guid>
      <description><![CDATA[Requirements aren't evil, we are.&#160; Really.&#160; We, the software developers of the world are...]]></description>
      <content:encoded><![CDATA[<p>Requirements aren't evil, we are.&#160; Really.&#160; We, the software developers of the world are solely responsible for the problems of our industry.&#160; It's not the process, methodology, or whatever school of thought is winning today’s beauty contest with its sleek bikini elegance and wholesome customer love.&#160; It's not the ever more sophisticated tools that promise to simplify one of the most dizzyingly complex activities man has ever conceived.&#160; It’s us.&#160; Each and every man woman and child (do we allow children to code?&#160; Aren't there laws against that kind of thing?) that looks a customer, user, or stakeholder in the eye and says, in a most believable tone, &quot;I understand, and together we will build&#160; &lt;fill in the blank with whatever pie in the sky wishful thing your customer, user, or stakeholder is asking for&gt;&quot;.</p>  <p><strong>That's the moment of truth.&#160; The moment when customer expectations are set.&#160; When we tell them, with as much sincerity as we can muster, that they are not only a part of the team but the sole owner of the definition of success.</strong>&#160; </p>  <p>Read that last sentence again ... go ahead, I'll wait right here.</p>  <p>Do you see it?&#160; The hypocrisy&#160; the abdication of authority to the customer.&#160; The slimily, irresponsible, verbal sleight of hand that forces the burden of success onto the shoulders of the very person who has come to you for help.&#160; If that isn't evil incarnate I don't know what is.&#160; Don't get me wrong, I'm right there with you.&#160; I've done it.&#160; Worse yet, I've done it knowingly.&#160; After all that’s the business we’re in. Customers want something and we want them to pay us to build it, or at least try to build it.&#160; </p>  <p>We are unique, but not in a good way.&#160;&#160; Unlike the power classes that have come before we have had authority handed to us without the burden of contributing back to the system we have been so boldly authorized to defile.&#160; Contrast that with the titans of the age of enlightenment who did prosper on the backs of others but they did so while also providing socially beneficial innovations.&#160; Innovations in the form of new types of government, education for all, and my personal favorite, plumbing.&#160; Sure they were shunned as oppressive but in broad strokes they improved things.&#160; Even the power barons of the industrial age brought innovation to the masses.&#160; They built real, tangible things. OK, so they endangered workers with factory conditions that made smoking look downright good for you.&#160;&#160; More important, they used their own money (well, their families’ money) to control markets, exploit workers, and manipulate society.&#160; The consumers of their goods paid for things that were, by the manufacturers’ standards, complete and useable.&#160; This actually gave the barons of industry the moral high ground over the lowest form of capitalist in their day, the stock brokers.&#160; The brokers were peddlers of the wares produced by others.&#160; They taxed the transaction with little value added, essentially making money from money without material contribution.</p>  <p>That was then.&#160; Let’s get back to now, back to us.&#160; <strong>We, the titans of the information age don't produce anything tangible.</strong>&#160; We don't even come up with the good ideas:&#160; our customers do that. Yet we dare to demand payment for our willingness to try to build what they envision.&#160; We make promises of delivery that are statistically* not worth the air consumed to express them.&#160; Even our contracts fail the basic premise of a contract in every other industry.&#160; Elsewhere, in modern and older times, contracts provide a durable, binding way to ensure all parties knowingly and, on occasion, equally share risks and legal protections.&#160; We don't have building standards.&#160; No association ensures we are self-policing.&#160; No law requires our failures injure us as they do our customers.&#160; Did I mention evil?</p>  <p>I know what you're thinking.&#160; I can hear your voice in my head as I write this.&#160; &quot;<strong>It's not our fault!</strong>&#160; How can we possibly be held responsible when the customer is unclear in their wants, needs, and desires?&quot;&#160; Right you are.&#160; What are we, mind readers?</p>  <p>This is where I have to reintroduce our hero and villain, that favorite of all software development fall guys, the requirements.&#160; Requirements have, for most of software developments history, been our best defense against the endless ambiguity we suffer at the hands of our customers.&#160;&#160; After all, requirements make those contracts work. Oh how I love them.</p>  <p><strong>In the hands of a master software developer requirements are both carrot and stick</strong>.&#160; They provide a means to entice the customer to participate.&#160; They can deeply affect the timing and value of the solution delivered.&#160; When seen as opportunities, not obstacles, requirements cradle a project in the warm embrace of constraints.&#160; They define boundaries within which the solution lays and beyond which no developer should trespass.&#160; They set the bar (achievable or not) that the team can focus on and on good days exceed.&#160; </p>  <p>Of course master software developers are few and far between.&#160; And to be fair so are really irresponsible, malicious, incompetent software developers.&#160; The world as we know it is, by its very definition, filled with average software developers.&#160; If you want to get really picky it’s the 75% middle portion of the bell curve, not the mathematical average but let's not drift too far off topic.&#160; The more important point is that we are focused on the bulk of the population of all software developers who do the bulk of the work.</p>  <p>Here's where it starts to get tricky.</p>  <p>I'm going to define an average developer as having three to five years of real experience.&#160; You know, paid work with customers they aren't related to, or somehow close to anyone they meet in college.&#160; During those three to five years it is likely that our average developer has only worked on one or two projects requiring more than four or five people including themselves.&#160; They have been on only one or two projects from the very beginning and even then are statistically* not likely to have stayed engaged from inception to delivery.</p>  <p>Consider the now infamous chaos report.&#160; Over the last 10 years the industry has never done better than 35% of projects started actually ending in success.&#160; If you are willing to accept that as true, and you should ... I read it on the internet... then it is not too much of a leap to believe <strong>65% (or more) of the industry has NEVER delivered successfully.</strong>&#160; They have never tasted the blood in the water that is success.&#160; What form of insanity is it that we believe this average software developer could ever deliver on time, in budget, and within scope?&#160; </p>  <p>And what about all those project leads, technical leads, project managers, program managers, high end consultants and coaches (some of which spent as much as two full days achieving the vaulted Master credential), that bring their vast experience to bear guiding and molding our average software developers into better, more capable members of our little IT society?&#160; What do they bring to the table to better ensure success?&#160; Let’s count the ways shall we?</p>  <p>First among all credentials is proof of experience, and yes, by proof of experience I mean resume.&#160; <strong>It is the rarest of seasoned IT professional that doesn't have 15 to 20 years of experience proudly displayed in chronological order.</strong>&#160; They have been working with computers since that first fateful college course where they spilled &quot;that&quot; box of punch cards and spent most of the night sleeping on the couch in the computer lab eating pizza and waiting to hear that their punch card program did or did not run.&#160; They have worked with a dozen big name companies leaving one very important project (before it delivered) to take on a more complex, more challenging project with an even bigger name company.</p>  <p>Impressive, yes.&#160; Comprehensive, you bet.&#160; And look at that font!&#160; </p>  <p>The trouble isn't what they have done but what they can do.&#160; Are you working with punch cards?&#160; I'd be willing to bet a Euro you aren't.&#160; Do the leading edge technologies they helped create years ago still lead anything?&#160; Probably not.&#160; Last, what happens when you ask what I believe to be the most important question of all; what did they materially contribute to their most recent success?&#160; Not what their team did, but what exactly did they do, with their own hands, under their own power.&#160; What problem did they correctly predict, and ultimately prevent or solve?</p>  <p>In a recent round of candidate interviews I couldn't help but replay a scene from that seminal movie of the 20th century, Office Space.&#160; When asked by the Bobs to describe his job our proto-typical middle manager proclaimed that he &quot;... was a people person damn it!&quot; [He] takes the requirements from the customer and gives them to the engineers.&quot;&#160; It is an all too common, and in my opinion, sad end to many otherwise brilliant technical careers when the decision is made to promote them into management.&#160; Expecting their hands-on delivery skills to magically transform into leadership and organizational skills is little more than a folly worthy of a Shakespearian tragedy.</p>  <p><strong>If we don't have a vast army of experienced leaders who can guide our average developers to success, what else could we possibly provide them to improve their chances of actually delivering value to users?</strong>&#160;&#160;&#160; Every culture since the dawn of time has been defined by how lessons learned are passed from generation to generation.&#160;&#160; Being good at passing learning forward to enables subsequent generations to not only avoid the mistakes of their predecessors but to exceed their greatest achievements with even greater, uh, achievements is an indication of maturity our industry has yet to achieve.</p>  <p>Unfortunately software developers have more in common with the Neanderthal than modern man.&#160; While modern man has a lifespan creeping up on 100 years, allowing multiple generations to overlap, our current software developers struggle with generations as short as a few years and technology shifts likely counted in months.&#160; </p>  <p>The ever increasing speed of technical change has only amplified our problems.&#160; <strong>Lessons learned during one generation simply don't apply to the next. </strong>Memory management in the 80's isn't relevant to any but the rarest few who build the runtime compilers the rest of use to handle those low level tasks.&#160; Even those lessons that do apply are largely left to oral historians to pass through mentor / mentee relationships.&#160; I know that sounds ridiculous but as a group we have failed to create highly available, searchable repositories where less experienced software developers can find relevant information that would allowed them to avoid the mistakes of the past.&#160;&#160; The web while arguably comprehensive and searchable is a bit too volatile and fails to provide vetted, definitive information.&#160; When faced with a new challenge our average developer will likely take one of the top few returns from a search and try to blindly apply it to the problem at hand.</p>  <p>Our skills may be atrophying with each rapidly passing generation but that's nothing compared to the speed of change in user expectations.&#160; Long gone are the days when users were impressed by two documents side-by-side on the screen.&#160; Not only do they expect every solution to use the very latest (frequently untested if not unstable) technology but they want to be involved in the less technical portions of a solutions’ creation.&#160; They demand to dictate the colors, the layout, the features, the workflow, and more.&#160; After all who better to decide how to elegantly layout a user interface than the business subject matter expert who struggles with document page numbers and printing labels?</p>  <p>That brings us full circle to requirements.&#160; Once we agreed that a customer could have their way with a solutions’ design we needed to capture their ideas, both good and oh-my-god randomly insane.&#160; Way back in the 70s and 80s this wasn't as much of a problem.&#160; Technology was simpler and the wants of our customers were easy to describe in plain text.&#160; <strong>Those simpler days are long, long gone but we continue to both define requirements in plain text and allow users to drive the design of solutions.</strong></p>  <p>You see, it’s not a failure of requirements management; it’s a failure of the requirements that haunt us.&#160; Contractual language is not expressive enough to capture what a system should / shall / must do.&#160; Current efforts to describe solution parts like user experience, navigation, workflow, business rules, component design, system constraints, system goals, as well as the limitless negative things a solution should not do, more closely resemble iambic pentameter than software design goals.&#160; Similarly the technical skills of past generations simply did not include the necessary soft skills that separate success from failure on today’s complex solutions.&#160; Customer management, team dynamics, interface design, and multi-disciplinary tasking are but a few skills that didn't even exist in the software development world until recently except for the truly rarified air that built multi-million dollar, sophisticated, large, complex and mission critical systems. </p>  <p>The answer lies, as I mentioned at the beginning of this rant, with each of us.&#160; <strong>Not only must we let go of the comfortable ways that have served us for so many years but we need to do what for many is simply unthinkable.&#160; We need to work together. We need teams of skills that are applied as part of a thoughtful and well-choreographed improvisational theater.</strong>&#160; We need to accept user input as rough cut story boards from which clear decisions will be refined.&#160; User input is not a legal or moral mandate handed down from on high. User requirements are just one of the many variables that will go into the stew that is a modern software solution.&#160;&#160; After all, this is far more art than science.&#160; </p>  <p>Our job is to deliver a high quality solution to the users.&#160; This is far more likely to be successful if the entire effort is an ongoing collaboration with the very same users.&#160; Just doing our job hasn't been, and continues not to be, enough.&#160; I believe it’s our mission to build upon the successes of the past, to leverage the lessons learned, and, with each and every solution delivered, improve our industries ability to take user requirements and turn them into more than they had hoped for.&#160;&#160; </p>  <p>The sooner we;    <br />*&#160; convince ourselves and our customers that the definition of success includes, but is not fully defined by, early stage requirements,     <br />*&#160; accept our role in managing expectations and driving non-user requirements and constraints into the definition of a complete, high quality solution     <br />* see getting paid on acceptance of a high quality delivery as the norm and shun those who accept payment for merely trying, the sooner we will achieve reasonable, consistent, and equal relationships with our customers.</p>  <p><strong>As soon as we look to ourselves, our team, and our customers as the source of success instead of failure, then we will be free from the evil that requirements have become.</strong>&#160; In short, although I suspect I past short many paragraphs back, we need to participate.&#160; Much like any other part of the software development process, requirements need to be managed.&#160; I'm not talking about the formal requirements management process.&#160; I'm talking about acting with, for, and against them intentionally.</p>  <p>This should be the kind of problem software developers enjoy.&#160; It's a multi-dimensional puzzle with both slowly changing dimensions and temporal components.&#160; Requirements exist on multiple planes immune to simple-minded linear thinking.&#160; Requirements don't have a lifecycle.&#160; They are simultaneously known and unknown, both immutable facts and infinitely malleable concepts.&#160;&#160;&#160; </p>  <p>We routinely refer to requirements as high level or detailed, as core, original, technical, system, or functional but we fail to evaluate these and many other labels over time.&#160; <strong>Somehow requirements have become some kind of&#160; guide rail protecting our nearly out of control car from careening off the well-known road to success and exploding into the horrific but certain-to-have-killed-all-occupants ball of fire used in every cliché car chase Hollywood has ever produced.</strong>&#160; Just like the movies, it’s an illusion if not more correctly branded as a delusion.&#160; </p>  <p>Guard rails won't prevent a truly out of control car from leaving the road and cars don't burst into flame on impact.&#160; Similarly requirements aren't going to keep your project in check and you won't fail if you move, change, or even disregard them.&#160; Safety comes from skillfully negotiating the turns in real time.&#160; It comes from looking ahead, sometimes far ahead, identifying threats both potential and real, and changing course. </p>  <p><strong>That's the secret.&#160; Pay attention, make choices, and act on those choices.</strong></p>  <p>If you want to succeed in software development, if you want to deliver value to real users, if you ever hope to mature from the current generation repeating the mistakes or prior generations, if you are to set aside the hubris that you are somehow in control and managing the chaos that is the creation of a software solution, you need to stop treating the needs of your customers as static.&#160; Whatever form requirements may take they are merely snapshots of the shadows cast by fleeting ideas.&#160; Good clues but hardly stable, contractual definitions of success.</p>  <p>This is particularly onerous on large projects spanning more than 6 or 12 months.&#160; Everyone learns, things are discovered, staff comes and goes, and priorities change every day from the very first.&#160; What kind of crazy is it to believe that this one aspect of the project is somehow immune?&#160; Software, really great software, while a reflection of the developers who create it, is an extension of the people that use it.&#160; People, not a person.&#160; People with a broad spectrum of wants and needs.&#160; People who are affected by time and politics.&#160; Great software gets to version 2.&#160; The users will never stop wanting change.</p>  <p>While every solution must be technically correct, performant, and stable, it is equally important that it be inventive, capable, engaging, and even fun.&#160; I have never seen a requirement for fun but I know solutions that are enjoyable to use seize market share and live for a long, long time.&#160; </p>  <p>We need to step into the light, banish the evil, and act like the mature professionals we claim to be.&#160; Through the continuous re-evaluation of the definition of 'done' we will be able to increase the likelihood of successfully helping our customers.&#160; <strong>As software developers it is our ability to listen to our customers throughout the process not just during some artificially time boxed requirements gathering phase and tell them the truth about their wants, needs, hopes, and desires, with all the complexities, and painful realities that transform our customers from being part of the problem to being part of the solution.</strong>&#160; Unlike those who hire us to turn dream into virtual reality we need to be proactive and deeply, personally responsible.</p>  <p>&#160;</p>  <p>*any similarity to real statistical analysis living or dead is entirely unintentional.&#160; These are completely unfounded statements.</p>]]></content:encoded>
    </item>
    <item>
      <title>10 analogies for creating software (that aren't building construction)</title>
      <link>https://docs.microsoft.com/archive/blogs/stephen_cohen/10-analogies-for-creating-software-that-arent-building-construction</link>
      <pubDate>Sat, 23 Jan 2010 09:24:00 GMT</pubDate>
      <dc:creator><![CDATA[stephen cohen]]></dc:creator>
      <guid
        isPermaLink="false">https://blogs.msdn.microsoft.com/stephen_cohen/2010/01/23/10-analogies-for-creating-software-that-arent-building-construction/</guid>
      <description><![CDATA[Software has long suffered with the analogy of building construction. While it is certainly handy,...]]></description>
      <content:encoded><![CDATA[<P>Software has long suffered with the analogy of building construction. While it is certainly handy, and generally well accepted, I would like to propose my top 10 alternative analogies for software development.&nbsp; </P>
<P><STRONG>10- Politics</STRONG></P>
<P>Creating software is like being an elected official. You get into it to do something, achieve something, and participate in something larger than yourself. You are "forced" to take on non-productive tasks like fund raising and campaigning. Eventually you stop fighting it and set aside a (growing) percentage of your otherwise productive time. Accomplishment slowly moves from what you can do to what you can get others to do and success is measured through polling and statistics. Instead of counting delivered projects, you know what percentage of projects succeed; in place of consistently delighted customers you trend against customer satisfaction scores.</P>
<P><STRONG>9- Music</STRONG></P>
<P>Great software is like great music, you might not know it when you first encounter it but compared to some number of others it feels better. It’s a bit more popularity contest then technical superiority that makes great software great. The more people talk about it, the more they promote it, the more "air-play" it gets, the better it becomes. The music industry tracks number of spins and downloads. The software industry talks about de facto standards and broad usage. Neither speaks to the actually quality in any measurable way. Even underperforming is similar in both products. Really bad music, like its software counterpart, just doesn’t get a chance. It is generally identified by a select few and prevented or withheld from the intended audience.</P>
<P><STRONG>8- The law</STRONG> </P>
<P>Good software, like a good law, is the result of collaborative debate but rarely complete consensus. Great laws, like great software require time ... lots of time... in the real world. They need to be poked and challenged by those impacted by them. They need to be enforced to ensure a large population complies while at the same time requiring a set of experts to judge them in context, interpreting original intent against actual performance. Both may be modified to account for unforeseen circumstance but neither, once broadly accepted, can be readily discarded by the system that created them nor the population they effect.</P>
<P><STRONG>7- Battlefield management</STRONG></P>
<P>While I don't mean to in any way belittle the heroic efforts and significant risk to those in real battlefield situations; software, particularly large complex solutions, required a level of persistent focus and simultaneous strategic thinking comparable to battlefield management. Leadership, good or bad, radically impacts the outcomes. At any moment in time there are hostile activities encroaching, counter insurgency tasks in various states of completeness, supporting logistical efforts in flight, and long range strategic planning efforts undergoing review and change. All of which require error free, clear and decisive decisions. The ongoing dance throughout the team hierarchy (and even the most agile processes have a hierarchy) relies on clear communication and a willingness to do tasks without too much regard for the "bigger" picture. Success is clear in the small and much less so at the macro levels. In both software and battle, victory is as much a state of declaration as it is fact. A solution is baselined be decree, and you may or may not move immediately to the next skirmish / release.</P>
<P><STRONG>6- Mobs and animal packs</STRONG></P>
<P>Take a number of people; give them a singular, albeit ambiguous goal. Allow them to self-organize both as they relate to each other and how they address the work at hand. Accept the fact that bad things will happen and progress will not always be in the "right direction”. Congratulations, you have a mob ... or a software development team ... what's in a name anyway. Even the biggest most organized software shops have internal cliques, undeclared leaders, and sheepish followers. It is natural to seek safety in the herd and even more natural to blindly follow when "everyone" seems to be turning in a particular direction. Oddly, this is more a benefit than an issue for the development community. If too many individuals work too independently the solutions are never built, predators eat the heard one-by-one, or the herd simply abandons the individual instead seeking a consistent group dynamic over the pending chaos. Software, built by the collective, is successful of the collective survives to bill another day.</P>
<P><STRONG>5- Medical diagnostics</STRONG></P>
<P>When you have a problem you go see a doctor. When our customers have a problem they turn to software. Oh sure, there are times when things are going well and an organization takes preventative measures. It might be improved exercise and diet or the software equivalent of continuous improvement and rigorous process. It might be a simple yearly check-up where they review well-known and meaningful measures from the last period against the current state or identify metrics that don't seem right and require additional action. Unfortunately these preventative good habits are truly rare in the IT world. Instead the most common case is to deal with a traumatic injury. To reactively mobilize, triage the issues, occasionally diagnose the underlying cause, and devise a treatment which will at least relieve the symptoms. Some customers are delighted to "feel better", some demand a real cure and other are simply hypochondriacs, never satisfied, always fearful, and would rather see activity and never actually concern themselves with progress.</P>
<P><STRONG>4- Diplomacy</STRONG> </P>
<P>Whether it is your first time in a new culture or your first foray into a new business vertical, software professionals need the skills of a diplomat. They need proficiency with multiple languages, and enough empathy to intuit what isn't stated but is still required for understanding. If a stranger from a strange land who doesn't speak a language you recognizes sits across from you, lifts a cup of liquid from the table and says "flubber", what do you suppose they are telling you? "Flubber" is cup? Or is it liquid or are they toasting to you? Creating a software solution that adequately addresses the needs of real people requires soft skills before hard skills. Much like a diplomat, IT professionals need to gently interrogate customers, users, stakeholders, team members, and peers. Listening and questioning trump pure knowledge every day. Generally imposing ones assumed knowledge too early in the process creates haunting errors un-resolvable later on. What one might know to be true is irrelevant in the face of learning and understanding what those around you believe to be true.</P>
<P><STRONG>3- Team sports</STRONG> </P>
<P>Building software has more in common with team sports than simply requiring a well-functioning team to succeed. Unlike brick and mortar construction which has a large number of well-known examples against which complete can be judged, both software and team sports play until they are out of time. They strive to achieve throughout the available time period but the time box rules the overall process. How much you achieve, be it points or requirements, touchdowns or iterations, goals or scenarios, is fluid. More often than not success is doing just a little bit better than the customer expected. Delivery alone is good, but beating the point spread makes everyone that much happier. </P>
<P><STRONG>2- Driving in dense traffic</STRONG></P>
<P>Building software is like driving in dense traffic. You control your immediate surroundings and there are clear boundaries between what you can affect and what should affect you. You look ahead and change lanes based on the conditions of the moment only to have those conditions change immediately afterwards. Others nearby have goals of their own. They too are empowered with little thought of you or concern for your choices. You’re as much a part of their changing environment as they are of yours. No car in the flow can make a choice in isolation. Just like the evolving subsystems within an enterprise. Each seems discrete. Planning, based on known current and best guesses of the future, is important, even useful, but must continuously adapt. Changes made to any one will, intentionally or through unpredicted side effect, impact all others.</P>
<P>And my number one replacement for building architecture as a metaphor for software development is;</P>
<P><STRONG>1- Sailing</STRONG> </P>
<P>Leading a development team is much like captaining a ship. You know where you began, you were there. You know where you are for the same reason. You know where you want to end up and you have a plan to get there. You lean on your experience and the skills of your team. You apply the best tools available. Even so, the weather, the tides, and the general randomness of the universe will find a way to challenge you. Simply following the coast line requires continuous observation. Every detail of every part matters, and every part doesn't work perfectly. The plan on paper is nearly a straight line, but the real world finds even the smallest variation from perfect and creates unforeseen challenges. When things are going well you must look for the problems you might have missed. You need to perceive the unseen rocks below the waterline. Usually, things aren't going to go well. You adapt, adjusting course, conceding time, but never forgetting the destination. Anything less would leave you and your crew simply lost at sea.</P>]]></content:encoded>
    </item>
    <item>
      <title>Requirements are tools not weapons</title>
      <link>https://docs.microsoft.com/archive/blogs/stephen_cohen/requirements-are-tools-not-weapons</link>
      <pubDate>Sun, 29 Nov 2009 19:59:22 GMT</pubDate>
      <dc:creator><![CDATA[stephen cohen]]></dc:creator>
      <guid
        isPermaLink="false">https://blogs.msdn.microsoft.com/stephen_cohen/2009/11/29/requirements-are-tools-not-weapons/</guid>
      <description><![CDATA[Consider these requirements;  · The system shall properly calculate the taxes due at the time of...]]></description>
      <content:encoded><![CDATA[<p>Consider these requirements;</p>  <p>· The system shall properly calculate the taxes due at the time of payment.</p>  <p>· The system shall properly display the location and speed of inbound projectiles.</p>  <p>· All users will only be able to change data appropriate to their role.</p>  <p>They are a clear example of poor communication and are likely to lead to more poorly managed customer expectations. I doubt any requirements analyst worth their salt would consider any of these adequate. They are at best ambiguous <b>and there is little doubt that ambiguous requirements are frequent contributors to troubled projects</b>.</p>  <p>That being the case, just what is it that would make these and other ambiguous requirements better? What would make then more achievable? More importantly, what would allow us to deliver well and in such a way as to meet the needs of our customers? While I would love to propose that all requirements include their definition of a successful outcomes and the metric that defines success I am more concerned about the current trend toward wielding requirements as a weapon instead of using them as a tool to further success.</p>  <p>All requirements, functional, technical, user, documentation, security, performance, etc... can be measured. It's just hard. It's the kind of hard that seems to get sweep aside because it takes too much time at a time when everyone wants to just get to work<b>. It requires non-development skills like interviewing, analysis, and negotiation.</b> It forces teams with short timelines, little budget, and high expectations of achievement to focus on the business of the users, something they have little control over, and not themselves.</p>  <p>On the one extreme,<b> </b>failing to properly define the requirements has been pushed aside by the new generation of agile practitioners as too much upfront work or a fool’s errand. On the other extreme is the formal community who may defer development until all the &quot;knowns are known&quot; but have yet to engineer a litmus test for requirements quality. In the middle is a form of compromise. <b>Requirements are not the goal. I have never seen a successful project that simply met all of its requirements. </b>No, requirements don't define a project, they are just are one of many ways the team ... all roles including the customer ... creates tasks, discusses priorities and trade-offs, and works through the unavoidable complexity of discovery throughout the software development life cycle.</p>  <p>If instead of placing requirements between the team and the customer each demanding the other becomes more and more specific. You can <b>use the activity of improving the quality of the requirements as part of the necessary and on-going communications within the team</b>. Requirements like models are built to improve understanding. They are communication tools and much like other forms of communication when the quality if high everyone wins.</p>]]></content:encoded>
    </item>
    <item>
      <title>Fighting the Fear, Uncertainty, and Doubt</title>
      <link>https://docs.microsoft.com/archive/blogs/stephen_cohen/fighting-the-fear-uncertainty-and-doubt</link>
      <pubDate>Sun, 22 Nov 2009 10:24:27 GMT</pubDate>
      <dc:creator><![CDATA[stephen cohen]]></dc:creator>
      <guid
        isPermaLink="false">https://blogs.msdn.microsoft.com/stephen_cohen/2009/11/22/fighting-the-fear-uncertainty-and-doubt/</guid>
      <description><![CDATA[There are a few reoccurring themes in project recovery;&#160; Hold Fast, Don't Flinch, Lead calmly,...]]></description>
      <content:encoded><![CDATA[<p>There are a few reoccurring themes in project recovery;&#160; Hold Fast, Don't Flinch, Lead calmly, and of course the old stand by ... decide slowly but act quickly.&#160; Troubled projects are ripe with Fear Uncertainty and Doubt (affectionately known as FUD).&#160; Our job, like it or not, isn't just creating and delivering a solution but also to fight the FUD. </p>  <p>Fear in a troubled project is both motivator and obstacle.&#160; It is not uncommon for fear to be used as a weapon against the team and the customer.&#160; Most leaders who extort others are generally unaware of the effect they are having.&#160; They mean well, yet their actions and words come off as just mean.&#160; The customer begins to fear complete failure and its effect on their own careers and credibility.&#160; The team usually responds by fracturing into tribes, shunting communication, redirecting blame, and generally assuming delivery isn't possible, instead spending their time on survival. </p>  <p>Uncertainty is more insidious.&#160; Unclear goals, a staple of modern system development, mix with unclear direction to create a cloud of ambiguity.&#160; So called hard deadlines are missed without repercussion while unstated, seemingly unimportant, low level details set off a fire storm of retribution.&#160; The rules, if there ever were any, are tossed aside for a kind of anarchy.&#160; Anyone could be in charge, and anyone could derail the team.&#160; Uncertainty takes the fun out of everything.&#160; Mondays are met with dread.&#160; Meetings are missed.&#160;&#160; Schedules slip.&#160; And all the while no one knows why. </p>  <p>While fear and uncertainty are evil in many ways, Doubt is by far the most dangerous.&#160; Doubt requires a mere statement from a trusted source made with conviction and certainty to heard by someone who accepts it at face value.&#160; A senior team member might be overheard saying; &quot;There's no way this is going to work.&quot; in a break room by a more junior person.&#160; It doesn't matter that the statement was about microwaving jelly beans.&#160; The credibility of the source makes the statement true.&#160; Although born out of context it is more likely than not be repeated ... spreading doubt.&#160; Worse yet, the unwitting leadership is suddenly faced with a team that thinks the recently agreed upon statements of success were lies, and the leaders may never know why the teams attitude began its downward spiral. </p>  <p>Recovery is as much about the human factors as the technical ones.&#160; Of course you have to be good at the technology.&#160; You must be able to leverage your experience delivering successfully in the past and you must have a broad array of process and practices to apply throughout the lifecycle of the project.&#160; It's just not enough unless you can apply all of those things in such a way as to reduce if not eliminate fear, remove uncertainty, and help those who doubt see the inevitability of success.</p>]]></content:encoded>
    </item>
    <item>
      <title>It's just software ...</title>
      <link>https://docs.microsoft.com/archive/blogs/stephen_cohen/its-just-software</link>
      <pubDate>Mon, 26 Oct 2009 15:40:22 GMT</pubDate>
      <dc:creator><![CDATA[stephen cohen]]></dc:creator>
      <guid
        isPermaLink="false">https://blogs.msdn.microsoft.com/stephen_cohen/2009/10/26/its-just-software/</guid>
      <description><![CDATA[It's just software ... really, it's just software.&#160; It's not as important as your family, or...]]></description>
      <content:encoded><![CDATA[<p>It's just software ... really, it's just software.&#160; It's not as important as your family, or your health.&#160; It (generally) doesn't kill people or change lives.&#160; That kind of thing is left to real people.&#160; I will concede that those real people may be using software to help them kill people or change lives but the software alone is neither good nor evil.&#160; It does no harm, and in the specific case of software under construction, it can wait a day, a week, or a month.&#160; </p>  <p>In this era of fast small deliverables,&#160; short timelines, and rapidly changing goals it's easy to forget it's just software.&#160; As an industry we are facing decreased demand due to macro-economic pressures, and increasing expectations as our users first become accustomed to, then jaded by, the latest eye candy and features <strong>all of which tend to drive us to work as though our lives depended on working.</strong>&#160; Today’s reality is quite the contrary.&#160; Our lives may depend on our not working. </p>  <p>We are nearing epidemic H1N1 virus levels.&#160; Entire organizations will close as the percentage of sick employees climbs upward.&#160; So whether you are home with a sick child or just feeling ill yourself, do everyone a favor.&#160; <strong>Stay home and just keep telling yourself ... It's just software.</strong></p>]]></content:encoded>
    </item>
    <item>
      <title>Agile versus Formal modeling</title>
      <link>https://docs.microsoft.com/archive/blogs/stephen_cohen/agile-versus-formal-modeling</link>
      <pubDate>Fri, 10 Jul 2009 08:38:50 GMT</pubDate>
      <dc:creator><![CDATA[stephen cohen]]></dc:creator>
      <guid
        isPermaLink="false">https://blogs.msdn.microsoft.com/stephen_cohen/2009/07/10/agile-versus-formal-modeling/</guid>
      <description><![CDATA[In response to a recent discussion over at Yahoo on the requirements Engineering list, a question...]]></description>
      <content:encoded><![CDATA[<p>In response to a recent discussion over at Yahoo on the requirements Engineering list, a question was posed as to why “just enough” was ever okay when creating a model.&#160; After all incomplete models or improper use of a modeling standard has to be bad… right?&#160; I believe there is another perspective on modeling to consider.&#160; That is, WHY a model is being created.&#160; I see 3 reasons for modeling; </p>  <ul>   <li>Modeling to communicate,</li>    <li>Modeling to understand, and </li>    <li>Modeling for reference. </li> </ul>  <p>In reverse order, <strong>Modeling for reference</strong> <strong>is the traditional goal</strong>.&#160; It is intended to read by someone (usually at some future point in time) new to, or somehow removed from the original development effort.&#160; The model needs to neither mislead nor have important gaps and must comply with the standards for that model type.&#160; After all the standards allow a reader to understand the model without the original context. </p>  <p><strong>Modeling to understand is a more requirements gathering effort</strong>.&#160; The creator is the likely consumer and it is intended to be an aid, not a deliverable.&#160; Simple and well understood things need not be included instead the models tend toward fragments being analyzed instead of depictions of the whole.&#160; Think of them as quickly taken notes and relevant doodles done in your own handwriting using symbols likely to be meaningful only to yourself.&#160; As such models for understanding can be, but are not required to be good historical notes about how or why a decision was made.&#160; They are not intended to be good tools for later reference. </p>  <p>Last, <strong>modeling to communicate</strong> <strong>is done to share ideas</strong> <strong>or restate an understanding for validation.</strong>&#160; They are semi-structured whiteboard-like drawings which, once done communicating their point go quickly out-of-date.&#160; They tend to use symbols understood by the parties involved which may vary wildly from the official standards of the model type.&#160; It is far less important to be right than to be understood.&#160; However, should the model persist too long, or should someone from outside of the original discussion get their hands on it, clarity becomes the first causality. </p>]]></content:encoded>
    </item>
    <item>
      <title>A risk-reward scale for evaluating project practices</title>
      <link>https://docs.microsoft.com/archive/blogs/stephen_cohen/a-risk-reward-scale-for-evaluating-project-practices</link>
      <pubDate>Tue, 10 Mar 2009 21:32:53 GMT</pubDate>
      <dc:creator><![CDATA[stephen cohen]]></dc:creator>
      <guid
        isPermaLink="false">https://blogs.msdn.microsoft.com/stephen_cohen/2009/03/10/a-risk-reward-scale-for-evaluating-project-practices/</guid>
      <description><![CDATA[So you’re seeking to improve things. You tried to implement a “best practice” or twelve … how did...]]></description>
      <content:encoded><![CDATA[<p>So you’re seeking to improve things. You tried to implement a “best practice” or twelve … how did that work for you? I am convinced that problems addressed by a well known practice will not always result in a well known and positive result, and it seems I am not alone.&#160; In a survey of software development professionals conducted last year by William Money and me, <strong>96% agreed or strongly agreed that there are different objective effects of various practices under varying situations.</strong>&#160;&#160; (Complete survey results can be seen at <a href="http://www.projectpracticeportfolio.com/">http://www.projectpracticeportfolio.com/</a> )</p>  <p>In practice this means the actual value of a best practice isn’t the advertised return but a possible return from within a range of returns. If we take the example from my last post; adding a new tool to address testing quality and velocity.&#160;&#160; It is easy to see that when a practice is done well it can provide significant improvement in overall product quality.&#160; On a reward scale of 1 to 10, I’ll call that an 8.&#160; When it is done poorly, it could increases cost or inject delays into the schedule.&#160; On the risk scale, this time from -1 to –10, I put that at –6.&#160;&#160; Now we have a range of potential that is 14 points wide going from negative 6 to positive 8.<strong> The actual value is highly dependent on the specific implementation within the context of the team and the mixed effect the combination of practices being put in place</strong>.</p>  <p>Before we get into the weeds around how we can use these values I want to propose a simple, consistent way to describe the points along the range. </p>  <p>If any of you know me, you know I'm not actually a fan of standards.&#160; In fact I have been known to violently oppose the idea of compliance where integration will do.&#160;&#160; I will however concede to the point that <strong>nearly every attempt at integration requires agreed upon terms if for no other reason than to limit semantic arguments</strong>.&#160; Here then, is my proposal for a complete Risk / Reward scale for evaluating practices; </p>  <p>RISKS    <br />----------------------------------     <br />0 no impact     <br />-1 negligible impact, easily resolved     <br />-2 likely to create additional tasks     <br />-3 scope of issue expands     <br />-4 degrades team morale / communication     <br />-5 requires notable response     <br />-6 increases cost or delays schedule     <br />-7 injects current and future issues     <br />-8 degrades solution quality     <br />-9 critical feature failure     <br />-10 prevents delivery </p>  <p>REWARD    <br />----------------------------------     <br />0 no impact     <br />1 improve poor performance to nominal     <br />2 reduces isolated level of effort     <br />3 broadly improves things     <br />4 improves team morale / communication     <br />5 measurable improvement     <br />6 reduces cost or schedule     <br />7 resolves current and future issues     <br />8 significant improvement in overall quality     <br />9 ensures feature delivery     <br />10 ensures total delivery</p>  <p>In the next post I'll show how we can group practices and by using this scale remove much (but not all) of the guess work from selecting, and monitoring, corrective practices.</p>]]></content:encoded>
    </item>
  </channel>
</rss>