<?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>The Rules of Software</title>
	<atom:link href="http://therulesofsoftware.com/feed/" rel="self" type="application/rss+xml" />
	<link>http://therulesofsoftware.com</link>
	<description>Rules of thumb for managing software projects.</description>
	<lastBuildDate>Mon, 11 Apr 2011 22:59:04 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.com/</generator>
<cloud domain='therulesofsoftware.com' port='80' path='/?rsscloud=notify' registerProcedure='' protocol='http-post' />
<image>
		<url>http://1.gravatar.com/blavatar/74660b0ebb65cce8105ba14ac75f7eb1?s=96&#038;d=http%3A%2F%2Fs2.wp.com%2Fi%2Fbuttonw-com.png</url>
		<title>The Rules of Software</title>
		<link>http://therulesofsoftware.com</link>
	</image>
	<atom:link rel="search" type="application/opensearchdescription+xml" href="http://therulesofsoftware.com/osd.xml" title="The Rules of Software" />
	<atom:link rel='hub' href='http://therulesofsoftware.com/?pushpress=hub'/>
		<item>
		<title>Rule #19: Know Your Own DNA, or Why Google Really Does Get Social</title>
		<link>http://therulesofsoftware.com/2011/04/11/know-your-own-dna-or-why-google-really-does-get-social/</link>
		<comments>http://therulesofsoftware.com/2011/04/11/know-your-own-dna-or-why-google-really-does-get-social/#comments</comments>
		<pubDate>Mon, 11 Apr 2011 22:59:00 +0000</pubDate>
		<dc:creator>Joe Kleinschmidt</dc:creator>
				<category><![CDATA[Software]]></category>
		<category><![CDATA[google]]></category>
		<category><![CDATA[social]]></category>

		<guid isPermaLink="false">http://therulesofsoftware.com/?p=513</guid>
		<description><![CDATA[I think Google really does &#8220;get&#8221; social. They just don&#8217;t know it. Recently there&#8217;s been a lot of talk about Larry Page&#8217;s decision to tie Google&#8217;s bonuses to the company&#8217;s overall social strategy, and whether Google can actually &#8220;do social.&#8221; Skeptics could credibly argue the company won&#8217;t be able to make the switch, perhaps using [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=therulesofsoftware.com&amp;blog=9733121&amp;post=513&amp;subd=therulesofsoftware&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<div id="attachment_520" class="wp-caption alignright" style="width: 220px"><a href="http://therulesofsoftware.files.wordpress.com/2011/04/star-wars.jpg"><img class="size-medium wp-image-520 " title="star wars" src="http://therulesofsoftware.files.wordpress.com/2011/04/star-wars.jpg?w=210&#038;h=163" alt="You guys think we could start a social network about awesome hair?" width="210" height="163" /></a><p class="wp-caption-text">You guys think we could start a social network about awesome hair? </p></div>
<p><strong>I think Google really does &#8220;get&#8221; social. They just don&#8217;t know it. </strong></p>
<p>Recently there&#8217;s been a lot of talk about <a href="http://www.businessinsider.com/larry-page-just-tied-employee-bonuses-to-the-success-of-the-googles-social-strategy-2011-4">Larry Page&#8217;s decision</a> to tie Google&#8217;s bonuses to the company&#8217;s overall social strategy, and whether Google can actually &#8220;do social.&#8221; Skeptics could credibly argue the company won&#8217;t be able to make the switch, perhaps using the following arguments:</p>
<ol>
<li><strong>Google&#8217;s <a href="http://www.businessinsider.com/larry-page-just-tied-employee-bonuses-to-the-success-of-the-googles-social-strategy-2011-4#orkut-big-in-brazil-but-getting-smaller-1">history</a> shows it doesn&#8217;t understand how to build a social application. </strong>Google Buzz isn&#8217;t Facebook, Dodgeball never became Foursquare, and Google Wave is&#8230;well, what the heck was Wave even supposed to do?</li>
<li><strong>Google is trying to buy its way into something that fundamentally doesn&#8217;t map to its core &#8212; </strong>which is, specifically, search.</li>
<li><strong>Google isn&#8217;t as innovative as other companies anymore.</strong> It didn&#8217;t invent Facebook, it didn&#8217;t start Twitter, and it couldn&#8217;t even <em>buy </em>GroupOn.</li>
</ol>
<p>But personally, I disagree. My feeling is that, while Google certainly has its share of problems, <strong>I think Google very much <em>does </em>get social </strong>in a more basic sense. They just don&#8217;t know how to position it as such:</p>
<ol>
<li><strong>Google Search is social</strong> because it fundamentally recognizes that, no matter how good an algorithm could be, there is no way it can truly succeed without incorporating the work done by hundreds of millions of people. PageRank doesn&#8217;t <em>sound </em>like a social algorithm, but asking the entire web to make suggestions and recommendations based upon what they feel is appropriate enough to link to sure does.</li>
<li><strong>Google Advertising is social</strong> because it was built on an idea that, no matter how good an advertising agency or media channel might be at estimating an audience, it was unlikely they could do a better job than simply outsourcing that whole process out to the buyers themselves and letting them work out the implicit price through an auction.</li>
<li><strong>Google Maps is social</strong> because Google always encouraged others to extend it, build upon it, and embed it into other web sites and applications. Whenever I think of the phrase &#8220;mash-up,&#8221; what immediately springs to mind is the idea of <em>&#8220;Google Maps plus something.&#8221;</em></li>
</ol>
<p>But one could certainly ask, well, is this <em>really </em>social? Isn&#8217;t the <em>real social </em>about people posting status updates on Facebook, micro-blogging on Twitter, and checking-in on Foursquare? I believe the breakthrough contribution of these apps is that they&#8217;ve defined social as<strong> lowering the barrier to entry for people to participate in the web. </strong>But if you look at Google Search, GMail, Docs, and Maps (not to mention YouTube), whether by in-house development or through acquisitions, isn&#8217;t this what Google has been focused on for years?</p>
<p>I think the real challenge is whether Google can cross-over from viewing its audience as semi-techies who understand a little HTML to a much broader audience: those hundreds of millions (or billions) who have so incorporated the web into their lives that they don&#8217;t even see it as &#8220;the web&#8221; anymore &#8212; it&#8217;s just simply a part of what it means to go through their day. They&#8217;re not &#8220;participating in the web&#8221; so much as just chatting with those people who are important to them. And if Google wants to build participatory tools that actually work, they&#8217;re going to have to recognize this fact. But if their fundamental DNA is to empower people at scale, then at least they have a shot.</p>
<p>So this lowly blogger thinks Google can do it, but only if they recognize their own core values a little bit more strongly and perhaps adhere to a few small tweaks to their approach:</p>
<ol>
<li><strong>Quit chasing Facebook.</strong> Trying to &#8220;make a Facebook that isn&#8217;t Facebook&#8221; is like a movie studio trying to &#8220;make a Star Wars that isn&#8217;t Star Wars.&#8221; As Yoda might say: knock this off, you must.</li>
<li><strong>Leverage Google&#8217;s core assets.</strong> Hundreds of millions still use Google to find things, and in doing so contribute to what John Battelle so cleverly referred to as the &#8220;database of intentions.&#8221; Additionally, despite the rise of Facebook and Twitter, GMail absolutely remains a killer app, and I don&#8217;t think a day passes that I don&#8217;t check Google Maps for <em>something</em>. Lowering the bar for participation in any of these apps seems like it could pay off. I don&#8217;t love the &#8220;+1&#8243; approach &#8212; seems like a rip-off &#8212; but at very least it&#8217;s lowering the bar.</li>
<li><strong>Consider hiring a liberal arts person or two.</strong> Google&#8217;s culture of outstanding engineering is a core strength to be sure. But social tools tend to take as much from the gaming industry as they do from productivity tools, and games require all those nuances that humans (not computers) tend to love: aesthetics, design, wit, charm. Warm and fuzzy can live in harmony with hard-core engineering. Look at Apple. It can be done.</li>
<li><strong>Keep encouraging experimentation. </strong>Google Buzz was a bad mis-fire because it essentially cheated the old &#8220;don&#8217;t be evil&#8221; value. Don&#8217;t do this again. But despite its (terrible) positioning, Google Wave was actually an intriguing idea, as are a lot of ideas that Google throws up against a wall (no pun intended there.) True innovation always requires taking a few chances.</li>
<li><strong>Stay true to your core values. </strong>For the a long while, Google always hung its hat on that &#8220;don&#8217;t be evil&#8221; mantra. Build open systems. Don&#8217;t push advertising down people&#8217;s throats. Focus on speed and simple, clean user experience. These things still apply to social systems. (Just ask Facebook about the terrible Beacon idea to see if they don&#8217;t.)</li>
</ol>
<p>I started this blog primarily as a way to help me organize my own thoughts about what it takes to build a successful software team, and so it&#8217;s this last idea that I&#8217;m the most preoccupied with: recognizing your core values, and then applying them to new challenges as you go.</p>
<p>I think Google really does have some fundamentally solid DNA. If they are able to utilize that to develop their social strategy, they can succeed. I for one would like to see it.</p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/therulesofsoftware.wordpress.com/513/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/therulesofsoftware.wordpress.com/513/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/therulesofsoftware.wordpress.com/513/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/therulesofsoftware.wordpress.com/513/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/therulesofsoftware.wordpress.com/513/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/therulesofsoftware.wordpress.com/513/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/therulesofsoftware.wordpress.com/513/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/therulesofsoftware.wordpress.com/513/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/therulesofsoftware.wordpress.com/513/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/therulesofsoftware.wordpress.com/513/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/therulesofsoftware.wordpress.com/513/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/therulesofsoftware.wordpress.com/513/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/therulesofsoftware.wordpress.com/513/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/therulesofsoftware.wordpress.com/513/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=therulesofsoftware.com&amp;blog=9733121&amp;post=513&amp;subd=therulesofsoftware&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://therulesofsoftware.com/2011/04/11/know-your-own-dna-or-why-google-really-does-get-social/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/3923dd70de2b48f1c16df288e67837ed?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">jpklein</media:title>
		</media:content>

		<media:content url="http://therulesofsoftware.files.wordpress.com/2011/04/star-wars.jpg?w=300" medium="image">
			<media:title type="html">star wars</media:title>
		</media:content>
	</item>
		<item>
		<title>Rule #18: Make something that sucks not suck.</title>
		<link>http://therulesofsoftware.com/2011/01/21/rule-18-take-a-thing-that-sucks-and-make-it-not-suck/</link>
		<comments>http://therulesofsoftware.com/2011/01/21/rule-18-take-a-thing-that-sucks-and-make-it-not-suck/#comments</comments>
		<pubDate>Sat, 22 Jan 2011 02:54:36 +0000</pubDate>
		<dc:creator>Joe Kleinschmidt</dc:creator>
				<category><![CDATA[Make It Worth It]]></category>
		<category><![CDATA[software start-ups]]></category>

		<guid isPermaLink="false">http://therulesofsoftware.com/?p=459</guid>
		<description><![CDATA[Last night I attended a thought-provoking presentation by Jateen Parekh, CTO and co-founder of a super cool start-up called Jelli. The premise behind Jelli is to allow people to influence and control what they&#8217;re listening to on the radio &#8212; a great idea whose time has definitely come. Jateen is clearly passionate not only about [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=therulesofsoftware.com&amp;blog=9733121&amp;post=459&amp;subd=therulesofsoftware&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p><div id="attachment_461" class="wp-caption alignright" style="width: 285px"><a href="http://therulesofsoftware.files.wordpress.com/2011/01/rocket-boat-hells-yeah.jpg"><img src="http://therulesofsoftware.files.wordpress.com/2011/01/rocket-boat-hells-yeah.jpg?w=275&#038;h=183" alt="This paint job doesn't suck." title="rocket boat oh yeah" width="275" height="183" class="size-full wp-image-461" /></a><p class="wp-caption-text">Heck yeah it&#039;s a rocket boat.</p></div>Last night I attended a thought-provoking presentation by <strong><a href="http://www.linkedin.com/pub/jateen-parekh/0/5a1/71a">Jateen Parekh</a></strong>, CTO and co-founder of a super cool start-up called <a href="http://jelli.com">Jelli</a>. </p>
<p>The premise behind Jelli is to allow people to influence and control what they&#8217;re listening to on the radio &#8212; a great idea whose time has definitely come. Jateen is clearly passionate not only about the service he is building but his people and his team as well. If you&#8217;re an engineer interested in this space, my advice: go talk to him. Cool stuff.  </p>
<p>What&#8217;s really great about Jateen&#8217;s company is that they are focused on taking something that, let&#8217;s face it, is terrible (radio) and they&#8217;re attempting to make it better. Or, in other words: Jelli is taking a thing that sucks, and they&#8217;re going to try to make it not suck. </p>
<p>Now, because this is a pseudo-professional blog in which I get to randomly interpret ideas I think about and break them down into parts, I&#8217;ll now randomly interpret this idea I&#8217;ve been thinking about and break it down into parts. Ready? Hoorah. </p>
<p>So, technically-speaking, <strong>what&#8217;s the best way to take a thing that sucks and make it not suck? </strong> Well, seems to me if you run a product design or engineering group, there are three things to keep in mind: </p>
<p>First, in order to make things not suck, you have to recognize one key fact. <strong>Everything sucks. Really. Everything.</strong> Our toothbrush bristles gets all ratty after, what, a few weeks? Our paper coffee cups from Starbucks leak sometimes. Our politicians occasionally think it&#8217;s a good idea to blow things up. This is not good. (And, by the way, yes, I love Mr. Jobs too, nobody can pull off the mock turtleneck like that guy. But my iPhone can&#8217;t make a phone call, and if I get a scratch on my iPad I have to buy a new one. <strong>So, yes, things that start with &#8220;i&#8221; also suck. Sorry.</strong>) </p>
<p>On the flipside, however, <strong>for those of us who work in the tech world, we&#8217;re lucky</strong> because our job is to play with these amazing, uber-powerful, kick-the-crap-out-of-everything toys that can actually change the world faster than bloggers can write dubious metaphors about how technology can change the world. Or, to put it another way, it&#8217;s almost like if you were stranded on a desert island, but in addition to the requisite palm tree with two coconuts, there was also a rocket speedboat factory on that island and you happened to be trained in building rocket speedboats. </p>
<p>So then, of course combining these two ideas will lead to some great results. In fact, if instead of having more of an software-oriented bent, this blog were more of a blue-shirt-and-khaki-pant-MBA-type site, we might even say this is a situation where &#8220;1+1=3,&#8221; although that of course is not actually math. But, hey, <em>we&#8217;re talking e-powerment through synergistic solutions here, people</em>. So we&#8217;ll put it together this way. <strong>If everything sucks, but you have essentially unlimited power, then the only thing left is to pick the biggest problem you can find and go solve that. Because nothing is off-limits.</strong> Not even a hundred-year-old technology with decades-old business models. </p>
<p>I&#8217;m a big music fan: seeing live shows is a thrill to me. Finding a great new band is a thrill. Hearing someone I&#8217;ve never heard before &#8212; even if they&#8217;re not <em>quite </em>great, yet &#8212; is a thrill. And radio is supposed to be a way to hear great music. Except, well, it sucks. </p>
<p>So kudos to Jateen and team for tackling a big problem. And to all the other great rocket speedboat-makers out there. </p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/therulesofsoftware.wordpress.com/459/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/therulesofsoftware.wordpress.com/459/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/therulesofsoftware.wordpress.com/459/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/therulesofsoftware.wordpress.com/459/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/therulesofsoftware.wordpress.com/459/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/therulesofsoftware.wordpress.com/459/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/therulesofsoftware.wordpress.com/459/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/therulesofsoftware.wordpress.com/459/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/therulesofsoftware.wordpress.com/459/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/therulesofsoftware.wordpress.com/459/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/therulesofsoftware.wordpress.com/459/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/therulesofsoftware.wordpress.com/459/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/therulesofsoftware.wordpress.com/459/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/therulesofsoftware.wordpress.com/459/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=therulesofsoftware.com&amp;blog=9733121&amp;post=459&amp;subd=therulesofsoftware&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://therulesofsoftware.com/2011/01/21/rule-18-take-a-thing-that-sucks-and-make-it-not-suck/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/3923dd70de2b48f1c16df288e67837ed?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">jpklein</media:title>
		</media:content>

		<media:content url="http://therulesofsoftware.files.wordpress.com/2011/01/rocket-boat-hells-yeah.jpg" medium="image">
			<media:title type="html">rocket boat oh yeah</media:title>
		</media:content>
	</item>
		<item>
		<title>Rule #17: Break it before you build it.</title>
		<link>http://therulesofsoftware.com/2010/10/24/rule-17-break-it-before-you-build-it/</link>
		<comments>http://therulesofsoftware.com/2010/10/24/rule-17-break-it-before-you-build-it/#comments</comments>
		<pubDate>Sun, 24 Oct 2010 20:14:31 +0000</pubDate>
		<dc:creator>Joe Kleinschmidt</dc:creator>
				<category><![CDATA[Make It Reliable]]></category>
		<category><![CDATA[software design]]></category>
		<category><![CDATA[test-driven development]]></category>
		<category><![CDATA[testing]]></category>

		<guid isPermaLink="false">http://therulesofsoftware.com/?p=441</guid>
		<description><![CDATA[Test-Driven Development (TDD) &#8212; the idea that you write tests before you write any code &#8212; is one of those killer ideas that we just keep coming back to. At a technical level, most experienced software developers understand the inherent value in TDD: delivering a suite of automated tests alongside your code just feels a [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=therulesofsoftware.com&amp;blog=9733121&amp;post=441&amp;subd=therulesofsoftware&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<div id="attachment_446" class="wp-caption alignright" style="width: 310px"><a href="http://therulesofsoftware.files.wordpress.com/2010/10/flying-car.jpg"><img class="size-medium wp-image-446" title="Ford Pinto Gets Wings" src="http://therulesofsoftware.files.wordpress.com/2010/10/flying-car.jpg?w=300&#038;h=225" alt="" width="300" height="225" /></a><p class="wp-caption-text">Some tests will yield more insight than others. </p></div>
<p>Test-Driven Development (TDD) &#8212; the idea that you <strong>write tests before you write any code &#8212; </strong>is one of those killer ideas that we just keep coming back to.</p>
<p>At a technical level, most experienced software developers understand the inherent value in TDD: delivering a suite of automated tests alongside your code just feels a heck of a lot better and (it is definitely true) results in many fewer bugs. Years ago it seemed that very few firms adhered to this approach, whereas today it feels like a great number do.</p>
<p>What I love about the TDD approach, however, is that its value goes beyond the technical and into the organizational: it helps to address issues that somehow arise in every project. For example:</p>
<ul>
<li><strong>There always seems to be time at the beginning of a project </strong>to talk about new features, <strong>but somehow there&#8217;s never enough time at the end</strong> for testing.</li>
<li>Requiring that a suite of automated tests be created upfront tends to <strong>drive a design that contains a number of technical goodies</strong> (like well-defined, documented APIs and the decoupling of back-end systems from front-end user interface.)</li>
<li>Testing at the end of a project can be drudgery, whereas at the beginning of a project <strong>testing can actually be fun</strong>.</li>
</ul>
<p>What&#8217;s that? Testing can actually be fun? <em>Right</em>, you might say. <em>About as fun as sitting on the beach in the rain. What is this guy smoking? </em></p>
<p>Somehow the software industry has evolved into a strange beast where testing and QA became a second-class citizen. I&#8217;ve worked places where <em>it  was just understood</em> that software design was for <em>senior </em>engineers, while QA was for <em>junior </em>employees &#8212; maybe a stepping stone (perhaps) to getting to actually create stuff yourself.</p>
<p>While I don&#8217;t agree with this approach, I would accept it if it worked. But, the thing is? <em>It doesn&#8217;t.</em> Large numbers of <em>junior </em>people &#8212; whose sole job it is to catch things <em>downstream</em> &#8212;  are never as effective as <em>senior </em>people who catch issues <em>early</em> in the process. How early? Well, ideally at design time &#8212; before the code is actually written.</p>
<p><em>Yeah, sure</em>, you say. <em>But how does that make it any fun?</em> Well, I know of at least three ways:</p>
<ol>
<li><strong>Designing tests before any code is written requires a lot of strategic and creative thinking. </strong>When you&#8217;re trying to design your testing strategy, you&#8217;re not trying to catch one bug, you&#8217;re brainstorming about <em>what types of tests would catch a whole raft of bugs</em>. In other words, <strong><em>QA design is</em> </strong><em><strong>software design. </strong></em>It requires you challenge your skills to try to write not just a few tests, but to really envision the entire problem space and think about where you can get burnt downstream.</li>
<li><strong>Designing tests is a good team sport. </strong>At this level, testing isn&#8217;t just for &#8220;QA people,&#8221; nor is it even only for software engineering. Involve everyone you can think of &#8212; product designers, marketing people, you name it &#8212; and ask the question: how would you break this? I&#8217;ve frequently been amazed at how clever people can be at inventing tests that I never thought of &#8212; but that, once created, make the system stronger.</li>
<li><strong>It gets everyone thinking about quality upfront &#8212; together. </strong>Nothing is worse than having to be the lone &#8220;whistle-blower&#8221; developer who shouts out just before shipping, &#8220;<em>but it&#8217;s not ready!&#8221; </em>Participating in designing automated tests upfront <strong>helps get everyone involved in the process of creating something of high-quality. </strong></li>
</ol>
<p>For some great resources on how to get better at not only TDD but thoughts on how to build great tests, check out a few of the excellent books over at <a href="http://pragprog.com/">The Pragmatic Bookshelf.</a></p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/therulesofsoftware.wordpress.com/441/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/therulesofsoftware.wordpress.com/441/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/therulesofsoftware.wordpress.com/441/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/therulesofsoftware.wordpress.com/441/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/therulesofsoftware.wordpress.com/441/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/therulesofsoftware.wordpress.com/441/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/therulesofsoftware.wordpress.com/441/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/therulesofsoftware.wordpress.com/441/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/therulesofsoftware.wordpress.com/441/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/therulesofsoftware.wordpress.com/441/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/therulesofsoftware.wordpress.com/441/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/therulesofsoftware.wordpress.com/441/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/therulesofsoftware.wordpress.com/441/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/therulesofsoftware.wordpress.com/441/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=therulesofsoftware.com&amp;blog=9733121&amp;post=441&amp;subd=therulesofsoftware&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://therulesofsoftware.com/2010/10/24/rule-17-break-it-before-you-build-it/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/3923dd70de2b48f1c16df288e67837ed?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">jpklein</media:title>
		</media:content>

		<media:content url="http://therulesofsoftware.files.wordpress.com/2010/10/flying-car.jpg?w=300" medium="image">
			<media:title type="html">Ford Pinto Gets Wings</media:title>
		</media:content>
	</item>
		<item>
		<title>Rule #16: Small is beautiful.</title>
		<link>http://therulesofsoftware.com/2010/10/20/rule-16-small-is-beautiful/</link>
		<comments>http://therulesofsoftware.com/2010/10/20/rule-16-small-is-beautiful/#comments</comments>
		<pubDate>Wed, 20 Oct 2010 22:05:06 +0000</pubDate>
		<dc:creator>Joe Kleinschmidt</dc:creator>
				<category><![CDATA[Make It the Best]]></category>
		<category><![CDATA[product development]]></category>
		<category><![CDATA[software design]]></category>

		<guid isPermaLink="false">http://therulesofsoftware.com/?p=393</guid>
		<description><![CDATA[Let&#8217;s take this in baby steps. I find myself saying that phrase to our product team a lot lately. In other words: &#8220;let&#8217;s think of the smallest possible feature we can build that addresses our customer&#8217;s need, and then let&#8217;s see if we tighten it up even more.&#8221; Working on things one-tiny-nano-step at a time [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=therulesofsoftware.com&amp;blog=9733121&amp;post=393&amp;subd=therulesofsoftware&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<div id="attachment_397" class="wp-caption alignright" style="width: 247px"><a href="http://therulesofsoftware.files.wordpress.com/2010/10/smart-car.jpg"><img class="size-full wp-image-397" title="Smart Car" src="http://therulesofsoftware.files.wordpress.com/2010/10/smart-car.jpg?w=237&#038;h=145" alt="" width="237" height="145" /></a><p class="wp-caption-text">Hmmm, feels like a lot. Can we make it smaller?</p></div>
<p><em>Let&#8217;s take this in baby steps. </em>I find myself saying that phrase to our product team a lot lately. In other words: &#8220;let&#8217;s think of the smallest possible feature we can build that addresses our customer&#8217;s need, and then let&#8217;s see if we tighten it up even more.&#8221;</p>
<p>Working on things <em>one-tiny-nano-step</em> at a time helps us make sure that:</p>
<ol>
<li><strong>things work</strong></li>
<li><strong>we like them</strong>, and</li>
<li><strong>we&#8217;re on-target</strong>.</li>
</ol>
<p><strong> </strong></p>
<p>The great news is that if we&#8217;ve only spent one day on something and it doesn&#8217;t work, we don&#8217;t like it, or it feels we&#8217;re off-target, well: we&#8217;re a little bit smarter, and we&#8217;re out a day&#8217;s worth of work. Whereas if we get caught up designing something really big, and we run into trouble, it&#8217;s a time-consuming lesson. </p>
<p>Not everything works this way, of course &#8212; but I think for a lot of things it&#8217;s a pretty good model to follow.</p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/therulesofsoftware.wordpress.com/393/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/therulesofsoftware.wordpress.com/393/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/therulesofsoftware.wordpress.com/393/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/therulesofsoftware.wordpress.com/393/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/therulesofsoftware.wordpress.com/393/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/therulesofsoftware.wordpress.com/393/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/therulesofsoftware.wordpress.com/393/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/therulesofsoftware.wordpress.com/393/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/therulesofsoftware.wordpress.com/393/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/therulesofsoftware.wordpress.com/393/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/therulesofsoftware.wordpress.com/393/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/therulesofsoftware.wordpress.com/393/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/therulesofsoftware.wordpress.com/393/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/therulesofsoftware.wordpress.com/393/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=therulesofsoftware.com&amp;blog=9733121&amp;post=393&amp;subd=therulesofsoftware&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://therulesofsoftware.com/2010/10/20/rule-16-small-is-beautiful/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/3923dd70de2b48f1c16df288e67837ed?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">jpklein</media:title>
		</media:content>

		<media:content url="http://therulesofsoftware.files.wordpress.com/2010/10/smart-car.jpg" medium="image">
			<media:title type="html">Smart Car</media:title>
		</media:content>
	</item>
		<item>
		<title>Rule #15: Inertia is a powerful force in the software development process.</title>
		<link>http://therulesofsoftware.com/2010/10/17/rule-15-inertia-is-a-powerful-force-in-the-software-development-process/</link>
		<comments>http://therulesofsoftware.com/2010/10/17/rule-15-inertia-is-a-powerful-force-in-the-software-development-process/#comments</comments>
		<pubDate>Sun, 17 Oct 2010 18:40:50 +0000</pubDate>
		<dc:creator>Joe Kleinschmidt</dc:creator>
				<category><![CDATA[Make It Worth It]]></category>
		<category><![CDATA[Make It Yours]]></category>
		<category><![CDATA[software management]]></category>
		<category><![CDATA[software start-ups]]></category>
		<category><![CDATA[test-driven development]]></category>

		<guid isPermaLink="false">http://therulesofsoftware.com/?p=288</guid>
		<description><![CDATA[In the way, way, way early days of our company, even though there were only two of us working on the product (including myself), we agreed to a few things. We would: Do upfront design through specs Adhere to test-driven development (TDD) Commit to awesome uptime Now, in the early days, we didn&#8217;t necessarily need to [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=therulesofsoftware.com&amp;blog=9733121&amp;post=288&amp;subd=therulesofsoftware&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>In the <em>way, way, way </em>early days of our company, even though there were only two of us working on the product (including myself), we agreed to a few things. We would:</p>
<ul>
<li>Do <strong>upfront design through specs</strong></li>
<li>Adhere to <strong>test-driven development</strong> (TDD)</li>
<li>Commit to <strong><strong>awesome uptime</strong></strong></li>
</ul>
<p>Now, in the early days, we didn&#8217;t necessarily <em>need </em>to do these things. We had, give-or-take, about <em>zero </em>customers, and as a result, if our system went down, I&#8217;m pretty sure exactly <em>nobody </em>would have noticed. Well, not nobody. <em>We </em>would have noticed.</p>
<p>When you&#8217;re just starting out,<strong> if there&#8217;s a way of doing things that&#8217;s important to <em>you</em>, just start doing it even if you don&#8217;t need to. </strong>For me, I had worked on software projects in the past which contained legacy code that wasn&#8217;t well-documented, was buggy, and which crashed &#8212; and I <em>hated </em>those things. They drove me <em>nuts. </em></p>
<div id="attachment_358" class="wp-caption alignright" style="width: 310px"><a href="http://therulesofsoftware.files.wordpress.com/2010/10/the-taj-mahal-in-legos.jpg"><img class="size-medium wp-image-358" title="the taj mahal gets a little lego facelift" src="http://therulesofsoftware.files.wordpress.com/2010/10/the-taj-mahal-in-legos.jpg?w=300&#038;h=211" alt="" width="300" height="211" /></a><p class="wp-caption-text">Your way may not be everyone else&#039;s way.</p></div>
<p><em> </em>And so we figured, since we were starting from scratch, we&#8217;d design and document everything upfront, write unit tests to keep our bug count low, and put monitoring tools into place from the start to ensure we almost never went down. We knew we needed to do these things <em>eventually</em>, so we just figured we would do all those things <em>from the start</em>. Worst case, we figured <strong>things would be more fun</strong> since we could spend more time working on features and less time fixing bugs.</p>
<p>Years later, we still do all these things. We have a brand-new developer who is part-way through developing a new feature. The feature started with a detailed 23-page spec, has 139 unit tests written so far, and will be monitored on a 24/7 basis from the first moment it&#8217;s pushed to production. What&#8217;s interesting is that we didn&#8217;t even really talk about any of that. Rather, we&#8217;re doing things this way mostly because &#8220;that&#8217;s just the way we&#8217;ve usually done it.&#8221;</p>
<p>Inertia is an amazingly powerful force in software development projects. If you&#8217;re building a product or engineering team, I think the key isn&#8217;t to fight that force, but to leverage it &#8212; the earlier, the better. <strong>Put a process in-place that <em>you </em>would like, for <em>yourself</em>,</strong> and make it so that &#8220;that&#8217;s just the way it&#8217;s always been done&#8221; is how you think it should be done.</p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/therulesofsoftware.wordpress.com/288/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/therulesofsoftware.wordpress.com/288/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/therulesofsoftware.wordpress.com/288/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/therulesofsoftware.wordpress.com/288/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/therulesofsoftware.wordpress.com/288/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/therulesofsoftware.wordpress.com/288/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/therulesofsoftware.wordpress.com/288/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/therulesofsoftware.wordpress.com/288/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/therulesofsoftware.wordpress.com/288/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/therulesofsoftware.wordpress.com/288/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/therulesofsoftware.wordpress.com/288/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/therulesofsoftware.wordpress.com/288/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/therulesofsoftware.wordpress.com/288/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/therulesofsoftware.wordpress.com/288/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=therulesofsoftware.com&amp;blog=9733121&amp;post=288&amp;subd=therulesofsoftware&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://therulesofsoftware.com/2010/10/17/rule-15-inertia-is-a-powerful-force-in-the-software-development-process/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/3923dd70de2b48f1c16df288e67837ed?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">jpklein</media:title>
		</media:content>

		<media:content url="http://therulesofsoftware.files.wordpress.com/2010/10/the-taj-mahal-in-legos.jpg?w=300" medium="image">
			<media:title type="html">the taj mahal gets a little lego facelift</media:title>
		</media:content>
	</item>
		<item>
		<title>Rule #14: Know when to be great, and when to be pretty good.</title>
		<link>http://therulesofsoftware.com/2010/10/16/rule-14-know-when-to-be-great/</link>
		<comments>http://therulesofsoftware.com/2010/10/16/rule-14-know-when-to-be-great/#comments</comments>
		<pubDate>Sat, 16 Oct 2010 17:05:58 +0000</pubDate>
		<dc:creator>Joe Kleinschmidt</dc:creator>
				<category><![CDATA[Make It the Best]]></category>
		<category><![CDATA[business of software]]></category>
		<category><![CDATA[engineering management]]></category>
		<category><![CDATA[geoffrey moore]]></category>
		<category><![CDATA[james bond]]></category>

		<guid isPermaLink="false">http://therulesofsoftware.com/?p=274</guid>
		<description><![CDATA[Geoffrey Moore gave a terrific talk at last year&#8217;s Business of Software conference (go sign up now for the next one, it&#8217;s a great event) about the concept of &#8220;core vs. context.&#8221; It works like this: every company or team has a &#8220;core,&#8221; the thing that sets you apart, the thing you love to do. If you [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=therulesofsoftware.com&amp;blog=9733121&amp;post=274&amp;subd=therulesofsoftware&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<div id="attachment_280" class="wp-caption alignright" style="width: 160px"><a href="http://therulesofsoftware.files.wordpress.com/2010/10/porsche.jpg"><img class="size-thumbnail wp-image-280" title="Porsche Carrera GT" src="http://therulesofsoftware.files.wordpress.com/2010/10/porsche.jpg?w=150&#038;h=83" alt="Porsche Carrera GT" width="150" height="83" /></a><p class="wp-caption-text">Top speed of 209 mph. Glove box is a little small. </p></div>
<p><a href="http://tcg-advisors.com/who/moore.htm">Geoffrey Moore</a> gave a terrific talk at last year&#8217;s <a href="http://businessofsoftware.org/">Business of Software</a> conference (go sign up now for the next one, it&#8217;s a great event) about the concept of &#8220;core vs. context.&#8221; </p>
<p>It works like this: <strong>every company or team has a &#8220;core,&#8221; the thing that sets you apart, the thing you love to do. </strong>If you designed cars at Porsche, for example, your <em>core </em>would likely be around performance and handling.  <em>Context </em>refers to everything else you need to do to complete your car so that someone will actually buy it: the glove boxes, the cup-holders, the trunk. You <em>need </em>context &#8212; nobody wants a car without working doors, no matter how fast it goes &#8212; but context isn&#8217;t what makes you special.</p>
<p>Every engineering project includes elements of both core and context. If you&#8217;re working on your <em>core</em>, you try to make it as good as you possibly can. That&#8217;s what defines you. But if you&#8217;re working on <em>context</em>, then you only want to make that particular work <em>good enough</em> so that you can then redirect your resources back onto your core. <strong>Your job is </strong><strong>to continually re-orient your resources so you are focused on your core as much as possible. </strong></p>
<p>Fair enough, right? <strong>Except that if you have great engineers, there&#8217;s a paradox.</strong> <em>Because </em>they&#8217;re great, they will always try to make everything as good as it possibly can be. So if you ask them to make the Porsche go from zero to sixty in, say, negative four secconds, they will find a way. And if you ask them to build a glove box, well, by default they&#8217;ll start thinking about how to make it amazing: not only will it hold your papers, it will detect when you have a date in the car and automatically spring open James Bond-style with a bottle of Champagne and two glasses after you turn off the ignition.</p>
<p>And while, yes, I want one of those glove boxes too, unfortunately this approach backfires, because you end up spreading yourself too thin. <strong>Because <em>everyone </em>on your team is trying to make <em>everything </em>great, you end up with a resource problem where <em>nothing </em>is as good as it could be. </strong></p>
<p>So, what&#8217;s the solution? Well, <strong>if you have a team working on your core, then<em> don&#8217;t hold back</em></strong>: invest as heavily as you can to make that set of features absolutely world-class. But if you have resources working on context, you need to be clear that for this <em>particular </em>feature of your product, you need only something &#8220;good enough.&#8221; Because once that&#8217;s achieved, you want to try to re-allocate them back over to your core.</p>
<p>If you&#8217;d like to watch the entire (one-hour) talk, <a href="http://blog.businessofsoftware.org/2010/03/video-of-geoffrey-moore-at-business-of-software-2009.html">check it out</a>. It&#8217;s well worth it.</p>
<p><em>(Side note: I think I actually saw the old Champagne-in-the-glove-box trick in a James Bond movie once, but I can&#8217;t remember which one. If anyone has the answer, please let me know.) </em></p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/therulesofsoftware.wordpress.com/274/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/therulesofsoftware.wordpress.com/274/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/therulesofsoftware.wordpress.com/274/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/therulesofsoftware.wordpress.com/274/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/therulesofsoftware.wordpress.com/274/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/therulesofsoftware.wordpress.com/274/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/therulesofsoftware.wordpress.com/274/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/therulesofsoftware.wordpress.com/274/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/therulesofsoftware.wordpress.com/274/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/therulesofsoftware.wordpress.com/274/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/therulesofsoftware.wordpress.com/274/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/therulesofsoftware.wordpress.com/274/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/therulesofsoftware.wordpress.com/274/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/therulesofsoftware.wordpress.com/274/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=therulesofsoftware.com&amp;blog=9733121&amp;post=274&amp;subd=therulesofsoftware&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://therulesofsoftware.com/2010/10/16/rule-14-know-when-to-be-great/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/3923dd70de2b48f1c16df288e67837ed?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">jpklein</media:title>
		</media:content>

		<media:content url="http://therulesofsoftware.files.wordpress.com/2010/10/porsche.jpg?w=150" medium="image">
			<media:title type="html">Porsche Carrera GT</media:title>
		</media:content>
	</item>
		<item>
		<title>Rule #13: Robots are pretty much always a good idea.</title>
		<link>http://therulesofsoftware.com/2010/10/14/rule-13-robots-are-pretty-much-always-a-good-idea/</link>
		<comments>http://therulesofsoftware.com/2010/10/14/rule-13-robots-are-pretty-much-always-a-good-idea/#comments</comments>
		<pubDate>Fri, 15 Oct 2010 03:01:20 +0000</pubDate>
		<dc:creator>Joe Kleinschmidt</dc:creator>
				<category><![CDATA[Make It Quickly]]></category>
		<category><![CDATA[Make It Reliable]]></category>
		<category><![CDATA[continuous integration]]></category>
		<category><![CDATA[engineering culture]]></category>

		<guid isPermaLink="false">http://therulesofsoftware.com/?p=261</guid>
		<description><![CDATA[At the Silicon Valley Code Camp last weekend, I saw a very interesting talk put on by Adam Rosien and Eishay Smith over at KaChing, a startup in the financial space, entitled &#8220;5 Minutes Commit to Production: Continuous Deployment.&#8221; Essentially the philosophy these guys espouse is one in which, until your code is in the [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=therulesofsoftware.com&amp;blog=9733121&amp;post=261&amp;subd=therulesofsoftware&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<div id="attachment_262" class="wp-caption alignright" style="width: 160px"><a href="http://therulesofsoftware.files.wordpress.com/2010/10/hal-9000.jpg"><img class="size-thumbnail wp-image-262" title="hal 9000" src="http://therulesofsoftware.files.wordpress.com/2010/10/hal-9000.jpg?w=150&#038;h=112" alt="" width="150" height="112" /></a><p class="wp-caption-text">On the other hand, of course one day the robots will probably turn on you. </p></div>
<p>At the <a href="http://www.siliconvalley-codecamp.com/">Silicon Valley Code Camp</a> last weekend, I saw a very interesting talk put on by <a href="http://www.linkedin.com/in/arosien">Adam Rosien</a> and <a href="http://www.eishay.com/">Eishay Smith</a> over at <a href="https://www.kaching.com/">KaChing</a>, a startup in the financial space, entitled &#8220;5 Minutes Commit to Production: Continuous Deployment.&#8221;</p>
<p>Essentially the philosophy these guys espouse is one in which, <strong>until your code is in the hands of your customer, it&#8217;s basically &#8220;going bad&#8221; </strong>&#8211; almost like like unused inventory in a warehouse. So, what to do? Get it up there! And so their approach is to reduce that time from build-to-deploy to only five minutes.</p>
<p>These guys spoke about some terrific ways to do this at a technical level, but what I liked the most about the talk was that they spoke a little about how to do this at a <strong>cultural</strong> level as well &#8212; and engineering culture is always something I find interesting. A few takeaways:</p>
<ul>
<li><strong>Ops and QA is every engineers&#8217; responsibility</strong>. It&#8217;s not a job you put on someone else&#8217;s shoulders, it&#8217;s your job too.</li>
<li><strong>As engineers, you can always create something better</strong> (write a script, create an app) to improve the process.</li>
<li>A team of engineers who think along these lines will make themselves more and more productive by <strong>continually adding automation tools.</strong></li>
</ul>
<p><strong>I love automation</strong>. <em>Love </em>it. Whenever I see a suite of our unit tests go &#8220;green-green-green&#8221; or I bring up one of our uptime-tracking reports that verifies that some little boxes somewhere are waking up every few minutes and pinging our servers, I get a little charge in my geeky-reptile brain. If our machines are cranking away for us, then that means we&#8217;re productive even when we&#8217;re sleeping. And given that it&#8217;s the 21st century and we <em>still </em>don&#8217;t have flying cars (seriously, 1950&#8242;s-lookin&#8217; Popular Mechanics guys, could you at least give it a <em>shot</em>?) at the very least I expect that some sort-of machines of ours should be cranking away while I sleep.</p>
<p>The reality is that automating those tasks end-to-end &#8212; from build-to-test-to-full-deployment &#8212; means you can move more quickly than almost anyone. And of course, speed of development means <strong>lots of opportunities to create.</strong> So kudos to Adam and Eishay for pushing this idea.</p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/therulesofsoftware.wordpress.com/261/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/therulesofsoftware.wordpress.com/261/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/therulesofsoftware.wordpress.com/261/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/therulesofsoftware.wordpress.com/261/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/therulesofsoftware.wordpress.com/261/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/therulesofsoftware.wordpress.com/261/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/therulesofsoftware.wordpress.com/261/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/therulesofsoftware.wordpress.com/261/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/therulesofsoftware.wordpress.com/261/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/therulesofsoftware.wordpress.com/261/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/therulesofsoftware.wordpress.com/261/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/therulesofsoftware.wordpress.com/261/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/therulesofsoftware.wordpress.com/261/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/therulesofsoftware.wordpress.com/261/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=therulesofsoftware.com&amp;blog=9733121&amp;post=261&amp;subd=therulesofsoftware&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://therulesofsoftware.com/2010/10/14/rule-13-robots-are-pretty-much-always-a-good-idea/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/3923dd70de2b48f1c16df288e67837ed?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">jpklein</media:title>
		</media:content>

		<media:content url="http://therulesofsoftware.files.wordpress.com/2010/10/hal-9000.jpg?w=150" medium="image">
			<media:title type="html">hal 9000</media:title>
		</media:content>
	</item>
		<item>
		<title>Rule #12: Make it ugly.</title>
		<link>http://therulesofsoftware.com/2010/10/13/rule-12-make-it-ugly/</link>
		<comments>http://therulesofsoftware.com/2010/10/13/rule-12-make-it-ugly/#comments</comments>
		<pubDate>Thu, 14 Oct 2010 05:53:32 +0000</pubDate>
		<dc:creator>Joe Kleinschmidt</dc:creator>
				<category><![CDATA[Make It Real]]></category>
		<category><![CDATA[Make It Useful]]></category>
		<category><![CDATA[Make It Worth It]]></category>
		<category><![CDATA[old yeller]]></category>
		<category><![CDATA[software]]></category>
		<category><![CDATA[user interface]]></category>

		<guid isPermaLink="false">http://therulesofsoftware.com/?p=246</guid>
		<description><![CDATA[In the early days of a project, when you and your team have a nice, warm, fuzzy idea for how your McWidget 2000 is going to completely blow the doors off the entire McWidget industry, it&#8217;s pretty easy to get caught up in the details, especially when it comes to the user interface. &#8220;Hey, Tommy, [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=therulesofsoftware.com&amp;blog=9733121&amp;post=246&amp;subd=therulesofsoftware&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<div id="attachment_311" class="wp-caption alignright" style="width: 133px"><a href="http://therulesofsoftware.files.wordpress.com/2010/10/eye-of-the-beholder.jpg"><img class="size-thumbnail wp-image-311" title="eye of the beholder" src="http://therulesofsoftware.files.wordpress.com/2010/10/eye-of-the-beholder.jpg?w=123&#038;h=150" alt="" width="123" height="150" /></a><p class="wp-caption-text">Being cute will only get you so far. </p></div>
<p>In the early days of a project, when you and your team have a nice, warm, fuzzy idea for how your McWidget 2000 is going to completely blow the doors off the entire McWidget industry, <strong>it&#8217;s pretty easy to get caught up in the details, especially when it comes to the user interface. </strong>&#8220;Hey, Tommy, wouldn&#8217;t it be cool if, when you hit the &#8216;Publish&#8217; button, it made a giant &#8220;kapow!&#8221; sound indicating its seven levels of awesomeness?&#8221; &#8220;Yeah, but first it should turn light-green with mauve highlights when you mouse-over the button, indicating just that <em>hint </em>of kapow-ness, you know? And then when you <em>actually </em>push the button&#8230;&#8221;</p>
<p><strong>Avoid this. </strong>Avoid this like you avoid opening that container in the back of the fridge that&#8217;s been sitting there quietly making penicillin for the past three months.</p>
<p>The trouble isn&#8217;t that you&#8217;ll chase down bugs around the interface (which you will), or even that you won&#8217;t come up with some great ideas during this process. <strong>The trouble is that you&#8217;ll begin to <em>like </em>these ideas.</strong> And that&#8217;s where the danger lies.</p>
<p>Because, in just a little bit&#8230;just over that horizon there, past the first prototype and just before the next little phase&#8230;a little monster is lying in wait. That monster is called your early customers, and they&#8217;re going to have a few ideas of their own &#8212; that <em>might </em>be in-line with what you&#8217;re building, but more likely <em>won&#8217;t</em> be, and then you&#8217;ll be forced to decide: should we start building something new, something the customer actually wants, or should we, maybe, <em>hang on a bit</em> to what we have here?</p>
<p>If what you have is only one fugly little prototype, something you <em>knew </em>was just the first draft, it will be easy to adapt. But if that first draft is something you&#8217;ve really become attached to, well, then the process is going to feel a bit more like how Old Yeller ended, and who wants that?</p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/therulesofsoftware.wordpress.com/246/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/therulesofsoftware.wordpress.com/246/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/therulesofsoftware.wordpress.com/246/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/therulesofsoftware.wordpress.com/246/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/therulesofsoftware.wordpress.com/246/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/therulesofsoftware.wordpress.com/246/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/therulesofsoftware.wordpress.com/246/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/therulesofsoftware.wordpress.com/246/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/therulesofsoftware.wordpress.com/246/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/therulesofsoftware.wordpress.com/246/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/therulesofsoftware.wordpress.com/246/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/therulesofsoftware.wordpress.com/246/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/therulesofsoftware.wordpress.com/246/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/therulesofsoftware.wordpress.com/246/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=therulesofsoftware.com&amp;blog=9733121&amp;post=246&amp;subd=therulesofsoftware&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://therulesofsoftware.com/2010/10/13/rule-12-make-it-ugly/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/3923dd70de2b48f1c16df288e67837ed?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">jpklein</media:title>
		</media:content>

		<media:content url="http://therulesofsoftware.files.wordpress.com/2010/10/eye-of-the-beholder.jpg?w=123" medium="image">
			<media:title type="html">eye of the beholder</media:title>
		</media:content>
	</item>
		<item>
		<title>Rule #11: You get good at what you measure.</title>
		<link>http://therulesofsoftware.com/2010/10/11/rule-11-you-get-good-at-what-you-measure/</link>
		<comments>http://therulesofsoftware.com/2010/10/11/rule-11-you-get-good-at-what-you-measure/#comments</comments>
		<pubDate>Tue, 12 Oct 2010 04:12:46 +0000</pubDate>
		<dc:creator>Joe Kleinschmidt</dc:creator>
				<category><![CDATA[Make It Reliable]]></category>
		<category><![CDATA[Make It Useful]]></category>
		<category><![CDATA[engineering management]]></category>

		<guid isPermaLink="false">http://therulesofsoftware.com/?p=228</guid>
		<description><![CDATA[Most software product managers know their days are filled with a set of seemingly neverending decisions. Since you&#8217;re in the middle of everything, you get asked a lot of questions: this mockup or that one? This technology or that? Build or buy? Launch this week or the week after? Chocolate or peanut butter? Air Force [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=therulesofsoftware.com&amp;blog=9733121&amp;post=228&amp;subd=therulesofsoftware&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<div id="attachment_231" class="wp-caption alignright" style="width: 250px"><a href="http://public.web.cern.ch/public/en/lhc/lhc-en.html"><img class="size-medium wp-image-231   " title="Large Hadron Supercollider" src="http://therulesofsoftware.files.wordpress.com/2010/10/supercollider.jpg?w=240&#038;h=139" alt="" width="240" height="139" /></a><p class="wp-caption-text">Measure using whatever tools are handy. </p></div>
<p>Most software product managers know their days are filled with a set of seemingly neverending decisions. Since you&#8217;re in the middle of everything, you get asked a lot of questions: this mockup or that one? This technology or that? Build or buy? Launch this week or the week after? Chocolate or peanut butter? Air Force One or the presidential helicopter? For me, I love the entire process, but there are some days when that list of questions can feel a bit&#8230;long.</p>
<p>But putting some simple, measurable numbers on things tends to go pretty far &#8212; not only because it makes it easier to manage things, but because <strong>the numbers become great shorthand for communicating what&#8217;s really important.</strong></p>
<p>For example, here&#8217;s a few numbers that we&#8217;ve spoken about at my company over the past couple months:</p>
<ul>
<li> Our product designer and I decided that a feature would be &#8220;done&#8221; when people spent an average of 20 minutes using it during each visit. So &#8220;20 minutes&#8221; became sort-of a shorthand number for making the feature <em>useful</em>.</li>
<li>Everyone involved in technical operations for us focuses on 100% uptime &#8212; and so we put all sorts-of things into place so we can track that. And so &#8220;100% uptime&#8221; becomes shorthand to us for being <em>reliable</em>.</li>
<li>We&#8217;re always trying to focus on making our customers happy &#8212; and in the SaaS world, this is easy-to-measure, because you can look at renewal rates as a proxy for how happy they are. We&#8217;re still trying to figure out what the &#8220;right&#8221; number for this should be, but for the moment we thought we&#8217;d put this number at 97% &#8212; and so 97% becomes our shorthand for <em>great service</em>.</li>
</ul>
<p>But what I think is really neat about using these numbers-as-shorthand is that <strong>simply putting the measurement in-place makes us get better at the thing itself. </strong>For example, 100% uptime was a very early goal for us &#8212; and so we knew that we needed to put automated systems in-place to track our servers, which in turn forced us to talk a lot about how to build reliable systems, which &#8212; in fact &#8212; actually led to us delivering a very reliable system. And setting a &#8220;20 minute average visit&#8221; goal for a feature forced us to study those apps which were &#8220;sticky&#8221; &#8212; in turn, making us smarter about what traits make features the most to useful people, and leading to (I think) a stronger feature. So <strong>by simply deciding to measure our goal, we actually got closer to achieving our goal</strong> &#8212; a mysterious &#8220;quantum mechanical&#8221; effect that just seems to work.</p>
<p>So, lately, whenever I get into murky waters &#8212; whether that be exploring a new technology, thinking about a new feature, or figuring out a way to manage a new process &#8212; I find myself trying to &#8220;find the number&#8221; that will inherently lead us to getting good at it.</p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/therulesofsoftware.wordpress.com/228/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/therulesofsoftware.wordpress.com/228/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/therulesofsoftware.wordpress.com/228/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/therulesofsoftware.wordpress.com/228/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/therulesofsoftware.wordpress.com/228/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/therulesofsoftware.wordpress.com/228/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/therulesofsoftware.wordpress.com/228/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/therulesofsoftware.wordpress.com/228/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/therulesofsoftware.wordpress.com/228/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/therulesofsoftware.wordpress.com/228/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/therulesofsoftware.wordpress.com/228/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/therulesofsoftware.wordpress.com/228/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/therulesofsoftware.wordpress.com/228/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/therulesofsoftware.wordpress.com/228/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=therulesofsoftware.com&amp;blog=9733121&amp;post=228&amp;subd=therulesofsoftware&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://therulesofsoftware.com/2010/10/11/rule-11-you-get-good-at-what-you-measure/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/3923dd70de2b48f1c16df288e67837ed?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">jpklein</media:title>
		</media:content>

		<media:content url="http://therulesofsoftware.files.wordpress.com/2010/10/supercollider.jpg?w=300" medium="image">
			<media:title type="html">Large Hadron Supercollider</media:title>
		</media:content>
	</item>
		<item>
		<title>Rule #10: Focus on people and pain, not features and functionality.</title>
		<link>http://therulesofsoftware.com/2009/10/25/rule-10-focus-on-people-and-pain-not-features-and-functionality/</link>
		<comments>http://therulesofsoftware.com/2009/10/25/rule-10-focus-on-people-and-pain-not-features-and-functionality/#comments</comments>
		<pubDate>Sun, 25 Oct 2009 18:02:01 +0000</pubDate>
		<dc:creator>Joe Kleinschmidt</dc:creator>
				<category><![CDATA[Make It Fun]]></category>
		<category><![CDATA[Make It Interesting]]></category>
		<category><![CDATA[Make It Worth It]]></category>
		<category><![CDATA[san francisco]]></category>
		<category><![CDATA[software design]]></category>
		<category><![CDATA[software startups]]></category>

		<guid isPermaLink="false">http://therulesofsoftware.com/?p=207</guid>
		<description><![CDATA[Writing great software starts with two simple questions: Who am I creating this for? How are they hurting? Focusing on people and pain helps you define why you building what you are. And understanding the why can help answer a lot of questions throughout the development process. However, many discussions in the software industry instead [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=therulesofsoftware.com&amp;blog=9733121&amp;post=207&amp;subd=therulesofsoftware&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>Writing great software starts with two simple questions:</p>
<div id="attachment_209" class="wp-caption alignright" style="width: 206px"><a href="http://www.ferrybuildingmarketplace.com/farmers_market.php"><img class="size-medium wp-image-209" title="ferry building" src="http://therulesofsoftware.files.wordpress.com/2009/10/ferry-building.jpg?w=196&#038;h=240" alt="Tells time and serves artisian cheeses." width="196" height="240" /></a><p class="wp-caption-text">Tells time, serves artisan cheeses.</p></div>
<ol>
<li>Who am I creating this for?</li>
<li>How are they hurting?</li>
</ol>
<p><strong>Focusing on people and pain helps you define <em>why</em> you building what you are. </strong>And understanding the <em>why </em>can help answer a lot of questions throughout the development process.</p>
<p>However, many discussions in the software industry instead focus on the <em>what</em>. <em>What </em>are we making? <em>What </em>is that competitor doing? <em>What </em>features should we add to the product? <em>What </em>is the most important?</p>
<p>There are billions of <em>whats </em>in the world. <em>Whats </em>are easy to find. A search engine is a <em>what</em>. A web browser is a <em>what</em>. A word processor is a <em>what</em>. So too is a pair of sunglasses, a teddy bear, an airplane, a coffee cup. If all you want to make is a <em>what</em>, no matter your industry or interest, the list will be never-ending.</p>
<p>The problem with <em>whats </em>is that there are literally millions of variations of each of them, and so you can find yourself creating something that tries to be all things to all people.</p>
<p>If you say &#8220;I am building a car,&#8221; someone can ask you for a big trunk, another for lots of horsepower, and yet another for the ability to squeeze into a tight parking space. And because you don&#8217;t know <em>why </em>you shouldn&#8217;t do one thing or another, you will eventually create something that is poorly-received by everyone, takes a long time to build, doesn&#8217;t sell, and won&#8217;t be fun to create.</p>
<p><strong>By redirecting your focus to the <em>who </em>and <em>how</em>, however, you will find the <em>why</em>. And whys are much more interesting, and much more fun.</strong></p>
<p>If, instead of saying &#8220;I am building a car,&#8221; you say &#8220;people living in dense San Francisco neighborhoods <em>hate </em>spending 45 minutes searching for parking,&#8221; you know know exactly <em>who </em>it is who will use your product and <em>how </em>they are hurting.</p>
<p>And now you can build a SmartCar or a Cooper Mini &#8212; but you are not going to build an SUV. And when people ask you, &#8220;can your car have four doors, four wheel drive, a big trunk, and a giant engine,&#8221; you can easily answer why it <strong>cannot</strong>, but why it <strong>can </strong>come with a special refrigerated area for storing produce you purchased at the <a href="http://www.ferrybuildingmarketplace.com/farmers_market.php">Ferry Building farmer&#8217;s market</a>. Because you  aren&#8217;t spending all your time trying to be all things to all people, you can use that time to try out some creative ideas that just might appeal to the people who you are helping. <strong>The <em>why </em>can help you understand not only what you <em>cannot </em>build, but also what you <em>can</em>. </strong></p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/therulesofsoftware.wordpress.com/207/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/therulesofsoftware.wordpress.com/207/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/therulesofsoftware.wordpress.com/207/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/therulesofsoftware.wordpress.com/207/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/therulesofsoftware.wordpress.com/207/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/therulesofsoftware.wordpress.com/207/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/therulesofsoftware.wordpress.com/207/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/therulesofsoftware.wordpress.com/207/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/therulesofsoftware.wordpress.com/207/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/therulesofsoftware.wordpress.com/207/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/therulesofsoftware.wordpress.com/207/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/therulesofsoftware.wordpress.com/207/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/therulesofsoftware.wordpress.com/207/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/therulesofsoftware.wordpress.com/207/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=therulesofsoftware.com&amp;blog=9733121&amp;post=207&amp;subd=therulesofsoftware&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://therulesofsoftware.com/2009/10/25/rule-10-focus-on-people-and-pain-not-features-and-functionality/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/3923dd70de2b48f1c16df288e67837ed?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">jpklein</media:title>
		</media:content>

		<media:content url="http://therulesofsoftware.files.wordpress.com/2009/10/ferry-building.jpg?w=245" medium="image">
			<media:title type="html">ferry building</media:title>
		</media:content>
	</item>
	</channel>
</rss>
