<?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>Tyner Blain &#187; Lists</title>
	<atom:link href="http://tynerblain.com/blog/category/lists/feed/" rel="self" type="application/rss+xml" />
	<link>http://tynerblain.com/blog</link>
	<description>Software product success.</description>
	<lastBuildDate>Wed, 17 Mar 2010 04:31:49 +0000</lastBuildDate>
	<generator>http://wordpress.org/?v=2.9.1</generator>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
			<item>
		<title>Ten New Product Manager Tips</title>
		<link>http://tynerblain.com/blog/2007/11/12/ten-new-product-manager-tips/</link>
		<comments>http://tynerblain.com/blog/2007/11/12/ten-new-product-manager-tips/#comments</comments>
		<pubDate>Tue, 13 Nov 2007 04:24:03 +0000</pubDate>
		<dc:creator>Scott Sehlhorst</dc:creator>
				<category><![CDATA[Lists]]></category>
		<category><![CDATA[Product Management]]></category>
		<category><![CDATA[managing data]]></category>
		<category><![CDATA[MRD]]></category>
		<category><![CDATA[new product manager]]></category>
		<category><![CDATA[new product manager tips]]></category>
		<category><![CDATA[new product roadmap]]></category>
		<category><![CDATA[PRD]]></category>
		<category><![CDATA[tips for new product managers]]></category>
		<category><![CDATA[tips for product managers]]></category>

		<guid isPermaLink="false">http://tynerblain.com/blog/2007/11/12/ten-new-product-manager-tips/</guid>
		<description><![CDATA[
Welcome to product management!  Over the the better part of three months, Adrienne Tan at brainmates, product management people, put together a series of posts with ten tips for new product managers.  Check out our article for a quick summary, and links to all the articles at brainmates.

Ten Tips for New Product Managers
Thanks [...]]]></description>
			<content:encoded><![CDATA[<p><img title="new puppy" alt="new puppy" src="http://sehlhorst.smugmug.com/photos/63490642-S.jpg" /></p>
<p>Welcome to product management!  Over the the better part of three months, Adrienne Tan at <a title="Product management people" href="http://www.brainmates.com.au/">brainmates</a>, product management people, put together a series of posts with ten tips for new product managers.  Check out our article for a quick summary, and links to all the articles at brainmates.</p>
<p><span id="more-597"></span></p>
<h2>Ten Tips for New Product Managers</h2>
<p>Thanks to Adrienne and the folks at brainmates for putting together this list!  The commentary is ours &#8211; there is a full article on each tip at their site.  Adrienne&#8217;s tips are not just about being new to product management, but also about taking over an existing product management position.</p>
<p><a title="speak to people" href="http://www.brainmates.com.au/?p=165">1. Speak to People and Listen to What They Say</a></p>
<p>Find out who all the players are within your organization, who interact with, rely upon, are responsible for, and help create your product.  Talk to them.  Find out the good, the bad, and the ugly.  Your goal at this point is to get an overview.  Remember, when joining a new team, it is always best to listen first and absorb, and only then should you speak.</p>
<p><a title="Use your product" href="http://www.brainmates.com.au/?p=153">2. Use Your New Product</a></p>
<p>This is both important and surprisingly overlooked.  On a project with one of our first clients, I installed the application on my first visit to the client site.  A couple months later, an irate director was screaming on a conference call when none of the people on her team, except the consultant, had even bothered to install the application &#8211; including her developers.</p>
<p>Adrienne also makes a good point about not picking up other people&#8217;s baggage &#8211; &#8220;we&#8217;ve always done it that way&#8221;, &#8220;it&#8217;s never been a priority&#8221;, etc.  Do your own research, form your own opinions.</p>
<p><a title="review KPIs" href="http://www.brainmates.com.au/?p=159">3. Review Your Key Performance Indicators</a></p>
<p>Knowing what to measure as a product manager can be very very difficult.  Determining what to measure about your product can be a lot easier.  Make sure you know what is important about your product &#8211; what contributes to your strategy, how effectively are you generating or increasing ROI?</p>
<p>With an understanding of the business impact your product is having, you can make informed decisions about your road map &#8211; and invest where you need to, and not where you don&#8217;t.</p>
<p><a title="understand your market" href="http://www.brainmates.com.au/?p=166">4. Understand What Your Market is Saying About Your Product</a></p>
<p>Understanding your market is the key to developing a market-driven solution.  Avoid <em>the tyranny of one</em> (I think I heard that at a Pragmatic Marketing seminar).  Don&#8217;t just listen to the loudest customer, and don&#8217;t rely only on your perspective.  Get tapped into your market and stay there.  As Adrienne mentions, this involves not only understanding the people who buy your product, but the people who don&#8217;t buy your product.  Win-loss analyses can help with this.</p>
<p><a title="review existing docs" href="http://www.brainmates.com.au/?p=169">5. Locate and Review All Documentation About Your Product</a></p>
<p>Review the MRD and PRD for your product, if they exist.  If they don&#8217;t exist, create them.  Different teams will apply different levels of formality and rigor to these documents.  The point is &#8211; you are codifying your vision, which allows you to communicate it, and help it evolve.</p>
<p><a title="be the best" href="http://www.brainmates.com.au/?p=172">6. Be the Best</a></p>
<p>Adrienne provides several good tips for being the best at what you do.  Our approach is simply that the way to become the best is to become better.  Most career advice books will sometimes tell you to improve your weakest characteristics (eliminating the excuse for people to pass you over for a promotion).  Another approach is to improve your strongest characteristic &#8211; further differentiating yourself.</p>
<p>As product managers, especially at smaller companies, we are often asked to do &#8220;pretty much everything.&#8221;  This means we need to have at least some skill or knowledge in many areas.  If you&#8217;re missing key skills, gain them one at a time.  Once you have them all (at some level), use your product management skills to prioritize &#8211; focus on the one that will have the most impact.</p>
<p>For me, about half a million words ago, it was getting better at writing.  There is still room for improvement, but other areas will have more impact, so I focus on them.</p>
<p><a title="review your predecessor's work" href="http://www.brainmates.com.au/?p=175">7. Review Your Predecessor&#8217;s Task List</a></p>
<p>When you walk into a new job, there&#8217;s usually a backlog of things that need to get done.  If you&#8217;re lucky, the previous product manager has all of the short term needs addressed, and her task list is about defining a new market, or developing a strategic initiative.  More likely, there&#8217;s a demo that needs to be built, an irate customer who didn&#8217;t get his feature in the latest release, and a development team that has implemented everything that they were told to do before you arrived.</p>
<p>Work the task list.  Prioritize and execute.  Remember, you&#8217;ve got the context you need from talking to people and understanding your market.  Use it.</p>
<p><a title="continuous improvement" href="http://www.brainmates.com.au/?p=180">8. Plan to Update Your Skills</a></p>
<p>All of the standard <em>professional improvement</em> activities are as true for product managers as for anyone else.  Adrienne suggests several to think about.</p>
<p><a title="have fun" href="http://www.brainmates.com.au/?p=180">9. Enjoy Yourself<br />
</a></p>
<p>Aside from the importance of leading by demonstrating the honest enthusiasm that comes from having fun &#8211; it is important that you have fun too.  I have a friend who is an outstanding consultant.  He&#8217;s the best person I&#8217;ve seen at establishing peer level relationships with clients.  And he&#8217;s smart.  He took a role as a product manager, and <em>hated</em> it.  He was also self-aware, and got out of that role in a couple months.  Turns out, as much as he values having good requirements, he hates writing them.  He&#8217;s a successful technical consultant again.  He knew what most people fail to realize &#8211; if you don&#8217;t enjoy a job, don&#8217;t do it.</p>
<p><a title="reinvent yourself" href="http://www.brainmates.com.au/?p=186">10. Take Steps to Be a New Product Manager Again</a></p>
<p>It is easy to get caught up in the execution mode of a product manager.  You&#8217;re being asked to do too much.  You can barely make time to do all of the strategic stuff you need to do, with all of the short-term demands that others place on you.  Just don&#8217;t forget to allocate some time to the items in this list.  You need an opportunity to improve &#8211; your competitors are.</p>
<h2>Conclusion</h2>
<p>Pay attention to what Adrienne has to say &#8211; it&#8217;s good stuff.  And just because you&#8217;re already a product manager doesn&#8217;t mean you shouldn&#8217;t do these things.</p>
<p align="left"><a target="_blank" rel="nofollow" class="tt" href="http://twitter.com/home/?status=By+@sehlhorst:+Ten+New+Product+Manager+Tips+http://bit.ly/2EJMP+" title="Post to Twitter"><img class="nothumb" src="http://tynerblain.com/blog/wp-content/plugins/tweet-this/icons/tt-twitter-big1.png" alt="Post to Twitter" /></a> <a target="_blank" rel="nofollow" class="tt" href="http://www.facebook.com/share.php?u=http://tynerblain.com/blog/2007/11/12/ten-new-product-manager-tips/&amp;t=Ten+New+Product+Manager+Tips" title="Post to Facebook"><img class="nothumb" src="http://tynerblain.com/blog/wp-content/plugins/tweet-this/icons/tt-facebook-big4.png" alt="Post to Facebook" /></a></p>]]></content:encoded>
			<wfw:commentRss>http://tynerblain.com/blog/2007/11/12/ten-new-product-manager-tips/feed/</wfw:commentRss>
		<slash:comments>6</slash:comments>
		</item>
		<item>
		<title>First Five Capistrano &#8220;Oh Crap!  Oh No!&#8221; Tips</title>
		<link>http://tynerblain.com/blog/2007/05/09/first-five-capistrano-tips/</link>
		<comments>http://tynerblain.com/blog/2007/05/09/first-five-capistrano-tips/#comments</comments>
		<pubDate>Wed, 09 May 2007 14:38:24 +0000</pubDate>
		<dc:creator>Scott Sehlhorst</dc:creator>
				<category><![CDATA[Lists]]></category>
		<category><![CDATA[Software development]]></category>
		<category><![CDATA[capistrano]]></category>
		<category><![CDATA[deploying with capistrano]]></category>
		<category><![CDATA[managing data]]></category>
		<category><![CDATA[pebkac]]></category>
		<category><![CDATA[rails]]></category>
		<category><![CDATA[ruby]]></category>
		<category><![CDATA[ruby on rails]]></category>
		<category><![CDATA[site5]]></category>

		<guid isPermaLink="false">http://tynerblain.com/blog/2007/05/09/first-five-capistrano-tips/</guid>
		<description><![CDATA[
In a slight segue from our agile project articles, here are five tips that may help other first time Ruby on Rails / Capistrano deployments.  Even with the great resources available on the internet, there were some unexpected and obscure hurdles for a new-to-rails developer to get a site up and running.  While [...]]]></description>
			<content:encoded><![CDATA[<p><img title="cappucino" alt="cappucino" src="http://sehlhorst.smugmug.com/photos/151086343-M.jpg" /></p>
<p>In a slight segue from our <a title="Agile Software Development Case Study" href="http://tynerblain.com/blog/2007/04/17/agile-software-development-experiment/">agile project articles</a>, here are five tips that may help other first time Ruby on Rails / Capistrano deployments.  Even with the great resources available on the internet, there were some unexpected and obscure hurdles for a new-to-rails developer to get a site up and running.  While Ruby favors <em>convention over configuration</em>, not all hosts are set up with the same conventions &#8211; so there isn&#8217;t much help available for the really weird problems.</p>
<p><span id="more-491"></span>First, let me say that I heart Capistrano.  And after less than two weeks using Ruby and Ruby on Rails, I am very excited.  That &#8220;two weeks&#8221; bit is important &#8211; experienced people don&#8217;t tend to run into the problems that I did &#8211; or they at least don&#8217;t tend to write about them enough.</p>
<p><a title="Capistrano" href="http://manuals.rubyonrails.com/read/book/17">Capistrano</a> (Cap) is a tool for deploying software to (one or more) servers while they are running, that allows you to do the updates with minimal overhead &#8211; it synchronizes steps, restarts servers, and automates &#8220;everything.&#8221;  An agile development project will deploy software very frequently &#8211; so completely automating that process is a great thing.  Cap can deploy software that isn&#8217;t Ruby on Rails, and it can use a source code control system that isn&#8217;t subversion.  If you&#8217;re doing that stuff, this article probably isn&#8217;t for you, but Cap probably still is.</p>
<p>There are several good tutorials and explanations of what to do, in what sequence.  And the process is actually very simple.  The challenge comes from tutorials that say &#8220;type X, then type Y.&#8221;  Well, what if &#8220;X&#8221; throws an error?  Then what?  Occasionally an article would explain <em>why</em> I needed to type X.  But most articles glossed over those details.  Perhaps X normally doesn&#8217;t fail.</p>
<p>But the devil is in the details, and trying to find the exorcism rituals with Google was tedious and occasionally fruitless.<br />
The &#8220;solutions&#8221; presented below may not give you complete answers.  Think of them as clues to help you Google for more expert advice.  Like a software development scavenger hunt.</p>
<p>That said, here are the first five &#8220;Oh Crap!&#8221; and &#8220;Oh No!&#8221; challenges I faced while attempting to deploy my first prototype with Capistrano.</p>
<h2>First Five Capistrano Tips</h2>
<p><strong>1. Imitation is More Than a Form of Flattery</strong></p>
<p>Site5 is my web-host, and they host Ruby on Rails sites, as well as subversion repositories.  Last week I installed Ruby on Rails and subversion, and created an application prototype.  Over the weekend, I attempted to deploy it, and failed.  One likely source of problems &#8211; Site5 was running different versions of Ruby <em>and</em> Rails than I was.  Running different versions of Rails is fine &#8211; because you can &#8220;freeze&#8221; your version of rails within your application.  Running a different version of Ruby was possibly not so smart.  Note &#8211; this tip is for deploying into a shared server environment.  If you control the server, you still want to match versions, but you have the choice to change either end.</p>
<p>Earlier this week I rebuilt my environment to use the same version of Ruby as my host.</p>
<p><strong> 2. Shebang Nabit!</strong></p>
<p>Most Ruby on Rails developers apparently use a version of Unix for their development environments.  Apple OS-X and Linux are both versions of Unix.  I am using Windows XP.  My Site5 server is running Linux.  Every third article warned me to not try and deploy to a server running Windows, so, &#8220;whew!&#8221;</p>
<p>At the top of a few important files in your code is a &#8220;shebang&#8221; line &#8211; <code>#! c:\dev\ruby\bin</code> in my case.  This line tells the operating system where to find the Ruby executable.  This allows you to issue commands without typing &#8220;ruby&#8221; first.</p>
<p>The location of the Ruby files on your dev machine is irrelevant.  You need to change this so that the server can find Ruby without your help.  That probably means changing the line to <code>#! /usr/bin/ruby</code>.  You can find out exactly what you have to change it to by typing <code>whereis ruby</code> into a command prompt <em>on the server</em>.  I used putty to create a bash shell command prompt.  You may have to request access to get this (I did) &#8211; but this part is covered in many tutorials.</p>
<p><strong> 3. Is The Computer Plugged In?</strong></p>
<p>In the early days of tech support, many a laugh was had among the IT people when resolving a user&#8217;s problem amounted to turning on the computer, or telling them not to stick floppy disks to the side of the desk with a magnet.  Ah, the golden years.</p>
<p>I got myself into a bad spot, trying to roll-back my software versions to match my host.  Suddenly, my dev environment didn&#8217;t work any more either.  The error messages didn&#8217;t help me to google the solution, so my problem must have been way out in the long tail of stupid mistakes.  My theory?  <em>I must have misused subversion, and created a mixture of old and new files</em>.</p>
<p>The reality?  My dev environment was not working because my local mySQL and Apache servers were not running.  When I turned them on, it worked.  Pebkac (problem exists between keyboard and chair).  So, make sure they are running in the future.  Also &#8211; I received a helpful suggestion that WEBrick (the Ruby-based development-environment web server that is installed by default with Ruby) will occasionally throw inexplicable errors.  Well, I&#8217;m sure the errors make sense, but as a n00b (that&#8217;s l33t (elite) speak for plebe), they would certainly be inexplicable to me.  Forewarned is forearmed.</p>
<p><strong> 4. Ask for Permission, Not Foregiveness</strong></p>
<p>Later on, Capistrano was doing everything great, apparently.  I checked code into subversion, typed <code>cap deploy</code> on my dev machine, and magically, the latest version of my code was now on my server, ready to run.  Except it wouldn&#8217;t run.</p>
<p>File permissions is something that winxp <em>mostly</em> takes care of for you &#8211; you never have to think about it.  To most users, &#8220;permissions&#8221; invokes images of someone password protecting an excel spreadsheet and emailing it to you.  Well, permissions matter a lot on a server.  They define who can do what with which file or directory.  <em>Who</em> is an interesting concept to a server.  I have a user account that I use to install my appication.  Capistrano installs files for me, <em>as me</em>.  But Apache (the web server) may not be running <em>as me</em>, since this is a shared server.</p>
<p>There&#8217;s a file called dispatch.fcgi that Cap has deployed for me, that Apache needs to interact with.  <code>chmod 755 dispatch.fcgi</code> takes care of that problem.</p>
<p><strong> 5. Equivalence is NOT Equality</strong></p>
<p>With the help of some awesome guys at <a title="Austin Ruby on Rails User Group" href="http://austinonrails.org">AustinOnRails.org</a>, we took a very instructive debugging approach &#8211; manually doing on the server, one step at a time, what Capistrano was going to do for me later.  Eliminating variables and issues step by step.</p>
<p>One thing Capistrano does is get the latest source code out of subversion and put it where it belongs on the server.  OK, easy to do.  <code>svn co file:///....</code> is the command to get the latest version of source from a subversion repository on the same machine.  I was typing the command through my bash shell (running on the server), so that made sense.  And it worked.  Once we had everything running, we were ready to let Cap do its magic and automate the steps we confirmed manually.</p>
<p>Well, Capistrano runs from your local dev machine.  And it uses the command <code>svn co svn+ssh://...</code> to push data from subversion to the server.  And it appears to work.  But it didn&#8217;t actually work.</p>
<p>It turns out that getting the same source, from the same repository, and putting it in the same place, is <em>equivalent</em> but not <em>equal</em>.  Subversion is smart.  And when we used the &#8220;file&#8221; accessor to create a working copy of the source the first time, it knew that the &#8220;svn+ssh&#8221; (tunnelling) accessor for the same stuff, to go in the same place, is actually <em>not</em> the same.  So we didn&#8217;t get any updates.</p>
<p>Most people probably never have to do the manual steps that I did.  So they don&#8217;t run into this problem.  The solution &#8211; delete everything.  Scary.  Only delete the files and directories that Capistrano created.  And don&#8217;t blame me when you delete something you shouldn&#8217;t.  But delete is what <em>I</em> did.  Your mileage may vary.  Then run <code>cap setup</code>, and if that works, <code>cap deploy</code>.  And it will pull down the latest code from subversion.  Then change something, check it in, and run <code>cap deploy</code> again.  It will get the changes.</p>
<h2>Conclusion</h2>
<p>Seriously.  Love this stuff.  Wish it had been as easy to deploy the app (as a new-to-deployment developer) as it was to create the app (as a new-to-ruby developer).  I hope google finds this, and puts it somewhere where it helped you.  Let me know if it did.And experts &#8211; please correct any boneheaded things I said above, or provide some links to great tutorials to help people on their scavenger hunts.</p>
<p align="left"><a target="_blank" rel="nofollow" class="tt" href="http://twitter.com/home/?status=By+@sehlhorst:+First+Five+Capistrano+%E2%80%9COh+Crap%21++Oh+No%21%E2%80%9D+Tips+http://bit.ly/D3lz0+" title="Post to Twitter"><img class="nothumb" src="http://tynerblain.com/blog/wp-content/plugins/tweet-this/icons/tt-twitter-big1.png" alt="Post to Twitter" /></a> <a target="_blank" rel="nofollow" class="tt" href="http://www.facebook.com/share.php?u=http://tynerblain.com/blog/2007/05/09/first-five-capistrano-tips/&amp;t=First+Five+Capistrano+%E2%80%9COh+Crap%21++Oh+No%21%E2%80%9D+Tips" title="Post to Facebook"><img class="nothumb" src="http://tynerblain.com/blog/wp-content/plugins/tweet-this/icons/tt-facebook-big4.png" alt="Post to Facebook" /></a></p>]]></content:encoded>
			<wfw:commentRss>http://tynerblain.com/blog/2007/05/09/first-five-capistrano-tips/feed/</wfw:commentRss>
		<slash:comments>28</slash:comments>
		</item>
		<item>
		<title>Ten Supercharged Active Listening Skills To Make You More Successful</title>
		<link>http://tynerblain.com/blog/2007/03/15/ten-active-listening-skills/</link>
		<comments>http://tynerblain.com/blog/2007/03/15/ten-active-listening-skills/#comments</comments>
		<pubDate>Fri, 16 Mar 2007 02:00:40 +0000</pubDate>
		<dc:creator>Scott Sehlhorst</dc:creator>
				<category><![CDATA[Communication]]></category>
		<category><![CDATA[Consulting]]></category>
		<category><![CDATA[Lists]]></category>
		<category><![CDATA[Requirements]]></category>
		<category><![CDATA[Requirements gathering]]></category>
		<category><![CDATA[active listening]]></category>
		<category><![CDATA[active listening skills]]></category>
		<category><![CDATA[effective listening skills]]></category>
		<category><![CDATA[eliciting requirements]]></category>
		<category><![CDATA[gathering requirements]]></category>
		<category><![CDATA[managing data]]></category>
		<category><![CDATA[requirements elicitation]]></category>

		<guid isPermaLink="false">http://tynerblain.com/blog/2007/03/15/ten-active-listening-skills/</guid>
		<description><![CDATA[Active listening is about more than gaining understanding.  Active listening is about giving.  Giving assurance that you understand someone's needs.  Giving confidence that you will address those needs.  Giving feedback and acknowledgement that someone's input is valuable.  If you haven't tried active listening, you may think it is a passive, receptive activity.  Active listening skills will help you guide your customers and your team to do the right thing, and enjoy the experience.]]></description>
			<content:encoded><![CDATA[<p><img title="attentive labrador puppy" src="http://sehlhorst.smugmug.com/photos/60941547-S.jpg" alt="attentive labrador puppy" /><br />
[Update: Welcome <a title="PACE Carnival" href="http://www.yemma.com.ng/2007/03/23/2nd-edition-of-pace/">carnival</a> readers (and <a title="personal development carnival" href="http://laurayoung.typepad.com/dragonslaying/2007/03/personal_develo.html">more</a> and <a title="public speaking carnival" href="http://www.redwoodramblers.org/newsletter/2007/03/21/carnival-of-public-speaking-edition-2/">more</a> and <a title="wahms and wahps" href="http://www.possiblymaybebaby.com/carnival-of-wahms-and-wahps/">more</a>), thanks for the visit, we hope you like this and the other articles here and stick around to share with the community!  Scott]</p>
<p>Active listening is about more than gaining understanding.  Active listening is about giving.  Giving assurance that you understand someone&#8217;s needs.  Giving confidence that you will address those needs.  Giving feedback and acknowledgment that someone&#8217;s input is valuable.  If you haven&#8217;t tried active listening, you may think it is a passive, receptive activity.  Here are ten active listening skills that will help you, your customers and your team.</p>
<h2>What is Active Listening?</h2>
<p>McGraw-Hill&#8217;s <a title="dictionary definition of active listening" href="http://highered.mcgraw-hill.com/sites/007256296x/student_view0/glossary.html">accurate yet insufficient definition</a> of active listening is &#8220;Giving undivided attention to a speaker in a genuine effort to understand the speaker&#8217;s point of view.&#8221;  That&#8217;s fine, but it doesn&#8217;t tell you why you give undivided attention, and it doesn&#8217;t tell you how.  And active listening is much more that <em>paying attention really well</em>.  That implies a one-directional communication.  Active listening is bidirectional.  This definition doesn&#8217;t tell you what you&#8217;re giving to the speaker <em>and that&#8217;s the most important part</em>.</p>
<h2>Why Practice Active Listening Skills?</h2>
<p>There are plenty of <em>generic</em> reasons to be an active listener.  Dale Carnegie swears that <a title="Top Five Ways to Be a Better Listener" href="http://tynerblain.com/blog/2006/01/27/top-five-ways-to-be-a-better-listener/">active listening</a> is the key to making a great first impression (he&#8217;s right).  Dr. John Gray promises to improve your <em>cross-gender</em> relationships with active listening that gets to the heart of the <em>unimaginable</em> motivations of the opposite sex [tongue in cheek].</p>
<p>As a business analyst or product manager, you have some very specific goals and challenges.  Joy at Seilevel recently wrote about the challenge of convincing people that <a title="Why write requirements" href="http://requirements.seilevel.com/blog/2007/02/requirements-are-waste-of-time.html">documenting requirements is important</a>. She looks at the motivation of the naysayers, and recognizes that the reasons may not be logical, or they may not have the data.  This is a great example of the kinds of situations, beyond <a title="How To Interview for Requirements Gathering" href="http://tynerblain.com/blog/2006/01/15/how-to-interview-when-gathering-requirements/">gathering requirements</a>, where active listening skills can help.</p>
<p>The <a title="CRS page" href="http://crs.uvm.edu/gopher/nerl/personal/comm/e.html">Center for Rural Studies</a> [yeah, I know, it is odd] provides a great list of ten active listening skills.  We&#8217;re re-purposing that list here to</p>
<ul>
<li>Make you more successful.</li>
<li>Make your products better.</li>
<li>Make your customers happier.</li>
</ul>
<h2>Ten Active Listening Skills</h2>
<ol>
<li><strong>Acknowledging</strong>.  You send cues to the speaker that acknowledge that you are hearing them.  You have to demonstrate that you understand the ideas.  Make eye contact and dilate your pupils, raise your eyebrows, nod your head. This is more than just <a title="Active Listening and Cultural Variation" href="http://tynerblain.com/blog/when-%e2%80%98no%e2%80%99-means-%e2%80%98yes%e2%80%99">acknowledging that you here the words</a> (and be aware of different cues in different cultures).  You have to acknowledge the ideas to be effective.  When you don&#8217;t understand something, you can make the &#8220;I don&#8217;t get it&#8221; face.</li>
<li><strong>Restating</strong>. The best way to overcome missed signals in the non-verbal attends that represent acknowledgment is by restating what you just heard.  The key to restatement is not reiteration, but paraphrasing.  You demonstrate that you&#8217;ve absorbed a concept by rewording it.  If you missed a key concept, your reworded restatement should make it obvious to the speaker that you missed the idea.  In an ideal world, she will be practicing active listening skills too &#8211; and will restate your restatement, providing another means for you to grasp the idea.</li>
<li><strong>Reflecting</strong>. Imitation is the most sincere form of flattery.  Subliminal imitation is sort of what reflecting does.  You pick up on the body language and emotions of the speaker, and reflect them back at her.  Several &#8220;how to get ahead&#8221; management books will tell you to emulate your boss.  This is because we are all pre-wired for a little bit of xenophobia.  We tend to like people who are &#8220;like us.&#8221;  More importantly &#8211; by demonstrating that you are developing the same reactions as the speaker, you are affirming that you have reached the same understanding.</li>
<li><strong>Interpreting</strong>.  Ah, the psychiatrist&#8217;s trick.  &#8220;I see from your uncontrollable twitch that this has upset you.  Tell me why&#8230;&#8221;  This is generally focused on being empathetic, and encouraging people to talk more.  However, this is also where you can ask for clarifications, to make sure you understand what your speaker means.  &#8220;Are you saying you need &#8216;drag and drop&#8217; because you need an easy to use interface, or because people will be using a tablet pc with no keyboard?</li>
<li><strong>Summarizing</strong>.  When you ask a good open ended question, you will get a relatively long response.  When <a title="Active Listening Skills double your interviewing effectiveness" href="http://tynerblain.com/blog/2006/11/13/doubling-interviewing-effectiveness/">applying active listening skills to requirements gathering</a>, you often want to let your speaker go off-topic a little bit, as it helps identify other requirements.  Make notes of those other topics for followup, then summarize the parts of the answer that addressed your initial question.  You&#8217;re reinforcing for the speaker that you understood why they said what they said, and that you didn&#8217;t muddy the waters with the other information they gave you.</li>
<li><strong>Probing</strong>.  People often summarize in order to communicate effectively.  Developers will use <em>design patterns</em> to allow them to describe detailed software implementations in a word or two.  People in general will <a title="Symbolism Makes for Efficient Communication" href="http://tynerblain.com/blog/2006/02/12/symbolism-and-communication/">use symbols as replacements</a> for compound ideas.  Ask a clarifying question or two to assure the speaker (and yourself) that you understood what they intended you to understand.  This can also help you with credibility with the speaker, as it demonstrates some knowledge of or comfort in their domain.</li>
<li><strong>Giving Feedback</strong>.  By sharing your opinions about particular ideas, you create a collaborative bond with the speaker.  You should focus on affirmation of their insights or ideas, instead of criticisms.  If you tell someone that their question is stupid, you encourage them to shut down and shut up.  Listen to speakers or panelists in a Q&amp;A session &#8211; they regularly start their answer with &#8220;That&#8217;s a great question.&#8221;  The really good ones will say &#8220;That&#8217;s a great question, because&#8230;&#8221;  Without the <em>because</em>, the feedback can start to sound like a pre-programmed platitude.  Quickly snap off half a dozen &#8220;Great Question.  Here&#8217;s my answer.&#8221;  answers without the rationalization, and people will tune it out as noise.  If you&#8217;re struggling for responses, use anecdotes.  &#8220;That&#8217;s a great question, I had a client who never asked it &#8211; and here&#8217;s how the disaster unfolded&#8230;&#8221;</li>
<li><strong>Supporting</strong>.  Validation of the speaker&#8217;s ideas and concerns is important.  By supporting their worries as being valid, and ultimately resolving those worries, you create loyal customers.  Dell recently launched their <a title="Dell Idea Storm" href="http://www.dellideastorm.com/"><em>Idea Storm</em></a> website to elicit exactly this kind of feedback (among others).  If they add their voices to the mix, providing support for the ideas that people present, they will get more and better ideas.  If they follow-up, they can demonstrate a clear cause-and-effect for their customers.  &#8220;You said it.  We did it.&#8221;  That would generate some loyalty!</li>
<li><strong>Checking Perceptions</strong>.  When you&#8217;re actively listening to someone, in addition to getting data, you are forming impressions and perceptions.  You need to check the validity of those perceptions with the speaker.  When gathering requirements, this often leads to identification of the true requirements, and even <a title="Gathering Implicit Requirements" href="http://tynerblain.com/blog/2006/11/17/gathering-implicit-requirements/">implicit requirements</a>.  You&#8217;re also letting the speaker know that you &#8220;get it.&#8221;  This is a great opportunity to double up on the <em>supporting and feedback</em> active listening skills with responses like &#8220;I think that is a great requirement, because it will prevent incorrect orders from being shipped, and that will reduce field-servicing costs.  Or was there a different benefit you had in mind?&#8221;</li>
<li><strong>Being Quiet</strong>.  Interviewers use this technique all the time.  Silence can make people uncomfortable, so they tend to fill the void &#8211; the only way they can, by talking more.  While this is effective for <em>confrontational</em> interviews, there are more positive and enabling reason to do be quite.  First, you need to temper your exuberance to provide feedback, support and summaries, so that you appear to be <em>listening</em> and not <em>talking</em>.  You&#8217;re meeting with someone so that you can understand their perspective &#8211; not so that they can understand yours.  Second, you want to give people time to think.  If you are creating a &#8220;take all the time you need,&#8221; positive, supporting silence, they will use that time effectively.  The attends and emotional affirmations you&#8217;re providing are what make it supporting and not interrogative.</li>
<li><strong>[Bonus] Extension</strong>.  This is a variation on the <em>restating</em> technique.  Many people you interview will be providing you with data from a discrete perspective.  When gathering requirements, you have to find a way to abstract that information into market requirements.  People also often talk in terms of their existing tools and processes.  You may be getting great information, but it may be overwhelmed in <em>implementation details</em>, either about how they do their job, or how they envision the future system to be.  A great way to validate that you&#8217;re generalizing the salient parts of their ideas is to extend the ideas.  &#8220;I need to be able to sort the accounts receivable list by name, even though Joan sorts them by outstanding amount&#8221; can be combined with other requirements and extended to &#8220;Each user shall be able to organize outputs by field in the UI.&#8221;  And you just <a title="Discovering Hidden Stakeholders" href="http://tynerblain.com/blog/2007/03/13/visualize-stakeholder-analysis/">discovered that Joan is a stakeholder</a> who uses the same functionality for a completely different purpose.</li>
</ol>
<h2>Conclusion</h2>
<p>Active listening skills are critical to communication, and more importantly, collaboration.  Requirements gathering &#8211; for product managers AND business analysts, is the essence of collaboration.  It isn&#8217;t <em>input only</em>.  Use your active listening skills to make the conversation bi-directional, and you will get better information.  You&#8217;ll also have better products, and happier customers.</p>
<p align="left"><a target="_blank" rel="nofollow" class="tt" href="http://twitter.com/home/?status=By+@sehlhorst:+Ten+Supercharged+Active+Listening+Skills+To+Make+You+More+Successful+http://bit.ly/wZjwm+" title="Post to Twitter"><img class="nothumb" src="http://tynerblain.com/blog/wp-content/plugins/tweet-this/icons/tt-twitter-big1.png" alt="Post to Twitter" /></a> <a target="_blank" rel="nofollow" class="tt" href="http://www.facebook.com/share.php?u=http://tynerblain.com/blog/2007/03/15/ten-active-listening-skills/&amp;t=Ten+Supercharged+Active+Listening+Skills+To+Make+You+More+Successful" title="Post to Facebook"><img class="nothumb" src="http://tynerblain.com/blog/wp-content/plugins/tweet-this/icons/tt-facebook-big4.png" alt="Post to Facebook" /></a></p>]]></content:encoded>
			<wfw:commentRss>http://tynerblain.com/blog/2007/03/15/ten-active-listening-skills/feed/</wfw:commentRss>
		<slash:comments>13</slash:comments>
		</item>
		<item>
		<title>5 Return On Investment Calculation Tips</title>
		<link>http://tynerblain.com/blog/2007/02/08/five-roi-calculation-tips/</link>
		<comments>http://tynerblain.com/blog/2007/02/08/five-roi-calculation-tips/#comments</comments>
		<pubDate>Fri, 09 Feb 2007 04:00:08 +0000</pubDate>
		<dc:creator>Scott Sehlhorst</dc:creator>
				<category><![CDATA[Lists]]></category>
		<category><![CDATA[ROI]]></category>
		<category><![CDATA[calculating return on investment]]></category>
		<category><![CDATA[discount rate]]></category>
		<category><![CDATA[importance of roi]]></category>
		<category><![CDATA[managing data]]></category>
		<category><![CDATA[net present value]]></category>
		<category><![CDATA[net present value calculations]]></category>
		<category><![CDATA[NPV]]></category>
		<category><![CDATA[pert estimation]]></category>
		<category><![CDATA[return on investment]]></category>
		<category><![CDATA[return on investment calculation]]></category>
		<category><![CDATA[software cost estimate]]></category>

		<guid isPermaLink="false">http://tynerblain.com/blog/2007/02/08/5-roi-calculation-tips/</guid>
		<description><![CDATA[Return on investment calculation is critical to using ROI for prioritizing requirements.  We've discussed how to forecast return on investment by estimating costs and predicting benefits.  Here are five tips to help you when calculating return on investment.

The following ROI calculation tips are detailed in this article:

   1. Recognize the Risks
   2. Discount Future Cash Flows
   3. Separate Sales From Expenses
   4. Overcome Ozymandias Syndrome
   5. Ignore Infinite Elvises

Read on for the details...]]></description>
			<content:encoded><![CDATA[<p><img alt="boomerang" title="boomerang" src="http://sehlhorst.smugmug.com/photos/128096447-M.jpg" /></p>
<p>[Update 2007/02/12: Welcome <a title="Carnival of the Capitalists" href="http://tamspalm.tamoggemon.com/2007/02/12/the-carnival-of-the-capitalists/">TamsPalm</a> readers from <em>Carnival of the Capitalists</em>.  We hope you like what you find and stick around.  Let us know what you think!]</p>
<p><a title="How to calculate return on investment" href="http://tynerblain.com/blog/2006/02/01/definition-of-roi-return-on-investment/">Return on investment calculation</a> is critical to using ROI for <a title="Prioritizing requirements with return on investment" href="http://tynerblain.com/blog/2006/01/18/prioritizing-requirements-three-techniques/">prioritizing requirements</a>.  We&#8217;ve discussed how to forecast return on investment by <a title="Measuring costs when calculating return on investment" href="http://tynerblain.com/blog/2007/02/05/calculating-roi-and-measuring-costs/">estimating costs</a> and <a title="Forecasting benefits when calculating return on investment" href="http://tynerblain.com/blog/2007/02/07/prioritization-with-roi-and-utility/">predicting benefits</a>.  Here are five tips to help you when calculating return on investment.</p>
<p><span id="more-402"></span></p>
<h2>Summary of ROI Tips</h2>
<p><strong><br />
</strong></p>
<p>The following ROI calculation tips are detailed below:</p>
<ol>
<li>Recognize the Risks</li>
<li>Discount Future Cash Flows</li>
<li>Separate Sales From Expenses</li>
<li>Overcome Ozymandias Syndrome</li>
<li>Ignore Infinite Elvises</li>
</ol>
<p>Here are the details&#8230;</p>
<h2>1. Recognize the Risks</h2>
<p><img alt="Risky bike jump" title="Risky bike jump" src="http://sehlhorst.smugmug.com/photos/128096455-M.jpg" /></p>
<p>You can&#8217;t predict the future with certainty. You have to account for the range of <a title="Risk analysis and return on investment" href="http://tynerblain.com/blog/2006/02/04/using-roi-for-requirements-is-a-risky-business/">possible returns on our investment</a>, or the risks to those returns.  One way to account for risk is to assign a set of probabilities to the possible outcomes, and determine the expected value of the return.  If you believe there is a 50% chance that your investment will return $1,000 and a 50% chance that it will return $2,000, then the expected value of your investment is $1,500.</p>
<p>Another approach would be to use <a title="PERT estimation tutorial" href="http://tynerblain.com/blog/2006/04/13/foundation-series-basic-pert-estimate-tutorial/">PERT estimation</a> to calculate your expected return.  To use PERT, you identify the worst case, most likely case, and best case returns. You may not have the data you need to accurately calculate a return with a PERT estimate.  If you do not have the data, you should use a simple <a title="Expected Value Calculation" href="http://tynerblain.com/blog/2006/02/03/definition-of-expected-value/">expected value calculation</a>.</p>
<blockquote><p>The PERT estimate is a representation of a beta distribution. The math is pretty complex, and applying it to a single estimate can give us a false sense of precision. Remember that the numbers we put together in the first place are our best guesses, so doing more precise math on rough estimates doesn’t give us a more precise PERT estimate, just more math.</p>
<p>The beta distribution is very similar to a normal distribution (the familiar bell curve), when it is balanced. This similarity is used to simplify the application of PERT. The standard simplification in using PERT is to treat estimates as if they represented the following probabilities:</p>
<ul>
<li>Optimistic: 5% of the time we will complete our task in less than the optimistic time estimate.</li>
<li>Likely: 50% of the time we will complete our task in less time than the likely time estimate.</li>
<li>Pessimistic: 95% of the time we will complete our task in less than the pessimistic time estimate.</li>
</ul>
<p><a title="Pert Estimation Tutorial" href="http://tynerblain.com/blog/2006/04/13/foundation-series-basic-pert-estimate-tutorial/"><cite>Foundation Series: Basic PERT Estimate Tutorial</cite></a></p></blockquote>
<p>The discussion above applies to calculating the returns.  We also need to calculate the costs in order to determine ROI.</p>
<p>Costs are usually represented by a combination of known expenses (investments, purchases, etc) and predicted expenses (labor to create something, relative labor increases, etc).  There may also be probabilities (risks) associated with your cost forecasts. You should use the same approach for predicting costs as you do for predicting returns.  It is more likely that you will be able to use PERT estimation for labor cost estimates.</p>
<p>Our costs can also be a combination of <a title="Cost calculations and return on investment estimation" href="http://tynerblain.com/blog/2007/02/05/calculating-roi-and-measuring-costs/">fixed costs and variable costs</a>.  We have to take that into account as well, and again, adjust for risk.</p>
<h2>2. Discount Future Cash Flows</h2>
<p><img alt="Discount" title="Discount" src="http://sehlhorst.smugmug.com/photos/128105861-M.jpg" /></p>
<p>A dollar a year from now is worth less than a dollar today.  Think about it &#8211; if I offered you $100 today in exchange for $100 a year from now, you would take it.  But if we reverse the exchange, you&#8217;d be foolish to take it.  Economists call this <em>discounting</em> future cash flow.  To determine <em>today&#8217;s</em> value of <em>tomorrow&#8217;s</em> dollar, you compute the net present value (NPV) of that dollar.  A future dollar is discounted by the interest rate that you could earn if you chose to invest your money (risk free) today.  Check out our <a title="How To Calculate Net Present Value" href="http://tynerblain.com/blog/2006/03/05/definition-of-npv-net-present-value">net present value tutorial</a> for more details.</p>
<h2>3.  Separate Sales From Expenses</h2>
<p><img title="apples and oranges" alt="apples and oranges" src="http://sehlhorst.smugmug.com/photos/128096450-M.jpg" /></p>
<p>Sales dollars and expense dollars are apples and oranges.</p>
<p>At first glance, the following two investments might look to be equivalent:</p>
<ol>
<li>Spend $10,000 to increase sales revenue by $50,000.</li>
<li>Spend $10,000 to cut costs by $50,000.</li>
</ol>
<p>Sales dollars represent <em>top-line</em> revenue (money coming in the door), and expense dollars represent <em>bottom-line</em> earnings (money going out the door).  What many people overlook is that sales dollars do not equal profit dollars.  Profit dollars are usually called <em>margin</em> dollars and are equivalent to expense dollars when calculating return on investment.</p>
<h2>Determining Margin Dollars</h2>
<p>When you sell a product you have costs associated with that sale.  Those costs can be separated into fixed costs and variable costs.  The fixed costs are fixed &#8211; an increase in sales will not change them.  But variable costs will increase with increasing sales.  For every new dollar in sales revenue you get, you also incur additional variable costs.  The difference between sales dollars and variable costs is called <em>gross margin</em> dollars.</p>
<p>An increase in sales of $1,000 with a corresponding increase in variable costs of $800 would yield a gross margin increase of $200.  The $200 is your increase in profits &#8211; and this is the amount you should use in your ROI calculations.</p>
<h2>Determining Expense Dollars</h2>
<p>Your investment might be a cost reduction.  If so, every dollar you save flows through to the bottom line as a dollar of profit.  These are known as <em>net margin </em>dollars.</p>
<p>When an investment will both increase sales and reduce costs, you can&#8217;t add the numbers together &#8211; you can only add the profit dollars together.  The same holds true if your costs are going up (say your investment is to hire an additional salesman).  You have to calculate your return on investment based on the increase in gross margin dollars relative to the increase in expenses.</p>
<h2>4. Overcome Ozymandias Syndrome</h2>
<p><img alt="ramses ii fallen collosus" title="ramses ii fallen collosus" src="http://sehlhorst.smugmug.com/photos/128096405-M.jpg" /></p>
<p><small>[Photo taken by Hajor, December 2001. Released under cc-by-sa and/or GFDL]</small></p>
<p>Nothing lasts forever.  You may have a proposal that will reduce costs by $100,000 per year.  What is the total savings?  $100,000, $500,000, infinity?  For how many years are you predicting that the savings will be realized?</p>
<p>I always think of this quote from the poem Ozymandias:</p>
<blockquote><p><font color="#000000">[...]</font></p>
<p><font color="#000000">Look on my works. Ye Mighty, and despair!&#8217;</font><br />
<font color="#000000">Nothing beside remains. Round the decay</font><br />
<font color="#000000">Of that colossal wreck, boundless and bare</font><br />
<font color="#000000">The lone and level sands stretch far away.<br />
</font></p>
<p><cite><a title="Wikipedia Entry" href="http://en.wikipedia.org/wiki/Ozymandias">Percy Bysshe Shelley</a></cite></p></blockquote>
<p>Nothing lasts forever.  There are three time limits that you can apply to constrain your ROI calculations.</p>
<ul>
<li>Limit by Uncertainty</li>
<li>Limit by Financial Impact</li>
<li>Limit by Compelling Event</li>
</ul>
<h2>Limit by Uncertainty</h2>
<p><img title="Netscape" alt="Netscape" src="http://sehlhorst.smugmug.com/photos/128116580-M.jpg" /></p>
<p>You can&#8217;t predict the future.  Even with good estimates for potential savings, growth and costs, you can&#8217;t predict <em>outside factors</em> that could make your investment irrelevant.  Netscape couldn&#8217;t predict that Microsoft would offer Internet Explorer for free.  Our younger readers should know that browsers used to cost money.  Microsoft&#8217;s action all but obliterated the business model for Netscape.  The company certainly imploded.</p>
<p>In software, three years is about as long as you can conservatively plan on <em>relevance</em>.  The IRS guidelines allow for depreciation of a software purchase for either three or five years.  This makes for a good sanity check &#8211; in theory, your capital purchases should be completely depreciated at the time that they have no value.</p>
<h2>Limit By Financial Impact</h2>
<p>When you calculate net present value, you applied a discount rate to determine the value <em>today</em> of a cash flow stream from the future.  When calculating NPV, you see that a dollar next year is worth less than a dollar this year.  Similarly, a dollar two years from now is worth less than a dollar next year.  On some future date, that future dollar will be immaterial in today dollars.</p>
<p>There isn&#8217;t a firm definition of &#8220;material financial impact&#8221;, but 10% feels like a reasonable number to us.  In other words, the first year in which a future dollar is worth $0.10 or less is the first year to ignore.  If your discount rate is 10%, that would be year 25.  If your discount rate is 20%, you would look no more than 12 years into the future.</p>
<p>In software development, the <em>relevance</em> factor will always constrain us first.  In industries with longer time horizons (like transcontinental shipping, or toll-road building), the financial limit is more likely to be the more constraining item.</p>
<h2>Limit By Compelling Event</h2>
<p>A compelling event would be a change in strategy, the elimination of the need for the product you&#8217;re evaluating, or <em>another</em> future improvement that will be implemented.  In short, anything that drives obsolescence.</p>
<h2>5. Ignore Infinite Elvises</h2>
<p><img title="elvis impersonators" alt="elvis impersonators" src="http://sehlhorst.smugmug.com/photos/128096460-M.jpg" /></p>
<p>Here&#8217;s a quote from <a title="Quotes Galore" href="http://www.doorbell.net/tlr/94.htm">1994</a>:</p>
<blockquote><p>When Elvis Presley died in 1977 there were 37 Elvis impersonators in the world.  Today [Ed: 1994] there are 48,000.  If the current trend continues, by the year 2010, one out of every three people in the world will be an Elvis impersonator.</p></blockquote>
<p>We&#8217;re running out of time.</p>
<p>There is a good point in here &#8211; there is huge danger in extrapolation of trends.  Even when you think you understand the underlying causes of growth, it is unreasonable to expect the trend to continue.  Venture capitalists regularly rant and/or joke about people who project <em>infinite Elvis</em> growth, almost as much as they complain about people who can&#8217;t support why they will get &#8220;just 1% of a zillion dollar market.&#8221;</p>
<h2>Summary</h2>
<p>You can&#8217;t over-estimate the importance of return on investment calculations when making decisions.  Many of our articles touch on <a title="Articles related to ROI" href="http://tynerblain.com/blog/category/roi/">ROI</a>, even when we&#8217;re writing about seemingly unrelated topics.  In addition to those articles, remember these 5 tips for improving your ability to calculate return on investment:</p>
<ol>
<li>Recognize the Risks</li>
<li>Discount Future Cash Flows</li>
<li>Separate Sales From Expenses</li>
<li>Overcome Ozymandias Syndrome</li>
<li>Ignore Infinite Elvises</li>
</ol>
<p align="left"><a target="_blank" rel="nofollow" class="tt" href="http://twitter.com/home/?status=By+@sehlhorst:+5+Return+On+Investment+Calculation+Tips+http://bit.ly/275Wq2+" title="Post to Twitter"><img class="nothumb" src="http://tynerblain.com/blog/wp-content/plugins/tweet-this/icons/tt-twitter-big1.png" alt="Post to Twitter" /></a> <a target="_blank" rel="nofollow" class="tt" href="http://www.facebook.com/share.php?u=http://tynerblain.com/blog/2007/02/08/five-roi-calculation-tips/&amp;t=5+Return+On+Investment+Calculation+Tips" title="Post to Facebook"><img class="nothumb" src="http://tynerblain.com/blog/wp-content/plugins/tweet-this/icons/tt-facebook-big4.png" alt="Post to Facebook" /></a></p>]]></content:encoded>
			<wfw:commentRss>http://tynerblain.com/blog/2007/02/08/five-roi-calculation-tips/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>How to Write Good Use Case Names &#8211; 7 Tips</title>
		<link>http://tynerblain.com/blog/2007/01/22/how-to-write-good-use-case-names/</link>
		<comments>http://tynerblain.com/blog/2007/01/22/how-to-write-good-use-case-names/#comments</comments>
		<pubDate>Tue, 23 Jan 2007 04:57:42 +0000</pubDate>
		<dc:creator>Scott Sehlhorst</dc:creator>
				<category><![CDATA[Lists]]></category>
		<category><![CDATA[Requirements]]></category>
		<category><![CDATA[Requirements Models]]></category>
		<category><![CDATA[Use Cases]]></category>
		<category><![CDATA[good use case names]]></category>
		<category><![CDATA[good use case titles]]></category>
		<category><![CDATA[how to write a use case]]></category>
		<category><![CDATA[how to write use cases]]></category>
		<category><![CDATA[managing data]]></category>
		<category><![CDATA[sample use case]]></category>
		<category><![CDATA[use case analysis]]></category>
		<category><![CDATA[use case example]]></category>
		<category><![CDATA[use cases]]></category>

		<guid isPermaLink="false">http://tynerblain.com/blog/2007/01/22/how-to-write-good-use-case-names/</guid>
		<description><![CDATA[The first step in writing the use cases for a project is to define the scope of the project.  One way to do that is to list the use case names that define all of the user goals that are in scope.  To do that, you need to know how to write good use case names.  Good use case names also serve as a great reference and provide context and understanding throughout the life of the project.  We present our tips for writing good use case names.]]></description>
			<content:encoded><![CDATA[<p><img alt="seven" title="seven" src="http://sehlhorst.smugmug.com/photos/124940801-M.jpg" /></p>
<p>The first step in writing the use cases for a project is to define the scope of the project.  One way to do that is to list the use case names that define all of the user goals that are in scope.  To do that, you need to know how to write good use case names.  Good use case names also serve as a great reference and provide context and understanding throughout the life of the project.</p>
<p><strong>Goals of Use Case Naming</strong></p>
<p>Use case names are also known as use case titles.  When creating names, we have a set of goals:</p>
<ul>
<li>Clearly indicate the user goal represented by the use case.</li>
<li>Avoid specifying the design of the system.</li>
<li>Make <a title="Writing for the Purpose of Reading" href="http://tynerblain.com/blog/2006/10/04/writing-for-the-purpose-of-reading/">people want to read</a> the use case, not dread reading it.</li>
<li>Allow for evolution of use cases across releases.</li>
<li>Define the scope of the project.</li>
<li>Write consistently</li>
</ul>
<p><strong>Common Use Case Mistakes</strong></p>
<p>We identified the top ten use case mistakes in a couple of articles about a year ago.  They still hold true today:</p>
<p>From <a title="5 Use Case Mistakes" href="http://tynerblain.com/blog/2005/12/23/top-five-use-case-blunders/"><em>Top Five Use Case Blunders</em></a>:</p>
<ul>
<li>Inconsistency</li>
<li>Incorrectness</li>
<li>Wrong Priorities</li>
<li>Implementation Cues</li>
<li>Broken Traceability</li>
</ul>
<p>From <a title="10 Use Case Mistakes" href="http://tynerblain.com/blog/2006/01/26/top-ten-use-case-mistakes/"><em>Top Ten Use Case Mistakes</em></a>:</p>
<ul>
<li>Unanticipated Error Conditions</li>
<li>Overlooking System Responses</li>
<li>Undefined Actors</li>
<li>Impractical Use Cases</li>
<li>Out of Scope Use Cases</li>
</ul>
<p>Writing good use case names will help avoid errors in consistency, implementation cues, scope management, and traceability.  They will also help us make people want to read the use cases.  Think of the use case name as the headline of a magazine article &#8211; does it make you want to read it, or avoid it?</p>
<p>Good use case names also serve as reminders of what a particular use case does.  Weeks after we&#8217;ve written a use case, a quick scan of the title will remind us of what the use case represents.  On a large project with dozens of use cases, this is invaluable.</p>
<p><strong>Tips For Writing Good Use Case Names</strong></p>
<p>Here are the best practices we&#8217;ve adopted, and some we&#8217;ve collected from around the internet.</p>
<ul>
<li><strong>Good Use Case Names Reflect User Goals</strong>.  A good use case name reflects the goal of the user (or external system).  A name like &#8220;Process Invoices&#8221; doesn&#8217;t tell us what&#8217;s being done &#8211; is it collections, organization, auditing, or some other function?  A more insightful name would be &#8220;Collect Late Payments From Customers.&#8221;  The goal in this example is to collect payments from delinquent customers.  The second name does a much better job of defining what the user is <em>trying to do</em> when they perform the use case.</li>
<li><strong>Good Use Case Names are As Short As Possible</strong>.  Some people suggest 5 words, or even two words.  There are just too many examples that make setting specific word-count limits impractical.  In the previous example, &#8220;Collect Late Payments From Customers,&#8221; which words would you remove without losing meaning?  This name is as short as we can make it without losing clarity.  This short name is better than &#8220;Collect Late Payments From Customers Who Are Past-Due.&#8221;</li>
<li><strong>Good Use Case Names Use Meaningful Verbs</strong>.  Usually people will suggest that we should prefer <em>strong</em> verbs to <em>weak</em> verbs.  That is effective advice for general writing.  For writing use cases, we can be more specific.  A <em>meaningless</em> verb is one that, while indicating action, does not specify the action with enough detail.  &#8220;Process the Order&#8221; can be improved with a more meaningful verb.  &#8220;Validate the Ordered Items&#8221; makes it much more clear what the user is trying to achieve.</li>
<li><strong>Good Use Case Names Use An Active Voice</strong>. A call to action is a hallmark of good writing.  Using an active voice will inspire action more than a passive voice.  &#8220;Calculate Profitability&#8221; is more inspiring than &#8220;Profitability is Calculated.&#8221;</li>
<li><strong>Good Use Case Names Use The Present Tense</strong>.  &#8220;Create New Account&#8221; is in the present tense.  &#8220;New Account Was Created&#8221; is in the past tense.  The present tense implies what the user is trying to do, not something that has already been done.</li>
<li><strong>Good Use Case Names <em>Don&#8217;t</em> Identify The Actor</strong>.  Some people prefer to name the actor in the use case, because it is more specific.  We like the idea of using <a title="Evolutionary Use Cases as an Incremental Delivery Tool" href="http://tynerblain.com/blog/2006/12/12/incremental-delivery-and-use-cases/">evolutionary use cases</a> to manage the delivery of functionality across releases.  When we do this, we are often releasing the first version of the use case for one actor, and the next version for another actor.  For example, &#8220;Rank Employee Performance&#8221; might be our use case.  In the first release, we want to enable the functionality for supervisors &#8211; who can rank their direct employees.  In the second release, we want to add the ability for managers to rank the employees that report to multiple supervisors.  We prefer having two versions of the same use case over having two use cases (Rank Direct/Indirect Employee Performance).</li>
<li><strong>Good Use Case Names Are Consistent</strong>.  We should always apply the same set of rules across all of our use case names.  Inconsistent application of the names will create a sense of discord for our readers.  Consistent names will make it more comfortable for readers, and provide a sense of cohesion for the overall project.</li>
</ul>
<p><strong>Other References</strong></p>
<ul>
<li><a title="UC Analysis" href="http://people.cs.uchicago.edu/~mark/51023/Ucstyleg.html">Use Case Analysis</a></li>
<li><a title="Java Blackbelt" href="http://www.javablackbelt.com/GuideLineGenerated.wwa?guideLineId=109926&#038;headingName=UML%20Use-Case%20Diagrams">Java Blackbelt on Use Case Diagrams</a></li>
<li><a title="Informal Survey on Use Cases" href="http://www.coadletter.com/article/0,1410,29671,00.html">The Coad Letter, Use Case Do&#8217;s and Don&#8217;ts</a></li>
</ul>
<p><strong>Summary</strong></p>
<p>Good use case names take very little effort once we are used to writing them with a consistent style, following the tips listed above.  Good names also provide benefits down the road when reviewing and reading the use cases.  Good names are short, clear, and stylish.  They also make us want to read the use cases, and easily jog our memories about the user&#8217;s goals.</p>
<p align="left"><a target="_blank" rel="nofollow" class="tt" href="http://twitter.com/home/?status=By+@sehlhorst:+How+to+Write+Good+Use+Case+Names+%E2%80%93+7+Tips+http://bit.ly/284cAv+" title="Post to Twitter"><img class="nothumb" src="http://tynerblain.com/blog/wp-content/plugins/tweet-this/icons/tt-twitter-big1.png" alt="Post to Twitter" /></a> <a target="_blank" rel="nofollow" class="tt" href="http://www.facebook.com/share.php?u=http://tynerblain.com/blog/2007/01/22/how-to-write-good-use-case-names/&amp;t=How+to+Write+Good+Use+Case+Names+%E2%80%93+7+Tips" title="Post to Facebook"><img class="nothumb" src="http://tynerblain.com/blog/wp-content/plugins/tweet-this/icons/tt-facebook-big4.png" alt="Post to Facebook" /></a></p>]]></content:encoded>
			<wfw:commentRss>http://tynerblain.com/blog/2007/01/22/how-to-write-good-use-case-names/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>Marketing Truths &#8211; Don&#8217;t Tell the Developers</title>
		<link>http://tynerblain.com/blog/2007/01/15/marketing-truths-for-developers/</link>
		<comments>http://tynerblain.com/blog/2007/01/15/marketing-truths-for-developers/#comments</comments>
		<pubDate>Tue, 16 Jan 2007 02:46:34 +0000</pubDate>
		<dc:creator>Scott Sehlhorst</dc:creator>
				<category><![CDATA[Lists]]></category>
		<category><![CDATA[Marketing]]></category>
		<category><![CDATA[managing data]]></category>
		<category><![CDATA[marketing 101]]></category>
		<category><![CDATA[marketing for geeks]]></category>
		<category><![CDATA[marketing truth]]></category>
		<category><![CDATA[marketing truths]]></category>
		<category><![CDATA[mktg truth]]></category>
		<category><![CDATA[top ten marketing]]></category>

		<guid isPermaLink="false">http://tynerblain.com/blog/2007/01/15/marketing-truths-for-developers/</guid>
		<description><![CDATA[Marketing is as foreign to most software developers as swimming is to fish.  We've found a list of ten truths of marketing, and we're secretly sharing them with the developers who hang out here.  Shhh.  Don't tell anyone in marketing.]]></description>
			<content:encoded><![CDATA[<p><img title="whispering" alt="whispering" src="http://sehlhorst.smugmug.com/photos/123459103-M.jpg" /></p>
<p>Marketing is as foreign to most software developers as flying is to fish.  We&#8217;ve found a list of ten truths of marketing, and we&#8217;re secretly sharing them with the developers who hang out here.  Shhh.  Don&#8217;t tell anyone in marketing.</p>
<p><strong>Marketing 101</strong></p>
<p>John Dodds wrote <a title="Marketing 101" href="http://makemarketinghistory.blogspot.com/2006/08/geek-marketing-101_115529822564302037.html"><em>Marketing 101 For Geeks</em></a>, where he shares 10 observations about marketing that might make sense to geeks and coders.</p>
<p>Here&#8217;s John&#8217;s list with our comments:</p>
<ol>
<li><strong>Marketing is not a department</strong>.  A great way to segue into the conversation &#8211; as an engineer, the first visual I always have of a marketing department is the one from Dilbert (Scott Adams draws marketing people as if they are at a perpetual cocktail party).</li>
<li><strong>Marketing is a conversation</strong>.*  This is hard for developers.  Conversation requires two-way communication.  That&#8217;s a truth.  But good marketing pre-empts questions and answers them.  Imagine the reader having a conversation with your copy (marketing materials): &#8220;I wonder what this is?&#8221; &#8220;oh.&#8221; &#8220;I wonder how we could use that?&#8221; &#8220;oh.  cool.&#8221; &#8220;where can I get it?&#8221;</li>
<li><strong>Simplicity does not negate complexity</strong>.  A clear, easy to understand message is what coders might call &#8220;incomplete,&#8221; &#8220;over-simplifying,&#8221; or &#8220;simplicistic.&#8221;  The secret that marketers keep to themselves is that this clear message is what opens the door &#8211; making it possible for customers to (eventually) understand and appreciate the power of a product that might be described with greater complexity.</li>
<li><strong>Think <em>what?</em> not </strong><em><strong>how?</strong>. </em>As cool as it might be that your search engine uses a <a title="Trie at wikipedia" href="http://en.wikipedia.org/wiki/Trie">trie</a> data structure, what <em>potential customers</em> care about is the fact that you can search a billion documents in a tenth of a second.  This secret seems to be the reverse of a simple definition of geek &#8211; &#8220;someone who cares about <em>how</em> it works more than <em>what</em> it does.&#8221;</li>
<li><strong>Think <em>will</em> not <em>can</em></strong>.  Featuritis is the condition of having <em>too many</em> features.  Even the swiss army knife eventually became too large to slip in your pocket.  We have to focus on <a title="Wants and Needs" href="http://tynerblain.com/blog/2006/10/12/wants-and-needs/">what users need to do</a>, and not everything that could possibly be done.</li>
<li><strong>Only <em>you</em> RTFM</strong>.  Think about the obvious ways to use a product.  Intuititive user interfaces have <a title="Foundation Series on User Experience Disciplines" href="http://tynerblain.com/blog/2006/03/03/foundation-series-user-experience-disciplines/">affordances</a>.  They don&#8217;t require people to read the manual.  And the manual should be <a title="Goal Driven Documentation" href="http://tynerblain.com/blog/2006/10/09/goal-driven-documentation/">written to help people accomplish </a>their goals- not as a description of the functionality.</li>
<li><strong>Technical support is marketing</strong>.  Every touch-point with a customer is a marketing opportunity.  Remember, we market not just by purchasing ads and putting up booths at conventions.  We <a title="Usability Sells software" href="http://tynerblain.com/blog/2007/01/10/usability-sells-software/">market by word of mouth</a>.</li>
<li><strong>You&#8217;re not marketing to people who hate marketing</strong>.  Remember the disdain you had when you started reading this list?  Well, we&#8217;re not marketing to people who hate marketers.  People want to know how to solve their own problems.  They want to know how they can use our products to help.  And they like the people who tell them.</li>
<li><strong>You&#8217;re not marketing to people who hate technology products</strong>.  The people who get our message are the ones who are technology-agnostic (see #4 above).  They neither love nor hate the product.  But they love solutions.</li>
<li><strong>Marketing Demystifies</strong>.  Remember the conversation from #2?  As the conversation progresses, we enlighten our customers, and eventualy they develop an understanding of what they can do with our product.  And from this, they develop a desire to buy our product.</li>
</ol>
<p>*John&#8217;s <a title="John's article" href="http://makemarketinghistory.blogspot.com/2006/08/geek-marketing-101_115529822564302037.html">original</a> point #2 was really an <em>anti-<a title="Very funny Jargon Video" href="http://tynerblain.com/blog/2006/02/15/jargon-gone-amuck/">jargon</a></em> point.  We thought the <em>conversational</em> part of his point should be stressed instead.</p>
<p><strong>Conclusion</strong></p>
<p>Don&#8217;t let them know, but we&#8217;re on our way to understanding how this stuff works.</p>
<p align="left"><a target="_blank" rel="nofollow" class="tt" href="http://twitter.com/home/?status=By+@sehlhorst:+Marketing+Truths+%E2%80%93+Don%E2%80%99t+Tell+the+Developers+http://bit.ly/2EQ1YY+" title="Post to Twitter"><img class="nothumb" src="http://tynerblain.com/blog/wp-content/plugins/tweet-this/icons/tt-twitter-big1.png" alt="Post to Twitter" /></a> <a target="_blank" rel="nofollow" class="tt" href="http://www.facebook.com/share.php?u=http://tynerblain.com/blog/2007/01/15/marketing-truths-for-developers/&amp;t=Marketing+Truths+%E2%80%93+Don%E2%80%99t+Tell+the+Developers" title="Post to Facebook"><img class="nothumb" src="http://tynerblain.com/blog/wp-content/plugins/tweet-this/icons/tt-facebook-big4.png" alt="Post to Facebook" /></a></p>]]></content:encoded>
			<wfw:commentRss>http://tynerblain.com/blog/2007/01/15/marketing-truths-for-developers/feed/</wfw:commentRss>
		<slash:comments>6</slash:comments>
		</item>
		<item>
		<title>Ten Requirements Gathering Techniques</title>
		<link>http://tynerblain.com/blog/2006/11/21/ten-requirements-gathering-techniques/</link>
		<comments>http://tynerblain.com/blog/2006/11/21/ten-requirements-gathering-techniques/#comments</comments>
		<pubDate>Wed, 22 Nov 2006 02:34:13 +0000</pubDate>
		<dc:creator>Scott Sehlhorst</dc:creator>
				<category><![CDATA[Business Analysis]]></category>
		<category><![CDATA[IIBA]]></category>
		<category><![CDATA[Lists]]></category>
		<category><![CDATA[Organizations]]></category>
		<category><![CDATA[Requirements]]></category>
		<category><![CDATA[Requirements gathering]]></category>
		<category><![CDATA[babok]]></category>
		<category><![CDATA[business requirements]]></category>
		<category><![CDATA[eliciting requirements]]></category>
		<category><![CDATA[gathering requirements]]></category>
		<category><![CDATA[managing data]]></category>
		<category><![CDATA[requirements elicitation]]></category>
		<category><![CDATA[software requirements gathering]]></category>

		<guid isPermaLink="false">http://tynerblain.com/blog/2006/11/21/ten-requirements-gathering-techniques/</guid>
		<description><![CDATA[The BABoK (Business Analyst Body of Knowledge) lists 10 techniques for gathering requirements.  Here’s an overview of each one.  For more details, check out the latest Guide to the BABoK.]]></description>
			<content:encoded><![CDATA[<p class="MsoNormal"><strong><br />
</strong>
</p>
<p class="MsoNormal">
<p class="MsoNormal">The BABoK (Business Analyst Body of Knowledge) lists 10 techniques for gathering requirements.  Here’s an overview of each one.  For more details, check out the latest Guide to the BABoK.</p>
<p class="MsoNormal">
<ol type="1" style="margin-top: 0in" start="1">
<li class="MsoNormal">Brainstorming</li>
<li class="MsoNormal">Document      Analysis</li>
<li class="MsoNormal">Focus      Group</li>
<li class="MsoNormal">Interface      Analysis</li>
<li class="MsoNormal">Interview</li>
<li class="MsoNormal">Observation</li>
<li class="MsoNormal">Prototyping</li>
<li class="MsoNormal">Requirements      Workshop</li>
<li class="MsoNormal">Reverse      Engineering</li>
<li class="MsoNormal">Survey</li>
</ol>
<p class="MsoNormal" style="margin-left: 0.25in">
<p class="MsoNormal">
<h2>1. Brainstorming</h2>
</p>
<p class="MsoNormal"><a href="http://tynerblain.com/blog/2006/01/17/brainstorming-making-something-out-of-everything/">Brainstorming</a> is used in requirements elicitation to get as many ideas as possible from a group of people.  Generally used to identify possible solutions to problems, and clarify details of opportunities.  Brainstorming casts a wide net, identifying many different possibilities.  <a href="http://tynerblain.com/blog/2006/09/27/getting-value-from-brainstorming/">Prioritization of those possibilities</a> is important to finding the needles in the haystack.</p>
<p class="MsoNormal">
<p class="MsoNormal">
<h2>2. Document Analysis</h2>
</p>
<p class="MsoNormal">Reviewing the documentation of an existing system can help when <a href="http://tynerblain.com/blog/2006/09/28/estimating-as-is/">creating AS-IS</a> process documents, as well as driving gap analysis for scoping of <a href="http://tynerblain.com/blog/2006/03/09/software-requirements-for-migration-projects/">migration projects</a>.  In an ideal world, we would even be reviewing the <em>requirements</em> that drove creation of the existing system &#8211; a starting point for documenting current requirements.  Nuggets of information are often buried in existing documents that help us ask questions as part of validating <a href="http://tynerblain.com/blog/2006/06/08/writing-complete-requirements/">requirement completeness</a>.</p>
<p class="MsoNormal">
<p class="MsoNormal">
<h2>3. Focus Group</h2>
</p>
<p class="MsoNormal">A focus group is a gathering of people who are representative of the users or customers of a product to get feedback.  The feedback can be gathered about needs / opportunities / problems to identify requirements, or can be gathered to validate and refine already elicited requirements.  This form of <em><a href="http://tynerblain.com/blog/2006/11/01/how-to-apply-market-research-better/">market research</a></em> is distinct from brainstorming in that it is a managed process with specific participants.  There is danger in “following the crowd”, and some people believe focus groups are at best ineffective.  One risk is that we end up with the <a href="http://tynerblain.com/blog/2006/11/06/digraph-prioritization/">lowest common denominator</a> features.</p>
<p class="MsoNormal">
<p class="MsoNormal">
<h2>4. Interface Analysis</h2>
</p>
<p class="MsoNormal">Interfaces for a software product can be human or machine.  Integration with external systems and devices is just another interface.  <a href="http://tynerblain.com/blog/2006/11/15/how-to-not-suck-at-design/">User centric design approaches</a> are very effective at making sure that we create usable software.  Interface analysis &#8211; reviewing the touch points with other external systems &#8211; is important to make sure we don’t overlook requirements that <em>aren’t</em> immediately visible to users.</p>
<p class="MsoNormal">
<p class="MsoNormal">
<h2>5. Interview</h2>
</p>
<p class="MsoNormal"><a href="http://tynerblain.com/blog/2006/01/15/how-to-interview-when-gathering-requirements/">Interviews of stakeholders and users are critical</a> to creating the great software.  Without understanding the goals and expectations of the users and stakeholders, we are very unlikely to satisfy them.  We also have to recognize the <a href="http://tynerblain.com/blog/2006/05/18/requirements-gathering-interviewing-the-right-people/">perspective of each interviewee</a>, so that we can properly weigh and address their inputs.  Like a great reporter, <a href="http://tynerblain.com/blog/2006/01/27/top-five-ways-to-be-a-better-listener/">listening</a> is the skill that helps a great analyst to <a href="http://tynerblain.com/blog/2006/11/13/doubling-interviewing-effectiveness/">get more value from an interview</a> than an average analyst.</p>
<p class="MsoNormal">
<p class="MsoNormal">
<h2>6. Observation</h2>
</p>
<p class="MsoNormal">The study of users in their <em>natural habitats</em> is what observation is about.  By observing users, an analyst can identify a process flow, awkward steps, pain points and opportunities for improvement.  Observation can be passive or active (asking questions while observing).  Passive observation is better for getting feedback on a prototype (to refine requirements), where active observation is more effective at getting an understanding of an existing business process.  Either approach can be used to <a href="http://tynerblain.com/blog/2006/11/17/gathering-implicit-requirements/">uncover <em>implicit</em> requirements</a> that otherwise might go overlooked.</p>
<p class="MsoNormal">
<p class="MsoNormal">
<h2>7. Prototyping</h2>
</p>
<p class="MsoNormal">Prototypes can be very effective at gathering feedback.  Low fidelity prototypes can be used as an active listening tool.  Often, when people can not articulate a particular need in the abstract, they can quickly assess if a design approach would address the need.  Prototypes are most efficiently done with quick sketches of interfaces and storyboards.  Prototypes are even being used as the “official requirements” in some situations.</p>
<p class="MsoNormal">
<p class="MsoNormal">
<h2>8. Requirements Workshop</h2>
</p>
<p class="MsoNormal">More commonly known as a joint application design (JAD) session, workshops can be very effective for gathering requirements.  More structured than a brainstorming session, involved parties collaborate to document requirements.  One way to capture the collaboration is with creation of domain-model artifacts (like static diagrams, activity diagrams).  A workshop will be <a href="http://tynerblain.com/blog/2006/10/17/how-many-people/">more effective with two analysts</a> than with one, where a facilitator and a scribe work together.</p>
<p class="MsoNormal">
<p class="MsoNormal">
<h2>9. Reverse Engineering</h2>
</p>
<p class="MsoNormal">Is this a starting point or a last resort?  When a migration project does not have access to sufficient documentation of the existing system, reverse engineering will identify what the system does.  It will not identify what the system should do, and will not identify when the system does the wrong thing.</p>
<p class="MsoNormal">
<p class="MsoNormal">
<h2>10. Survey</h2>
</p>
<p class="MsoNormal">When collecting information from many people &#8211; too many to interview with budget and time constraints &#8211; a survey or questionnaire can be used.  The survey can force users to select from choices, rate something (“Agree Strongly, Agree…”), or have open ended questions allowing free-form responses.  Survey design is hard &#8211; questions can bias the respondents.  Don’t assume that you can create a survey on your own, and get meaningful insight from the results.  I would expect that a well designed survey would provide qualitative guidance for characterizing the market.  It should not be used for prioritization of features or requirements.</p>
<p align="left"><a target="_blank" rel="nofollow" class="tt" href="http://twitter.com/home/?status=By+@sehlhorst:+Ten+Requirements+Gathering+Techniques+http://bit.ly/9CGsi+" title="Post to Twitter"><img class="nothumb" src="http://tynerblain.com/blog/wp-content/plugins/tweet-this/icons/tt-twitter-big1.png" alt="Post to Twitter" /></a> <a target="_blank" rel="nofollow" class="tt" href="http://www.facebook.com/share.php?u=http://tynerblain.com/blog/2006/11/21/ten-requirements-gathering-techniques/&amp;t=Ten+Requirements+Gathering+Techniques" title="Post to Facebook"><img class="nothumb" src="http://tynerblain.com/blog/wp-content/plugins/tweet-this/icons/tt-facebook-big4.png" alt="Post to Facebook" /></a></p>]]></content:encoded>
			<wfw:commentRss>http://tynerblain.com/blog/2006/11/21/ten-requirements-gathering-techniques/feed/</wfw:commentRss>
		<slash:comments>4</slash:comments>
		</item>
		<item>
		<title>Outside Reading: Top 10 Signs You Should Not Write Requirements</title>
		<link>http://tynerblain.com/blog/2006/07/11/outside-reading-top-10-signs/</link>
		<comments>http://tynerblain.com/blog/2006/07/11/outside-reading-top-10-signs/#comments</comments>
		<pubDate>Wed, 12 Jul 2006 03:24:54 +0000</pubDate>
		<dc:creator>Scott Sehlhorst</dc:creator>
				<category><![CDATA[Lists]]></category>
		<category><![CDATA[Requirements]]></category>
		<category><![CDATA[Writing]]></category>
		<category><![CDATA[managing data]]></category>
		<category><![CDATA[requirement discovery]]></category>
		<category><![CDATA[Requirements gathering]]></category>
		<category><![CDATA[writing requirements]]></category>

		<guid isPermaLink="false">http://tynerblain.com/blog/2006/07/11/outside-reading-top-10-signs/</guid>
		<description><![CDATA[Seilevel has a post that presents the top 10 signs that you should not pursue a career writing requirements, check it out.  Thanks Joy for the great article!]]></description>
			<content:encoded><![CDATA[<p><img alt="reading outside" title="reading outside" src="http://sehlhorst.smugmug.com/photos/55550291-M.jpg" /></p>
<p>Seilevel has a post that presents the <a title="Seilevel list" href="http://requirements.seilevel.com/blog/2006/07/top-ten-signs-you-should-not-pursue.html">top 10 signs that you should not pursue a career writing requirements</a>, check it out.  Thanks Joy for the great article!<br />
Our favorites:</p>
<p>#10 You cannot quickly understand new concepts</p>
<p>#9 You don&#8217;t have the patience to deal with customers</p>
<p>#4 You cannot form a mental model of all the pieces</p>
<p><strong>Our take</strong></p>
<p>Writing requirements is much more than taking dictation.  To develop great software, you have to develop an understanding of the needs of the customer.  From those needs, you have to synthesize a solution approach.  And you have to communicate that approach, both with customers (to validate it) and with the engineering team.  All of Joy&#8217;s entries (except the bonus #0 item) support this general framework.</p>
<p>We agree with Roger&#8217;s comments on the post that agile processes are not mutually exclusive to writing requirements.  Charles posted recently about the <a title="new product manager" href="http://yetanothersoftwareblog.blogspot.com/2006/07/new-product-manager.html"><em>new</em> product manager</a> &#8211; implying that an agile product manager is different than a non-agile product manager.</p>
<p>There are many different <em>agile</em> processes, which use differing amounts of up-front planning, and differing formats for documentation.  <a title="Foundation Series on FDD" href="http://tynerblain.com/blog/2006/03/27/foundation-series-feature-driven-development-fdd-explained/">Feature-driven development (FDD)</a> does high level planning to understand the general approach of the product.  Details are then defined incrementally.  Incremental development works best when the most important stuff is worked on first.  This doesn&#8217;t preclude the need to communicate with customers and developers.  The fact that this communication happens incrementally doesn&#8217;t make documentation irrelevant.<br />
The conversation about item #0 continues on <a title="forum" href="http://requirements.seilevel.com/messageboard/showthread.php?p=1109#post1109">Seilevel&#8217;s discussion forum</a>, join in there, or add your thoughts here.</p>
<p align="left"><a target="_blank" rel="nofollow" class="tt" href="http://twitter.com/home/?status=By+@sehlhorst:+Outside+Reading%3A+Top+10+Signs+You+Should+Not+Write+Requirements+http://bit.ly/ZBuqN+" title="Post to Twitter"><img class="nothumb" src="http://tynerblain.com/blog/wp-content/plugins/tweet-this/icons/tt-twitter-big1.png" alt="Post to Twitter" /></a> <a target="_blank" rel="nofollow" class="tt" href="http://www.facebook.com/share.php?u=http://tynerblain.com/blog/2006/07/11/outside-reading-top-10-signs/&amp;t=Outside+Reading%3A+Top+10+Signs+You+Should+Not+Write+Requirements" title="Post to Facebook"><img class="nothumb" src="http://tynerblain.com/blog/wp-content/plugins/tweet-this/icons/tt-facebook-big4.png" alt="Post to Facebook" /></a></p>]]></content:encoded>
			<wfw:commentRss>http://tynerblain.com/blog/2006/07/11/outside-reading-top-10-signs/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Customer Independence Day</title>
		<link>http://tynerblain.com/blog/2006/07/03/customer-independence-day/</link>
		<comments>http://tynerblain.com/blog/2006/07/03/customer-independence-day/#comments</comments>
		<pubDate>Tue, 04 Jul 2006 04:17:09 +0000</pubDate>
		<dc:creator>Scott Sehlhorst</dc:creator>
				<category><![CDATA[Consulting]]></category>
		<category><![CDATA[Lists]]></category>
		<category><![CDATA[Slightly off-topic]]></category>
		<category><![CDATA[fire the customer]]></category>
		<category><![CDATA[fire your customer]]></category>
		<category><![CDATA[firing customer]]></category>
		<category><![CDATA[firing our customers]]></category>
		<category><![CDATA[firing your customers]]></category>
		<category><![CDATA[managing data]]></category>

		<guid isPermaLink="false">http://tynerblain.com/blog/2006/07/03/customer-independence-day/</guid>
		<description><![CDATA[If This Be Treason, Make the Most Of IT! (Patrick Henry)

The customer is always right, except when he is wrong. When we have bad customers, we should fire them.  Declare today as Customer Independence Day, where we declare our independence from bad customers.]]></description>
			<content:encoded><![CDATA[<p><img title="Spirit of 76" alt="Spirit of 76" src="http://sehlhorst.smugmug.com/photos/79357421-M.jpg" />*</p>
<p><strong>If This Be Treason, Make the Most Of IT! </strong>(Patrick Henry)</p>
<p>The customer is always right, except when he is wrong. When we have bad customers, we should fire them.  Declare today as Customer Independence Day, where we declare our independence from bad customers.</p>
<p><strong>The Loophole</strong></p>
<p>While the customer is always right, there&#8217;s a big loophole &#8211; when the customer is wrong, he should stop being our customer.</p>
<p><strong>Hawkins on Firing Customers</strong></p>
<p>Christopher Hawkins provides <a title="Abusive Customers" href="http://www.christopherhawkins.com/06-13-2005.htm#78">a list of 11 customer archetypes who should be fired</a>.  Having them as customers is just bad business.  Christopher provides a lot more detail, and here is his list of abusive client types:</p>
<ol>
<li>The disillusioned</li>
<li>The suspicious</li>
<li>The chiseler</li>
<li>The bully</li>
<li>The something-for-nothing</li>
<li>The slow-pay</li>
<li>The flake</li>
<li>The liar</li>
<li>The blackmailer</li>
<li>The money pit</li>
<li>The clinger</li>
</ol>
<p><strong>Our Take</strong></p>
<p>We agree that people who exhibit these traits tend to make bad customers, friends, bosses, etc.  We should always strive to resolve conflicts or change the behavior of our clients when it is unacceptable.  Only when all else fails should we abandon a customer because of a personality problem.</p>
<p>There are times when we have great relationships with our customers, and we simply become unaligned.  We should fire those customers too.  Perhaps the client&#8217;s strategy is changing, and it isn&#8217;t one we want to support.  Perhaps the customer&#8217;s needs are such that they ask us to perform work that we choose not to do.  Perhaps our direction has changed, or is evolving, away from an existing customer&#8217;s business needs.<br />
We will dilute our efforts if we try and be all things to all people.</p>
<p>As a small company starting out, it can be very hard to walk away from a bad &#8220;opportunity&#8221; with no <em>paying</em> alternative in sight.  Someone once said &#8220;the hard thing to do is often the right thing to do.&#8221;  It could be for you.  It has been for us in the past.</p>
<p><strong>Be Professional</strong></p>
<p>We&#8217;ve decided to fire customer X.  We don&#8217;t want to dump a shipment of tea in the harbor.  Customers have memories, and they also have friends.  Even if we never want to work for customer X again, we don&#8217;t want a bad reputation.</p>
<p>Some things to do when separating from a customer:</p>
<ul>
<li>Be courteous and polite.</li>
<li>Provide ample lead-time.  Two weeks is a minimum, even if the customer wouldn&#8217;t have provided it to you.  Some situations require more lead time.</li>
<li>Review your documentation and update it as needed.  Presumably, someone else will take the post we decline (or abandon).  Make sure they have all the information they need to know everything you did.</li>
<li>Be proactive about knowledge transfer.  Don&#8217;t wait for the client to ask for knowledge transfer &#8211; actively contribute to the plan, and drive it forward.</li>
<li>Reccommend alternatives.  If you can propose your own replacement (and vouch for her) &#8211; even better.</li>
</ul>
<p>- -<br />
*<em>(based on </em>The Spirit of &#8216;76<em> by <a title="More info on the artist" href="http://www.askart.com/askart/w/archibald_mcneal_willard/archibald_mcneal_willard.aspx">Archibald Willard</a> 1836-1918)</em></p>
<p align="left"><a target="_blank" rel="nofollow" class="tt" href="http://twitter.com/home/?status=By+@sehlhorst:+Customer+Independence+Day+http://bit.ly/17isjy+" title="Post to Twitter"><img class="nothumb" src="http://tynerblain.com/blog/wp-content/plugins/tweet-this/icons/tt-twitter-big1.png" alt="Post to Twitter" /></a> <a target="_blank" rel="nofollow" class="tt" href="http://www.facebook.com/share.php?u=http://tynerblain.com/blog/2006/07/03/customer-independence-day/&amp;t=Customer+Independence+Day" title="Post to Facebook"><img class="nothumb" src="http://tynerblain.com/blog/wp-content/plugins/tweet-this/icons/tt-facebook-big4.png" alt="Post to Facebook" /></a></p>]]></content:encoded>
			<wfw:commentRss>http://tynerblain.com/blog/2006/07/03/customer-independence-day/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Know Thy Customers&#8217; Markets</title>
		<link>http://tynerblain.com/blog/2006/06/27/know-thy-customers-markets/</link>
		<comments>http://tynerblain.com/blog/2006/06/27/know-thy-customers-markets/#comments</comments>
		<pubDate>Wed, 28 Jun 2006 04:55:39 +0000</pubDate>
		<dc:creator>Scott Sehlhorst</dc:creator>
				<category><![CDATA[Lists]]></category>
		<category><![CDATA[Product Management]]></category>
		<category><![CDATA[Requirements]]></category>
		<category><![CDATA[customers]]></category>
		<category><![CDATA[managing data]]></category>
		<category><![CDATA[market research]]></category>
		<category><![CDATA[product marketing management]]></category>

		<guid isPermaLink="false">http://tynerblain.com/blog/2006/06/27/know-thy-customers-markets/</guid>
		<description><![CDATA[Michael on Product Management and Marketing has posted the first in his series of product management commandments - Know Thy Customer.   He provides five tips on how to know your customer better.  We extend his idea to include understanding our customers' markets, and provide more tips.  By analogy, this is the difference between a detective who studies a criminal and a profiler who seeks to understand a class of criminals.]]></description>
			<content:encoded><![CDATA[<p><img title="Profiler logo" alt="Profiler logo" src="http://sehlhorst.smugmug.com/photos/78233337-M.jpg" /></p>
<p>Michael on Product Management and Marketing has posted the first in his series of product management <em>commandments</em> &#8211; <a title="Know thy customer" href="http://michael.hightechproductmanagement.com/2006/06/10_commandments_of_product_management_1.html">Know Thy Customer</a>.   He provides five tips on how to know your customer better.  We extend his idea to include understanding our customers&#8217; markets, and provide more tips.  By analogy, this is the difference between a detective who studies a criminal and a profiler who seeks to understand a class of criminals.</p>
<p><strong>Why Must We Know Our Customers?</strong></p>
<p>As Michael points out, the key trait of an effective product manager is one who knows her customers.  As product managers, we have to understand our customers&#8217; problems and convert them into requirements.  From those requirements we define solutions, represented as products.  Without a good understanding of our customer, we can&#8217;t identify the most important problems, and therefore can&#8217;t create the most valuable solutions.</p>
<p>Michael suggests five ways to know our customers better:</p>
<blockquote>
<ol>
<li>Listen to customers.</li>
<li>Usability tests.</li>
<li>Follow-me-home.</li>
<li>Walk-a-mile.</li>
<li>Customer surveys and focus groups.</li>
</ol>
<p><cite><a title="Know Thy Customer" href="http://michael.hightechproductmanagement.com/2006/06/10_commandments_of_product_management_1.html">Michael&#8217;s article</a></cite></p></blockquote>
<p><strong>Know Thy Customer&#8217;s Market</strong></p>
<p>One of many points that <a title="Pragmatic's Home Page" href="http://www.pragmaticmarketing.com/">Pragmatic Marketing</a> makes in their training is that product managers need to focus on multiple customers, not individual customers.  They replace the &#8220;become a customer expert&#8221; goal with &#8220;become a market expert.&#8221;  This helps drive their point home.  We think we need to know our customer&#8217;s market, and not just our customer.</p>
<p>Understanding the market our customer requires us to know not only our customer, but our customer&#8217;s competition.  Knowing our customer helps us understand the important and valuable problems.  Knowing her competition&#8217;s problems helps us know which problems have value for multiple customers.  One-customer problems require custom solutions.  We want to maximize the time we spend on creating <em>reusable</em> valuable product features.</p>
<p>Michael definitely uses the <em>plural</em> when talking about understanding customers.  We are taking this one step further, to include understanding of potential customers.</p>
<p><strong>Things to Know About Our Customer&#8217;s Markets</strong></p>
<ol>
<li>The competitive landscape.  Are there few or many companies in the space?  Is it an oligopoly, monopoly, or free market?</li>
<li>How does our customer compete?  What are the factors that our customer believes make them (or will make them) competitive?  Do they compete on price or features?  Do they rely on existing customers or new customers for their growth?</li>
<li>Is the market growing, shrinking or stagnating?  Is our customer fighting for a larger slice of a shrinking pie?</li>
<li>What might disrupt this market?  Our customer&#8217;s market is at risk of being obviated or obliterated at any time.  Our customer may or may not accept this reality.  At a minimum, we will understand our customers better by understanding their risks.</li>
</ol>
<p>In addition to learning about potential customers, we also get a deeper understanding of our current customers by studying their markets.</p>
<p><strong>More Sources of Customer Information</strong></p>
<p>In addition to Michael&#8217;s five tips, we would suggest the following for each major player in the market:</p>
<ol>
<li>Read the annual report.  In addition to market data, we will find out what the CEO believes to be the most important objectives of our customer.  This will help with <a title="Three techniques for Prioritizing Requirements" href="http://tynerblain.com/blog/2006/01/18/prioritizing-requirements-three-techniques/">prioritization of requirements</a>.</li>
<li>Understand the users.  <a title="How to Create Personas" href="http://tynerblain.com/blog/2006/03/22/how-to-create-personas-for-goal-driven-development/">Creating personas</a> to characterize the users of our software at our customer helps us make better design decisions.</li>
<li>Diagram the political power in the organization.  Politicians hold the trump cards for all software projects.  By understanding who the real decision makers and influencers are, we can markedly improve our prospects for successful software sales.  [Note: This applies to enterprise software more so than shrink-wrapped software.]</li>
</ol>
<p><strong>Conclusion</strong></p>
<p>It is neccessary, but not sufficient to understand a customer.  It is far better to understand the market of customers.</p>
<p align="left"><a target="_blank" rel="nofollow" class="tt" href="http://twitter.com/home/?status=By+@sehlhorst:+Know+Thy+Customers%E2%80%99+Markets+http://bit.ly/2Yjhe8+" title="Post to Twitter"><img class="nothumb" src="http://tynerblain.com/blog/wp-content/plugins/tweet-this/icons/tt-twitter-big1.png" alt="Post to Twitter" /></a> <a target="_blank" rel="nofollow" class="tt" href="http://www.facebook.com/share.php?u=http://tynerblain.com/blog/2006/06/27/know-thy-customers-markets/&amp;t=Know+Thy+Customers%E2%80%99+Markets" title="Post to Facebook"><img class="nothumb" src="http://tynerblain.com/blog/wp-content/plugins/tweet-this/icons/tt-facebook-big4.png" alt="Post to Facebook" /></a></p>]]></content:encoded>
			<wfw:commentRss>http://tynerblain.com/blog/2006/06/27/know-thy-customers-markets/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>The 8 Goals of Use Cases</title>
		<link>http://tynerblain.com/blog/2006/06/23/the-8-goals-of-use-cases/</link>
		<comments>http://tynerblain.com/blog/2006/06/23/the-8-goals-of-use-cases/#comments</comments>
		<pubDate>Sat, 24 Jun 2006 03:16:28 +0000</pubDate>
		<dc:creator>Scott Sehlhorst</dc:creator>
				<category><![CDATA[Lists]]></category>
		<category><![CDATA[Product Management]]></category>
		<category><![CDATA[Requirements]]></category>
		<category><![CDATA[Requirements Models]]></category>
		<category><![CDATA[Use Cases]]></category>
		<category><![CDATA[example mrd]]></category>
		<category><![CDATA[goal of use cases]]></category>
		<category><![CDATA[managing data]]></category>
		<category><![CDATA[market analysis]]></category>
		<category><![CDATA[market requirements]]></category>
		<category><![CDATA[MRD]]></category>
		<category><![CDATA[mrd example]]></category>
		<category><![CDATA[requirement quality]]></category>
		<category><![CDATA[use case analysis]]></category>
		<category><![CDATA[use cases]]></category>
		<category><![CDATA[vision statement example]]></category>

		<guid isPermaLink="false">http://tynerblain.com/blog/2006/06/23/the-8-goals-of-use-cases/</guid>
		<description><![CDATA[Why do we write use cases?  For the same reasons that our users use our software - to achieve a goal.  In our case, we want to assure that we are creating the right software.  By looking at this goal in more detail, we can make decisions that drive the best possible use case creation.  Lets apply our product management skills to writing better use cases by writing an MRD for use cases]]></description>
			<content:encoded><![CDATA[<p><img title="Climber with goal" alt="Climber with goal" src="http://sehlhorst.smugmug.com/photos/77269512-M.jpg" /></p>
<p><strong>Why do we write use cases? </strong></p>
<p>We write use cases for the same reasons that people use our software &#8211; to achieve goals.  In our case, we want to assure that we are creating the right software.  By looking at this high level goal in more detail, we can make decisions that drive the best possible use case creation.  Let&#8217;s apply our product management skills to writing better use cases by writing an MRD for use cases.</p>
<p>This article can be used as a guide to develop a process for defining, documenting and gathering use cases.  It can be used to define a template for use cases, and it can be used to define specifications for a use case management system.  We will start with a market analysis and a vision statement, and then create our market requirements.</p>
<p><strong>Market Analysis</strong></p>
<ul>
<li>69% of software projects failed or were delayed in 2003 according to the Standish Group&#8217;s latest study.(<a title="1994 CHAOS report" href="http://www.standishgroup.com/sample_research/PDFpages/chaos1994.pdf">1994 study</a>, <a title="2001 CHAOS Extreme " href="http://www.standishgroup.com/sample_research/PDFpages/extreme_chaos.pdf">2001 study</a>)</li>
<li>40% to 60% of <a title="Requirements Mgmt stats" href="http://tynerblain.com/blog/2005/12/28/why-we-should-invest-in-requirements-management/">problems were attributed to bad requirements</a>.</li>
<li>Current investments are focused on <a title="Companies invest $4B in efficiency" href="http://tynerblain.com/blog/2006/06/22/companies-will-waste/"><em>coding efficiency</em> not <em>requirement quality</em></a>.</li>
<li><a title="Two big benefits of incremental delivery" href="http://tynerblain.com/blog/2006/04/18/two-big-benefits-of-incremental-delivery/">Incremental delivery</a> is becoming more common as teams adopt different forms of agile processes.  This increases the frequency of requirements changes during projects.</li>
</ul>
<p><strong><em>Bad requirements</em></strong> are further detailed as the following:</p>
<ul>
<li>Requirements that are <em><strong>overlooked </strong></em>cause us to fail to meet expectations and fail to deliver value.</li>
<li>Requirements that are <em><strong>incorrect </strong></em>cause us to incorrectly address problems and fail to deliver value.</li>
<li>Requirements that are <em><strong>poorly communicated </strong></em>cause us to implement incorrectly, failing to address problems and deliver value.</li>
<li>Requirements that are <em><strong>low-value</strong></em> cause us to spend time and money on problems that don&#8217;t maximize value.</li>
</ul>
<p>Through the course of any long term project, requirements will change.  This happens more when we use <a title="Using iteration and prototyping" href="http://tynerblain.com/blog/2006/02/21/software-requirements-specification-iteration-and-prototyping/">iteration and prototyping</a> to accelerate stakeholder feedback cycles.  But that&#8217;s a good thing, because the changes result in better requirements.  Agile development methodologies like <a title="Foundation Series on FDD" href="http://tynerblain.com/blog/2006/03/27/foundation-series-feature-driven-development-fdd-explained/">feature driven development</a> supercharge this phenomenon.</p>
<p><strong>Vision Statement</strong></p>
<p>We will improve our ability to write and manage use cases so that we may maximize their impact on</p>
<ul>
<li>Writing and maintaining great requirements</li>
<li>to improve our ability to deliver the <em>right </em>functionality</li>
<li>and ultimately achieve <em>software product success</em></li>
</ul>
<p><strong>Market Requirements<br />
</strong></p>
<p>With an understanding of the market problems and a guiding vision, we will document the market requirements for writing better use cases.  The market requirements have an explicit scope &#8211; they specify <em>which</em> and <em>how much</em> of the market problems we intend to address.</p>
<p>When we use the phrase &#8216;<em>our use cases</em>&#8216;, we are really saying &#8216;<em>our use cases and our approach to managing the use cases</em>.&#8217;  We&#8217;re using shorthand to improve the readability.</p>
<p>Prioritization of the requirements is denoted with (H) (M) or (L) prepending the requirement, representing <em>high, medium</em> and <em>low</em> priority requirements, respectively.</p>
<p><strong>Requirements that are overlooked</strong></p>
<ul>
<li>1. (M) Our use cases must support validation of <a title="Writing Complete Requirements" href="http://tynerblain.com/blog/2006/06/08/writing-complete-requirements/">requirement completeness</a>.  [Update: <a title="Completeness Validation with Use Cases" href="http://tynerblain.com/blog/2006/07/06/requirement-completeness-validation-with-use-cases/">Detailed article on this goal</a>.]</li>
</ul>
<p><strong>Requirements that are incorrect</strong></p>
<ul>
<li>2. (L) Our use cases must support validation of requirement correctness. [Update: <a title="Verify Requirement Correctness with Use Cases" href="http://tynerblain.com/blog/2006/07/10/verify-correct-requirements/">Detailed article on this goal</a>.]</li>
</ul>
<p><strong>Requirements that are poorly communicated</strong></p>
<ul>
<li>3. (H) Our use cases must improve communication with stakeholders about the intended content of the system. [Update: <a title="Communicating Intent with Stakeholders" href="http://tynerblain.com/blog/2006/07/14/communicating-intent-with-stakeholders/">Detailed article on this goal</a>.]</li>
<li>4. (H) Our use cases must improve communication with the implementation team (dev + test) about the intended content of the system. [Update: <a title="Communicating Intent with Implementers" href="http://tynerblain.com/blog/2006/07/17/communicating-intent-with-implementers/">Detailed article on this goal</a>.]</li>
<li>5. (M) Our use cases must improve <a title="Communicating a release schedule with use cases" href="http://tynerblain.com/blog/2005/12/22/communicating-a-delivery-schedule-with-use-cases/">communication about the release-planning</a> (delivery schedule) for the system to both stakeholders and implementers. [Update: <a title="Communicating Release Schedules with Use cases" href="http://tynerblain.com/blog/2006/07/19/communicating-a-release-schedule-with-use-cases/">Detailed article on this goal</a>.]</li>
<li>6. (H) Our use cases must improve communication of the scope of proposed requirements changes to developers. [Update: <a title="Cmmunicating the Impact of Change" href="http://tynerblain.com/blog/2006/07/24/the-impact-of-change-and-use-cases/">Detailed article on this goal</a>.]</li>
<li>7. (L) Our use cases must improve communication of the impact of requirements change proposals to stakeholders. [Update: <a title="Impact of Change and Use Cases" href="http://tynerblain.com/blog/2006/07/24/the-impact-of-change-and-use-cases/">Same detailed article as #6 for this goal</a>.]</li>
</ul>
<p><strong>Requirements that are low-value</strong></p>
<ul>
<li>8. (L) Our use cases must support <a title="Prioritizing requirements across releases" href="http://tynerblain.com/blog/2006/03/08/prioritizing-software-requirements-across-releases/">prioritization of requirements across releases</a>.</li>
</ul>
<p><strong>Conclusion</strong></p>
<p>These goals define <em>why</em> we write use cases as part of software development.  We do it to improve our ability to write the right software to solve our customer&#8217;s problems.  We also write use cases to help us manage requirements changes and set delivery expectations with our stakeholders.</p>
<p align="left"><a target="_blank" rel="nofollow" class="tt" href="http://twitter.com/home/?status=By+@sehlhorst:+The+8+Goals+of+Use+Cases+http://bit.ly/IQnE7+" title="Post to Twitter"><img class="nothumb" src="http://tynerblain.com/blog/wp-content/plugins/tweet-this/icons/tt-twitter-big1.png" alt="Post to Twitter" /></a> <a target="_blank" rel="nofollow" class="tt" href="http://www.facebook.com/share.php?u=http://tynerblain.com/blog/2006/06/23/the-8-goals-of-use-cases/&amp;t=The+8+Goals+of+Use+Cases" title="Post to Facebook"><img class="nothumb" src="http://tynerblain.com/blog/wp-content/plugins/tweet-this/icons/tt-facebook-big4.png" alt="Post to Facebook" /></a></p>]]></content:encoded>
			<wfw:commentRss>http://tynerblain.com/blog/2006/06/23/the-8-goals-of-use-cases/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Writing Good Requirements &#8211; The Big Ten Rules</title>
		<link>http://tynerblain.com/blog/2006/05/25/writing-good-requirements-the-big-ten-rules/</link>
		<comments>http://tynerblain.com/blog/2006/05/25/writing-good-requirements-the-big-ten-rules/#comments</comments>
		<pubDate>Fri, 26 May 2006 04:13:12 +0000</pubDate>
		<dc:creator>Scott Sehlhorst</dc:creator>
				<category><![CDATA[Lists]]></category>
		<category><![CDATA[Product Management]]></category>
		<category><![CDATA[Requirements]]></category>
		<category><![CDATA[Software requirements specification]]></category>
		<category><![CDATA[Writing]]></category>
		<category><![CDATA[business requirements documentation]]></category>
		<category><![CDATA[good requirements]]></category>
		<category><![CDATA[managing data]]></category>
		<category><![CDATA[product requirements]]></category>
		<category><![CDATA[requirements documentation]]></category>
		<category><![CDATA[requirements specification]]></category>
		<category><![CDATA[software requirements]]></category>
		<category><![CDATA[writing business requirements]]></category>
		<category><![CDATA[writing requirements]]></category>

		<guid isPermaLink="false">http://tynerblain.com/blog/2006/05/25/writing-good-requirements-the-big-ten-rules/</guid>
		<description><![CDATA[Pragmatic Marketing has a training seminar called Requirements That Work. In support of that, they provide a list of 8 characteristics of good requirements. We change one and add two more to round it out to The Big Ten Rules. Combine this with Michael's ten tips for writing MRDs, and we've got a good handle on how to create a great MRD.]]></description>
			<content:encoded><![CDATA[<p><img title="logo" src="http://sehlhorst.smugmug.com/photos/128628510-M.png" alt="logo" /></p>
<p>Pragmatic Marketing has a training seminar called <em>Requirements That Work</em>.  In support of that, they provide a list of <a title="Pragmatic Marketing's List" href="http://www.pragmaticmarketing.com/productmarketing/topics/01/0104sj.asp#_ednref5">8 characteristics of good requirements</a>.  We change one and add two more to round it out to <strong><em>The Big Ten Rules</em></strong>.  Combine this with <a title="Ten Tips on Writing MRDs" href="http://tynerblain.com/blog/2006/05/22/mrd-writing-tips-ten-from-michael-shrivathsan/">Michael&#8217;s ten tips</a> for writing MRDs, and we&#8217;ve got a good handle on how to create a great MRD.</p>
<p><strong>Pragmatic&#8217;s List (1-8) + <span style="text-decoration: line-through;">Two</span> <span style="text-decoration: line-through;">Three</span> Four More</strong></p>
<ol>
<li><span style="text-decoration: line-through;">Necessary</span> Valuable</li>
<li>Concise</li>
<li>Design Free</li>
<li>Attainable</li>
<li>Complete</li>
<li>Consistent</li>
<li>Unambiguous</li>
<li>Verifiable</li>
<li>Atomic</li>
<li>Passionate</li>
<li>Correct</li>
<li>Stylish</li>
</ol>
<p>Looking at each rule of writing good requirements&#8230;</p>
<p><strong>1. Valuable</strong></p>
<blockquote><p><strong>Updated for 2009</strong></p>
<p>Writing <em>valuable</em> requirements is important.  It doesn’t matter how well your teams execute if they are off building the wrong products / capabilities / features.  The right products and capabilities are the ones that have <em>relevant</em> value.</p>
<ul>
<li>Valuable requirements solve problems in your market.</li>
<li>Valuable requirements support your business strategy.</li>
<li>Valuable requirements solve problems for your users.</li>
<li>Valuable requirements meet your buyers’ criteria.</li>
<li>Valuable requirements don’t <em>over-solve</em> the problems.</li>
</ul>
<p><cite><a title="Writing Valuable Requirements" href="http://tynerblain.com/blog/2009/07/29/valuable-requirements/">Valuable Requirements</a></cite></p></blockquote>
<p>Pragmatic uses <em>necessary</em> as a criteria of good requirements.  We believe that <em>valuable </em>requirements are good requirements.  <a title="Prioritizing requirements across releases" href="http://tynerblain.com/blog/2006/03/08/prioritizing-software-requirements-across-releases/">When prioritizing requirements, we should do the <em>must-have</em> requirements first</a>.  But other valuable requirements are critically important &#8211; even if they aren&#8217;t mandatory.  Prioritization and release scheduling should stress <em>necessary</em> requirements first, and then the most valuable requirements next.</p>
<p>Requirements that can <a title="Differentiation versus Improvement" href="http://tynerblain.com/blog/2006/05/24/differentiation-vs-improvement/">differentiate our product from the competition</a> are by definition not necessary &#8211; or the competition would have done it already.</p>
<p>[Update: Our detailed article on <a title="Big Ten Rules - Writing Valuable Requirements" href="http://tynerblain.com/blog/2006/05/30/writing-valuable-requirements/"><em>Writing Valuable Requirements</em></a> ]</p>
<p><strong>2. Concise</strong></p>
<blockquote>
<p style="margin-top: 0px; margin-right: 0px; margin-bottom: 1em; margin-left: 0px; line-height: 1.4em; padding: 0px;"><strong>Updated for 2009</strong></p>
<p style="margin-top: 0px; margin-right: 0px; margin-bottom: 1em; margin-left: 0px; line-height: 1.4em; padding: 0px;"><em>Concise</em> requirements give your team a useful, easy to read and easy to change understanding of what must be done.  Great requirements exist to do three things:</p>
<ol>
<li>Identify the problems that need to be solved.</li>
<li>Explain why those problems are worth solving.</li>
<li>Define when those problems <em><span style="text-decoration: underline;">are</span></em> solved.</li>
</ol>
<p><cite><a title="writing concise requirements" href="http://tynerblain.com/blog/2009/08/03/concise-requirements/">Concise Requirements</a></cite></p></blockquote>
<p>Easy to read and understand.  If only it were that easy.  For whom is it easy to read?  A market requirements document (MRD) is written for several different people on the team.  It provides a vision of what problems our product solves.  It provides clarification to the implementation team.  It also sets expectations with stakeholders.  Different people on the team have <a title="Intimate Domains" href="http://tynerblain.com/blog/2005/12/02/intimate-domains-%e2%80%93-navigating-areas-of-expertise/">different domains of expertise</a> &#8211; we have to write requirements that are easily understood by all of them.</p>
<p>[Update: Our detailed article on <a title="Writing Concise Requirements" href="http://tynerblain.com/blog/2006/05/31/writing-concise-requirements/"><em>Writing Concise Requirements</em></a>]</p>
<p><strong>3. Design Free</strong></p>
<blockquote><p><strong>Updated for 2009</strong></p>
<p>Design-Free requirements are important for two reasons, and hard for two other reasons.</p>
<p>Design-free requirements are hard because you “know what you want” when you should be documenting “why you want it.”  Writing design-free requirements can be hard when you don’t trust your development team to “do the right thing” even though it is not your job to design the solution.</p>
<p><cite><a title="Writing Design-Free Requirements" href="http://tynerblain.com/blog/2009/11/03/design-free-requirements/">Design-Free Requirements</a></cite></p></blockquote>
<p>Generally, a requirement should not specifiy any of the implementation choices.  From a product manager&#8217;s perspective <a title="Requirements Documents mean different things to different people" href="http://tynerblain.com/blog/2006/05/11/requirements-documents-one-mans-trash/">the requirement is the &#8216;what&#8217;</a> and the spec is the &#8216;how&#8217;.  To a system designer or architect or lead developer, the requirement serves as a &#8216;why&#8217;.</p>
<p>[Update: Our detailed article on <a title="Writing Design-Free Requirements" href="http://tynerblain.com/blog/2006/06/02/writing-design-free-requirements/"><em>Writing Design-Free Requirements</em></a>]</p>
<p><strong>4. Attainable</strong></p>
<blockquote><p><strong>Updated for 2009</strong></p>
<p>Unless you live in a world filled with unicorns and rainbows, writing <em>realistic</em> requirements is critical.  When you set unattainable goals, the best result you can hope for is a frustrated engineering team.  Write requirements that are attainable, and your team will surprise you with what they can achieve.</p>
<p><cite><a title="Writing Attainable Requirements" href="http://tynerblain.com/blog/2009/11/30/attainable-requirements/">Attainable Requirements</a></cite></p></blockquote>
<p>The requirement must be <em>realistically</em> achievable. Barbara and Steve  make great points about understanding the cost of implementing something as  expressed in the requirements. As we pointed out in our thoughts about good  requirements management, there is an optimal tradeoff between costs and benefits  for any given company or project. We can formally approach this using the <a title="Using Kano for requirements" href="http://tynerblain.com/blog/2006/02/27/prioritizing-software-requirements-kano-take-two/">techniques  identified for <em>more is better</em> requirements</a> using a Kano framework.  In short, the investment must have an <a title="Definition of ROI" href="http://tynerblain.com/blog/2006/02/01/definition-of-roi-return-on-investment/">ROI</a> that <a title="Definition of opportunity cost and hurdle rate" href="http://tynerblain.com/blog/2006/02/24/definition-of-opportunity-cost/">exceeds  the opportunity costs by the hurdle rate</a>.</p>
<p>Looking at cost-benefit tradeoffs also supports the argument that  <em>valuable</em> should replace <em>necessary</em>.</p>
<p>[Update: Our detailed article on <a title="Writing Attainable Requirements" href="http://tynerblain.com/blog/2006/06/07/writing-attainable-requirements/"><em>Writing Attainable Requirements</em></a>]</p>
<p><strong>5. Complete</strong></p>
<p>Simply put, if the requirement is implented as written, the market need is  completely addressed. No additional requirements are required. When writing a  specification, we may <a title="Composition in Requirements" href="http://tynerblain.com/blog/2005/12/07/composition-in-requirements/">use  decomposition</a> to break individual requirements into more manageable, less  abstract criteria.</p>
<p>[Update: Our detailed article on <a title="Writing Complete Requirements" href="http://tynerblain.com/blog/2006/06/08/writing-complete-requirements/"><em>Writing Complete Requirements</em></a>]</p>
<p><strong>6. Consistent</strong></p>
<p>Pragmatic highlights that the requirement must be logically consistent with  the other requirements in the document &#8211; no overlaps, no contradictions, no  duplications. This is certainly the most important point of consistency.</p>
<p>There is also benefit to consistent writing in an MRD. We can use templates  to provide a consistent framework, but more importantly the prose needs to be  consistent. This consistency makes it easier on the readers.</p>
<p>[Update: Our detailed aricle on <a title="Writing Consistent Requirements" href="http://tynerblain.com/blog/2006/06/09/big-ten-rules-writing-consistent-requirements/"><em>Writing Consistent Requirements</em></a>]</p>
<p><strong>7. Unambiguous</strong></p>
<p>A great requirement has a single interpretation. A good requirement has a  single <em>reasonable</em> interpretation. As part of our development process,  we will <a title="Top five ways to be a better listener" href="http://tynerblain.com/blog/2006/01/27/top-five-ways-to-be-a-better-listener/">use  listening skills like active listening</a> to make sure that our engineering  team understands the requirement we intended to write. The better the  requirements, the less expensive and risky this communication process will be.  <a title="Writing Requirements Unambiguously" href="http://tynerblain.com/blog/2006/02/14/writing-requirements-unambiguously/">Writing  unambiguously</a> is critically important when using outsourcing models that  limit our interactions with other team members.</p>
<p>[Update: Our detailed article on <a title="Writing Unambiguous Requirements" href="http://tynerblain.com/blog/2006/06/12/writing-unambiguous-requirements/"><em>Writing Unambiguous Requirements</em></a>]</p>
<p><strong>8. Verifiable</strong></p>
<p>We use a process that starts with market requirements, and <a title="From MRD to PRD" href="http://tynerblain.com/blog/2006/01/24/from-mrd-to-prd-the-key-to-defining-a-spec/">then  decomposes them</a> into software requirement specifications. the market  requirements must be written in a way that we can verify that the associated  requirements specification will meet the market need.</p>
<p>[Update: Our detailed article on <a title="Writing Verifiable Requirements" href="http://tynerblain.com/blog/2006/06/13/writing-verifiable-requirements/"><em>Writing Verifiable Requirements</em></a>]</p>
<p><strong>9. Atomic</strong></p>
<p>Every requirement should be a single requirement. If we can say “Half of this  requirement is implemented” then this needs to be two or more requirements. If a  requirement read “Sales reps can manage their client list and generate custom  reports” it expresses two atomic ideas (list management and report generation).  Those ideas need to be separated</p>
<p>[Update: Our detailed article on <a title="Writing Atomic Requirements" href="http://tynerblain.com/blog/2006/06/14/writing-atomic-requirements/"><em>Writing Atomic Requirements</em></a>]</p>
<p><strong>10. Passionate</strong></p>
<p>Nothing great has been born from complacency, lethargy or mediocrity. When we  are defining requirements, we must be passionate about what we’re doing. If  we’re just going through the motions, it shows up in the writing. If we aren’t  excited about a requirement, the problem is either with us or with the  requirement. Either way, it won’t inspire the rest of the team to do something  great.</p>
<p>[Update: Our detailed article on <a title="Writing Passionate Requirements" href="http://tynerblain.com/blog/2006/06/15/writing-passionate-requirements/"><em>Writing Passionate Requirements</em></a>]</p>
<p><strong>11. Correct</strong></p>
<p>[Update: Added 30 Oct 2006]</p>
<p>In addition to all of the analyses above, a requirement must actually further the objective it supports, and must be neccessary to meeting that objective, given a particular approach to solving the problem.</p>
<p>Our detailed article on <a title="Correct Requirements" href="http://tynerblain.com/blog/2006/10/30/writing-correct-requirements/"><em>Writing Correct Requirements</em></a>.<br />
<strong> 12. Stylish</strong></p>
<p>[Update: Added 5 Jan 2007]</p>
<p>Style can also be the difference between a well-crafted requirement and one that  is hard to read. And style, applied consistently across requirements makes it  easier to view them as a whole, and identify gaps and inconsistencies. This ease  of comprehension matters when trying to achieve correct, consistent, complete  requirements.</p>
<p>Our detailed article on <a title="Writing Stylish Requirements" href="http://tynerblain.com/blog/2007/01/05/writing-stylish-requirements/"><em>Writing Stylish Requirements</em></a>.</p>
<p><strong>Summary</strong></p>
<p>There isn’t really anything to summarize &#8211; this article is one big  summary.</p>
<p>I would like to take a moment to thank <em>everyone</em> who has been  subscribing, reading, commenting, and sharing Tyner Blain. We started this site  six months ago and I am continually surprised, flattered, and thankful for all  of the readers and support we have.</p>
<p><strong>Thank you very much!</strong></p>
<p>Scott</p>
<p align="left"><a target="_blank" rel="nofollow" class="tt" href="http://twitter.com/home/?status=By+@sehlhorst:+Writing+Good+Requirements+%E2%80%93+The+Big+Ten+Rules+http://bit.ly/13Y7t0+" title="Post to Twitter"><img class="nothumb" src="http://tynerblain.com/blog/wp-content/plugins/tweet-this/icons/tt-twitter-big1.png" alt="Post to Twitter" /></a> <a target="_blank" rel="nofollow" class="tt" href="http://www.facebook.com/share.php?u=http://tynerblain.com/blog/2006/05/25/writing-good-requirements-the-big-ten-rules/&amp;t=Writing+Good+Requirements+%E2%80%93+The+Big+Ten+Rules" title="Post to Facebook"><img class="nothumb" src="http://tynerblain.com/blog/wp-content/plugins/tweet-this/icons/tt-facebook-big4.png" alt="Post to Facebook" /></a></p>]]></content:encoded>
			<wfw:commentRss>http://tynerblain.com/blog/2006/05/25/writing-good-requirements-the-big-ten-rules/feed/</wfw:commentRss>
		<slash:comments>6</slash:comments>
		</item>
		<item>
		<title>MRD Writing Tips &#8211; Ten from Michael Shrivathsan</title>
		<link>http://tynerblain.com/blog/2006/05/22/mrd-writing-tips-ten-from-michael-shrivathsan/</link>
		<comments>http://tynerblain.com/blog/2006/05/22/mrd-writing-tips-ten-from-michael-shrivathsan/#comments</comments>
		<pubDate>Tue, 23 May 2006 02:54:51 +0000</pubDate>
		<dc:creator>Scott Sehlhorst</dc:creator>
				<category><![CDATA[Communication]]></category>
		<category><![CDATA[Lists]]></category>
		<category><![CDATA[Product Management]]></category>
		<category><![CDATA[Requirements]]></category>
		<category><![CDATA[Writing]]></category>
		<category><![CDATA[good mrd]]></category>
		<category><![CDATA[managing data]]></category>
		<category><![CDATA[market requirements document]]></category>
		<category><![CDATA[MRD]]></category>
		<category><![CDATA[requirements communication]]></category>
		<category><![CDATA[requirements documentation]]></category>
		<category><![CDATA[requirements management]]></category>
		<category><![CDATA[writing an mrd]]></category>
		<category><![CDATA[writing requirements]]></category>

		<guid isPermaLink="false">http://tynerblain.com/blog/2006/05/22/mrd-writing-tips-ten-from-michael-shrivathsan/</guid>
		<description><![CDATA[Michael has posted five (plus five) tips on writing a market requirements document (MRD).  Michael has written a good set of tips with detailed explanations and anecdotes.  We have re-organized these tips into three general areas of guidance and provide our thoughts.]]></description>
			<content:encoded><![CDATA[<p><img alt="handoff" title="handoff" src="http://sehlhorst.smugmug.com/photos/71035481-M.jpg" /></p>
<p>Michael wrote <a title="Part 1" href="http://michael.hightechproductmanagement.com/2006/05/tips_for_writing_better_mrds.html">five</a> (and another <a title="Part 2" href="http://michael.hightechproductmanagement.com/2006/05/10_tips_for_writing_better_mrd.html">five</a>) tips on writing a <a title="From MRD to PRD" href="http://tynerblain.com/blog/2006/01/24/from-mrd-to-prd-the-key-to-defining-a-spec/">market requirements document (MRD)</a>.  Michael has written a good set of tips with detailed explanations and anecdotes.  We&#8217;ll extend the conversation here&#8230;</p>
<p><strong>Michael&#8217;s list: </strong></p>
<blockquote><p>1. Write From User&#8217;s Perspective<br />
2. Use Screen Shots<br />
3. Write  Using Simple Language<br />
4. Use Templates &#8211; But With Care<br />
5. Prioritize  Requirements<br />
6. Specify What &#038; Why &#8211; But Not How<br />
7. Cover  Non-Functional Requirements<br />
8. Review &#038; Update<br />
9. Define Target  Market &#038; Positioning<br />
10. Include a Glossary</p></blockquote>
<p><strong>We have re-organized these tips</strong> into three general areas of guidance and provide our thoughts.</p>
<ol>
<li>Good  communication (tips: 1,2,3,4,10)</li>
<li>Good requirements (tips: 5,6,7,9)</li>
<li>Good  requirements management (tips: 8)</li>
</ol>
<p><strong>Good communication</strong></p>
<p>The purpose  of the document is to communicate.  <a title="Targeted communication tips" href="http://tynerblain.com/blog/2006/04/03/targeted-communication-three-tips/">Writing for our audience is essential</a> to  communication.  Using templates to create a predictable structure and flow makes  the content easier to absorb.  Using clear, unambiguous language (no contrived  terms or jargon), makes the ideas easier to grasp and remember.  Providing a  glossary of terms to provide domain context for the readers is essential for  many projects.</p>
<p>A software developer who is an expert at  load-balancing a web server may not have any idea how to calculate incremental  margin for sales beyond forecast.  &#8220;Incremental margin&#8221; may seem like jargon,  but it is a standard term (within the management accounting domain).  Use that  as your rule of thumb &#8211; is the term company-specific, or would anyone in the  domain understand it.  If the former, its jargon.  The latter should have a  glossary entry.</p>
<p>A picture is worth a thousand words, certainly.  It  isn&#8217;t clear that using screenshots or mockups is the best way to capture  requirements in an MRD.  Because they are so powerful, it is impossible to get  the intent, without being influenced by the form.  This is an area where a lot  of smart people agree to disagree.  We&#8217;ve written about the dangers of <a title="Top five use case blunders" href="http://tynerblain.com/blog/2005/12/23/top-five-use-case-blunders/">using  screenshots or other implementation cues</a> that can be interpreted as &#8216;how&#8217;.  As Michael  points out, often &#8216;how&#8217; is the appropriate way to communicate with other members  of the team &#8211; it depends on the team.  <a title="Barbara Nelson" href="http://www.pragmaticmarketing.com/AboutUs/instructor_bio.asp?ID={4C824B02-3E96-4F7E-BF0D-771DFF9565AD}">Barbara Nelson</a>, a product management  instructor for Pragmatic Marketing, stresses that the product management role is  strategic, and getting into details isn&#8217;t.  It may be required, but if the  product manager is doing it, who&#8217;s doing the strategic work?</p>
<p>On the  flip side, Alan Cooper is promoting <a title="Interaction design process overview" href="http://tynerblain.com/blog/2006/03/21/interaction-design-process-overview/"><em>Interaction Design</em></a>.  In an interaction  design process someone is responsible at a level analogous to an MRD for  determining both what and how.  This is basically an interpretation that the how  is an element of the what, not just an implementation detail.  Combining interaction design with <a title="Foundation series on structured requirements" href="http://tynerblain.com/blog/2006/01/04/foundation-series-structured-requirements/">classical <em>structured </em>requirements</a> might look like <a title="Combining intraction design with structured requirements" href="http://tynerblain.com/blog/2006/03/23/interaction-design-and-structured-requirements/">this amalgam</a>.</p>
<p><strong>Good  requirements</strong></p>
<p>Prioritization is the most important element in the  document (other than the ideas being prioritized).  One goal of an MRD is to  communicate the vision of the software.  Understanding what and why, with the  context of which is more important, is the mechanism of communication to the  engineering team.  This message provides the framework in which they operate.</p>
<p>MRDs are also the right focal point for driving much of the outbound  communication.  The vision in an MRD identifies which white papers should be  created.  The <a title="Promotion, education, and inspiration" href="http://tynerblain.com/blog/2006/05/16/marketing-promotion-education-and-inspiration/">(market) positioning provides guidance</a> to sales people in  individual account positioning.  (Sales) demos should highlight the most  valuable capabilities of the product.  Roadmaps and the <a title="Prioritizing requirements across releases" href="http://tynerblain.com/blog/2006/03/08/prioritizing-software-requirements-across-releases/">multi-release schedule  are driven by prioritization</a>.  Schedules may be <a title="How to use timeboxes" href="http://tynerblain.com/blog/2006/04/12/how-to-use-timeboxes-for-scheduling-software-delivery/">managed in timeboxes</a> and  <a title="Communicating a release schedule with use cases" href="http://tynerblain.com/blog/2005/12/22/communicating-a-delivery-schedule-with-use-cases/">delivered in use-case-sized chunks</a>, but the driving prioritization is in the  MRD.</p>
<p><strong>Good requirements management</strong></p>
<p>MRDs are not carved in  stone and aren&#8217;t found in a cave high in the desert.  They are not an end, they  are a means.  A means to communicate a vision.  One thing that the Agile  proponents clearly have right is that change happens.  The market is a moving  target.  A vision for dominating that market better move with it.  And the  resulting MRD is going to change.</p>
<p>Product Managers are also not  infallible.  Left to our own devices, we will write some horrible requirements.   We require feedback from the implementation teams in order to write great  requirements.  A great example is documenting what <a title="Prioritizing Requirements with Kano analysis" href="http://tynerblain.com/blog/2006/02/27/prioritizing-software-requirements-kano-take-two/">Kano would define as a &#8220;more  is better&#8221; requirement</a>.</p>
<p><img title="Profit maximizing" alt="Profit maximizing" src="http://sehlhorst.smugmug.com/photos/57708984-M.png" /></p>
<p>The optimal point is not the revenue-maximizing  feature, it is the profit-maximizing feature.  We&#8217;re driven by <a title="Definition of ROI" href="http://tynerblain.com/blog/2006/02/01/definition-of-roi-return-on-investment/">ROI</a>.  We need an understanding of the  cost function to combine with the price function to result in a profit  function.  We must solicit and respond to that feedback from our engineers.</p>
<p>This is the level of execution expertise that can differentiate our teams, and our products.</p>
<p><strong>Summary</strong></p>
<p>An MRD is critical to capturing product strategy information.  Capturing the right information is critical.  The goals of capturing that information are to disseminate the ideas, and for the team to collaborate on them.  Techniques that make it easier for our target audience to read the MRD are important.  And having a good approach to managing the document as it evolves is what can set us apart from other teams, or make us more competitive.</p>
<p align="left"><a target="_blank" rel="nofollow" class="tt" href="http://twitter.com/home/?status=By+@sehlhorst:+MRD+Writing+Tips+%E2%80%93+Ten+from+Michael+Shrivathsan+http://bit.ly/ZSoSf+" title="Post to Twitter"><img class="nothumb" src="http://tynerblain.com/blog/wp-content/plugins/tweet-this/icons/tt-twitter-big1.png" alt="Post to Twitter" /></a> <a target="_blank" rel="nofollow" class="tt" href="http://www.facebook.com/share.php?u=http://tynerblain.com/blog/2006/05/22/mrd-writing-tips-ten-from-michael-shrivathsan/&amp;t=MRD+Writing+Tips+%E2%80%93+Ten+from+Michael+Shrivathsan" title="Post to Facebook"><img class="nothumb" src="http://tynerblain.com/blog/wp-content/plugins/tweet-this/icons/tt-facebook-big4.png" alt="Post to Facebook" /></a></p>]]></content:encoded>
			<wfw:commentRss>http://tynerblain.com/blog/2006/05/22/mrd-writing-tips-ten-from-michael-shrivathsan/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Ten Essential Practices of Continuous Integration</title>
		<link>http://tynerblain.com/blog/2006/05/09/ten-essential-practices-of-continuous-integration/</link>
		<comments>http://tynerblain.com/blog/2006/05/09/ten-essential-practices-of-continuous-integration/#comments</comments>
		<pubDate>Wed, 10 May 2006 04:01:14 +0000</pubDate>
		<dc:creator>Scott Sehlhorst</dc:creator>
				<category><![CDATA[Agile]]></category>
		<category><![CDATA[Lists]]></category>
		<category><![CDATA[Process Improvement]]></category>
		<category><![CDATA[Software development]]></category>
		<category><![CDATA[Test Automation]]></category>
		<category><![CDATA[Testing]]></category>
		<category><![CDATA[automated builds]]></category>
		<category><![CDATA[automated testing]]></category>
		<category><![CDATA[automated tests]]></category>
		<category><![CDATA[continuous integration]]></category>
		<category><![CDATA[managing data]]></category>
		<category><![CDATA[regression testing]]></category>
		<category><![CDATA[timebox]]></category>
		<category><![CDATA[unit testing]]></category>

		<guid isPermaLink="false">http://tynerblain.com/blog/2006/05/09/ten-essential-practices-of-continuous-integration/</guid>
		<description><![CDATA[Martin Fowler has identified the key process elements of making Continuous Integration work. You could even argue that they are the elements that define Continuous Integration (done correctly).  We include his list and our thoughts below:]]></description>
			<content:encoded><![CDATA[<p><img alt="Rubber chicken" title="Rubber chicken" src="http://sehlhorst.smugmug.com/photos/68782482-M.jpg" /></p>
<p>Martin Fowler has identified <a title="Fowler's article" href="http://martinfowler.com/articles/continuousIntegration.html">the key process elements of making Continuous Integration work</a>.  You could even argue that they are the elements that <a title="Foundation Series on Continuous Integration" href="http://tynerblain.com/blog/2006/05/08/foundation-series-continuous-integration/">define Continuous Integration</a> (done correctly).  We include his list and our thoughts below:</p>
<ol>
<li><strong>Maintain a Single Source Repository</strong></li>
<li><strong>Automate the Build</strong></li>
<li><strong>Make Your Build Self-Testing</strong></li>
<li><strong>Everyone Commits Every Day</strong></li>
<li><strong>Every Commit Should Build the Mainline on an Integration Machine</strong></li>
<li><strong>Keep the Build Fast</strong></li>
<li><strong>Test in a Clone of the Production Environment</strong></li>
<li><strong>Make it Easy for Anyone to Get the Latest Executable</strong></li>
<li><strong>Everyone can see what&#8217;s happening</strong></li>
<li><strong>Automate Deployment</strong></li>
</ol>
<p>For background information, check out the <a title="Foundation Series on Continuous Integration" href="http://tynerblain.com/blog/2006/05/08/foundation-series-continuous-integration/"><em>Foundation Series on Continuous Integration</em></a> article.</p>
<p><strong>1. Maintain a Single Source Repository</strong></p>
<p>The smartest people I know use <a title="Subversion" href="http://subversion.tigris.org/">subversion </a>when they have been able to make the choice themselves.  Aside from being open source, it provides two key differentiated benefits relative to &#8220;everything else&#8221;.</p>
<ul>
<li>Atomic commits: The ability to check in everything or nothing, so you don&#8217;t risk breaking the build with a partial check-in.</li>
<li>Overall project versioning: Allows you to track changes in source file directory hierarchies, file renaming, etc.  Each version is of the entire project, not of a single file.</li>
</ul>
<p><strong>2. Automate the Build</strong></p>
<p>Fowler sums it up perfectly:</p>
<blockquote><p>&#8220;&#8230;anyone should be able to bring in a virgin machine, check the sources out of the repository, issue a single command, and have a running system on their machine&#8221;</p></blockquote>
<p><strong>3. Make Your Build Self-Testing</strong></p>
<p>Include <a title="Blackbox and Whitebox Testing" href="http://tynerblain.com/blog/2006/01/13/software-testing-series-black-box-vs-white-box-testing/">automated testing</a> as part of the build.</p>
<p><strong>4. Everyone Commits Every Day</strong></p>
<p>More frequently when possible.  This is the minimum.</p>
<p><strong>5. Every Commit Should Build the Mainline on an Integration Machine</strong></p>
<p>A seperate, dedicated machine does a daily (or more frequent) build and full test suite run autonomously.  The &#8220;build and test&#8221; model above relies on people to kick off the build when they commit.  A scheduled task on a seperate machine provides a safety net for human error (oversight).  Alternately, companies like <a title="Calavista " href="http://www.calavista.com">Calavista</a> can make this foolproof by automatically triggering an automated build as part of every commit.  With Calavista&#8217;s devEdge, if the developer &#8220;commits&#8221;, what really happens is that the automated build/test cycle is triggered with his new code, and it gets promoted only if all the tests pass.</p>
<p><strong>6. Keep the Build Fast</strong></p>
<p>Tests can take a long time, builds should only take ten minutes.  Fowler suggests a strategy of staged builds to address the 10-minute threshold.  Run <a title="Foundation Series on Unit Testing of Software" href="http://tynerblain.com/blog/2006/01/19/foundation-series-unit-testing-software/">unit tests</a> against the 10-minute build, and run the full suite in parallel or series.</p>
<p>Another option is to use statistical sampling of tests to get a &#8220;10 minute answer&#8221; while the full suite is kicked off in parallel.</p>
<p><strong>7. Test in a Clone of the Production Environment</strong></p>
<p>Eliminate even more variables.  Make sure the tests are running against a clone of the production environment.  Teams that are pushing the envelope today use virtual machines (VMs) to quickly create cloned production environments, install the software and run the tests.</p>
<p><strong>8. Make it Easy for Anyone to Get the Latest Executable</strong></p>
<p>Make sure everyone knows where the latest build can be found.  Probably a good idea to keep recent builds in the same place too, in case a problem sneaks through the process temporarily (like a memory leak or other obscure, not-yet-tested situation).</p>
<p><strong>9. Everyone can see what&#8217;s happening</strong></p>
<p>Visibility!  eMail the team when builds start/finish, including success/failure information.  Put a rubber chicken on the desk of the person currently running the build (don&#8217;t ask &#8211; just read Fowler&#8217;s post).  Ring a desk bell when the build passes.  Have fun with it.</p>
<p><strong>10. Automate Deployment</strong></p>
<p>Make deployment into production as easy as running the build.  Since tests are run against a production clone, and are already automated, this presents minor incremental effort.</p>
<p><strong>Conclusion</strong></p>
<p>Martin presents a great list.  In addition to the above, we would suggest</p>
<ul>
<li><strong>Generate test-results documents <em>per requirement</em>.</strong>  For each build, identify which requirements pass, fail, or are untested.  The most relevant information for communicating outside of the team is status of previous requirements (did our <em>regression tests</em> pass?) and current requirements (are we almost done with this <a title="Using Timeboxes to Schedule Software" href="http://tynerblain.com/blog/2006/04/12/how-to-use-timeboxes-for-scheduling-software-delivery/"><em>timebox</em></a>?).</li>
</ul>
<p align="left"><a target="_blank" rel="nofollow" class="tt" href="http://twitter.com/home/?status=By+@sehlhorst:+Ten+Essential+Practices+of+Continuous+Integration+http://bit.ly/OslER+" title="Post to Twitter"><img class="nothumb" src="http://tynerblain.com/blog/wp-content/plugins/tweet-this/icons/tt-twitter-big1.png" alt="Post to Twitter" /></a> <a target="_blank" rel="nofollow" class="tt" href="http://www.facebook.com/share.php?u=http://tynerblain.com/blog/2006/05/09/ten-essential-practices-of-continuous-integration/&amp;t=Ten+Essential+Practices+of+Continuous+Integration" title="Post to Facebook"><img class="nothumb" src="http://tynerblain.com/blog/wp-content/plugins/tweet-this/icons/tt-facebook-big4.png" alt="Post to Facebook" /></a></p>]]></content:encoded>
			<wfw:commentRss>http://tynerblain.com/blog/2006/05/09/ten-essential-practices-of-continuous-integration/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>Targeted Communication &#8211; Three Tips</title>
		<link>http://tynerblain.com/blog/2006/04/03/targeted-communication-three-tips/</link>
		<comments>http://tynerblain.com/blog/2006/04/03/targeted-communication-three-tips/#comments</comments>
		<pubDate>Tue, 04 Apr 2006 04:55:41 +0000</pubDate>
		<dc:creator>Scott Sehlhorst</dc:creator>
				<category><![CDATA[Communication]]></category>
		<category><![CDATA[Lists]]></category>
		<category><![CDATA[Presentation]]></category>
		<category><![CDATA[Writing]]></category>
		<category><![CDATA[Agile]]></category>
		<category><![CDATA[agile communication]]></category>
		<category><![CDATA[agile documentation]]></category>
		<category><![CDATA[business communication]]></category>
		<category><![CDATA[executive communication]]></category>
		<category><![CDATA[executive summary]]></category>
		<category><![CDATA[managing data]]></category>
		<category><![CDATA[targeted communication]]></category>

		<guid isPermaLink="false">http://tynerblain.com/blog/2006/04/03/targeted-communication-three-tips/</guid>
		<description><![CDATA[    Most guides to writing an executive summary miss the key point: The job of the executive summary is to sell, not to describe.

This from Guy Kawasaki's recent post, The Art of the Executive Summary. Guy's article is structured towards pitching an idea to a potential investor. We're going to apply the same rationale to the communication that is key to successful product development - communication from the team, to stakeholders and sponsors.We also communicate with people outside of our team. We communicate to set expectations with customers, users, and clients.We communicate with sponsors, customers, and others who fund our software development. Without these channels of strategic communication, we won't have a project, or worse, won't have a customer when we're done. External communication is strategic communication.]]></description>
			<content:encoded><![CDATA[<p><img alt="cliff notes" title="cliff notes" src="http://sehlhorst.smugmug.com/photos/62905447-M.jpg" /></p>
<blockquote><p><em>Most guides to writing an executive summary miss the key point: The job of the executive summary is to sell, not to describe.</em></p></blockquote>
<p>This from Guy Kawasaki&#8217;s recent post, <em><a title="writing an executive summary" href="http://feeds.feedburner.com/letTheGoodTimesRollByGuyKawasaki?m=92">The Art of the Executive Summary</a>.</em>  Guy&#8217;s article is structured towards pitching an idea to a potential investor.  We&#8217;re going to apply the same rationale to the communication that is key to successful product development &#8211; communication <em>from</em> the team, <em>to</em> stakeholders and sponsors.</p>
<p><strong>Two types of communication &#8211; tactical and strategic</strong></p>
<p>For this post, we&#8217;ll assume that we are part of a team delivering a new software product for our company.  We have users, marketing, product management, development, quality, and SMEs (subject matter experts).  We are all working together to deliver great software.  We communicate with each other as part of executing on our tasks.  This is tactical execution.</p>
<p><img alt="horse with blinders" title="horse with blinders" src="http://sehlhorst.smugmug.com/photos/62908223-M.jpg" /></p>
<p>James Shore posted <a title="Agile documentation" href="http://www.jamesshore.com/Blog/Two-Kinds-of-Documentation.html"><em>Two Kinds of Documentation</em></a> last month, where he presents an Agile perspective on documentation.  The two types of documentation he identifies are &#8216;get work done&#8217; documentation and &#8216;enable future work&#8217; documentation.  The purpose of these documents (or more precisely, the communication they represent) is to help our team execute either now or in the future.  Internal communication is <em>tactical</em> communication.</p>
<p>We also communicate with people outside of our team.  We communicate to <a title="Communicate a delivery schedule with use cases" href="http://tynerblain.com/blog/2005/12/22/communicating-a-delivery-schedule-with-use-cases/">set expectations</a> with customers, users, and clients.We communicate with sponsors, customers, and others who fund our software development.  Without these channels of <em>strategic</em> communication, we won&#8217;t have a project, or worse, won&#8217;t have a customer when we&#8217;re done.  External communication is <em>strategic </em>communication.</p>
<p><strong>Tailoring strategic communication</strong></p>
<p>Guy&#8217;s quote is very insightful &#8211; there is only one reason for presenting to the executive &#8211; to get funding.  Why?  Because the executive has only one reason for listening to us &#8211; to decide if we should get funding.  All of our strategic communication should focus on one goal. &#8211; <strong>The goal of our audience.</strong></p>
<p>Here are three tips on providing targeted communication to people external to the team.</p>
<ul />
<ol>
<li><strong>It&#8217;s the economy, stupid!</strong>  When President Clinton ran for office the first time, this was one of his slogans.  He capitalized on the fact that his opponent was busy talking about <em>what his opponent thought was important</em>.  Then Governor Clinton talked about <em>what his audience thought was important</em>.  This is the hardest thing to remember, especially when we&#8217;re passionate about what we&#8217;re creating.  We need to run our communication through the &#8220;so what&#8221; filter.  If it isn&#8217;t important to our audience, don&#8217;t make them listen to it (or read it).</li>
<li><strong>No habla Ingles</strong>.  Once we identify what our audience cares about, we have to make sure that we can communicate that information in a language that they understand.  In one of our earliest posts, <a title="Navigating areas of expertise" href="http://tynerblain.com/blog/2005/12/02/intimate-domains-%e2%80%93-navigating-areas-of-expertise/"><em>Intimate Domains</em></a>, we talk about how people are so rooted in their areas of expertise that they almost speak different languages.  If we can&#8217;t modulate our signal to a band-passed frequency*, we might as well be <a title="Jargon video - hilarious!" href="http://tynerblain.com/blog/2006/02/15/jargon-gone-amuck/">speaking jargon gibberish</a>.</li>
<li><strong>Brevity</strong>.  Clear.  Concise.  Contextual.</li>
</ol>
<p>[Update 25 Apr 06]</p>
<p>We have added a post, <a title="Status reporting" href="http://tynerblain.com/blog/2006/04/24/targeted-communication-status-reporting/"><em>Targeted Communication &#8211; Status Reporting</em></a> as a detailed example of targeted communication.<br />
- -</p>
<p><em>*If we can&#8217;t get the message across in terms our listener understands,..</em>.</p>
<ul />
<p align="left"><a target="_blank" rel="nofollow" class="tt" href="http://twitter.com/home/?status=By+@sehlhorst:+Targeted+Communication+%E2%80%93+Three+Tips+http://bit.ly/2DSvAC+" title="Post to Twitter"><img class="nothumb" src="http://tynerblain.com/blog/wp-content/plugins/tweet-this/icons/tt-twitter-big1.png" alt="Post to Twitter" /></a> <a target="_blank" rel="nofollow" class="tt" href="http://www.facebook.com/share.php?u=http://tynerblain.com/blog/2006/04/03/targeted-communication-three-tips/&amp;t=Targeted+Communication+%E2%80%93+Three+Tips" title="Post to Facebook"><img class="nothumb" src="http://tynerblain.com/blog/wp-content/plugins/tweet-this/icons/tt-facebook-big4.png" alt="Post to Facebook" /></a></p>]]></content:encoded>
			<wfw:commentRss>http://tynerblain.com/blog/2006/04/03/targeted-communication-three-tips/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Top ten tips for preventing innovation</title>
		<link>http://tynerblain.com/blog/2006/03/06/top-ten-tips-for-preventing-innovation/</link>
		<comments>http://tynerblain.com/blog/2006/03/06/top-ten-tips-for-preventing-innovation/#comments</comments>
		<pubDate>Tue, 07 Mar 2006 04:14:51 +0000</pubDate>
		<dc:creator>Scott Sehlhorst</dc:creator>
				<category><![CDATA[Consulting]]></category>
		<category><![CDATA[Lists]]></category>
		<category><![CDATA[Process Improvement]]></category>
		<category><![CDATA[Project Management]]></category>
		<category><![CDATA[Software development]]></category>
		<category><![CDATA[ideo]]></category>
		<category><![CDATA[innovate]]></category>
		<category><![CDATA[innovation]]></category>
		<category><![CDATA[managing data]]></category>
		<category><![CDATA[micro-management]]></category>
		<category><![CDATA[micromanage]]></category>
		<category><![CDATA[micromanagement]]></category>
		<category><![CDATA[requirements elicitation]]></category>

		<guid isPermaLink="false">http://tynerblain.com/blog/2006/03/06/top-ten-tips-for-preventing-innovation/</guid>
		<description><![CDATA[At a recent presentation in Austin by Seilevel about the goals and methods of requirements gathering, a member of the audience asked "What can we do with our requirements to assure innovation?" That's a tough question with an easy answer - nothing.

What if the question had been "What can we do to prevent innovation?" That's a better question with a lot of answers.]]></description>
			<content:encoded><![CDATA[<p><img title="image of lock on door" alt="image of lock on door" src="http://sehlhorst.smugmug.com/photos/58916780-M.jpg" /></p>
<p>At a recent presentation in Austin by Seilevel about the goals and methods of requirements gathering, a member of the audience asked &#8220;What can we do with our requirements to <em>assure</em> innovation?&#8221;  That&#8217;s a tough question with an easy answer &#8211; nothing.</p>
<p>What if the question had been &#8220;What can we do to <em>prevent</em> innovation?&#8221; That&#8217;s a better question with a lot of answers.</p>
<p><strong>Struggling with too much innovation?</strong></p>
<p>Yes, people have been innovating since fire and the wheel it&#8217;s a curse we&#8217;ve inherited. In modern times, much of that innovation has happened inside companies.  3M had the post-it note, Lockheed had the skunkworks that created the SR71.  Google allows their employees to dedicate 20% of their time to whatever interests them &#8211; and Google&#8217;s employees innovate a lot.</p>
<p>Most companies do a good job of providing incremental improvements to existing products and processes.  What are  those few who struggle with innovation doing wrong?</p>
<p><strong>Companies with track records of innovation have flawed processes</strong>.</p>
<ul>
<li>They fail to screen out likely innovaters in their hiring process.</li>
<li>They mismanage their employees, who end up innovating when they should be towing the line.</li>
<li>They inadvertantly reward innovation instead of mediocrity with recognition and compensation.</li>
<li>They create opportunities to innovate and their employees drive Mack trucks through these loopholes.</li>
</ul>
<p>Here is some guidance about how to fix those problems:</p>
<p><strong>Top ten tips for preventing innovation</strong></p>
<ol>
<li><strong>Hire employees looking for safety in their roles</strong>.  Innovation happens when people stretch outside their comfort zones &#8211; don&#8217;t let them stretch!  Find people who primarily want security and a nine-to-five role, stay away from those troublemakers who want to &#8220;change the world.&#8221;</li>
<li><strong>Hire incompetent employees</strong>.  What better way to prevent innovation than to have people who have to focus just to do the bare minimum?  For extra safety, try and find someone who can take credit for other people&#8217;s work and hide their own incompetence &#8211; these people are easier to promote, which will become important later.  If we are forced to hire someone who is competent, it&#8217;s critical that we make sure that they only have one area of expertise.  People with more than one area of expertise, <a title="Navigating areas of expertise" href="http://tynerblain.com/blog/2005/12/02/intimate-domains-%e2%80%93-navigating-areas-of-expertise/">switch-hitters</a>, just cause trouble by talking to people on other teams.</li>
<li><strong>Keep salaries below the 75th percentile</strong>.  Innovators know their value &#8211; and when they aren&#8217;t applying for jobs with intrinsic utility to them, they are commanding higher salaries.  If we keep our salaries low, there&#8217;s much less risk of one of these innovators sneaking into our organization.  As a bonus, we&#8217;ll save a fortune!</li>
<li><strong>Read  <a title="The Ten Faces of Innovation at Amazon" href="http://www.amazon.com/exec/obidos/ASIN/0385512074/tynerblain-20">The Ten Faces of Innovation</a> by Tom Kelley of IDEO</strong>. He focuses on the types of people and organizational behavior that encourage innovation. The writing style is very clever &#8211; Mr. Kelley writes as if he were trying to <em>encourage</em> innovation &#8211; what a riot! He identifies ten personas that contribute to innovation.  Put those ten faces on the wall in HR like an FBI most-wanted poster and coach HR to screen those people out.</li>
<li><strong>Treat employees like garbage</strong>.  Yell at them.  Whenever possible, call them at midnight to yell at them some more.  They work for <em>us</em>.  If they get uppity, make them work on the weekends.  Make them dig holes and fill them back up again.  Threaten them &#8211; especially when they <em>need</em> the job.  If you can&#8217;t yell, at least be condescending in public forums.  Remember we are smarter than they are.  Punks.</li>
<li><strong>Reward conservative and marginal successes</strong>.  The old rule of thumb for office politics was &#8220;It takes ten good projects to recover from one bad project.&#8221;   Stick to it!  If we punish people for mistakes when they &#8217;swing for the fences&#8217;, and reward them for marginal and safe projects, they will quickly get the idea.  This is the most subtle of all the tips &#8211; but don&#8217;t worry &#8211; people will figure out the reward system and shy away from those risky projects.  This technique has the added benefit of propogating itself up and down the management hierarchy.  Many organizations get lucky, and do this one accidentally.  Wish we were all so lucky!</li>
<li><strong>Micromanage</strong>. We&#8217;ve been promoted because we understand their jobs so well that we could do them in our sleep.  Whatever those pesky little people think, it&#8217;s wrong.  We know what we want, we know how we want it (not like that, you fool!).  Every day we should make sure they do things exactly like we want. Even things like using the right font in their emails can be important.  If anything slips thru unmanaged, then we aren&#8217;t doing our jobs.  Of course, if we have a good boss, he&#8217;ll tell us exactly how to manage them.</li>
<li><strong>Only create customer-requested features</strong>.  Let our customers tell us what to do.  Lucky for us &#8211; customers don&#8217;t have big ideas, they keep us focused on what we&#8217;re doing.  Don&#8217;t let them whine about their <em>other</em> problems &#8211; that&#8217;s not why we&#8217;re talking to them.  We just want to know if they like the idea of animated buttons on all the dialogs.  Stay away from the unhappy customers &#8211; if we aren&#8217;t getting the job done now, well, we don&#8217;t really care what they say (they are <em>existing </em>customers, we need <em>new</em> customers).  We&#8217;re here to solve <em>our</em> problems.  Oh &#8211; and don&#8217;t second guess the customer.  If they say they want the menu items in alphabetical order, well, that&#8217;s what they want.  The customer is always right.  If Henry Ford had listened, think of how fast horses would be today.  Even better, <a title="Stay away from my users" href="http://tynerblain.com/blog/2005/12/20/stay-away-from-my-users/">appoint a user-representative</a>, then we don&#8217;t have to talk to the customers at all.</li>
<li><strong>Make performance reviews easy</strong>.  Create some easy-to-measure metrics (like # of sick-days taken, # of powerpoint slides created, # of meetings attended), and use those for performance reviews.  <a title="Five measures of product manager performance" href="http://tynerblain.com/blog/2006/01/30/five-measures-of-product-manager-performance/">People always gravitate toward the metric</a>.  We can run the reviews with a minimum of effort, giving us more time to tell them how to do their jobs.  Just an hour a year.  Some managers can give feedback in 15 minutes.</li>
<li><strong>Build a kingdom</strong>.  When we have information, that means we have power.  With that power, we can grow our organization.  The more people we have, the more important we are.  We need to make sure that those other teams don&#8217;t get our information.  They might apply it in ways that we didn&#8217;t intend.  While we&#8217;re at it &#8211; make sure our people don&#8217;t find out what we know.  Not only will it protect us from them, but it will keep them from accidentally discovering a more important problem, or an alternate way to apply what they already know to a new problem domain.</li>
</ol>
<p align="left"><a target="_blank" rel="nofollow" class="tt" href="http://twitter.com/home/?status=By+@sehlhorst:+Top+ten+tips+for+preventing+innovation+http://bit.ly/Rteeo+" title="Post to Twitter"><img class="nothumb" src="http://tynerblain.com/blog/wp-content/plugins/tweet-this/icons/tt-twitter-big1.png" alt="Post to Twitter" /></a> <a target="_blank" rel="nofollow" class="tt" href="http://www.facebook.com/share.php?u=http://tynerblain.com/blog/2006/03/06/top-ten-tips-for-preventing-innovation/&amp;t=Top+ten+tips+for+preventing+innovation" title="Post to Facebook"><img class="nothumb" src="http://tynerblain.com/blog/wp-content/plugins/tweet-this/icons/tt-facebook-big4.png" alt="Post to Facebook" /></a></p>]]></content:encoded>
			<wfw:commentRss>http://tynerblain.com/blog/2006/03/06/top-ten-tips-for-preventing-innovation/feed/</wfw:commentRss>
		<slash:comments>26</slash:comments>
		</item>
		<item>
		<title>Software Testing Series: Organizing a Test Suite with Tags Part Two</title>
		<link>http://tynerblain.com/blog/2006/02/08/software-testing-series-organizing-a-test-suite-with-tags-part-two/</link>
		<comments>http://tynerblain.com/blog/2006/02/08/software-testing-series-organizing-a-test-suite-with-tags-part-two/#comments</comments>
		<pubDate>Wed, 08 Feb 2006 13:46:41 +0000</pubDate>
		<dc:creator>Scott Sehlhorst</dc:creator>
				<category><![CDATA[Lists]]></category>
		<category><![CDATA[Software development]]></category>
		<category><![CDATA[Software requirements specification]]></category>
		<category><![CDATA[Test Automation]]></category>
		<category><![CDATA[Testing]]></category>
		<category><![CDATA[managing data]]></category>
		<category><![CDATA[software testing]]></category>
		<category><![CDATA[test automation problems]]></category>
		<category><![CDATA[test maintenance]]></category>
		<category><![CDATA[test suite]]></category>
		<category><![CDATA[test suite problems]]></category>
		<category><![CDATA[unit testing software]]></category>

		<guid isPermaLink="false">http://tynerblain.com/blog/2006/02/08/software-testing-series-organizing-a-test-suite-with-tags-part-two/</guid>
		<description><![CDATA[This is the second in a three-part post about using tags as a means to organize an automated test suite.

Part 2 of this post can be read as a standalone article. If it were, it would be titled Top five problems with test automation suites. If you're only reading this post and not parts 1 and 3, pretend that this is the title.]]></description>
			<content:encoded><![CDATA[<p><img title="organized typesetting letters" alt="organized typesetting letters" src="http://sehlhorst.smugmug.com/photos/49901557-M.jpg" /></p>
<p><strong>Organizing a test suite with tags (part 2)</strong></p>
<p>This is the second in a three-part post about using tags as a means to organize an automated test suite.</p>
<p>Part 2 of this post can be read as a standalone article.  If it were, it would be titled <em><strong>Top five problems with test automation suites</strong></em>.  If you&#8217;re only reading this post and not parts 1 and 3, pretend that this is the title.</p>
<ul>
<li><a title="Organizing a test suite with tags part one" href="http://tynerblain.com/blog/2006/02/06/software-testing-series-organizing-a-test-suite-with-tags-part-one/">In part one of this post</a> we developed an understanding of tagging as a technology, including it&#8217;s pros and cons.</li>
<li>In part two of this post we will define the top five opportunities and problems inherent in the organization of automated test suites.</li>
<li>In <a title="Organizing a test suite with tags part 3" href="http://tynerblain.com/blog/2006/02/18/software-testing-series-organizing-a-test-suite-with-tags-part-three/">part three of this post</a> we will explore an approach to combining tagging with test suite organization.</li>
</ul>
<p><strong>What are the problem areas inherent in managing automated tests?</strong></p>
<p>We start with identification of the problems or opportunities, before defining what the requirements will be.  This is the same process we discussed in <a title="From MRD to PRD: The key to defining a spec" href="http://tynerblain.com/blog/2006/01/24/from-mrd-to-prd-the-key-to-defining-a-spec/"><em>From MRD to PRD</em></a>, applied to the test-automation space.  The following are the top five problem areas we can identify about test automation suites.</p>
<ol>
<li><strong>Maintaining the suite becomes too expensive.</strong>  Once we have a suite in place, we have to maintain it.  As the size of the suite grows, the amount of maintenance of existing test grows.  It grows in proportion to the number of tests in the suite and the rate of change of the underlying software being tested.  As the amount of maintenance grows, so does its expense.</li>
<li><strong>Developers will never start using the suite</strong>.  Change is bad.  Well, for many people it is.  Asking someone with a full time, salaried job to take on additional responsibilities has to be done correctly.  There is absolutely a risk that people won&#8217;t start using the suite.  Since this project is focusing on iterative development of an already deployed tool, already in use, this problem really doesn&#8217;t apply.</li>
<li><strong>Developers will stop using the suite.</strong>  Developers avoid tedium.  They&#8217;re smart.  They want to avoid unneccesary work, menial work, and irrelevant work.  If the developers perceive the test suite in any of these ways, we&#8217;re doomed &#8211; they will stop using it.</li>
<li><strong>Not testing the right stuff.</strong>  A test suite that doesn&#8217;t test the right areas of the software is worse than not having one at all &#8211; because it gives you a false sense of confidence.</li>
<li><strong>Test suite becomes less effective over time.</strong>  An initially effective suite can grow less effective over time as the underlying software changes.  Individual tests become irrelevant as they become impossible to reproduce with the application &#8211; perhaps the user interface has changed.  If test design was linked to the heaviest usage patterns, and those patterns change, then coverage of the new heavy usage parts of the suite will be reduced &#8211; and the effectiveness of the suite will be reduced.</li>
</ol>
<p><strong>Which problems should we address with software?</strong></p>
<p>With limited resources, we need to make sure that we focus our <em>software</em> efforts on those problems where software can have the most impact on solving the problem.  We&#8217;ll start by identifying</p>
<ol>
<li><strong>Maintaining the suite becomes too expensive.</strong>  There are three approaches to solving this problem &#8211; reduce the required maintenance, make the required maintenance more efficient, and reduce the cost of the labor that maintains the solution.  Labor cost reductions may very well be the most effective general way to solve this problem, but given the  <em>real world </em>project constraints for the project behind this post, we aren&#8217;t exploring that option.  This is a candidate for the software solution.</li>
<li><strong>Developers will never start using the suite.</strong>  Make them want to use it, or make them use it.  We believe you want to make them want to use it &#8211; both by evangelizing the benefits and by quickly crossing the <em><a title="Getting past the suck threshold" href="http://tynerblain.com/blog/2005/12/14/getting-past-the-suck-threshold/">suck threshold</a></em> so that users get positive feedback.  For this project, we have taken that approach, although it&#8217;s true that there is also a mandate from the dev team&#8217;s managers that we must make sure they use it.  With process and education approaches that have proven effective, this is not a target of the current software solution.</li>
<li><strong>Developers will stop using the suite.</strong>  The looming mandate will assure that developers won&#8217;t go AWOL on the suite.  But if they can present a compelling reason to their managers, there is a risk that they will decide to stop using it.  This is a candidate for the software solution.</li>
<li><strong>Not testing the right stuff. </strong> Test suite planning is a science unto itself.  We will keep in mind &#8220;ways to make test suite planning easier&#8221; as a candidate for the software solution, but we aren&#8217;t otherwise targeting this for the current software solution.</li>
<li><strong>Test suite becomes less effective over time.</strong>  Tests can grow irrelevant over time when the software they test is constantly changing (as in this project).  This problem has been addressed to a large extent by using <a title="Foundation series: Intro to whitebox testing" href="http://tynerblain.com/blog/2006/01/12/foundation-series-black-box-and-white-box-software-testing/">whitebox</a> <a title="Foundation series: Intro to unit testing" href="http://tynerblain.com/blog/2006/01/19/foundation-series-unit-testing-software/">unit tests</a> in the test suite.  We are not targeting this as part of the current software solution.</li>
</ol>
<p>Reminder</p>
<ul>
<li><a title="Organizing a test suite with tags part one" href="http://tynerblain.com/blog/2006/02/06/software-testing-series-organizing-a-test-suite-with-tags-part-one/">In part one of this post</a> we developed an understanding of tagging as a technology, including it&#8217;s pros and cons.</li>
<li>In part two of this post we defined the top five opportunities and problems inherent in the organization of automated test suites.</li>
<li>In <a title="Organizing a test suite with tags part 3" href="http://tynerblain.com/blog/2006/02/18/software-testing-series-organizing-a-test-suite-with-tags-part-three/">part three of this post</a> we will explore an approach to combining tagging with test suite organization.</li>
</ul>
<p>- &#8211; -</p>
<p>Check out the <a title="Software testing series index" href="http://tynerblain.com/blog/software-testing-series-index/">index of <em>software testing series posts</em></a> for more articles.</p>
<p align="left"><a target="_blank" rel="nofollow" class="tt" href="http://twitter.com/home/?status=By+@sehlhorst:+Software+Testing+Series%3A+Organizing+a+Test+Suite+with+Tags+Part+Two+http://bit.ly/HZNlL+" title="Post to Twitter"><img class="nothumb" src="http://tynerblain.com/blog/wp-content/plugins/tweet-this/icons/tt-twitter-big1.png" alt="Post to Twitter" /></a> <a target="_blank" rel="nofollow" class="tt" href="http://www.facebook.com/share.php?u=http://tynerblain.com/blog/2006/02/08/software-testing-series-organizing-a-test-suite-with-tags-part-two/&amp;t=Software+Testing+Series%3A+Organizing+a+Test+Suite+with+Tags+Part+Two" title="Post to Facebook"><img class="nothumb" src="http://tynerblain.com/blog/wp-content/plugins/tweet-this/icons/tt-facebook-big4.png" alt="Post to Facebook" /></a></p>]]></content:encoded>
			<wfw:commentRss>http://tynerblain.com/blog/2006/02/08/software-testing-series-organizing-a-test-suite-with-tags-part-two/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Five Measures of Product Manager Performance</title>
		<link>http://tynerblain.com/blog/2006/01/30/five-measures-of-product-manager-performance/</link>
		<comments>http://tynerblain.com/blog/2006/01/30/five-measures-of-product-manager-performance/#comments</comments>
		<pubDate>Tue, 31 Jan 2006 05:10:10 +0000</pubDate>
		<dc:creator>Scott Sehlhorst</dc:creator>
				<category><![CDATA[Consulting]]></category>
		<category><![CDATA[Lists]]></category>
		<category><![CDATA[People management]]></category>
		<category><![CDATA[Requirements]]></category>
		<category><![CDATA[managing data]]></category>
		<category><![CDATA[measuring performance]]></category>
		<category><![CDATA[measuring product managers]]></category>
		<category><![CDATA[performance reviews]]></category>
		<category><![CDATA[product manager metrics]]></category>
		<category><![CDATA[product manager performance]]></category>

		<guid isPermaLink="false">http://tynerblain.com/blog/2006/01/30/five-measures-of-product-manager-performance/</guid>
		<description><![CDATA[
Joy posted a really good article last week at Seilevel&#8217;s requirements defined blog, Measuring product manager performance on internal system products.  Her post is a followup to an extensive and heated debate that happened last fall on the Austin PMM forum.  It&#8217;s a great forum to subscribe to &#8211; a lot of experienced [...]]]></description>
			<content:encoded><![CDATA[<p><img title="American idol judges" src="http://sehlhorst.smugmug.com/photos/54571137-M.jpg" alt="American idol judges" /></p>
<p>Joy posted a really good article last week at <a href="http://www.requirements.seilevel.com/blog/">Seilevel&#8217;s requirements defined</a> blog, <a title="Measuring product manager performance" href="http://requirements.seilevel.com/blog/2006/01/measuring-product-manager-performance.html"><em>Measuring product manager performance on internal system products</em></a>.  Her post is a followup to an extensive and heated debate that happened last fall on the Austin PMM forum.  It&#8217;s a great forum to subscribe to &#8211; a lot of experienced people with strong opinions and steamer trunks full of anecdotal data &#8211; and they don&#8217;t all agree.  You get to see the coin from all three sides* with this group &#8211; it&#8217;s awesome.</p>
<h2><span id="more-89"></span>Five Reasonable Metrics for Product Managers</h2>
<p>She puts together a summary of <strong>five reasonable, measurable metrics for Product Managers</strong></p>
<ol>
<li><strong>Track scope creep</strong> beyond a baseline of the requirements by counting new requirements added (and outside the original project scope).</li>
<li><strong>Track errors of omission</strong> by counting new requirements added after the baseline (but within the original project scope).</li>
<li><strong>Track errors of ambiguity/incorrectness</strong> by counting changes to requirements after they have been baselined.</li>
<li><strong>Measure user adoption or satisfaction</strong>, presumably relative to an initial goal.</li>
<li><strong>Measure the &#8220;missed <a title="Definition of ROI" href="http://tynerblain.com/blog/2006/02/01/definition-of-roi-return-on-investment/">ROI</a>&#8220;</strong> of the delivered project, relative to the initial plan.</li>
</ol>
<p>There is good detail behind the sources of the measurements and methods of measurement.  Joy also recognizes that they are imperfect metrics.  I love the discussion that she has started, and hope it extends beyond this post as well.  <em>If you have a blog, post another followup to this one, and link back to both of our posts.</em></p>
<h2>People perform to the metric</h2>
<p><strong></strong>Measuring performance quantitatively is extremely hard.  It can be very easy to make measurements, but it is very hard to know what to measure.  The only thing worse than not having any clear objectives for an employee is having the wrong metrics.  At the end of a review period (or during a project debrief), you want to be able to tell someone more than &#8220;exceeds/meets/fails-to-meet expectations.&#8221;</p>
<p>The problem then becomes defining a metric for measuring performance.  Even worse than not having a metric is reaching the end of a review period and finding that someone excelled against the metrics, but failed against the objectives of the company.   This is a classical organizational design problem, not just a &#8220;how do I measure product managers&#8221; problem.  We will explore the larger problem in general, but use the PdM in specific for examples.</p>
<p>I contend that people&#8217;s performance is at best<em> influenced by</em>, and at worst <em>strictly designed for</em> meeting metrics.  The philosophy and approach below is built upon that premise.</p>
<h2>Looking at the bigger picture</h2>
<p><strong></strong><br />
On <em>The West Wing</em>, Leo is coached before a press briefing to respond with &#8220;<em>I don&#8217;t accept the premise of your question.</em>&#8221; when asked a lose-lose question.  We should take a step back and explore the premise, instead of blindly critiquing the actionable ideas Joy presents.</p>
<p><img title="open box" src="http://sehlhorst.smugmug.com/photos/54569138-M.jpg" alt="open box" /></p>
<h2>Thinking outside the box</h2>
<p><strong></strong>Since we talk about requirements definition a lot here, let&#8217;s approach the definition of a performance measurement system as a requirements elicitation exercise.</p>
<h2>Why do you measure someone&#8217;s performance?</h2>
<p>First identify the problem/opportunity of increasing the success of the company. It is reasonable to believe that people impact the success of your company through their performance.</p>
<ul>
<li><strong>As a company, you have a goal.</strong> This could be philanthropic, profit motivated, or be based on any other company vision.  Assume for the sake of this exercise that your company is profit motivated.  Your company also has a set of implicit and explicit values &#8211; Google includes &#8220;do no evil&#8221; in their list of values.  Think of these as constraints on what your employees do and how they do it.</li>
<li><strong>People&#8217;s performance in their role either advances or hinders your company in reaching its goal.</strong> You therefore want to put systems in place that maximize people&#8217;s <em>aligned</em> performance with your company&#8217;s goals.  You will also dedicate internal resources (a cost) to create and maintain this system.</li>
<li><strong>You want to maximize the long term, positive impact</strong> that a person&#8217;s performance has on your company goals.</li>
</ul>
<h2>What are the elements of your company&#8217;s goals that you want to impact?</h2>
<p><strong></strong>What are those things that you want to achieve as a company, <em>which you want to achieve through individual performance?</em> For this exercise, let&#8217;s assume that you believe that profits are best achieved through long term successful product management relationships with your clients.</p>
<p>Based on that, and focusing on product managers, what are the traits or actions you want to encourage to support your goals?  Determining those aspects of your company objectives that are best addressed through individual performance is an ideation process.</p>
<ul>
<li><strong>You want your projects to succeed.</strong> Successful projects will occasionally lead to repeat business, and failed projects will cause you to lose long term clients by weakening your relationships.  Successful projects <a title="Statistics on project failure" href="http://tynerblain.com/blog/2006/01/06/the-best-way-to-improve-roi-is-with-good-requirements/"> will differentiate you from your competitors</a>.</li>
<li><strong>You want to improve project ROI for your customers</strong>.  By providing your customers with more cost-effective projects, you will gain additional business, and also make existing business more profitable.</li>
<li><strong>You want relationships with decision makers</strong>.  A bad reputation will stop the best sales cycle on a dime.  A good reputation can open doors, uncover opportunities, and serve as a tie-breaker in competitive bids.  Having a good reputation will help you close more deals, and close them more profitably.</li>
</ul>
<h2>What are the measurements you should use to assess performance?</h2>
<p>You are crafting a system of measurement, designed to achieve the subset of goals that you believe are best accomplished through individual performance.  As such, you should review some <em>design considerations</em>.</p>
<ul>
<li><strong>You need to be aware of the danger of <em>false precision</em></strong>.  Here&#8217;s an example &#8211; in a 3 month period, one product manager wrote 100 requirements that did not change after the baseline.  Another product manager wrote 50.  Who is the better product manager?  What about developers &#8211; is the developer who writes more lines of code the better developer?  What about the one who closes the most issues?  These metrics do not give you useful information without context.  They are easy to measure, but hard to show the relevance of the measurement to the stated objectives. In fact, the best thing that can be said about them is that they are easy to measure.</li>
<li><strong>You need to avoid destructive (but instinctive) human behavior</strong>.  Another example &#8211; you penalize product managers for changing requirements after the baseline &#8211; specifically based on %changed data. Your developers find the spec to be ambiguous, so they ask questions to get clarification.  The product manager answers the questions instead of updating the spec.  Your product manager ends up wasting a lot of time explaining, but avoids getting <em>dinged</em> on an easily measurable metric.  By aligning behavior with the metric, this product manager becomes less efficient (by repeating the same explanation over and over), while simultaneously improving his &#8220;score.&#8221;</li>
<li><strong>You need to avoid performance metrics that can not be controlled by the employee</strong>.  It can be demotivating to employees to know that their efforts to affect their performance reviews are futile.  In the worst case, the employee will give up.  In the best case, the employee will do what is right <em>in spite of</em> the metric &#8211; and you will fail to equitably reward the employee.  There is an entire industry that defines compensation systems using quantified metrics.  The stock market uses the same approach.</li>
<li><strong>You want to give feedback regularly</strong>.  Presenting an employee with feedback and suggestions for improvement will result both in more job satisfaction and in ever-increasing impact from the employee.  This is not best done during a performance review (although it should happen then).  Feedback should be given repeatedly during the performance period &#8211; to give the employee an opportunity to course-correct along the way.  This would be <em>agile performance-management</em>.  Waiting until the performance review to surprise someone with good or bad news is the <em>waterfall performance management method</em>.</li>
</ul>
<h2>OK, sounds impossible &#8211; what do I do?</h2>
<p>A fomulaic appraisal system <em>should not be used</em>.</p>
<p>It is inefficient because the metrics can mislead you about who is doing a great job and who isn&#8217;t.  Metrics will stimulate sub-optimal behavior in employees, ultimately subverting your company objectives to some degree.</p>
<p>The right way to assess performance is to qualitatively assess the results of the work done by the employee.  Talk to your contacts at the client to assess the impact the employee has had on the relationship.  Have the employee submit periodic status reports with both anecdotes and progress updates. Review the success of the project, and identify the context &#8211; were the results <em>in spite of</em> or <em>because of</em> the efforts of the employee?  Ask the consumers of his artifacts (requirements documents) for their opinions on the quality of the documents &#8211; and develop an understanding of their capabilities to judge.  Through the course of the review period, interview the employee and ask questions about the content of the status report.  By understanding what&#8217;s working and what isn&#8217;t, what&#8217;s easy and what&#8217;s hard, and what&#8217;s on time and what&#8217;s late; you can apply your own <em>expert opinion</em> about an employee&#8217;s performance &#8211; <strong>and share it with the employee right then</strong>.  This also then gives you the ability to assess the employee&#8217;s improvement relative to the feedback he has received.</p>
<h2>And another thing</h2>
<p>Another way to assess performance is to identify goals at the beginning of a review period, and track progress towards those goals.  These high level abstractions are easy to align with company objectives, and can be easy to measure (did you sell an extra million dollars in services to your account this quarter?).  This approach can be very effective when evaluating adaptive high-performing employees with the latitude to operate in a loose organizational structure to &#8220;do whatever it takes&#8221; to get the job done.  This can be done in conjunction with the other qualitative assessments outlined above.</p>
<p><span style="text-decoration: line-through;">Align bonuses with goal-based measurement of final results (not interim steps), and manage salary via qualitative assessments.  Note that this approach is only effective when reviewing empowered, typically professional, employees.</span></p>
<p>[Update: 2009.08.31: Edited the above article for style, and struck through the final piece of advice.  Watch Dan Pink's fantastic <a title="Dan Pink on the science of motivation" href="http://www.ted.com/talks/dan_pink_on_motivation.html">TED talk on the science of motivation</a>.  Based on his research, you should not reward product managers for performance.  Honestly, I don't know what the right answer is - I'm conflicted, as Dan's ideas (and facts) resonate with me, but I also can't shake my belief in a reward system.]<br />
<em>*heads, tails, and the edge make up the three sides of a coin</em></p>
<p align="left"><a target="_blank" rel="nofollow" class="tt" href="http://twitter.com/home/?status=By+@sehlhorst:+Five+Measures+of+Product+Manager+Performance+http://bit.ly/uWw6f+" title="Post to Twitter"><img class="nothumb" src="http://tynerblain.com/blog/wp-content/plugins/tweet-this/icons/tt-twitter-big1.png" alt="Post to Twitter" /></a> <a target="_blank" rel="nofollow" class="tt" href="http://www.facebook.com/share.php?u=http://tynerblain.com/blog/2006/01/30/five-measures-of-product-manager-performance/&amp;t=Five+Measures+of+Product+Manager+Performance" title="Post to Facebook"><img class="nothumb" src="http://tynerblain.com/blog/wp-content/plugins/tweet-this/icons/tt-facebook-big4.png" alt="Post to Facebook" /></a></p>]]></content:encoded>
			<wfw:commentRss>http://tynerblain.com/blog/2006/01/30/five-measures-of-product-manager-performance/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Top Ten Use Case Mistakes</title>
		<link>http://tynerblain.com/blog/2006/01/26/top-ten-use-case-mistakes/</link>
		<comments>http://tynerblain.com/blog/2006/01/26/top-ten-use-case-mistakes/#comments</comments>
		<pubDate>Thu, 26 Jan 2006 11:56:09 +0000</pubDate>
		<dc:creator>Scott Sehlhorst</dc:creator>
				<category><![CDATA[Lists]]></category>
		<category><![CDATA[Polls]]></category>
		<category><![CDATA[Requirements]]></category>
		<category><![CDATA[Requirements Models]]></category>
		<category><![CDATA[Use Cases]]></category>
		<category><![CDATA[brief use case]]></category>
		<category><![CDATA[business use case]]></category>
		<category><![CDATA[CRUD]]></category>
		<category><![CDATA[CRUD use cases]]></category>
		<category><![CDATA[managing data]]></category>
		<category><![CDATA[top ten]]></category>
		<category><![CDATA[use case analysis]]></category>
		<category><![CDATA[use case mistakes]]></category>
		<category><![CDATA[use case tutorial]]></category>
		<category><![CDATA[use cases]]></category>

		<guid isPermaLink="false">http://tynerblain.com/blog/2006/01/26/top-ten-use-case-mistakes/</guid>
		<description><![CDATA[
The top ten use case mistakes
We&#8217;re reiterating the top five use case mistakes from Top five use case blunders  and adding five more.  For details on the first five, go back to that post.
There&#8217;s also a poll at the end of this post &#8211; vote for the worst mistake.

Inconsistency.
Incorrectness.
Wrong priorities.
Implementation cues.
Broken traceability.
Unanticipated error [...]]]></description>
			<content:encoded><![CDATA[<p><img alt="broken glasses" title="broken glasses" src="http://sehlhorst.smugmug.com/photos/53921544-M.jpg" /><br />
<strong>The top ten use case mistakes</strong></p>
<p>We&#8217;re reiterating the top five use case mistakes from <a title="Top five use case mistakes" href="http://tynerblain.com/blog/2005/12/23/top-five-use-case-blunders/"><em>Top five use case blunders</em></a>  and adding five more.  For details on the first five, <a href="http://tynerblain.com/blog/2005/12/23/top-five-use-case-blunders/">go back to that post</a>.</p>
<p>There&#8217;s also a poll at the end of this post &#8211; <strong>vote for the worst mistake</strong>.</p>
<ol>
<li><strong>Inconsistency.</strong></li>
<li><strong>Incorrectness.</strong></li>
<li><strong>Wrong priorities.</strong></li>
<li><strong>Implementation cues.</strong></li>
<li><strong>Broken traceability.</strong></li>
<li><strong>Unanticipated error conditions</strong>. The error conditions are explicitly called out in a <a title="Use case series - formal use cases" href="http://tynerblain.com/blog/2005/12/20/use-case-series-formal-use-case/"><em>formal</em> use case</a> as exception courses.  When we fail to think about how things can go wrong, we take a bad situation (an error) and make it worse by leaving our users with no reasonable way to deal with the errors.</li>
<li><strong>Overlooking system responses. </strong>When people use computers, the computers respond.  It is a cause and effect relationship &#8211; and ideally one that is predictable and comfortable to the user.  Reading a use case should be like watching a tennis match, with activities being performed alternately by the user and the system.  &#8220;The user does X, the system does Y, the user does Z&#8230;&#8221;</li>
<li><strong>Undefined actors.</strong>  Novice and expert users have different ways of using an application.  Different design tradeoffs will be made to accomodate for these users.  Understanding the domain of the user can also be important.  Imagine a calculator application &#8211; the use case of &#8220;get a quick answer to a calculation while doing something else&#8221; will be very different for a loan application officer than it will be for a research scientist.</li>
<li><strong>Impractical use cases.</strong>  We have to remember to validate with our developers that they can implement the use cases, given the current project constraints.  As a former co-worker is fond of saying &#8211; &#8220;It&#8217;s software &#8211; <em>we can do anything</em>&#8221; which is true.  But considering the skills of the currently staffed team, the budget and timeline for the project, and the relative priority of the use case is prudent.</li>
<li><strong>Out of scope use cases</strong>.  If we don&#8217;t define the system boundaries, or scope of our effort, we risk wasting a lot of time and money documenting irrelevant processes.  Starting with the specious argument &#8211; although our user has to drive to the office in order to perform her job, we don&#8217;t include her commute in the scope of our solution.  An online fantasy sports league application would certainly include a use case for picking players for individual teams &#8211; it may or may not include researching player-statistics.  Knowing where the boundary is will prevent us from defining and building undesired or unnecessary functionality.</li>
</ol>
<p><strong>More discussion on common use case mistakes</strong></p>
<p>I liked <a title="Use case pitfalls" href="http://www.sdmagazine.com/documents/s=815/sdm0001d/">this article by Susan Lily on use case pitfalls</a>.  Susan goes into more detail on <em>out of scope use cases</em>(#10 above), where she talks about defining the system boundary in <a title="Use case series - UML diagrams" href="http://tynerblain.com/blog/2005/12/26/use-case-series-uml-20-use-case-diagrams/">UML use case diagrams</a> as a means of helping to avoid out of scope use cases.  She also encourages using a standard template for use cases (<em>Inconsistency &#8211; </em>#1) and proposes a minimum set of criteria for creating your own templates.  She provides a good argument against CRUD use cases &#8211; in a nutshell, they do not represent primary user goals (but rather tertiary goals).</p>
<p>At one point she proposes a compromise of including <em>low-fidelity</em> screen mockups in use cases as a means to make them easier to understand and more efficient to communicate.  I disagree with her here &#8211; this is at best a slippery slope, and more likely the use case equivalent of <a title="A requirements documentation mistake" href="http://tynerblain.com/blog/2006/01/25/a-requirements-documentation-mistake/">my requirements documentation mistake</a>.  Because images can be so powerful &#8211; even the simplest screen design elements will provide design guidance (<em>Implementation cues </em>- #4) to the developers &#8211; IMHO, it is unavoidable.</p>
<p><em>&#8211;</em></p>
<p><em><strong>We&#8217;ve added a new feature to Tyner Blain &#8211; polls on individual posts!</strong>  We&#8217;re going back and adding polls to the most popular posts, and including them in many of the new ones.  Each poll can have up to 7 entries &#8211; if an item isn&#8217;t displayed, hover over the up or down arrows and the list will scroll.  If the text for an entry appears truncated, hover over it with the mouse and the text will scroll.  </em><em>Vote early and vote often, and thanks for your vote!  </em><br />
&#8211;</p>
<p><strong>Poll: The worst use case mistake is</strong></p>
<p><!--adsense#dpoll_1414--></p>
<p>If you selected <em>&#8216;Other &#8211; not on the list&#8217;</em> please add a comment and tell us why!</p>
<p align="left"><a target="_blank" rel="nofollow" class="tt" href="http://twitter.com/home/?status=By+@sehlhorst:+Top+Ten+Use+Case+Mistakes+http://bit.ly/mBqB3+" title="Post to Twitter"><img class="nothumb" src="http://tynerblain.com/blog/wp-content/plugins/tweet-this/icons/tt-twitter-big1.png" alt="Post to Twitter" /></a> <a target="_blank" rel="nofollow" class="tt" href="http://www.facebook.com/share.php?u=http://tynerblain.com/blog/2006/01/26/top-ten-use-case-mistakes/&amp;t=Top+Ten+Use+Case+Mistakes" title="Post to Facebook"><img class="nothumb" src="http://tynerblain.com/blog/wp-content/plugins/tweet-this/icons/tt-facebook-big4.png" alt="Post to Facebook" /></a></p>]]></content:encoded>
			<wfw:commentRss>http://tynerblain.com/blog/2006/01/26/top-ten-use-case-mistakes/feed/</wfw:commentRss>
		<slash:comments>5</slash:comments>
		</item>
		<item>
		<title>Top five presentation tips</title>
		<link>http://tynerblain.com/blog/2006/01/23/top-five-presentation-tips/</link>
		<comments>http://tynerblain.com/blog/2006/01/23/top-five-presentation-tips/#comments</comments>
		<pubDate>Mon, 23 Jan 2006 19:26:02 +0000</pubDate>
		<dc:creator>Scott Sehlhorst</dc:creator>
				<category><![CDATA[Communication]]></category>
		<category><![CDATA[Lists]]></category>
		<category><![CDATA[Presentation]]></category>
		<category><![CDATA[managing data]]></category>

		<guid isPermaLink="false">http://tynerblain.com/blog/2006/01/23/top-five-presentation-tips/</guid>
		<description><![CDATA[
From Start to End has a great post, Some tips on presentations.  Very little we can add here &#8211; check it out.
Our top five presentation tips (our first four picks are from the list behind the link)

Know your audience.  A key preparation &#8211; you have to have a goal for a presentation.  [...]]]></description>
			<content:encoded><![CDATA[<p><img style="width: 250px; height: 187px" title="microphone" alt="microphone" src="http://sehlhorst.smugmug.com/photos/51655408-M.jpg" /></p>
<p><a title="blog home" href="http://rationalizedthoughts.blogspot.com/">From Start to End</a> has a great post, <a title="some tips from marcus" href="http://rationalizedthoughts.blogspot.com/2006/01/some-tips-on-presentations.html">Some tips on presentations</a>.  Very little we can add here &#8211; check it out.</p>
<p><strong>Our top five presentation tips</strong> (our first four picks are from the list behind the link)</p>
<ol>
<li><strong>Know your audience</strong>.  A key preparation &#8211; you have to have a goal for a presentation.  Are you convincing, educating or inspiring people?  What do those people care about (and what do they already know?)?  Also &#8211; <a title="It is not business it is just personal" href="http://tynerblain.com/blog/2005/12/08/it%e2%80%99s-not-business-it%e2%80%99s-just-personal/">do you actually <em>know the people</em> in <em>the audience?</em></a></li>
<li><strong>Revise and rewrite</strong>.  Editing is the best thing ever.  When we first put ideas down, it&#8217;s generally from our point of view.  Validate that the content is targeted at the audience.</li>
<li><strong>Minimize the text on the slide</strong>.  Eyecharts distract from the presenter.  People read ahead &#8211; the slide content should provide cues for you to speak, and for your audience to remember.  If we need a bunch of text to support our point, we include it in a handout.</li>
<li><strong>One idea per slide</strong>.  Focus!</li>
<li><strong>Include supporting slides</strong>.  We&#8217;re already simplifying the content we present to maximize the impact of the ideas, which means that there is <em>more content</em> somewhere, but we haven&#8217;t shown it.  Often someone in the audience (generally interested person, micro-manager, dude-trying-to-look-smart) will ask drill down questions &#8211; &#8220;Where did you get that data?&#8221; &#8220;Isn&#8217;t that diagram overly simplified?&#8221;.  Adding those supporting slides (created in previous presentations, or prior to revision) after a blank slide (with the title &#8220;End of presentation&#8221;) to the deck.  Don&#8217;t plan on showing these slides, just have them at the ready.</li>
</ol>
<p>The best advice I know about preparing content for a presentation: Plan the <em>formal</em> part of the presentation to share 2/3 of what you want to tell the audience.  Draw that last third out through engaging conversation and <em>informal asides</em> during the formal presentation.</p>
<p align="left"><a target="_blank" rel="nofollow" class="tt" href="http://twitter.com/home/?status=By+@sehlhorst:+Top+five+presentation+tips+http://bit.ly/pSzyU+" title="Post to Twitter"><img class="nothumb" src="http://tynerblain.com/blog/wp-content/plugins/tweet-this/icons/tt-twitter-big1.png" alt="Post to Twitter" /></a> <a target="_blank" rel="nofollow" class="tt" href="http://www.facebook.com/share.php?u=http://tynerblain.com/blog/2006/01/23/top-five-presentation-tips/&amp;t=Top+five+presentation+tips" title="Post to Facebook"><img class="nothumb" src="http://tynerblain.com/blog/wp-content/plugins/tweet-this/icons/tt-facebook-big4.png" alt="Post to Facebook" /></a></p>]]></content:encoded>
			<wfw:commentRss>http://tynerblain.com/blog/2006/01/23/top-five-presentation-tips/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
	</channel>
</rss>
