<?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/"
	xmlns:georss="http://www.georss.org/georss" xmlns:geo="http://www.w3.org/2003/01/geo/wgs84_pos#" xmlns:media="http://search.yahoo.com/mrss/"
	>

<channel>
	<title>Michael Sica&#039;s Blog</title>
	<atom:link href="http://michaelsica.wordpress.com/feed/" rel="self" type="application/rss+xml" />
	<link>http://michaelsica.wordpress.com</link>
	<description>My little neck of the internet to talk about Software Development Management.</description>
	<lastBuildDate>Sat, 02 Apr 2011 21:39:52 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.com/</generator>
<cloud domain='michaelsica.wordpress.com' port='80' path='/?rsscloud=notify' registerProcedure='' protocol='http-post' />
<image>
		<url>http://1.gravatar.com/blavatar/7b5bf6cc33e68a8f67114fc19d24103f?s=96&#038;d=http%3A%2F%2Fs2.wp.com%2Fi%2Fbuttonw-com.png</url>
		<title>Michael Sica&#039;s Blog</title>
		<link>http://michaelsica.wordpress.com</link>
	</image>
	<atom:link rel="search" type="application/opensearchdescription+xml" href="http://michaelsica.wordpress.com/osd.xml" title="Michael Sica&#039;s Blog" />
	<atom:link rel='hub' href='http://michaelsica.wordpress.com/?pushpress=hub'/>
		<item>
		<title>Testing shouldn&#8217;t be a pop-quiz</title>
		<link>http://michaelsica.wordpress.com/2011/03/31/testing-shouldnt-be-a-pop-quiz/</link>
		<comments>http://michaelsica.wordpress.com/2011/03/31/testing-shouldnt-be-a-pop-quiz/#comments</comments>
		<pubDate>Fri, 01 Apr 2011 02:18:53 +0000</pubDate>
		<dc:creator>Michael Sica</dc:creator>
				<category><![CDATA[Software Development Management]]></category>
		<category><![CDATA[acceptance criteria]]></category>
		<category><![CDATA[quality assurance]]></category>
		<category><![CDATA[scenarios]]></category>
		<category><![CDATA[user stories]]></category>

		<guid isPermaLink="false">http://michaelsica.wordpress.com/?p=26</guid>
		<description><![CDATA[Many many years ago I managed a project using RUP with Use Cases and Test Cases. The goal of the project was to build The World&#8217;s Greatest Customer Self Service Portal. Well, that was my goal anyway. At the very least, I was going to do The World&#8217;s Greatest Job Managing This Project using RUP with Use [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=michaelsica.wordpress.com&amp;blog=6524149&amp;post=26&amp;subd=michaelsica&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>Many many years ago I managed a project using RUP with Use Cases and Test Cases. The goal of the project was to build <em>The World&#8217;s Greatest Customer Self Service Portal. </em>Well, that was my goal anyway. At the very least, I was going to do <em>The World&#8217;s Greatest Job Managing This Project using RUP with Use Cases and Test Cases.</em></p>
<p>The Business Analyst and I had spent months working with &#8216;business&#8217; people crafting these perfect (giant?) Use Cases. The Use Cases were finally handed over to 2 groups. The Developers and the Testers. The Developers went off to build <em>The World&#8217;s Greatest Engineering Feat</em> from <em>The World&#8217;s Greatest Requirements,</em> while the Testers were creating <em>The World&#8217;s Greatest Test Cases. </em></p>
<p>This was bad behavior, and here&#8217;s why.</p>
<ul>
<li><em>Expensive</em>. After we spent all this time writing requirements, we were now paying to have someone else spend even more time translating the requirements into a different format (traditional Test Cases).</li>
<li>The developers are working off the requirements document, not the the Test Cases. So how are they supposed to know about all the conditions that need to be satisfied? We tried distributing/reviewing the Test Cases when they were completed, but this was way too late in the development cycle. We were seeing mismatches between the requirements and test cases, and the developers were realizing something they thought was done is going to be tested under conditions they weren&#8217;t aware of. Confusion and rework is <em>costly</em>.</li>
<li>The &#8216;business&#8217; people never saw the Test Cases because, a) they&#8217;re boring as all get-out, and b) they&#8217;re typically created after the &#8220;sign-off&#8221; of the requirements. It&#8217;s hard enough to pull them away from, you know, <em>running the business</em>. Business people can&#8217;t stand this stuff. &#8220;We&#8217;re going to do another round of read-the-stuff-written-down-by-the-tech-people? Ug.&#8221; If the people responsible for &#8220;accepting&#8221; your completed work aren&#8217;t aware of how you&#8217;re testing it, can they, or should they, really trust the final product? If it&#8217;s wrong, you&#8217;ll have to fix it. Again, more confusion and rework &#8211; <em>not cheap</em>.</li>
<li>Using nothing but the requirements you&#8217;re given, it&#8217;s awfully hard to get to the point where you&#8217;re giving the Testers a build of your application with no bugs in it. And we certainly weren&#8217;t able to pull it off. I&#8217;ve read, as I&#8217;m sure you have, that finding and fixing bugs costs a gazillon-bazillon dollars. Seriously. It&#8217;s expensive to find a bug &#8211; you&#8217;re literally paying someone to write down a problem (after they&#8217;ve double-checked that it&#8217;s actually a problem), give it to someone else to fix, that person has to make sure there&#8217;s a problem (&#8220;recreate the bug&#8221;), figure out where in the code the problem is, fix it, make sure they fixed it, perform another build &amp; deploy of your application, and have that original person verify that it&#8217;s fixed now. <em>That&#8217;s kind of expensive.</em></li>
</ul>
<p>I refer to the above-described model as the <strong>pop-quiz</strong> approach to testing, and as you can tell, it&#8217;s rather <em>expensive</em>.</p>
<p>I understand the reaction some of you have when you hear criticism levied against the classic pop-quiz approach. &#8220;<strong>Of course!&#8221;, they say, &#8220;That&#8217;s the point of QA!&#8221;</strong> To which I reply, I want the testers to find all the bugs, but everyone should know what&#8217;s expected of the final product.</p>
<p>Imagine if a Toyota Camry rolled off an assembly line and it took the last person reviewing the car to discover that you can&#8217;t flip the a/c to cold while the dash vent is on, otherwise the car explodes. <strong>Congratulations. You&#8217;ve found a bug. You&#8217;re also dead.</strong> Why the hell didn&#8217;t anyone talk about testing the cold switch like that a little sooner in the process?</p>
<p>People with &#8220;Quality Assurance&#8221; in their title should help assure quality, not just find all the problems. Pull the Quality Assurance people earlier in the process. Let them help the team and product never have a bug to begin with.</p>
<p>I&#8217;ve led teams that successfully delivered multi-million dollar projects, at impressive levels of quality, by doing just that. I put the Quality Assurance people at the beginning of any new feature development. They then work with business people/analysts to create User Stories with Acceptance Criteria for the developers to work from. User stories are comprised of two parts (not including the optional title). A narrative, which is the story sounding part, and acceptance criteria, which replace both traditional requirements and traditional test cases.</p>
<p>The narrative takes on a pretty standard form as seen below. This conveys the actor involved, the statement of the feature and why on Earth you&#8217;re building the feature.</p>
<p>As a [type of user]<br />
I want [some functionality]<br />
So I [can get some benefit]</p>
<p>A newer <a href="http://www.infoq.com/news/2008/06/new-user-story-format">alternative to this format</a>, which tries to emphasize the business value first takes on this shape.</p>
<p>In order to [achieve some value]<br />
as a [type of user]<br />
I want [some functionality]</p>
<p>Acceptance criteria can take almost any form, my suggestion is to go with the most terse and concise form possible. Acceptance criteria can be a sentence, a <a href="http://dannorth.net/whats-in-a-story/">scenario</a> (my personal favorite), a wireframe (if existing UI standards aren&#8217;t enough) &#8211; really anything. The only real rule I&#8217;m aware of is that each piece of acceptance criteria must be testable/verifiable.</p>
<p>Oh, and I&#8217;m going to make another rule right here on the spot. It must be as terse and concise as possible.</p>
<p>Example story:</p>
<p>Title: Forgot password?</p>
<p>Narrative:<br />
As a member of the web site,<br />
I want to gain access to my account even when I forget my password<br />
So I can still use my account, even though I suffer from short term memory loss</p>
<p>Acceptance Criteria:<br />
* Scenario 1: Send new password<br />
Given I have an active account<br />
And I&#8217;m not logged in<br />
When I indiciate I have forgotten my password<br />
And I provide my email address<br />
Then the web site sends me a new password to log in with</p>
<p>* Scenario 2: Bad email address format<br />
Given I am trying to provide my email address<br />
When I submit an improperly formed email address<br />
Then I see an error message explaining the format is incorrect</p>
<p>* Scenario 3: Email address not found<br />
Given I am trying to provide my email address<br />
When I submit an email address that the web site does not have on file<br />
Then I see an error message explaining they couldn&#8217;t find that email address</p>
<p>Here is a more terse version of the above acceptance criteria.</p>
<p>Acceptance Criteria:<br />
* Take an email address, and send a new password to the email address given<br />
* Show an error message if the email address format is bad or not found</p>
<p>Here is a more formal version of Scenario 2, that works with a <a href="http://jbehave.org/">certain tool</a> for automated testing.</p>
<p>* Scenario 2: Bad email address format<br />
Given I am trying to provide my email address<br />
When I submit an improperly formed<br />
Then I see an error message explaining the format is incorrect</p>
<p>Examples:<br />
| email address                   |<br />
| example @example.com   |<br />
| .example@example.com   |<br />
| example@example.com.   |<br />
| .example @example.com. |</p>
<p>I&#8217;ve used this format on multiple e-commerce projects inside a Fortune 100 company (on web sites that generate over a billion dollars a year in sales) and a &#8220;rich internet application&#8221; for a mid-sized technology company with great success. The User Story with Acceptance Criteria format (specifically the scenario format) is even spreading in the tech company to large-scale C++ infrastructure software, not something people typically associate with &#8220;User Stories&#8221;.</p>
<p>This approach &amp; format corrects all of the bad behavior I&#8217;ve seen in the past.</p>
<ul>
<li>It&#8217;s <em>cheaper</em>. You don&#8217;t pay someone to write down requirements, and another person to rewrite it all over again. You can still involve both the Business Analyst and the Quality Assurance Analyst in the creation of the Acceptance Criteria (you can even have the Product Manager write them). But now they&#8217;re working toward completing the same document instead writing their own version.</li>
<li>The developers are working off of the same document as the testers, analysts, and product/business people. Everyone is on the same page &#8211; massive reduction in confusion and &#8220;misses&#8221;, which <em>lowers cost</em>.</li>
<li>Business people get to see the complete picture, <em>once</em>. And it&#8217;s in a compact format that&#8217;s easy to digest and written in plain English.</li>
<li>I&#8217;ve seen dozens and dozens of features delivered to the testing environment with zero bugs. That <em>reduces your time to market and drives down your cost of development</em>.</li>
</ul>
<p>Please help spread the word. <strong>Stop giving pop-quizes</strong>!</p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/michaelsica.wordpress.com/26/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/michaelsica.wordpress.com/26/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/michaelsica.wordpress.com/26/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/michaelsica.wordpress.com/26/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/michaelsica.wordpress.com/26/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/michaelsica.wordpress.com/26/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/michaelsica.wordpress.com/26/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/michaelsica.wordpress.com/26/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/michaelsica.wordpress.com/26/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/michaelsica.wordpress.com/26/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/michaelsica.wordpress.com/26/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/michaelsica.wordpress.com/26/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/michaelsica.wordpress.com/26/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/michaelsica.wordpress.com/26/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=michaelsica.wordpress.com&amp;blog=6524149&amp;post=26&amp;subd=michaelsica&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://michaelsica.wordpress.com/2011/03/31/testing-shouldnt-be-a-pop-quiz/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/07a9751734ad1079d77d4c461f30ad1d?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">michaelsica</media:title>
		</media:content>
	</item>
		<item>
		<title>Managing a New Development Department, Week 1 Checklist</title>
		<link>http://michaelsica.wordpress.com/2011/01/06/managing-a-newdevelopment-department-week-1-checklist/</link>
		<comments>http://michaelsica.wordpress.com/2011/01/06/managing-a-newdevelopment-department-week-1-checklist/#comments</comments>
		<pubDate>Thu, 06 Jan 2011 14:28:17 +0000</pubDate>
		<dc:creator>Michael Sica</dc:creator>
				<category><![CDATA[Software Development Management]]></category>
		<category><![CDATA[checklist]]></category>

		<guid isPermaLink="false">http://michaelsica.wordpress.com/?p=17</guid>
		<description><![CDATA[What&#8217;s going on here? So you&#8217;ve gotten a promotion or a lateral move to a new comany. You&#8217;ve gone from being a developer, only worrying about the code. Or from managing/directing a department that&#8217;s been running well for years, to a brand new team or company, and you need to get your bearings. There&#8217;s a [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=michaelsica.wordpress.com&amp;blog=6524149&amp;post=17&amp;subd=michaelsica&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<h2>What&#8217;s going on here?</h2>
<p>So you&#8217;ve gotten a promotion or a lateral move to a new comany. You&#8217;ve gone from being a developer, only worrying about the code. Or from managing/directing a department that&#8217;s been running well for years, to a brand new team or company, and you need to get your bearings.</p>
<p>There&#8217;s a laundry list of things to setup and understand when you&#8217;re taking over a development department. This probably isn&#8217;t a complete list, but off the top of my head, here&#8217;s what I need to know my first week on job.</p>
<h2>The List</h2>
<p>Which source control tool do we use? (SVN, Perforce, CVS, Visual Source Safe)</p>
<p>What is the branching/merging strategy? How do we handle ongoing development for planned releases? How do we handle an unplanned release? (hotfix, &#8220;live site&#8221;, emergency bug fix, etc&#8230;)</p>
<p>Do we have a CI/CD server?</p>
<p>What is the approach to leveraging CI/CD?</p>
<p>What is the on-call policy/rotation?</p>
<p>What is the SLA for responding to a production issue?</p>
<p>What issue/ticket/bug tracking system do we use? How do we use it? (Issue types, workflows)</p>
<p>How do we estimate our work?</p>
<p>Who has traditionally prioritized our work?</p>
<p>Do we have release plans?</p>
<p>Do we have a standardized release notes format?</p>
<p>Do we include rollback instructions in our release notes?</p>
<p>What requirement and test case format do we use? (Use Cases, User Stories w/Acceptance Criteria, Traditional Test Cases)</p>
<p>How many environments do we have (Dev, Test, Load Test, CI, etc&#8230;), and do we have swim lanes for different activities? (Long-running project work vs. any ongoing maintenance)</p>
<p>Can we develop 100% on our local machine? If no, why not?</p>
<p>How frequently do we deliver builds to our testing environment? (And why isn&#8217;t it 1 or more a day?)</p>
<p>How much automated testing to do we have? Unit only? UI/Functional?</p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/michaelsica.wordpress.com/17/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/michaelsica.wordpress.com/17/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/michaelsica.wordpress.com/17/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/michaelsica.wordpress.com/17/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/michaelsica.wordpress.com/17/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/michaelsica.wordpress.com/17/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/michaelsica.wordpress.com/17/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/michaelsica.wordpress.com/17/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/michaelsica.wordpress.com/17/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/michaelsica.wordpress.com/17/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/michaelsica.wordpress.com/17/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/michaelsica.wordpress.com/17/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/michaelsica.wordpress.com/17/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/michaelsica.wordpress.com/17/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=michaelsica.wordpress.com&amp;blog=6524149&amp;post=17&amp;subd=michaelsica&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://michaelsica.wordpress.com/2011/01/06/managing-a-newdevelopment-department-week-1-checklist/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/07a9751734ad1079d77d4c461f30ad1d?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">michaelsica</media:title>
		</media:content>
	</item>
	</channel>
</rss>
