<?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>Critical Results</title>
	<atom:link href="http://blog.criticalresults.com/feed/" rel="self" type="application/rss+xml" />
	<link>http://blog.criticalresults.com</link>
	<description>get software done faster, sharpen your team, gain balance and control... and make your project NOT SUCK</description>
	<lastBuildDate>Wed, 01 Sep 2010 22:24:48 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.com/</generator>
<cloud domain='blog.criticalresults.com' port='80' path='/?rsscloud=notify' registerProcedure='' protocol='http-post' />
<image>
		<url>http://1.gravatar.com/blavatar/99aed6941266d3efaca4b4b792c26807?s=96&#038;d=http://s2.wp.com/i/buttonw-com.png</url>
		<title>Critical Results</title>
		<link>http://blog.criticalresults.com</link>
	</image>
	<atom:link rel="search" type="application/opensearchdescription+xml" href="http://blog.criticalresults.com/osd.xml" title="Critical Results" />
	<atom:link rel='hub' href='http://blog.criticalresults.com/?pushpress=hub'/>
		<item>
		<title>The W part of DTSTTCPW</title>
		<link>http://blog.criticalresults.com/2010/09/01/the-w-part/</link>
		<comments>http://blog.criticalresults.com/2010/09/01/the-w-part/#comments</comments>
		<pubDate>Wed, 01 Sep 2010 21:09:37 +0000</pubDate>
		<dc:creator>Mark W. Schumann</dc:creator>
				<category><![CDATA[code]]></category>
		<category><![CDATA[process]]></category>
		<category><![CDATA[scrum]]></category>
		<category><![CDATA[agile]]></category>
		<category><![CDATA[SQL]]></category>
		<category><![CDATA[DTSTTCPW]]></category>

		<guid isPermaLink="false">http://blog.criticalresults.com/?p=304</guid>
		<description><![CDATA[When developing iteratively, what exactly constitutes premature optimization? When doing the simplest thing that could possibly work, what does it mean to "work"?
<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=blog.criticalresults.com&amp;blog=9576650&amp;post=304&amp;subd=criticalresults&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>A couple of weeks ago, a question turned up on the BaseCamp site we use to coordinate one of my projects. One programmer asked what we thought of a certain calculation he was setting up on the database. It had to do with accumulating &#8220;rating&#8221; points of an item in a tree-shaped threaded discussion.</p>
<p><span id="more-304"></span></p>
<p>Stakeholders weren&#8217;t really sure how ratings would work, but at least for now they were okay with saying an item&#8217;s rating could be based on the total of the ratings of all descendant records.</p>
<p>I&#8217;m not positive that&#8217;s the best idea, but it&#8217;s a reasonable one anyway. If your comment spawns a tree of comments-upon-comments that overall garner some high ratings, that may suggest your comment was pretty interesting. By the way, in this application you can have Comments, Questions, and Answers, as well as uploads of PDFs, video, and the like. They&#8217;re all interspersed in the Conversation tree. They can all get ratings.</p>
<h2>The glaringly obvious solution</h2>
<p>Well, you&#8217;d read a main record, then all its child records, then all of those records&#8217; children, and so on. &#8220;But,&#8221; said our star Ruby guy, &#8220;that&#8217;s not gonna work.&#8221;</p>
<p>Rather, he went on,  what if we cached some intermediate results along with something like a cache timestamp, and (if I recall correctly, and I&#8217;m sorry if I don&#8217;t) feed some of the ratings up a level or two as kind of a precalculation. Posting the comment might be a little slower, but at least the ratings display gets a lot quicker in the bargain.</p>
<p>Trying to pull rank and be Mr. Super Agile, I said something like, &#8220;Dude, <a title="DTSTTCPW, on Ward's Wiki" href="http://c2.com/xp/DoTheSimplestThingThatCouldPossiblyWork.html">Do The Simplest Thing That Could Possibly Work</a>. DTSTTCPW!&#8221; And I suggested we just skip the caching and pull all those rating records on demand&#8211;because a tree scan is drop-dead easy to code and doesn&#8217;t require a lot of deep thinking.</p>
<p>Also, I have to admit that the other part of my skepticism had to do  with my faith in modern database engines. We hadn&#8217;t even chosen a  production platform, but something like Oracle can optimize the heck out  of a massive self-join operation. Why optimize it in Ruby code if the  database knows best?</p>
<p>Our developer shot back: &#8220;But that can&#8217;t possibly work! You&#8217;re forgetting the W part!&#8221;</p>
<h2>It&#8217;s not &#8220;Do The Simplest Thing,&#8221; full stop.</h2>
<p>It has to be the simplest thing <em>that could actually possibly work</em>. And our guy was saying my admittedly oversimplified implementation concept couldn&#8217;t. Which brought me back to the idea of iterative releases.</p>
<h2>Remember I said <a title="&quot;This isn't a Scrum shop&quot;--memo" href="http://blog.criticalresults.com/2010/08/12/todays-memo/">this isn&#8217;t a Scrum shop</a>?</h2>
<p>Well, it&#8217;s not. That means we don&#8217;t have Scrum Planning meetings, we don&#8217;t have Scrum Retrospective meetings, and we don&#8217;t have a true Scrum-style product backlog. And we don&#8217;t have a release at the end of each sprint, because there are no sprints.</p>
<p>There are intermediate development milestones though. When the star Ruby guy brought up the definition of &#8220;working&#8221; I went &#8220;Aha!&#8221; because he was thinking in terms of a completed, rolled-out, popular, busy website. When you have thousands of active users, caching queries can be important. I, on the contrary, was thinking in terms of iterations, and this iteration was going to be used by&#8230; like four people maybe. And query speed wasn&#8217;t their main momentary concern. And they might have come up with a totally different rating algorithm that would invalidate the caching strategy.</p>
<p>I don&#8217;t know. I&#8217;m not saying that throwing together something slow and crummy is &#8220;good enough&#8221; just because it&#8217;s a limited demo situation. On the other hand, I&#8217;m nervous about anything that smacks of <a title="Donald Knuth on Premature Optimization" href="http://c2.com/cgi/wiki?PrematureOptimization">premature optimization</a>. But when you&#8217;re trying to do the simplest thing that could possibly work, it&#8217;s important to know what you mean by &#8220;working.&#8221; And I guess it&#8217;s important to guage how much the project is likely to change <em>after</em> the next iteration.</p>
<p>Where do you draw the line between slapdash and overkill? Is it an iteration thing? What do you consider &#8220;working&#8221; when doing the simplest thing?</p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/criticalresults.wordpress.com/304/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/criticalresults.wordpress.com/304/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/criticalresults.wordpress.com/304/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/criticalresults.wordpress.com/304/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/criticalresults.wordpress.com/304/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/criticalresults.wordpress.com/304/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/criticalresults.wordpress.com/304/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/criticalresults.wordpress.com/304/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/criticalresults.wordpress.com/304/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/criticalresults.wordpress.com/304/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/criticalresults.wordpress.com/304/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/criticalresults.wordpress.com/304/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/criticalresults.wordpress.com/304/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/criticalresults.wordpress.com/304/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=blog.criticalresults.com&amp;blog=9576650&amp;post=304&amp;subd=criticalresults&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://blog.criticalresults.com/2010/09/01/the-w-part/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/b67885b041b92f249c34c51d63a84a98?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">markwschumann</media:title>
		</media:content>
	</item>
		<item>
		<title>When KanBan crumples</title>
		<link>http://blog.criticalresults.com/2010/08/29/when-kanban-crumples/</link>
		<comments>http://blog.criticalresults.com/2010/08/29/when-kanban-crumples/#comments</comments>
		<pubDate>Sun, 29 Aug 2010 21:59:01 +0000</pubDate>
		<dc:creator>Mark W. Schumann</dc:creator>
				<category><![CDATA[process]]></category>
		<category><![CDATA[projects that suck]]></category>
		<category><![CDATA[refactoring]]></category>
		<category><![CDATA[agile]]></category>
		<category><![CDATA[management]]></category>
		<category><![CDATA[KanBan]]></category>

		<guid isPermaLink="false">http://blog.criticalresults.com/?p=306</guid>
		<description><![CDATA[The KanBan is made for the project. The project is not made for the KanBan. Adventures in refactoring!<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=blog.criticalresults.com&amp;blog=9576650&amp;post=306&amp;subd=criticalresults&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>So this week I&#8217;m seeing on the KanBan:</p>
<ul>
<li>#101: &#8220;I want to be able to comment on a comment.&#8221;</li>
<li>#102: &#8220;I want to be able to post a question in response to a comment.&#8221;</li>
<li>#103: &#8220;I want to be able to post a comment or a question.&#8221;</li>
<li>#104: &#8220;I want to be able to post an answer to a question.&#8221;</li>
<li>#105: &#8220;I want to be able to comment on the conversation as a whole.&#8221;</li>
</ul>
<p>This is oversimplified and (only very slightly) dramatized, but you see the overlap and the potential for confusion. These story cards are blocking a ton of <em>other</em> work that needs to be done in the next couple of weeks. And they&#8217;ve been claimed by different developers!</p>
<p><span id="more-306"></span></p>
<h2>How did that happen?</h2>
<p>Let&#8217;s see. Many of our team members are part-time, and by that I mean they tend to work nights and weekends. Not all the same nights and weekends.</p>
<p>The project&#8217;s &#8220;marketing guy&#8221; isn&#8217;t that familiar with the story card concept, but he&#8217;s the one with his hands on the requirements, so he writes most of the cards. There&#8217;s an extra level of indirection there, because I don&#8217;t get to talk to some of the primary stakeholders, and things can get lost or duplicated in translation.</p>
<p>I&#8217;m more of a Scrum person myself, so I&#8217;m not that good at enforcing story-card-writing discipline in a KanBan environment.</p>
<p>And a couple of our sharpest Rails people just joined the team recently; they&#8217;re making significant (very well thought) changes in the data models, but the rest of us are a little slow to catch up.</p>
<h2>If it&#8217;s not one thing, it&#8217;s everything.</h2>
<p>We went through about a week of finely parsing where Alice would implement the regular comment because it was on her card, but Bob would implement comment-on-a-comment because it was on his card&#8230;</p>
<p>Call me dense, but I figured out eventually that when you see a bunch of overlapping cards in a kind of mixed-circular blockage, <em>it&#8217;s time to refactor the board</em>.</p>
<h2>So that&#8217;s what I did.</h2>
<p>I posted this on our BaseCamp site the other day:</p>
<blockquote><p>Just sharing my observations on what is and isn&#8217;t done in the whole cluster of [certain story card numbers]:</p>
<ol>
<li>Discovered  case sensitivity in Ubuntu (and thus EngineYard) servers when finding  partials. You should always :render &#8216;foo/partialname&#8217;, never  &#8216;Foo/partialname&#8217;. The Mac OSX platform will forgive you, but staging  will not.</li>
<li>You get &#8220;grayed&#8221; text from the jquery placeholder plugin even when you&#8217;ve already started to enter text in the textarea.</li>
<li>I&#8217;m not sure questions are fully implemented.</li>
<li>Answers are definitely not implemented.</li>
<li>Uploading videos, images, and PDFs&#8211;not implemented.</li>
<li>Post a comment to a conversation, it shows up nested as a reply to the last added comment.</li>
<li>Comments render in an overlapping manner.</li>
<li>Not showing user avatars or profile pics, so alt text is always seen.</li>
<li>You should be able to comment/question/answer/etc. anywhere in the discussion tree, not just at the end.</li>
</ol>
<p>It&#8217;s  really intertwined. These cards overlap like crazy. But this is what it  takes to get the whole comment/rating/question/answer/asset thing  working and looking good.</p></blockquote>
<p>Then I started hanging out and pairing more with Kevin, the new guy. He&#8217;s new to projects of this size, and I have way more development experience, but he&#8217;s also concentrated on Ruby and Rails way more than I have. We worked our way over this list yesterday, refactored a little, implemented a lot, and spotted three more issues that brought the fix list to 12.</p>
<p>(Along with Kevin, I agree that relying too much on JavaScript is a recipe for stress and heartbreak.)</p>
<p>Kevin&#8217;s off this weekend, because not all grownups work seven days a week, but I&#8217;m on a roll with the remaining six items on the list of twelve. So if it goes well this blockage will be cleared by Monday.</p>
<h2>The uptake on this</h2>
<p>The KanBan is made for the project. The project is not made for the KanBan. Let&#8217;s just refactor this complex blockage into something we can fix, and move on.</p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/criticalresults.wordpress.com/306/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/criticalresults.wordpress.com/306/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/criticalresults.wordpress.com/306/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/criticalresults.wordpress.com/306/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/criticalresults.wordpress.com/306/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/criticalresults.wordpress.com/306/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/criticalresults.wordpress.com/306/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/criticalresults.wordpress.com/306/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/criticalresults.wordpress.com/306/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/criticalresults.wordpress.com/306/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/criticalresults.wordpress.com/306/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/criticalresults.wordpress.com/306/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/criticalresults.wordpress.com/306/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/criticalresults.wordpress.com/306/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=blog.criticalresults.com&amp;blog=9576650&amp;post=306&amp;subd=criticalresults&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://blog.criticalresults.com/2010/08/29/when-kanban-crumples/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/b67885b041b92f249c34c51d63a84a98?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">markwschumann</media:title>
		</media:content>
	</item>
		<item>
		<title>From today&#8217;s memo pile</title>
		<link>http://blog.criticalresults.com/2010/08/12/todays-memo/</link>
		<comments>http://blog.criticalresults.com/2010/08/12/todays-memo/#comments</comments>
		<pubDate>Thu, 12 Aug 2010 18:49:31 +0000</pubDate>
		<dc:creator>Mark W. Schumann</dc:creator>
				<category><![CDATA[ideas]]></category>
		<category><![CDATA[process]]></category>
		<category><![CDATA[scrum]]></category>
		<category><![CDATA[agile]]></category>
		<category><![CDATA[management]]></category>
		<category><![CDATA[KanBan]]></category>
		<category><![CDATA[ScrumBan]]></category>
		<category><![CDATA[transparency]]></category>

		<guid isPermaLink="false">http://blog.criticalresults.com/?p=300</guid>
		<description><![CDATA[We're not a Scrum shop. We're more of a Kanban shop that has Scrum-like meetings. Which a lot of teams do. Here's how to make the Scrum meetings Not Suck.<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=blog.criticalresults.com&amp;blog=9576650&amp;post=300&amp;subd=criticalresults&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<table>
<tbody>
<tr>
<td>To:</td>
<td>Everyone</td>
</tr>
<tr>
<td>From:</td>
<td>Mark</td>
</tr>
</tbody>
</table>
<h2>A note on process&#8230;</h2>
<p>&#8230;as well as a reminder of today&#8217;s Weekly Scrum meeting. I&#8217;m notifying everyone (including executives and non-technical managers) because you&#8217;re all invited to  join today&#8217;s meeting as chickens, and because you might be interested in the process summary. If this stuff bores you, sorry about that. [And something about how to turn off the notifications.]</p>
<p>First off, the Scrum will start at 5pm. If other &#8220;pigs&#8221; will be in the office I will join you, so let me know. But we will also be on Skype (where I&#8217;m MarkWSchumann).  Other pigs are: [names elided]</p>
<p>If  you care to join the Scrum as a chicken (i.e., involved but not  committed), that&#8217;s fine&#8211;let me know and we&#8217;ll include you.</p>
<h2>End of announcement. Beginning of process talk.</h2>
<p>For those newly tuning in or just standing by, the Scrum meeting is really really simple. Everyone in turn answers Three Questions:</p>
<ol>
<li>What did you get done since the last Scrum meeting?</li>
<li>What do you plan to do before the next Scrum meeting?</li>
<li>What obstacles do you have?</li>
</ol>
<h3>I&#8217;m gonna say something here.</h3>
<p>The answers to these questions are <em>often</em> a variation on &#8220;I screwed up, and this is how I screwed up, and this is  how it&#8217;s affecting my team.&#8221; Let me be clear about one thing: The  process doesn&#8217;t work if you can&#8217;t be totally honest. Okay, two things:  People aren&#8217;t gonna be totally honest <em>next</em> week if you make them regret <em>this</em> week&#8217;s honesty.</p>
<p>So if Alice admits she caused a blockage because she bit off more than she could chew, no fair scolding her about the same exact thing on Monday.  She already spilled her guts. Don&#8217;t make her do it again. (She&#8217;ll wonder  why she bothered to suffer that experience the first time if it didn&#8217;t  count.) And if Bob tells you he botched some code and has to do it all  over again, appreciate the fact that he said so. Don&#8217;t make it all  dramatic. Just help him fix it and move on.</p>
<p>Got it?</p>
<p>And  the Scrum should go really quickly&#8211;maybe about three minutes per pig I  guess. And zero minutes per chicken, because chickens don&#8217;t get to talk  in Scrum meetings. If an obstacle can&#8217;t be resolved instantly, we take  it out of the meeting to talk about later.</p>
<h2>This is not really a Scrum shop.</h2>
<p>That&#8217;s been implicit all along, but now I&#8217;m actually saying it.</p>
<p>Scrum has burndown charts and a different kind of backlog  system and an explicit kind of connection to management, among other things. We don&#8217;t need those. I think.</p>
<p>We&#8217;re more of a Kanban shop that has Scrum-like meetings. Which a lot of teams do.</p>
<p>I&#8217;m gonna draw everyone&#8217;s attention to the online Kanban system we have at <a title="AgileZen--a KanBan on Port 80" href="http://agilezen.com">AgileZen</a>: [url elided] If you don&#8217;t have access to this, you should. I don&#8217;t care if you&#8217;re technically on the dev team or not&#8211;there is really <em>one</em> team here, and in a face-to-face workplace the Kanban would be an actual physical board placed where everyone can see it.</p>
<p><strong>If you want to know why the heck stuff isn&#8217;t getting done, this would be the first place to look.</strong> That&#8217;s the transparency thing.</p>
<p><em>Very</em> briefly, each &#8220;card&#8221; is supposed to move from the (sometimes hidden) Backlog column at way left, through the various columns, and into the  (sometimes hidden) Archive column at way right. Cards edged in green are Ready to be pulled to the right. Cards edged in red are Blocked and need help.</p>
<p>I encourage everyone on the dev team to watch for Blocked cards throughout the board. You can often help  with one that&#8217;s not currently in your own primary area of work.</p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/criticalresults.wordpress.com/300/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/criticalresults.wordpress.com/300/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/criticalresults.wordpress.com/300/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/criticalresults.wordpress.com/300/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/criticalresults.wordpress.com/300/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/criticalresults.wordpress.com/300/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/criticalresults.wordpress.com/300/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/criticalresults.wordpress.com/300/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/criticalresults.wordpress.com/300/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/criticalresults.wordpress.com/300/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/criticalresults.wordpress.com/300/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/criticalresults.wordpress.com/300/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/criticalresults.wordpress.com/300/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/criticalresults.wordpress.com/300/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=blog.criticalresults.com&amp;blog=9576650&amp;post=300&amp;subd=criticalresults&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://blog.criticalresults.com/2010/08/12/todays-memo/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/b67885b041b92f249c34c51d63a84a98?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">markwschumann</media:title>
		</media:content>
	</item>
		<item>
		<title>Friday Night War Story</title>
		<link>http://blog.criticalresults.com/2010/08/06/war-story/</link>
		<comments>http://blog.criticalresults.com/2010/08/06/war-story/#comments</comments>
		<pubDate>Fri, 06 Aug 2010 21:10:07 +0000</pubDate>
		<dc:creator>Mark W. Schumann</dc:creator>
				<category><![CDATA[process]]></category>
		<category><![CDATA[projects that suck]]></category>
		<category><![CDATA[management]]></category>
		<category><![CDATA[business]]></category>
		<category><![CDATA[Clipper]]></category>
		<category><![CDATA[FlagShip]]></category>
		<category><![CDATA[Linux]]></category>
		<category><![CDATA[SCO]]></category>
		<category><![CDATA[Xenix]]></category>

		<guid isPermaLink="false">http://blog.criticalresults.com/?p=295</guid>
		<description><![CDATA[Nondisclosure agreements don&#8217;t usually come with an expiration date, but this story is so old nobody will care. Still, names have been changed to protect&#8230; oh&#8230; me. I was doing this Clipper-on-Unix project (yes!) in 1996. It was a really big deal. The idea was to migrate a rather large vertical application from FoxPro on [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=blog.criticalresults.com&amp;blog=9576650&amp;post=295&amp;subd=criticalresults&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>Nondisclosure agreements don&#8217;t usually come with an expiration date, but this story is so old nobody will care. Still, names have been changed to protect&#8230; oh&#8230; me.</p>
<p>I was doing this Clipper-on-Unix project (yes!) in 1996. It was a really big deal. The idea was to migrate a rather large vertical application from FoxPro on SCO Xenix (doesn&#8217;t that make you smile already?) to <a title="FlagShip--Clipper compiler for Unix!" href="http://www.fship.com/">FlagShip</a> on Linux. We would add a few major features, mainly interfaces to credit cards and some application-specific hardware. We had a few months to do it, and I was the only Clipper guy. (And by the way, can I just say that FlagShip itself was all kinds of awesome?)</p>
<p><span id="more-295"></span></p>
<p>By &#8220;we&#8221; I mean I was subcontracting this work. I was being paid by the vertical systems vendor, not the end client. Very important point.</p>
<p>One part of the specification was &#8220;interface to the Central Registration System.&#8221; This software was going to be in a few hundred locations, and every location had to run real-time-ish transactions into the Central Registration System (CRS). So it had to work over modem lines (remember the timeframe here) and with reasonable speed. The client supplied fairly good interface specs too. This looked really hard, but on the other hand our existing vertical product only supported a slice of CRS functionality anyway, like 10%. So the &#8220;interface&#8221; part of it would be only 10% too. Right?</p>
<p>We flew out to the client headquarters to show off the nearly-completed application. There was a horrible, horrible problem in my modem-specific code&#8211;something to do with sign extension in C!&#8211;but I solved that in the hotel room around 4:00 a.m. the day of the demo.</p>
<h2>But then&#8230;</h2>
<p>&#8230;one of the acceptance testers said something about not being able to perform a certain operation on our software, that the CRS had an interface for.</p>
<p>I was surprised. Very surprised. The spec called for a straight port, plus Feature A, Feature B, and Feature C. It did not mention Features D through Z. And this operation was definitely in Feature Z territory.</p>
<p>So I said, more or less, &#8220;That&#8217;s Feature Z. We don&#8217;t have Feature Z.&#8221;</p>
<p>And the client said, &#8220;It&#8217;s part of the CRS interface!&#8221;</p>
<h3>Obviously we&#8217;re unclear on what an &#8220;interface&#8221; is.</h3>
<p>I think it&#8217;s pretty clear that an &#8220;interface&#8221; is a connection <em>between</em> systems. If my application doesn&#8217;t create widgets, and the &#8220;interface&#8221; spec says, &#8220;If you&#8217;re creating widgets, here&#8217;s the transaction you have to send,&#8221; then my response is &#8220;We&#8217;re good here. There is no widget creation.&#8221;</p>
<p>The client took it to mean <em>our application is supposed to make widgets now</em>. And it didn&#8217;t.</p>
<p>The vertical system vendor, facing a disappointed client on one side&#8211;a <em>really big</em> disappointed client&#8211;and overworked me on the other side, figured it made more sense to blame overworked me for not implementing the widget creator code.</p>
<h2>Let&#8217;s get this straight.</h2>
<p>I&#8217;d brought this up in conference calls a couple of months previously. &#8220;Hey Management Guy,&#8221; I said when reviewing the interface spec, &#8220;There&#8217;s this whole section on Widget Creation Messages. Our app doesn&#8217;t do that. How would you like us to handle the interface on that?&#8221;</p>
<p>And the Management Guy said, &#8220;Then that doesn&#8217;t apply to you.&#8221;</p>
<p>All righty then! I didn&#8217;t give it much thought after that. Over the succeeding months, when we made progress calls with various client personnel, the Widget Creation feature <em>never came up</em>. They knew we didn&#8217;t do Widgets.</p>
<h2>But then we showed up. Not for the first time.</h2>
<p>With the application. Also not for the first time.</p>
<p>And <em>that</em> time the lack of Widget Creation was an issue.</p>
<h2>My point, and I do have one.</h2>
<p>I might have a few points.</p>
<ul>
<li>Maybe it&#8217;s <em>write a negative spec</em>. Detail what <em>isn&#8217;t</em> in the scope of work in addition to what is.</li>
<li>Maybe it&#8217;s <em>make sure you know who the client is</em>. The &#8220;kid&#8221; who busted this open was not someone with a lot of rank in the client company. She wasn&#8217;t in any of the planning, design, review, or status meetings.</li>
<li>Maybe it&#8217;s <em>do frequent releases</em>. So the client at least has a chance of spotting the discrepancy sooner rather than later.</li>
<li>Maybe it&#8217;s <em>watch your contractual language</em>. This part is what saved me; I made sure the vertical systems vendor warranted that their existing code base <em>already had</em> the required functionality except for Features A, B, and C. You could draw a Venn diagram and show that Feature Z was either the client&#8217;s responsibility (because it wasn&#8217;t considered &#8220;required&#8221;) or the vendor&#8217;s (because it was &#8220;required&#8221; and they had &#8220;warranted&#8221; it) but definitely not mine.</li>
<li>Maybe it&#8217;s <em>keep asking the same questions over and over again</em>. You know what? I have no patience for that. I need to be talking to the decision maker, or someone who has authority to represent the decision maker. If they lack authority to commit, then asking for feature decisions is a clear waste of effort.</li>
</ul>
<p>So that&#8217;s my little horror story for today. Maybe later I&#8217;ll fill in the &#8220;not letting me refactor&#8221; bit of the saga. What a nightmare that was.</p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/criticalresults.wordpress.com/295/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/criticalresults.wordpress.com/295/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/criticalresults.wordpress.com/295/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/criticalresults.wordpress.com/295/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/criticalresults.wordpress.com/295/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/criticalresults.wordpress.com/295/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/criticalresults.wordpress.com/295/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/criticalresults.wordpress.com/295/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/criticalresults.wordpress.com/295/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/criticalresults.wordpress.com/295/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/criticalresults.wordpress.com/295/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/criticalresults.wordpress.com/295/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/criticalresults.wordpress.com/295/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/criticalresults.wordpress.com/295/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=blog.criticalresults.com&amp;blog=9576650&amp;post=295&amp;subd=criticalresults&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://blog.criticalresults.com/2010/08/06/war-story/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/b67885b041b92f249c34c51d63a84a98?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">markwschumann</media:title>
		</media:content>
	</item>
		<item>
		<title>Fantasy: the self-organizing team</title>
		<link>http://blog.criticalresults.com/2010/08/02/self-organizing/</link>
		<comments>http://blog.criticalresults.com/2010/08/02/self-organizing/#comments</comments>
		<pubDate>Mon, 02 Aug 2010 16:11:45 +0000</pubDate>
		<dc:creator>Mark W. Schumann</dc:creator>
				<category><![CDATA[process]]></category>
		<category><![CDATA[projects that suck]]></category>
		<category><![CDATA[scrum]]></category>
		<category><![CDATA[agile]]></category>
		<category><![CDATA[management]]></category>
		<category><![CDATA[business]]></category>

		<guid isPermaLink="false">http://blog.criticalresults.com/?p=288</guid>
		<description><![CDATA[Does it help to hand cards directly to developers and asking for status every day?

It sure does! It helps me feel super-duper important! It reassures the client that I'm in control! It reinforces my position!

It doesn't get any more work done, but hey.<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=blog.criticalresults.com&amp;blog=9576650&amp;post=288&amp;subd=criticalresults&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>I wrote about <a title="Cleveland GiveCamp 2010--a self-organizing event" href="http://blog.criticalresults.com/2010/07/21/win-cleveland-givecamp/#selforganizing">this phenomenon</a> in a different context about a week ago, but it&#8217;s come up again. Twice is a coincidence, three times is a pattern, right?</p>
<p>I was talking to a client the other day about a thousand things, in the space of half an hour. There were a few things that stung badly, but one of them was to the effect that I wasn&#8217;t <em>managing</em> the developers very well.</p>
<p><span id="more-288"></span></p>
<h2>It&#8217;s true&#8230;</h2>
<p>&#8230;that I rarely tell the other guys what to do. I don&#8217;t particularly evaluate their work, not in a keeping-score sense anyway. I don&#8217;t set up rewards or incentives. I don&#8217;t make a Gantt chart. Nobody gets called into my office.</p>
<p>From the outside of things, actually, you wouldn&#8217;t even know I was in charge.</p>
<h3>Backing up for a moment</h3>
<p>At that time, the team was just me and two part-time contributors: one Rails specialist and one User Experience expert who is also pretty good with Rails. They&#8217;re highly skilled <em>and</em> have Agile Mind. The UX guy even introduced me to <a title="AgileZen--a KanBan on Port 80" href="http://agilezen.com">AgileZen</a>, a nice little web application that simulates a real KanBan board.</p>
<p>So&#8230; yeah. What&#8217;s to manage? There&#8217;s a board, you can see it, it has story cards&#8230; it&#8217;s easy to see blocks and backlogs&#8230; you might ask a question once in a while.</p>
<p>If a queue looks light you can either prompt someone to take on more cards (if that makes sense), adjust the queue size (if that makes more sense), or encourage people to work different queues from their usual.</p>
<h3>The thing is</h3>
<p>In this environment it rarely takes more than a nudge. Strike that, it rarely takes <strong>even that.</strong> This team really truly does self-organize. At this point they need to continue communicating among themselves and maybe remind me to push my own work to github more frequently.</p>
<h3>Does that look like I&#8217;m not managing?</h3>
<p>Probably.</p>
<h3>Would it help if I started handing cards directly to the part-timers and asking for status every day?</h3>
<p><strong>It sure would!</strong> It would help me feel super-duper important! It would reassure the client that I&#8217;m in control! It would reinforce my position!</p>
<p>On the other hand, it wouldn&#8217;t get any more work done. It would probably get a lot <em>less</em> done, since sharp developers have a really good sense for what should be worked on next.</p>
<h2>I&#8217;m sure you&#8217;ve seen it</h2>
<p>This always happens. The Gantt chart says today you work on Task A, but your brain just isn&#8217;t ready to do Task A. You&#8217;re in a Task B kind of mood, and you woke up with a really simple algorithm for implementing it.</p>
<p>Classic management says write it down, put it aside, and get cracking on Task A. Agile says pull the Task B card, create some tests for it, write the code, make it build and test out, then mark the card as Ready.</p>
<p>Guess who gets Task B done first?</p>
<p>Guess who will probably actually get Task A done first?</p>
<p>Guess whose hands on the wheel are going to be more effective? Not mine!</p>
<h2>KanBan has priorities</h2>
<p>You arrange your Story Cards into queues, which are vertical. You move cards from the leftmost (backlog) queue, through whatever steps your process requires, and finally into the rightmost (archive) queue. Cards within a queue carry a priority number.</p>
<p>You don&#8217;t push cards to the right when you&#8217;re done with them. Nope. You <em>pull</em> cards from the left when you need something to work on!</p>
<p>Sometimes a card has to go backwards because redesign is needed after some code gets added. Sometimes you skip a higher-priority card to pull a lower-priority one because you had an idea, or because it fits the time you have available, or a resource you need to do the higher-priority card is unavailable.</p>
<p><strong>Those are not management decisions.</strong> Those are team member decisions.</p>
<p>So in a really well-functioning KanBan system, what the heck does the manager do? By traditional measures, not that much. It&#8217;s less Vince Lombardi and more Mary Poppins: giving smart people a goal and letting them figure out how to get there a little bit at a time.</p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/criticalresults.wordpress.com/288/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/criticalresults.wordpress.com/288/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/criticalresults.wordpress.com/288/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/criticalresults.wordpress.com/288/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/criticalresults.wordpress.com/288/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/criticalresults.wordpress.com/288/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/criticalresults.wordpress.com/288/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/criticalresults.wordpress.com/288/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/criticalresults.wordpress.com/288/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/criticalresults.wordpress.com/288/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/criticalresults.wordpress.com/288/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/criticalresults.wordpress.com/288/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/criticalresults.wordpress.com/288/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/criticalresults.wordpress.com/288/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=blog.criticalresults.com&amp;blog=9576650&amp;post=288&amp;subd=criticalresults&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://blog.criticalresults.com/2010/08/02/self-organizing/feed/</wfw:commentRss>
		<slash:comments>4</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/b67885b041b92f249c34c51d63a84a98?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">markwschumann</media:title>
		</media:content>
	</item>
		<item>
		<title>Another reason that software projects suck</title>
		<link>http://blog.criticalresults.com/2010/07/31/9th-reason-projects-suck/</link>
		<comments>http://blog.criticalresults.com/2010/07/31/9th-reason-projects-suck/#comments</comments>
		<pubDate>Sat, 31 Jul 2010 14:33:25 +0000</pubDate>
		<dc:creator>Mark W. Schumann</dc:creator>
				<category><![CDATA[process]]></category>

		<guid isPermaLink="false">http://blog.criticalresults.com/?p=286</guid>
		<description><![CDATA[The dev team needs to see the client, preferably face-to-face but directly  in any case. Communicating directly is hard enough. Going through the fake client to figure out what the real client wants is impossible.<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=blog.criticalresults.com&amp;blog=9576650&amp;post=286&amp;subd=criticalresults&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>Regular fans are surely aware of my &#8220;funny and accurate&#8221; (says Steve Belovich) paper on the <a title="Why Your Project Sucks" href="http://criticalresults.com/freestuff.html">eight reasons &#8220;Why Your Software Project Sucks.&#8221;</a> I kept it to eight because you have to stop somewhere, and also because I have this nifty photo of myself with a &#8220;Magic 8-Ball&#8221; to go with it.</p>
<p>But today I&#8217;m re-encountering an issue not on my original list of eight. It&#8217;s the one where you can&#8217;t possibly fulfill expectations because <em>the</em> client is not <em>your</em> client.</p>
<p><span id="more-286"></span></p>
<h2>So the other day&#8230;</h2>
<p>I&#8217;m hearing from the client. He says &#8220;the clients&#8221; are getting kind of nervous about not seeing our running code on the QA server.</p>
<p>Yes, I said that right. The client&#8211;this one guy&#8211;is referring to &#8220;the clients&#8221; in third-person plural.</p>
<p>We&#8217;d had this discussion before. I&#8217;d asked the one guy, like three weeks ago maybe, who specifically is the client. Who is the decision-maker? Who is this for? And at the time he&#8217;d said yeah, it was just him.</p>
<p>Okay. Got it. We meet with you only, with talk with you only, we provide updates to you only.</p>
<h2>Sure.</h2>
<p>I know there are customers behind the customer. That&#8217;s fine. You don&#8217;t implement projects in a vacuum. They are done for reasons, and those reasons usually have to do with other people. But you still have to have a clear definition of who&#8217;s in and who&#8217;s not in.</p>
<p>Very briefly, and oversimplified a little, if someone thinks they need access to your QA server they are either part of your team or they are the client. If they are your client they need to be at your standups or represented at your standups. If they are not your client then the project is a black box to them.</p>
<h2>It goes like this</h2>
<p>One of the awesomest things about the Agile concept is transparency. We&#8217;re used to thinking of it in terms of the client seeing what&#8217;s going on via wall displays, virtual boards, listening at a Daily Scrum, and so on.</p>
<p>But transparency is inherently a two-way phenomenon! The dev team needs to see the client, preferably face-to-face but <em>directly</em> in any case. Communicating directly is hard enough. Going through the fake client to figure out what the real client wants is&#8230; impossible.</p>
<p>What&#8217;s beyond impossible? Whatever the word for that is, it applies to doing this all when the identity of the client is in flux depending on how anxious everyone is feeling.</p>
<p>See, when there&#8217;s transparency <em>one</em> way and not the other way, you don&#8217;t call it transparency. It&#8217;s like one of those windows they have on cop shows where the lieutenant watches the interrogation but all the suspect sees is a mirror.</p>
<h2>My solution</h2>
<p>Project owners, you simply have to pick a story. Either the project is <em>yours</em> and you take responsibility for everything behind you, or you have to  bring the <em>actual</em> client into the process. Having invisible clients isn&#8217;t playing fair, and it will not get you what you want.</p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/criticalresults.wordpress.com/286/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/criticalresults.wordpress.com/286/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/criticalresults.wordpress.com/286/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/criticalresults.wordpress.com/286/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/criticalresults.wordpress.com/286/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/criticalresults.wordpress.com/286/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/criticalresults.wordpress.com/286/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/criticalresults.wordpress.com/286/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/criticalresults.wordpress.com/286/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/criticalresults.wordpress.com/286/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/criticalresults.wordpress.com/286/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/criticalresults.wordpress.com/286/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/criticalresults.wordpress.com/286/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/criticalresults.wordpress.com/286/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=blog.criticalresults.com&amp;blog=9576650&amp;post=286&amp;subd=criticalresults&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://blog.criticalresults.com/2010/07/31/9th-reason-projects-suck/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/b67885b041b92f249c34c51d63a84a98?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">markwschumann</media:title>
		</media:content>
	</item>
		<item>
		<title>The things you learn</title>
		<link>http://blog.criticalresults.com/2010/07/28/the-things-you-learn/</link>
		<comments>http://blog.criticalresults.com/2010/07/28/the-things-you-learn/#comments</comments>
		<pubDate>Wed, 28 Jul 2010 16:42:12 +0000</pubDate>
		<dc:creator>Mark W. Schumann</dc:creator>
				<category><![CDATA[code]]></category>

		<guid isPermaLink="false">http://blog.criticalresults.com/?p=282</guid>
		<description><![CDATA[There are no seven-page proofs in a 200-level class. Even when it's Adelberg.<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=blog.criticalresults.com&amp;blog=9576650&amp;post=282&amp;subd=criticalresults&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>It was something like the spring of 1984, and I was (as usual) struggling in <a title="Dr. Arnold Adelberg" href="http://www.math.grinnell.edu/faculty/Adelberg-vita.xhtml">Professor Adelberg</a>&#8216;s class on Series and Differential Equations. And as usual, I took advantage of his office hours, on the second floor of <a href="http://www.grinnell.edu/aboutinfo/map/arh">ARH</a>.</p>
<p>I don&#8217;t remember where the proof was supposed to end up, but I had about seven handwritten pages that sort of got me there. Not quite.</p>
<p><span id="more-282"></span></p>
<p>Professor Adelberg, sitting by my side at his desk, said, &#8220;Look, this is a 200-level class.&#8221; He paused slightly. <strong>&#8220;There <em>are</em> no seven-page proofs in a 200-level class.&#8221;</strong></p>
<p>In <em>this</em> class, he said, you know you&#8217;re on the wrong track if your proof is more than about two pages. It&#8217;s a class full of people maybe a year and a half out of high school; we&#8217;re simply not at the level where theory gets that heavy.</p>
<h2>Why am I telling you this?</h2>
<p>I don&#8217;t remember very much in differential equations&#8211;I&#8217;ve always been more of a finite math and number theory kind of guy&#8211;but I remember that encounter because the lesson is always fresh. <em>An answer that&#8217;s too hard is likely to be the wrong answer.</em></p>
<p>This morning, I had coffee with my homeboy <a title="Joe Fiorini" href="http://joefiorini.com/">Joe Fiorini, </a>as a high-level pairing exercise. He was kind of busy, so we only hung out for about 45 minutes, which turned out to be an advantage. I&#8217;d been poking around at this JavaScript code for a day or so. All it had to do was maintain an array of user-selected IDs from a database table, show an HTML <tt>DIV</tt> of the IDs already selected along with descriptive data, open an HTML <tt>DIV</tt> to show a picklist of those not already taken, and let the user add the selection of another item, by choosing it from the picklist.</p>
<p>Its a &#8220;200-level class&#8221; sort of problem, isn&#8217;t it? But wow&#8230; I was cranking out that seven-page proof. Initializing the array. Refreshing the DIVs. Embedding links as A tags into the generated HTML. Making Ajax calls to repopulate the list in case it changed. I was getting a lot of mileage out of <a title="Firebug--debugger for Firefox" href="http://getfirebug.com/">Firebug</a>, which is never a good sign.</p>
<h3>That&#8217;s about when Joe walked into <a title="Root Cafe! Yay!" href="http://www.theroot-cafe.com/">the coffee joint</a>.</h3>
<p>I told Joe the story about Adelberg and the seven-page proof.</p>
<p>Joe said, &#8220;Let&#8217;s step back a minute. This is all in an HTML <tt>FORM</tt>, right? Why don&#8217;t you keep a hidden <tt>INPUT</tt> field containing the record ID in each <tt>LI</tt>? Then your array is <strong>right there.</strong> Not in the JavaScript.&#8221;</p>
<p>While I sat there flapping my face like a fish, because of course Joe was right, he went on: &#8220;And since this is a many-to-many relationship, you can set the <tt>NAME</tt> of that hidden field by convention to let Rails save it automatically to the join table.&#8221;</p>
<p>Which makes my Model logic drop-dead simple. It might even work by default. 130 lines of JavaScript will probably get cut down to a couple dozen.</p>
<p>Professor Adelberg, meet Joe Fiorini.</p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/criticalresults.wordpress.com/282/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/criticalresults.wordpress.com/282/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/criticalresults.wordpress.com/282/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/criticalresults.wordpress.com/282/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/criticalresults.wordpress.com/282/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/criticalresults.wordpress.com/282/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/criticalresults.wordpress.com/282/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/criticalresults.wordpress.com/282/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/criticalresults.wordpress.com/282/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/criticalresults.wordpress.com/282/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/criticalresults.wordpress.com/282/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/criticalresults.wordpress.com/282/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/criticalresults.wordpress.com/282/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/criticalresults.wordpress.com/282/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=blog.criticalresults.com&amp;blog=9576650&amp;post=282&amp;subd=criticalresults&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://blog.criticalresults.com/2010/07/28/the-things-you-learn/feed/</wfw:commentRss>
		<slash:comments>5</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/b67885b041b92f249c34c51d63a84a98?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">markwschumann</media:title>
		</media:content>
	</item>
		<item>
		<title>Win: Cleveland GiveCamp</title>
		<link>http://blog.criticalresults.com/2010/07/21/win-cleveland-givecamp/</link>
		<comments>http://blog.criticalresults.com/2010/07/21/win-cleveland-givecamp/#comments</comments>
		<pubDate>Wed, 21 Jul 2010 15:32:45 +0000</pubDate>
		<dc:creator>Mark W. Schumann</dc:creator>
				<category><![CDATA[process]]></category>
		<category><![CDATA[GiveCamp]]></category>
		<category><![CDATA[LeanDog]]></category>
		<category><![CDATA[social]]></category>

		<guid isPermaLink="false">http://blog.criticalresults.com/?p=273</guid>
		<description><![CDATA[It is amazing how much you can accomplish when it doesn't matter who gets the credit. GiveCamp rocked!<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=blog.criticalresults.com&amp;blog=9576650&amp;post=273&amp;subd=criticalresults&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>I&#8217;m probably just about decompressed now from the joy and struggle that is <a href="http://clevelandgivecamp.org">Cleveland GiveCamp</a>. If you weren&#8217;t there, you missed a fun and exhausting time. (You also missed out on seeing me walking around with yellow <span style="background-color:yellow;">CAUTION</span> tape around my head. I&#8217;m learning to accessorize.)</p>
<h2>How it came together</h2>
<div id="attachment_274" class="wp-caption alignleft" style="width: 310px"><a href="http://criticalresults.files.wordpress.com/2010/07/mws-givecamp-01.jpg"><img class="size-medium wp-image-274 " title="Cleveland GiveCamp 2010 closing demo meeting" src="http://criticalresults.files.wordpress.com/2010/07/mws-givecamp-01-e1279719148326.jpg?w=300&#038;h=255" alt="Mark telling yet another story at Cleveland GiveCamp 2010 closing demo meeting" width="300" height="255" /></a><p class="wp-caption-text">Mark tells one of THOSE stories</p></div>
<p><a name="selforganizing"></a>You know this saying?</p>
<blockquote><p>It is amazing how much you can accomplish when it doesn&#8217;t matter who  gets the credit.</p></blockquote>
<p>Organizing GiveCamp was like that. I was the nominal Leader of our semi-formal organizing committe, but I always cringe when saying that. <a title="Jon Stahl" href="http://leandog.com/about.html#jon_stahl">Jon Stahl</a> was the de facto leader, at least in part, because a) he&#8217;s organized big events before; b) he&#8217;s hooked up with the larger GiveCamp movement; c) he took charge of a huge portion of the logistical details; and d) it&#8217;s his boat. I&#8217;m not remotely comfortable giving orders or even strong suggestions, so it was often hard for people to tell it was &#8220;my&#8221; event. To me, &#8220;leading&#8221; stuff looks more like finding out what people need and connecting them. It&#8217;s a middle child thing.</p>
<p>Based on the capacity of the <a title="Barge becomes Restaurant becomes Software Company" href="http://www.leandog.com/float.html">LeanDog boat,</a> the organizing committee figured that 75 volunteers would be an ideal number. Working back from that, given an average of five volunteers per team, we thought it would be good to do projects for fifteen local nonprofit organizations.</p>
<p>Those goals turned out to be challenging. We didn&#8217;t have a surplus of applications for help from nonprofits, and while it seemed that we&#8217;d probably reach our volunteer goal we didn&#8217;t expect to go very much beyond it.</p>
<p>Then Margaret Bernstein visited the boat, and <a title="Cleveland software firm holding &quot;tech camp&quot;..." href="http://blog.cleveland.com/metro/2010/06/cleveland_software_firm_holdin.html">this article</a> hit the <em>Plain Dealer</em>. Within a week, the requests came in by the <em>dozens</em> and we eventually received sixty-eight. About 130 volunteers registered in advance. I openly asked my fellow organizers, &#8220;How many volunteers is too many?&#8221; After all, that was nearly doubling the capacity of the boat.</p>
<p>And it&#8217;s a <em>boat</em>. It can <em>sink</em>.</p>
<p>That&#8217;s when Jon asked about using the terminal at Burke Lakefront Airport, which is less than fifty yards from where the LeanDog boat is moored. Burke said okay, and we became a two-site gathering.</p>
<h2>Who did what</h2>
<p>Among many, many other things that got done by other organizers:</p>
<ul>
<li><a href="http://codeswell.com">Andy Craze</a> went to a zillion user group meetings to recruit volunteers, and assigned them to teams a day or two before the event;</li>
<li>Larry Mingle made the Cleveland GiveCamp <a title="Cleveland GiveCamp" href="http://clevelandgivecamp.org">website</a>;</li>
<li>Matt Beyer collated all the volunteer registrations;</li>
<li>Trish Rouru networked with many of our nonprofit partners, solicited food donations, and (together with Deb Stahl and Jane Winik) prepared <em>all the meals</em>;</li>
<li>Sam Nasr served as our Sponsorship Coordinator; and</li>
<li>Nick Barendt set up our fiscal sponsorship with <a title="IEEE Cleveland" href="http://clevelandieee.org">IEEE Cleveland</a>, talked to media people, and took care of many, many site details.</li>
</ul>
<p>In summarizing like this I am leaving people out, and minimizing the accomplishments of those I did include. It really is amazing how much work goes into an event like this, and in the heat of getting things done it&#8217;s hard to remember who did what.</p>
<p>While they were not part of the organizing team, I especially want to pick out two other volunteers:</p>
<ul>
<li>On Friday night, Amy Wong told me she was available to help write website copy for any and all nonprofits. Amy was busy <em>all weekend</em> with this. I think her words are on at least half the websites we did.</li>
<li>Also on Friday night, <a href="http://www.heidicool.com/">Heidi Cool</a> (who was there as part of our social media team) foolishly reminded me that she can help with WordPress and design issues. We ended up doing about fifteen WordPress sites! Heidi was incredibly in demand. She also taught an hour-long seminar on WordPress content management for our nonprofit partners on Sunday.</li>
</ul>
<h2>What got done</h2>
<p>Bottom line:</p>
<ul>
<li>We took on twenty-two projects in software and website development.</li>
<li>Twenty of them were successfully completed during GiveCamp weekend.</li>
<li>All the nonprofit clients got training on using and maintaining their new software and websites.</li>
</ul>
<p><span style="text-decoration:underline;">That makes Cleveland&#8217;s the <em>largest</em> and <em>most successful</em> first-time GiveCamp. Anywhere. Ever.</span></p>
<h2>Retrospective</h2>
<p>Jim Gorjup solicited &#8220;retrospective&#8221; notes from all the volunteers and nonprofits. We wanted to know what worked really well, what could have been better, and what really sucked about this year&#8217;s event. Mostly, I took these handwritten scraps and passed them right along to Jim so he could collate them and talk about the themes, but one line got my attention. It went something like this, approximate quote:</p>
<blockquote><p>I liked the way everyone cooperated and shifted from team to team as needed.</p></blockquote>
<p>This was particularly evident when a scheduling application for the Richmond Heights Fire Department looked like it wasn&#8217;t going to get done. Jon&#8211;being pretty much the King of Agile around here&#8211;collected what we called the &#8220;rockstar team&#8221; of Ruby developers who were done with (or could be borrowed from) their other projects and prompted them to self-organize. The upshot, unfortunately, was that the project simply couldn&#8217;t be completed in a weekend. It was just too ambitious, and since the project was a last-minute addition to our lineup it was hard to know that ahead of time.</p>
<p>I count that as a win for the Agile concept. At least we were able to conclude that project wasn&#8217;t going to go, which gave us permission to drop it (for now) and reallocate our developers to something that had a better chance.</p>
<h2>What&#8217;s next</h2>
<p>In my closing remarks to the assembled GiveCamp community, I referred to &#8220;next year&#8221; even though there weren&#8217;t any specific plans to do this again. I caught myself and asked, &#8220;Wait, who wants to do this again next year?&#8221; I&#8217;d say the response was strongly in the affirmative. So we&#8217;re <strong>on</strong> for next year.</p>
<p>Which reminds me. There is still time to <a title="GiveCamp donations 2011" href="http://www.clevelandieee.org/givecamp-donations">contribute cash</a> for next year&#8217;s event!</p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/criticalresults.wordpress.com/273/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/criticalresults.wordpress.com/273/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/criticalresults.wordpress.com/273/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/criticalresults.wordpress.com/273/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/criticalresults.wordpress.com/273/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/criticalresults.wordpress.com/273/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/criticalresults.wordpress.com/273/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/criticalresults.wordpress.com/273/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/criticalresults.wordpress.com/273/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/criticalresults.wordpress.com/273/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/criticalresults.wordpress.com/273/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/criticalresults.wordpress.com/273/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/criticalresults.wordpress.com/273/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/criticalresults.wordpress.com/273/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=blog.criticalresults.com&amp;blog=9576650&amp;post=273&amp;subd=criticalresults&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://blog.criticalresults.com/2010/07/21/win-cleveland-givecamp/feed/</wfw:commentRss>
		<slash:comments>7</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/b67885b041b92f249c34c51d63a84a98?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">markwschumann</media:title>
		</media:content>

		<media:content url="http://criticalresults.files.wordpress.com/2010/07/mws-givecamp-01-e1279719148326.jpg?w=300" medium="image">
			<media:title type="html">Cleveland GiveCamp 2010 closing demo meeting</media:title>
		</media:content>
	</item>
		<item>
		<title>The key hiring question</title>
		<link>http://blog.criticalresults.com/2010/06/24/key-hiring-question/</link>
		<comments>http://blog.criticalresults.com/2010/06/24/key-hiring-question/#comments</comments>
		<pubDate>Thu, 24 Jun 2010 15:03:34 +0000</pubDate>
		<dc:creator>Mark W. Schumann</dc:creator>
				<category><![CDATA[process]]></category>

		<guid isPermaLink="false">http://blog.criticalresults.com/?p=270</guid>
		<description><![CDATA[If I could ask one question in a hiring interview, it would be to prompt a real-world example of decision-making under pressure.<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=blog.criticalresults.com&amp;blog=9576650&amp;post=270&amp;subd=criticalresults&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p><a href="http://bitranch.com">Esther Schindler</a> asked recently, and this is a paraphrase because Twitter won&#8217;t show it to me today, what question you&#8217;d ask a candidate interviewing for a network administration job.</p>
<p>My idea was something like this: &#8220;Tell me about a time something broke, how you felt about it, how you tried to fix it, and what the result was.&#8221; You may recognize this as <a href="http://www.brockport.edu/career/behave.htm">&#8220;behavioral interviewing,&#8221;</a> which I learned a little bit about in my very first job after college.</p>
<p><span id="more-270"></span></p>
<p>Just between you and me, I&#8217;m not personally sure of how well this technique works to identify the best candidates or whether it gets a working relationship off to a good start. It&#8217;s not like I&#8217;ve done enough sustained interviewing and hiring to pick out a trend.</p>
<div style="border:1px solid gray;background:none repeat scroll 0 0 yellow;width:30%;float:right;font-size:small;margin:.5em;padding:3px;">You totally want to read more about this, and you will, if you get onto <a title="Free stuff! Easy! Fun!" href="http://criticalresults.com/freestuff.html">my opt-in mailing list</a>. You get a complete mailing about once a month, with articles and links and special offers that help you do your job, as well a quick note every week or so with something funny or interesting. Do you need more stress? No? Then this is for you.</div>
<p>But it makes sense to me. You ask a question like this because:</p>
<ul>
<li>It forces the candidate to be specific. Instead of saying &#8220;I&#8217;m good under pressure,&#8221; she has to talk about what kind of pressure and what &#8220;good&#8221; meant in those circumstances.</li>
<li>Examples from real life are so much more compelling and detailed than things you might have done or think you might try.</li>
<li>It&#8217;s a reality check. As the link above states, &#8220;It is very difficult to make up behavioral stories.&#8221; Even if the candidate succeeds in snowing you on this account, at the very least she&#8217;s displayed some imagination and enough knowledge to <em>simulate</em> the claimed experience. Which is actually not a bad thing.</li>
<li>It especially gets at the candidate&#8217;s problem-solving ability, which is a high priority when hiring a network administrator. It&#8217;s the kind of job where adaptability trumps theory.</li>
<li>And have you ever known a really outstanding network admin who crumples under pressure? You want at least anecdotal proof of resilience.</li>
</ul>
<p>So if I could ask a candidate just one question, that would be the one. How about you? What have been your favorite questions, from either side of the table? If a candidate, what questions do you <em>wish</em> you&#8217;ve been asked?</p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/criticalresults.wordpress.com/270/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/criticalresults.wordpress.com/270/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/criticalresults.wordpress.com/270/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/criticalresults.wordpress.com/270/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/criticalresults.wordpress.com/270/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/criticalresults.wordpress.com/270/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/criticalresults.wordpress.com/270/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/criticalresults.wordpress.com/270/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/criticalresults.wordpress.com/270/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/criticalresults.wordpress.com/270/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/criticalresults.wordpress.com/270/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/criticalresults.wordpress.com/270/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/criticalresults.wordpress.com/270/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/criticalresults.wordpress.com/270/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=blog.criticalresults.com&amp;blog=9576650&amp;post=270&amp;subd=criticalresults&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://blog.criticalresults.com/2010/06/24/key-hiring-question/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/b67885b041b92f249c34c51d63a84a98?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">markwschumann</media:title>
		</media:content>
	</item>
		<item>
		<title>From the Saturday afternoon memo department</title>
		<link>http://blog.criticalresults.com/2010/06/19/saturday-afternoon-memo/</link>
		<comments>http://blog.criticalresults.com/2010/06/19/saturday-afternoon-memo/#comments</comments>
		<pubDate>Sat, 19 Jun 2010 22:16:11 +0000</pubDate>
		<dc:creator>Mark W. Schumann</dc:creator>
				<category><![CDATA[process]]></category>

		<guid isPermaLink="false">http://blog.criticalresults.com/?p=265</guid>
		<description><![CDATA[Agile <em>very disciplined</em> even though it's informal on the surface--the exact opposite of doing what you feel like.<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=blog.criticalresults.com&amp;blog=9576650&amp;post=265&amp;subd=criticalresults&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<table border="0">
<tbody>
<tr>
<td><strong>To:</strong></td>
<td>[name elided]</td>
</tr>
<tr>
<td><strong>From:</strong></td>
<td>MWS</td>
</tr>
<tr>
<td><strong>Date:</strong></td>
<td>Saturday, 6:04 p.m.</td>
</tr>
</tbody>
</table>
<p>Wow, I do weekend things on a weekend, come back to the computer, and there&#8217;s all this action.</p>
<p>What&#8217;s this about needing something done by end of month? I&#8217;m pretty sure [name elided] already handled the demo, which is <em>why those cards are in archive</em>. If there&#8217;s something I&#8217;m supposed to do by month&#8217;s end, <em>there should be a card for it in the backlog</em>. And the progress of cards is how you know things are getting done. If I&#8217;m doing things that aren&#8217;t on the cards, the funders are going to ask what the hell I&#8217;ve been doing. And I won&#8217;t have a good answer for that.</p>
<p>A decision is made to do something when a card gets added to the backlog. If it&#8217;s not in the backlog, the decision to do it hasn&#8217;t really been made. Among many other reasons, this is necessary because it keeps the project owner from making half-assed decisions. You either have to do it, and add points to the project, or admit that it&#8217;s not really on the agenda. You can&#8217;t pester the team to do stuff that&#8217;s not in the backlog and then hold them responsible for the backlog not getting done.</p>
<p>Bottom line: Agile is the <em>exact opposite</em> of doing whatever the hell you feel like. It&#8217;s very disciplined even though it looks informal. It will absolutely not work if you keep trying to circumvent it or make it be something else.</p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/criticalresults.wordpress.com/265/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/criticalresults.wordpress.com/265/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/criticalresults.wordpress.com/265/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/criticalresults.wordpress.com/265/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/criticalresults.wordpress.com/265/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/criticalresults.wordpress.com/265/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/criticalresults.wordpress.com/265/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/criticalresults.wordpress.com/265/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/criticalresults.wordpress.com/265/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/criticalresults.wordpress.com/265/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/criticalresults.wordpress.com/265/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/criticalresults.wordpress.com/265/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/criticalresults.wordpress.com/265/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/criticalresults.wordpress.com/265/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=blog.criticalresults.com&amp;blog=9576650&amp;post=265&amp;subd=criticalresults&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://blog.criticalresults.com/2010/06/19/saturday-afternoon-memo/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/b67885b041b92f249c34c51d63a84a98?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">markwschumann</media:title>
		</media:content>
	</item>
	</channel>
</rss>