<?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:itunes="http://www.itunes.com/dtds/podcast-1.0.dtd"
>

<channel>
	<title>Scott Porad &#187; Agile</title>
	<atom:link href="http://www.scottporad.com/category/agile/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.scottporad.com</link>
	<description></description>
	<lastBuildDate>Thu, 29 Jul 2010 15:24:10 +0000</lastBuildDate>
	<generator>http://wordpress.org/?v=2.8.6</generator>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<!-- podcast_generator="Blubrry PowerPress/1.0.4" mode="advanced" entry="normal" -->
	<itunes:summary></itunes:summary>
	<itunes:author>Scott Porad</itunes:author>
	<itunes:explicit>no</itunes:explicit>
	<itunes:image href="http://www.scottporad.com/wp-content/plugins/powerpress/itunes_default.jpg" />
	<itunes:subtitle></itunes:subtitle>
	<image>
		<title>Scott Porad</title>
		<url>http://www.scottporad.com/wp-content/plugins/powerpress/rss_default.jpg</url>
		<link>http://www.scottporad.com/category/agile/</link>
	</image>
		<item>
		<title>How to Measure Test Coverage Effectively</title>
		<link>http://www.scottporad.com/2010/06/16/how-to-measure-test-coverage-effectively/</link>
		<comments>http://www.scottporad.com/2010/06/16/how-to-measure-test-coverage-effectively/#comments</comments>
		<pubDate>Wed, 16 Jun 2010 15:35:34 +0000</pubDate>
		<dc:creator>scottporad</dc:creator>
				<category><![CDATA[Agile]]></category>

		<guid isPermaLink="false">http://www.scottporad.com/?p=2130</guid>
		<description><![CDATA[I am a huge proponent of test automation.  That is, having robots that exercise the code to verify that it&#8217;s working as expected.  There are numerous and endless reasons for why test automation is important, but I&#8217;ll leave it up to you to search the Interwebs and learn why.
In an automated test environment, it&#8217;s important [...]]]></description>
			<content:encoded><![CDATA[<div class="tweetmeme_button" style="float: right; margin-left: 10px;"><a href="http://api.tweetmeme.com/share?url=http%3A%2F%2Fwww.scottporad.com%2F2010%2F06%2F16%2Fhow-to-measure-test-coverage-effectively%2F"><img src="http://api.tweetmeme.com/imagebutton.gif?url=http%3A%2F%2Fwww.scottporad.com%2F2010%2F06%2F16%2Fhow-to-measure-test-coverage-effectively%2F" height="61" width="51" /></a></div><p>I am a huge proponent of test automation.  That is, having robots that exercise the code to verify that it&#8217;s working as expected.  There are numerous and endless reasons for why test automation is important, but I&#8217;ll leave it up to you to search the Interwebs and learn why.</p>
<p>In an automated test environment, it&#8217;s important to understand how much code is covered by the automated tests.  Knowing the portion of code that is covered influences trust in the automated testing, and how much manual testing is needed.</p>
<p>There are tools that will do this for you called &#8220;code coverage&#8221; tools.  (For example, at Cheezburger we use a product called NCover.)</p>
<p>Typically—and forgive me for the gross oversimplification—these tools watch your code while the automation is running and keep track of which lines were executed and which weren&#8217;t. The executed lines are considered &#8220;covered&#8221; and the others are considered &#8220;uncovered&#8221;.  As a result, what you end up with is a <em>code coverage ratio</em>:</p>
<p style="padding-left: 30px;">code coverage ratio = covered code / total code</p>
<p>Unfortunately, using a code coverage ratio is not the best way to measure test coverage effectively, and many teams make this mistake.</p>
<p>To understand why, back up and think about the goal of measuring test automation code coverage.  The goal of test coverage is to ensure that <em>all</em> your code is covered.  In other words, that you have<em> zero uncovered code</em>.</p>
<p>When measuring coverage by percentage, it&#8217;s easy for the code coverage ratio to look like you&#8217;re moving in the right direction when you&#8217;re really not.  In other words, yesterday coverage was x%, and today bunch of code was added, and coverage is still x% (or greater than x%), so we&#8217;re all good.</p>
<p>But, you&#8217;re not&#8230;let me illustrate by example: say for example on Monday you have 50% code coverage.  Then, on Tuesday you write a new feature which adds a flim-flam to your wiga-magig.  After you introduce the new feature, you run the coverage report and see that your new code coverage is 51%.  Hooray&#8230;the code coverage is moving in the right direction!  That&#8217;s good, right?</p>
<p>It is good, but it&#8217;s also deceiving.  Let&#8217;s look more closely at our codebase:</p>
<pre style="padding-left: 30px;padding-bottom:20px">   <strong>Day  LOC*  Covered   Uncovered   Ratio</strong>
   Mon  1000      500         500     50%
   Tue  1100      560         540     51%
   * - LOC = Lines of Code</pre>
<p>On Tuesday, when you wrote your new feature, there were 100 new lines of code introduced, a 10% increase in the code base.  And, most of those lines of code were covered by automated tests.  But, there are still 40 lines that are uncovered.  In other words, even though your code coverage ratio increased, you moved further away from the goal of <em>zero uncovered lines</em>.</p>
<p>So, what&#8217;s the right way to do this?  If the goal is to have zero lines of uncovered code, then the correct metric to monitor is&#8230;the most effective way to measure test automation coverage&#8230;here it comes&#8230;wait for it&#8230;<em>lines of uncovered code</em>!</p>
<p>Notes:</p>
<ul>
<li>For the purposes of illustration, I used lines of code.  There are more precise metrics than LOC, such as methods or, my preferred, symbol points.</li>
<li>Also, I do know that coverage isn&#8217;t everything.  When thinking about test automation there is &#8220;quantity&#8221; and &#8220;quality&#8221;.  Coverage tells you quantity—how much of the code is covered?  It does not tell you quality—are the automated tests any good?</li>
</ul>
]]></content:encoded>
			<wfw:commentRss>http://www.scottporad.com/2010/06/16/how-to-measure-test-coverage-effectively/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>How We&#8217;re Improving Our Team Using Kaizen</title>
		<link>http://www.scottporad.com/2010/02/10/how-were-improving-our-team-using-kaizen/</link>
		<comments>http://www.scottporad.com/2010/02/10/how-were-improving-our-team-using-kaizen/#comments</comments>
		<pubDate>Wed, 10 Feb 2010 15:25:04 +0000</pubDate>
		<dc:creator>scottporad</dc:creator>
				<category><![CDATA[Agile]]></category>
		<category><![CDATA[Development]]></category>
		<category><![CDATA[Productivity]]></category>

		<guid isPermaLink="false">http://www.scottporad.com/?p=1671</guid>
		<description><![CDATA[There&#8217;s an expression I&#8217;ve heard that says there are two types of work: working in your business and working on your business.  What&#8217;s the difference?
Working in your business is doing the work of making the business go.  For example, if you have a widget factory, you&#8217;re working in your business when you&#8217;re making widgets.
Working on [...]]]></description>
			<content:encoded><![CDATA[<div class="tweetmeme_button" style="float: right; margin-left: 10px;"><a href="http://api.tweetmeme.com/share?url=http%3A%2F%2Fwww.scottporad.com%2F2010%2F02%2F10%2Fhow-were-improving-our-team-using-kaizen%2F"><img src="http://api.tweetmeme.com/imagebutton.gif?url=http%3A%2F%2Fwww.scottporad.com%2F2010%2F02%2F10%2Fhow-were-improving-our-team-using-kaizen%2F" height="61" width="51" /></a></div><p>There&#8217;s an expression I&#8217;ve heard that says there are two types of work: working <em>in</em> your business and working <em>on</em> your business.  What&#8217;s the difference?</p>
<p>Working <em>in</em> your business is doing the work of making the business go.  For example, if you have a widget factory, you&#8217;re working in your business when you&#8217;re making widgets.</p>
<p>Working <em>on</em> your business is doing the work of improving the business.  For example, if you have a widget factory, you&#8217;re working on your business when you streamline your processes to produce more widgets at a lower cost.</p>
<p>There&#8217;s a Japanese work <a href="http://en.wikipedia.org/wiki/Kaizen"><em>kaizen</em></a> which literally means &#8220;improvement&#8221; but has come to reflect a philosophy of continuous and regular <em>working on the business.</em></p>
<p>Last week, the CheezTech team made an effort at <em>kaizen</em>—we took an hour out of our busy schedules to talk about how we could improve our development processes and productivity.  The results, both practical and emotional, were remarkable.</p>
<p>At the end of our hour we walked away with three concrete changes to our processes.  And, we committed to meet again in a month to see how we&#8217;ve done, and look for other improvements.  The entire team felt great!</p>
<p>Today, several members of our team attended a conference and participated in an experiential session that used game-like activities to teach about teamwork and productivity.  In one of the activities, the group was divided in two teams and each team was asked to move as many baseballs as possible from here-to-there following certain rules.</p>
<p>We did it once, and our efficiency was measured.  Then, we were given exactly two minutes to discuss as a team how we could improve our process before we had to do it again.  <strong>Just two minutes of working on our business resulted in an almost 100% improvement in efficiency!</strong></p>
<p>Not only did we learn the importance of taking a time-out to discuss improvements as a team, perhaps the most important lesson had to do with the difficulty of implementing changes &#8220;to the process&#8221; while &#8220;in process&#8221;.</p>
<p>During the first attempt, two of the 14 members of the team discovered an opportunity to streamline, but were unable to effectively communicate it to the rest of the team.  Since the whole team was busy <em>working in the business</em>, it unable to divert attention and communicate in order to make improvements on-the-fly.</p>
<p>The lesson here is clear: there is genuine value in taking small amounts of time to step outside of <em>working in the business</em> and gather as a team and discuss how improvements can be made to the business.  Taking this time to step aside is critical because it&#8217;s difficult to apply changes in-process.</p>
<p>I&#8217;m excited for this new aspect of our teamwork at Cheezburger.  By itself, introducing our monthly meeting is an excellent improvement.  I&#8217;ll report back you next month to tell you how it goes.</p>
<p>P.S. For those of you familiar with Agile and Scrum development methodologies, this type of <em>kaizen</em> practice is built into the methodology by way of the &#8220;sprint retrospective meeting&#8221;.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.scottporad.com/2010/02/10/how-were-improving-our-team-using-kaizen/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>TDD: Write The Tests First!</title>
		<link>http://www.scottporad.com/2009/10/14/tdd-write-the-tests-first/</link>
		<comments>http://www.scottporad.com/2009/10/14/tdd-write-the-tests-first/#comments</comments>
		<pubDate>Wed, 14 Oct 2009 14:09:48 +0000</pubDate>
		<dc:creator>scottporad</dc:creator>
				<category><![CDATA[Agile]]></category>

		<guid isPermaLink="false">http://www.scottporad.com/?p=1175</guid>
		<description><![CDATA[Ed. Note: This is a post from an old development blog I used to write that I don&#8217;t maintain any longer.  But, since I&#8217;ve been writing about test-driven development lately, I wanted to repost it.  Enjoy!
My friend Mark and I have talked a lot in the past about doing more at unit testing. That&#8217;s something [...]]]></description>
			<content:encoded><![CDATA[<div class="tweetmeme_button" style="float: right; margin-left: 10px;"><a href="http://api.tweetmeme.com/share?url=http%3A%2F%2Fwww.scottporad.com%2F2009%2F10%2F14%2Ftdd-write-the-tests-first%2F"><img src="http://api.tweetmeme.com/imagebutton.gif?url=http%3A%2F%2Fwww.scottporad.com%2F2009%2F10%2F14%2Ftdd-write-the-tests-first%2F" height="61" width="51" /></a></div><p><em>Ed. Note: This is a post from an old development blog I used to write that I don&#8217;t maintain any longer.  But, since I&#8217;ve been writing about <a href="http://www.scottporad.com/2009/09/25/test-automation-saves-time-and-improves-quality/">test-driven development</a> lately, I wanted to repost it.  Enjoy!</em></p>
<p>My friend <a href="http://twitter.com/markpuck">Mark</a> and I have talked a lot in the past about doing more at unit testing. That&#8217;s something I&#8217;ve really been focusing on lately and one of the things that has come out of it is that code written for unit tests is subtly different than code not. This became crystal clear to me just a moment ago as I was writing this:</p>
<p><a href="http://pastie.org/322821">http://pastie.org/322821</a></p>
<p>The first way I wrote it was a somewhat untestable way of doing things: in order to test AllowPost my unit test had to know all about our configuration stuff and it just couldn&#8217;t easily be tested without a bunch of dependencies. Of course, my unit test framework doesn&#8217;t know about those dependencies without making it jump through a whole bunch of hoops. By re-writing it the second way, the method AllowPost was an atomic unit that could be tested without knowing about the other stuff.</p>
<p>Of course, I want some tests that cover &#8220;the other stuff&#8221;, but that&#8217;s at a higher level. First, I have to get the lowest levels of tests working before the higher level tests will, otherwise it&#8217;s all spaghetti.</p>
<p>This may all be old news to you, but for me it really drove home the phrase &#8220;test-driven development&#8221;&#8230;in other words, the tests are actually shaping the code.  The tests are <em>driving</em> the development.</p>
<p>Suddenly, it makes so much sense why, in order for TDD to be effective, you have to write the tests first. Otherwise, you may end up with code that isn&#8217;t testable in terms of a unit test framework.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.scottporad.com/2009/10/14/tdd-write-the-tests-first/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>An Example Showing How Test Automation Saves Time and Improves Quality</title>
		<link>http://www.scottporad.com/2009/09/25/test-automation-saves-time-and-improves-quality/</link>
		<comments>http://www.scottporad.com/2009/09/25/test-automation-saves-time-and-improves-quality/#comments</comments>
		<pubDate>Fri, 25 Sep 2009 16:00:05 +0000</pubDate>
		<dc:creator>scottporad</dc:creator>
				<category><![CDATA[Agile]]></category>
		<category><![CDATA[Development]]></category>

		<guid isPermaLink="false">http://scottporad.com/?p=993</guid>
		<description><![CDATA[After yesterday&#8217;s post on reaching a milestone on the way to our test automation goals, I thought I would share with you an example on why test automation makes so much sense.
Imagine you have 1 developer and 1 tester.  Each feature takes 1 day to develop and 1 day to test and ship.

For the first [...]]]></description>
			<content:encoded><![CDATA[<div class="tweetmeme_button" style="float: right; margin-left: 10px;"><a href="http://api.tweetmeme.com/share?url=http%3A%2F%2Fwww.scottporad.com%2F2009%2F09%2F25%2Ftest-automation-saves-time-and-improves-quality%2F"><img src="http://api.tweetmeme.com/imagebutton.gif?url=http%3A%2F%2Fwww.scottporad.com%2F2009%2F09%2F25%2Ftest-automation-saves-time-and-improves-quality%2F" height="61" width="51" /></a></div><p>After <a href="http://scottporad.com/2009/09/24/automated-testing-will-make-you-happier/">yesterday&#8217;s post on reaching a milestone on the way to our test automation goals</a>, I thought I would share with you an example on why test automation makes so much sense.</p>
<p>Imagine you have 1 developer and 1 tester.  Each feature takes 1 day to develop and 1 day to test and ship.</p>
<ul>
<li>For the first feature, it will take 2 days to ship&#8211;1 day to develop and 1 day to test.</li>
<li>For the second feature, it will take 3 days to ship&#8211;1 day to develop, 1 day to test the feature, and 1 day to regression test the first feature.</li>
<li>For the third feature, it will take 4 days to ship&#8211;1 day to develop, 1 day to test the feature, and 2 days to regression test the first and second features.</li>
</ul>
<p>For the fourth feature&#8230;you know how it goes.  By the time you get to 10 features it will take you 11 days to develop, test, regression test and ship your code.</p>
<p>Of course, in the real world that never happens.  In the real world, some relatively arbitrary amount of time is determined for testing based on how many new features are being added to the site.  As a result, all the previous features only get a cursory regression, or they get no regression at all.</p>
<p>In other words, without test automation, the more features you have, the less quality assurance that you do because it becomes prohibitively expensive to ensure complete test coverage.</p>
<p>Now, add test automation: it takes 1 day to develop, 1.5 days to write the tests, and 0.5 days to run tests for <em>all of your features</em> and ship.</p>
<ul>
<li>Feature #1: 3 days to ship&#8211;1 day develop, 1.5 days write tests, 0.5 days run tests and ship.</li>
<li>Feature #2: 3 days to ship&#8211;1 day develop, 1.5 days write tests, 0.5 days run tests and ship.</li>
<li>Feature #3: 3 days to ship&#8211;1 day develop, 1.5 days write tests, 0.5 days run tests and ship.</li>
</ul>
<p>For the fourth feature&#8230;do you see the difference here?  If you do the math, by the time you ship your 10th feature it will have taken you 30 days.  With manual testing it will have taken 65 days!  That&#8217;s right&#8211;it will have taken you less than half the time!</p>
<p>Or, what happens in reality is that you will spend 30 days on both approaches, and then your product will only be half as good with manual testing.</p>
<p>Now, I get this is a simple example, but map it out over a few months or a year or the lifetime of your web site and you&#8217;ll see what I do: <em>test automation simply makes sense</em>.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.scottporad.com/2009/09/25/test-automation-saves-time-and-improves-quality/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Automated Testing Will Make You Happier</title>
		<link>http://www.scottporad.com/2009/09/24/automated-testing-will-make-you-happier/</link>
		<comments>http://www.scottporad.com/2009/09/24/automated-testing-will-make-you-happier/#comments</comments>
		<pubDate>Thu, 24 Sep 2009 21:04:00 +0000</pubDate>
		<dc:creator>scottporad</dc:creator>
				<category><![CDATA[Agile]]></category>
		<category><![CDATA[Cheezburger]]></category>
		<category><![CDATA[Development]]></category>

		<guid isPermaLink="false">http://scottporad.com/?p=987</guid>
		<description><![CDATA[This morning I realized that we&#8217;re half way to achieving our test automation goals.  Excellent!  I believe that success begets success, so I find it motivating to have achieved this milestone.  I am encouraged to complete the second half and achieve our goal.
We didn&#8217;t launch Cheezburger with complete test automation.  It&#8217;s a long story as [...]]]></description>
			<content:encoded><![CDATA[<div class="tweetmeme_button" style="float: right; margin-left: 10px;"><a href="http://api.tweetmeme.com/share?url=http%3A%2F%2Fwww.scottporad.com%2F2009%2F09%2F24%2Fautomated-testing-will-make-you-happier%2F"><img src="http://api.tweetmeme.com/imagebutton.gif?url=http%3A%2F%2Fwww.scottporad.com%2F2009%2F09%2F24%2Fautomated-testing-will-make-you-happier%2F" height="61" width="51" /></a></div><p>This morning I realized that we&#8217;re half way to achieving our test automation goals.  Excellent!  I believe that <em>success begets success</em>, so I find it motivating to have achieved this milestone.  I am encouraged to complete the second half and achieve our goal.</p>
<p>We didn&#8217;t launch Cheezburger with complete test automation.  It&#8217;s a long story as to why, but I&#8217;ll make it short: as a startup, sometimes corners get cut in the name of progress.  Unfortunately, cutting test automation is probably one of the most expensive corners to cut.  Simply put, writing code without test automation adds cost in the future.</p>
<p>For one, it&#8217;s really time consuming and expensive to go back and write tests for code that has already been written.  If it adds X more effort to a project to write the tests first, then in my experience it adds 3X to write them days, weeks or months later.</p>
<p>In addition, manually tested code is never tested as well as code that is tested by machines.  This is because as the feature set grows, each feature gets less and less human attention on each test pass.  Machine testing gives equal attention on every test pass.  The lower quality testing inevitably leads to more bugs which result in a lower quality product (and takes time to fix).</p>
<p>Many developers complain that writing tests takes longer and they have a lot of pressure to ship code faster.  WRONG!  There are plenty of studies and examples that show greater effectiveness and lower total cost with test automation.  <a href="http://www.google.com/url?sa=t&amp;source=web&amp;ct=res&amp;cd=1&amp;url=http%3A%2F%2Fresearch.microsoft.com%2Fen-us%2Fprojects%2Fesm%2Fnagappan_tdd.pdf&amp;ei=H927St65OciLtgfnt_y9DQ&amp;usg=AFQjCNGO5ql_sCI2dG5oR6mN8EFBa2OZNA&amp;sig2=qUvJ_U8DP-We1rzsKCqldQ">A Microsoft Research study on Test-Driven Development</a> (TDD) shows that initial development took 15-35% longer initially, but reduced bugs 40-90%.  I can guarantee you dollars-to-donuts that a project with a half less bugs ships faster.</p>
<p>I tell my team that writing tests is simply part of the project.  When a developer takes on a project writing the code is only a portion of the job&#8211;writing the tests is the other portion.  The developers and teams that understand that will be more successful, I am certain.</p>
<p>Also, I like to tell my team that <em>automated testing will make them happier</em>.  When you ship a project you want to celebrate the achievement, not be dragged down by issues and problems immediately thereafter.  Automated testing&#8211;done well&#8211;reduces these issues leading to more successful launches.  In my experience, people are happier when they have success.</p>
<p>Bottom line: I&#8217;m proud of my team for having reached this milestone, and I&#8217;m eager and motivated to continue on and achieve our goal.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.scottporad.com/2009/09/24/automated-testing-will-make-you-happier/feed/</wfw:commentRss>
		<slash:comments>5</slash:comments>
		</item>
		<item>
		<title>Learn to Accept Reality and Go With The Flow</title>
		<link>http://www.scottporad.com/2009/07/29/learn-to-accept-reality-and-go-with-the-flow/</link>
		<comments>http://www.scottporad.com/2009/07/29/learn-to-accept-reality-and-go-with-the-flow/#comments</comments>
		<pubDate>Wed, 29 Jul 2009 07:00:46 +0000</pubDate>
		<dc:creator>scottporad</dc:creator>
				<category><![CDATA[Agile]]></category>
		<category><![CDATA[Cheezburger]]></category>
		<category><![CDATA[Success]]></category>

		<guid isPermaLink="false">http://scottporad.com/?p=740</guid>
		<description><![CDATA[It is ridiculously hot in Seattle right now.  We&#8217;re in the middle of a very unusual heat wave&#8211;I&#8217;ve lived here for the majority of my life and I don&#8217;t ever remember a stretch like this!  Most people here aren&#8217;t prepared for hot weather&#8211;I&#8217;d say at most 5% of homes have air conditioning.
But, I&#8217;m [...]]]></description>
			<content:encoded><![CDATA[<div class="tweetmeme_button" style="float: right; margin-left: 10px;"><a href="http://api.tweetmeme.com/share?url=http%3A%2F%2Fwww.scottporad.com%2F2009%2F07%2F29%2Flearn-to-accept-reality-and-go-with-the-flow%2F"><img src="http://api.tweetmeme.com/imagebutton.gif?url=http%3A%2F%2Fwww.scottporad.com%2F2009%2F07%2F29%2Flearn-to-accept-reality-and-go-with-the-flow%2F" height="61" width="51" /></a></div><p>It is ridiculously hot in Seattle right now.  We&#8217;re in the middle of a very unusual heat wave&#8211;I&#8217;ve lived here for the majority of my life and I don&#8217;t ever remember a stretch like this!  Most people here aren&#8217;t prepared for hot weather&#8211;I&#8217;d say at most 5% of homes have air conditioning.</p>
<p>But, I&#8217;m not complaining.  Since it&#8217;s so often cloudy and overcast in Seattle, I try very hard not to complain about the times when it&#8217;s uncomfortably hot.  In fact, I think there&#8217;s a lesson to be learned from this heat that can be applied to developing a web site.</p>
<div id="attachment_752" class="wp-caption alignleft" style="width: 234px"><img class="size-full wp-image-752" style="margin:7px;" title="All-Time Record High for Seattle" src="http://scottporad.files.wordpress.com/2009/07/photo.jpg" alt="All-Time Record High for Seattle" width="224" height="336" /><p class="wp-caption-text">All-Time Record High for Seattle</p></div>
<p>When it comes to the weather, Mother Nature doesn&#8217;t always cooperate with what us hooomans, as the LOLcats like to say, have planned.  We plan a wedding, but it rains.  We plan to work, but it&#8217;s 99 degrees and there&#8217;s no AC in the office, so it&#8217;s impossible to concentrate.</p>
<p>In other words, there are things beyond our control, and accepting that is important.  Learning to <em>go with the flow</em> is a very valuable skill.</p>
<p>One thing that&#8217;s beyond our control is knowing exactly how long it&#8217;s going to take to get a project done.</p>
<p>For example, we&#8217;ve been working on a project at Cheezburger that we&#8217;re going to be rolling out in phases over the next few months.  Our plan was to ship the first phase this week, but it&#8217;s not ready yet.  At that point, we sort of had some options:</p>
<p>We could be rigid, and have shipped when it wasn&#8217;t ready simply for the purpose of &#8220;meeting our schedule&#8221;.  But, we&#8217;re just going to spend the next week fixing the things that we&#8217;re ready.  The customers will be unhappy, the bosses will be aggravated, and the developers will be demoralized.  This is a lousy plan.</p>
<p>We could beat ourselves up and burn the midnight oil, so that it &#8220;shipped on schedule&#8221;.  While that may ship this phase on time, and make the dev team feel like heroes, it will likely result in a delay on the next phase because a) we will have burned ourselves out, b) haste makes waste (i.e. bugs) that we&#8217;ll have to spend time fixing.  This is also a lousy plan.</p>
<p>Or, we could accept reality: it&#8217;s taking us between 3-7 days longer than we thought it would.  (Rome wasn&#8217;t built in a day, as they say.  But, I&#8217;m also pretty sure that when they started building Rome they couldn&#8217;t predict accurately how long it would take.)</p>
<p>Personally, I don&#8217;t see a lot of value in trying to bend reality toward arbitrary hooman schedules.  Nobody wins with rigidity&#8211;it just creates a lot of extra effort and stress without much benefit.  Just like we can&#8217;t always control or predict the weather, sometimes we can&#8217;t control or predict how a project will go either.</p>
<p><em>You should sign up for my RSS feed which you can do by </em><a style="color:#1c9bdc;text-decoration:underline;margin:0;padding:0;" href="http://feeds2.feedburner.com/ScottPorad"><em>clicking here</em></a><em>.  Subscribing to my RSS feed will save you time by pushing my blog directly to you, and ensure that you don’t miss anything important.</em></p>
]]></content:encoded>
			<wfw:commentRss>http://www.scottporad.com/2009/07/29/learn-to-accept-reality-and-go-with-the-flow/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>For Startups, Launching and Swarm Go Together</title>
		<link>http://www.scottporad.com/2009/06/25/for-startups-launching-and-swarm-go-together/</link>
		<comments>http://www.scottporad.com/2009/06/25/for-startups-launching-and-swarm-go-together/#comments</comments>
		<pubDate>Thu, 25 Jun 2009 07:00:26 +0000</pubDate>
		<dc:creator>scottporad</dc:creator>
				<category><![CDATA[Agile]]></category>
		<category><![CDATA[Lazy-Messy-Backwards]]></category>
		<category><![CDATA[Success]]></category>
		<category><![CDATA[Successful Startups]]></category>

		<guid isPermaLink="false">http://scottporad.com/?p=574</guid>
		<description><![CDATA[This week I wrote about launching and swarming.  It wasn&#8217;t by accident that I wrote about both these topics this week&#8211;it was deliberate.
In Launching: The Only Thing That Matters, I made the point that your startup couldn&#8217;t realize the value they were creating without putting the product in front of customers.  In other words, if [...]]]></description>
			<content:encoded><![CDATA[<div class="tweetmeme_button" style="float: right; margin-left: 10px;"><a href="http://api.tweetmeme.com/share?url=http%3A%2F%2Fwww.scottporad.com%2F2009%2F06%2F25%2Ffor-startups-launching-and-swarm-go-together%2F"><img src="http://api.tweetmeme.com/imagebutton.gif?url=http%3A%2F%2Fwww.scottporad.com%2F2009%2F06%2F25%2Ffor-startups-launching-and-swarm-go-together%2F" height="61" width="51" /></a></div><p>This week I wrote about <a href="http://scottporad.com/2009/06/22/launching-the-only-thing-that-matters/">launching</a> and <a href="http://scottporad.com/2009/06/24/want-to-get-more-done-heres-how-do-less/">swarming</a>.  It wasn&#8217;t by accident that I wrote about both these topics this week&#8211;it was deliberate.</p>
<p>In <em>Launching: The Only Thing That Matters</em>, I made the point that your startup couldn&#8217;t realize the value they were creating without putting the product in front of customers.  In other words, if you don&#8217;t start the race, you can&#8217;t win.</p>
<p><em>Want to Get More Done? Here’s How: Do Less!</em> illustrated how by focusing on one project at at time a team can deliver results more quickly while providing the business greater flexibility and eliminating waste.</p>
<p>Why did I write about them together?  What do they have in common?</p>
<p>The answer is if launching as soon as possible is a key to success, then the &#8220;swarm&#8221; method of project development is an essential ingredient.  The startups that swarm will launch more quickly and, therefore, have an advantage over those that don&#8217;t.  Startups are hard, so every bit of advantage is priceless.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.scottporad.com/2009/06/25/for-startups-launching-and-swarm-go-together/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Want to Get More Done?  Here&#039;s How: Do Less!</title>
		<link>http://www.scottporad.com/2009/06/24/want-to-get-more-done-heres-how-do-less/</link>
		<comments>http://www.scottporad.com/2009/06/24/want-to-get-more-done-heres-how-do-less/#comments</comments>
		<pubDate>Wed, 24 Jun 2009 07:00:10 +0000</pubDate>
		<dc:creator>scottporad</dc:creator>
				<category><![CDATA[Agile]]></category>
		<category><![CDATA[Success]]></category>
		<category><![CDATA[Successful Startups]]></category>

		<guid isPermaLink="false">http://scottporad.com/?p=556</guid>
		<description><![CDATA[I gave a talk recently about some of the development practices we follow at Cheezburger.  The structure of the talk was a series of questions, one of them being:
Why try to get a lot of stuff done when you could just do one thing instead?
All companies want to get as much done as possible, and [...]]]></description>
			<content:encoded><![CDATA[<div class="tweetmeme_button" style="float: right; margin-left: 10px;"><a href="http://api.tweetmeme.com/share?url=http%3A%2F%2Fwww.scottporad.com%2F2009%2F06%2F24%2Fwant-to-get-more-done-heres-how-do-less%2F"><img src="http://api.tweetmeme.com/imagebutton.gif?url=http%3A%2F%2Fwww.scottporad.com%2F2009%2F06%2F24%2Fwant-to-get-more-done-heres-how-do-less%2F" height="61" width="51" /></a></div><p>I gave a talk recently about some of the development practices we follow at Cheezburger.  The structure of the talk was a series of questions, one of them being:</p>
<blockquote><p>Why try to get a lot of stuff done when you could just do one thing instead?</p></blockquote>
<p>All companies want to get as much done as possible, and most companies try to accomplish this by doing a lot of things.  Our experience has found that doing less things actually results in greater productivity.</p>
<p>We call our approach the &#8220;Swarm method&#8221;.  I don&#8217;t think we invented Swarm, but we&#8217;ve found success with it.  In a nutshell, Swarm says that you&#8217;re entire team should work on one project at a time until it is complete and has shipped.  Then, like swarm of bees, the team should move to the next project all at once.</p>
<p>What!?  How could this possibly be better than working on many projects at once?  Let me show you how:</p>
<ul>
<li>Imagine you have a team with 5 developers, or 25 dev days per week.</li>
<li>Imagine you have five 1 week projects, or 25 dev days of work.</li>
<li>In the &#8220;Do Lots&#8221; method each developer is assigned a project and they&#8217;re all done in one week.</li>
<li>In the Swarm method, the entire team works on a project for a day and they&#8217;re all done in a week.</li>
</ul>
<p>So, I guess there&#8217;s not really a difference, right?  Wrong.  What happens on Tuesday when the boss changes his or her mind about the project priorities.</p>
<ul>
<li>In the Do Lots method, no projects are ready to ship, so two days have been wasted.</li>
<li>In the Swarm method, two projects are ready to ship, so a) something got done, and b) no days were wasted.</li>
</ul>
<p style="text-align:left;">In short, the moral of the story is:</p>
<blockquote>
<p style="text-align:left;">Being Busy != Being Productive</p>
</blockquote>
<p style="text-align:left;">Furthermore:</p>
<blockquote>
<p style="text-align:left;">Being Productive = Shipping Code</p>
<p style="text-align:left;">Shipped Code = Opportunity to Create Value</p>
</blockquote>
<p>If you&#8217;re working in a dynamic, startup environment you cannot afford to waste your time; every moment of your time needs to be focused on creating value for your startup.  And, you cannot afford to be inflexible or you will miss opportunities.  Swarm solves these problems.</p>
<p><span style="color:#444444;font-family:Georgia;font-size:14px;line-height:23px;text-align:left;"><em>You should sign up for my RSS feed which you can do by<span> </span></em><a style="color:#1c9bdc;text-decoration:underline;margin:0;padding:0;" href="http://feeds2.feedburner.com/ScottPorad"><em>clicking here</em></a><em>. Subscribing to my RSS feed will save you time by pushing my blog directly to you, and ensure that you don’t miss anything important.</em></span></p>
]]></content:encoded>
			<wfw:commentRss>http://www.scottporad.com/2009/06/24/want-to-get-more-done-heres-how-do-less/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>How to Launch: Pare Back to the Essentials</title>
		<link>http://www.scottporad.com/2009/06/23/how-to-launch-pare-back-to-the-essentials/</link>
		<comments>http://www.scottporad.com/2009/06/23/how-to-launch-pare-back-to-the-essentials/#comments</comments>
		<pubDate>Tue, 23 Jun 2009 07:00:35 +0000</pubDate>
		<dc:creator>scottporad</dc:creator>
				<category><![CDATA[Agile]]></category>
		<category><![CDATA[Consulting]]></category>
		<category><![CDATA[Success]]></category>
		<category><![CDATA[Successful Startups]]></category>

		<guid isPermaLink="false">http://scottporad.com/?p=541</guid>
		<description><![CDATA[I was inspired to write the Launching is the Only Thing That Matters post based on an experience I had with a client over the weekend.  Let me start the story by telling the ending:
In web development, a launch is not the finish line.  Launching is the starting line.  Not only is it the start [...]]]></description>
			<content:encoded><![CDATA[<div class="tweetmeme_button" style="float: right; margin-left: 10px;"><a href="http://api.tweetmeme.com/share?url=http%3A%2F%2Fwww.scottporad.com%2F2009%2F06%2F23%2Fhow-to-launch-pare-back-to-the-essentials%2F"><img src="http://api.tweetmeme.com/imagebutton.gif?url=http%3A%2F%2Fwww.scottporad.com%2F2009%2F06%2F23%2Fhow-to-launch-pare-back-to-the-essentials%2F" height="61" width="51" /></a></div><p>I was inspired to write the <a href="http://scottporad.com/2009/06/22/launching-the-only-thing-that-matters/">Launching is the Only Thing That Matters</a> post based on an experience I had with a client over the weekend.  Let me start the story by telling the ending:</p>
<p>In web development, a launch is not the finish line.  Launching is the starting line.  Not only is it the start of a business, it&#8217;s also the start of the next phase of development.  I think the people I advise are a lot more comfortable launching quickly when the realize launching is just the beginning.</p>
<p>The clients I was talking to are trying to launch a relatively straightforward online retail toy store.  The design is beautiful, the product selection exquisite.  But after a year of developing the site (read: one year equals paid lots of money to a web dev shop) the were not very close to launching.</p>
<p>I explained that they needed to focus on launching their site and the way to do that was &#8220;strip out everything that is not absolutely 100% essential&#8221;.  Like many people launching a web site, they had a million features and loved everyone of them like children&#8230;they could not imagine living without any of them.</p>
<p>One of the beautiful things about a web site is that you can regularly and incrementally add features to the site.  It&#8217;s not like building a house where it all has to be done at the same time.  For a web site, you can easily build the essentials (kitchen, bathroom, bedroom) then add on the remainder (living room, dining room playroom) later on.</p>
<p>Agile has an expression that I let guide me often: do the simplest thing that could possibly work.  Pause for a moment and think about that: what&#8217;s the the absolute minimum necessary?  I wrote to them:</p>
<blockquote><p>In my opinion, it&#8217;s this: home page, product list page, product detail pages, shopping cart, contact info page.  That&#8217;s the minimum amount you need to launch an online store.  I would pare it back to that, and launch.</p></blockquote>
<p>Will that be the most robust and amazing online toy store ever?  No.  Will it work?  Yes.  Does it allow you to start creating value?  Yes.  Does it put you in a position to start learning about your customers?  Yes.  As soon as you launch, can you begin work on some of those amazing toy store features?  Absolutely!</p>
<p>In my view, when you see launching as the beginning, it becomes clear that launching as quickly&#8211;even before your product is fully complete or finely polished&#8211;is the most logical path to success.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.scottporad.com/2009/06/23/how-to-launch-pare-back-to-the-essentials/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Launching: The Only Thing that Matters</title>
		<link>http://www.scottporad.com/2009/06/22/launching-the-only-thing-that-matters/</link>
		<comments>http://www.scottporad.com/2009/06/22/launching-the-only-thing-that-matters/#comments</comments>
		<pubDate>Mon, 22 Jun 2009 07:00:49 +0000</pubDate>
		<dc:creator>scottporad</dc:creator>
				<category><![CDATA[Agile]]></category>
		<category><![CDATA[Consulting]]></category>
		<category><![CDATA[Success]]></category>
		<category><![CDATA[Successful Startups]]></category>

		<guid isPermaLink="false">http://scottporad.com/?p=538</guid>
		<description><![CDATA[The most dangerous pitfall for a startup is to waste resources&#8211;time, energy, and money&#8211;on things that don&#8217;t matter.  I mean &#8220;don&#8217;t matter&#8221; in a relative, not absolute sense.  In other words, spending resources on things that &#8220;don&#8217;t matter now&#8220;.
When I advise startups I return to this theme a lot.  And, there is one piece of [...]]]></description>
			<content:encoded><![CDATA[<div class="tweetmeme_button" style="float: right; margin-left: 10px;"><a href="http://api.tweetmeme.com/share?url=http%3A%2F%2Fwww.scottporad.com%2F2009%2F06%2F22%2Flaunching-the-only-thing-that-matters%2F"><img src="http://api.tweetmeme.com/imagebutton.gif?url=http%3A%2F%2Fwww.scottporad.com%2F2009%2F06%2F22%2Flaunching-the-only-thing-that-matters%2F" height="61" width="51" /></a></div><p>The most dangerous pitfall for a startup is to waste resources&#8211;time, energy, and money&#8211;on things that don&#8217;t matter.  I mean &#8220;don&#8217;t matter&#8221; in a relative, not absolute sense.  In other words, spending resources on things that &#8220;<em>don&#8217;t matter now</em>&#8220;.</p>
<p>When I advise startups I return to this theme a lot.  And, there is one piece of advice that I find myself repeating over and over again: the absolute, number one most important thing is to launch.</p>
<p>Let me repeat that because I can&#8217;t emphasize it enough: strip out everything that is not absolutely 100% essential and get your product, feature or site in front of real users or customers.</p>
<p>Why?</p>
<p>In most cases, you are trying to create value with whatever you are launching.  It is impossible for that to occur if you haven&#8217;t launched.  Simply put, whatever you are trying to achieve cannot happen until you launch.  Period.  To share the wisdom of a former co-worker, &#8220;you gotta be in it to win it&#8221;.</p>
<p>Equally as important is that the only way can start learning about what works and what doesn&#8217;t is by having real customers use it.  You may think your users or customers want a widget or gidget or flex capacitor, but you just don&#8217;t know for certain.  Until you know for certain you&#8217;re putting your resources at risk.  The surest way to find out is to get your product in front of the users and learn.</p>
<p>At the end of the day, launching is the name of the game&#8230;focus on it like a laser beam and you will succeed.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.scottporad.com/2009/06/22/launching-the-only-thing-that-matters/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
	</channel>
</rss>
