<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/css" href="/stylesheets/rss.css"?>
<rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:trackback="http://madskills.com/public/xml/rss/module/trackback/">
  <channel>
    <title>Inter-sections.net : Category technology, everything about technology</title>
    <link>http://inter-sections.net/category/technology.rss</link>
    <language>en-us</language>
    <ttl>40</ttl>
    <description>Business, Technology, Life</description>
    <item>
      <title>Technology recruitment in an early start-up</title>
      <description>&lt;p&gt;So, you have an idea for a startup, but need a tech guy to build it&amp;#8230; how should you find him?&lt;/p&gt;

&lt;p&gt;Last week I &lt;a href="http://inter-sections.net/2008/08/30/how-not-to-write-a-job-advert"&gt;ripped into a job advert&lt;/a&gt; with, I hope, some good comical results. Some people asked, more specifically, what I would do in Redline&amp;#8217;s place (Redline was the company that produced the advert). How do you make that first technical hire?&lt;/p&gt;

&lt;p&gt;Of course, you want the company to sound personable and friendly, and that was probably the noble impulse that drove the poor anonymous job ad writer to write that awful ad. A formal, stiff job ad is indeed not going to attract good early employees - let alone a start-up CTO, which I believe is what they were trying to hire in this case.&lt;/p&gt;

&lt;p&gt;First of all, let&amp;#8217;s define our terms a little. Everyone has different terms for these things, but there&amp;#8217;s two general stages to recruitment of technical guys in a really early start-up (one with fewer than 10 techs). Please note that when a company grows beyond that size, things shift and evolve. This applies to very small technology start-ups only and, as ever in the start-up world, there are and will always be exceptions.&lt;/p&gt;

&lt;h3&gt;The CTO&lt;/h3&gt;

&lt;p&gt;The first person that needs to be recruited is what I call variously the start-up CTO, the technology director, or the technical co-founder. For a technology start-up whose bread and butter will be developing a technical product that people will want to pay money for, this &amp;#8220;hire&amp;#8221; is the most important that the founder can make in the entire history of the company. Here, I&amp;#8217;m assuming that the first founder is non-technical or not technically strong enough.&lt;/p&gt;

&lt;p&gt;Strong enough to do what? Well, to develop the whole product by himself! Wait a second&amp;#8230; can anyone develop a whole product by themselves? It depends on the product. I&amp;#8217;ve done it. My best friend is doing it now on his own start-up. My current start-up employs only two people to build our product. So yes, it is possible, if you&amp;#8217;re using the right technologies and if you&amp;#8217;re building the kind of product that is amenable to being built by a very small team.&lt;/p&gt;

&lt;p&gt;You might decide to hire more than just this guy, even though he can build the whole product by himself, in order to speed things up a little. After all, if your cofounder can write the whole product by himself, but it will take him 3 years to get to version 1, that&amp;#8217;s probably not good enough. But you won&amp;#8217;t be struggling to hire his team - he&amp;#8217;s more than capable of doing that himself. Ah yes, that&amp;#8217;s another thing a start-up CTO needs to be capable of: finding and attracting other technically talented team members to joint the start-up.&lt;/p&gt;

&lt;p&gt;What else? Well, he also needs to have a good head for business, to understand where the start-up is going and be able to pick the technologies to meet those goals. He needs to be capable of working with maniacal productivity despite the chaotic, highly constrained environment of an early start-up. He needs to have enough managerial skills to manage the early start-up team once it comes into existence. What you (as a business-minded founder) might be doing for the business, i.e. pulling the entire thing from a mere idea into existence out of your sweat and determination, he needs to do for the product.&lt;/p&gt;

&lt;p&gt;It&amp;#8217;s worth emphasizing here: I&amp;#8217;m not saying this guy &lt;i&gt;will&lt;/i&gt; build the whole product by himself, only that he needs to be &lt;i&gt;able&lt;/i&gt; to do so if need be.&lt;/p&gt;

&lt;p&gt;He&amp;#8217;s a &lt;i&gt;One-Man IT Department&lt;/i&gt;. He&amp;#8217;s the person on top of which you&amp;#8217;ll build your company. He&amp;#8217;s not a rock star. He&amp;#8217;s a &lt;a href="http://www.usccb.org/nab/bible/matthew/matthew16.htm#foot13"&gt;rock&lt;/a&gt;, and on this rock you can build your company.&lt;/p&gt;

&lt;h3&gt;The early employees&lt;/h3&gt;

&lt;p&gt;Early (technical) employees also need to be very competent, flexible and driven, but less so than the technical co-founder. They can specialise a bit more, and can focus on getting things done without quite so many business distractions. It will be the CTO&amp;#8217;s job to figure out what technical skills are needed to continue to grow the start-up, once there&amp;#8217;s budget for other people, and to find and hire the right people to fill those holes.&lt;/p&gt;

&lt;p&gt;Early employees do need to be willing to have a go at whatever needs to be done at the moment. If it&amp;#8217;s network administration that you need to do today, so be it. But they don&amp;#8217;t need to bring all those skills to the job - it&amp;#8217;s something they can learn from their colleagues, from howto&amp;#8217;s downloaded from the web, books, etc.&lt;/p&gt;

&lt;p&gt;As a start-up CTO looking for early employees, you should look not for someone who can do your job, but for someone who is reasonably well rounded and flexible, but more importantly is better than you in one of the key areas that really matter to the start-up.&lt;/p&gt;

&lt;h3&gt;Where to find them&lt;/h3&gt;

&lt;p&gt;So, where do you find these rare and wond&amp;#8217;rous creatures? Let&amp;#8217;s start with the CTO. Most important hire in the company. Defines the product that you will build. Is a job site a good place to look for one of those?&lt;/p&gt;

&lt;p&gt;Of course not. You find technical co-founders the same way you find any co-founder: through personal relationships. If you want to start a technology start-up and you&amp;#8217;re not technical, you need to locate your technical co-founder amongst your network of friends, and if there isn&amp;#8217;t one there, you need to expand that network until there is. Until you have found your technical cofounder, your company cannot be started (at least not with any reasonable chance of success). Maybe there are even better ways of finding co-founders, but I don&amp;#8217;t know them. Paul Graham&amp;#8217;s experience &lt;a href="http://www.paulgraham.com/startupfaq.html"&gt;seems to agree&lt;/a&gt;: &amp;#8220;Usually the founders have been friends for at least a year before starting the company.&amp;#8221;&lt;/p&gt;

&lt;p&gt;I&amp;#8217;m sorry if you were expecting a simple, easy answer, like &amp;#8220;Go on find-a-CTO.com&amp;#8221;. In my experience, the kind of people you want as technical cofounders are either doing it already, or productively employed. Finding your technical co-founder is hard work, but the pay-back from this work is huge.&lt;/p&gt;

&lt;p&gt;What about early employees? Well, those are a little easier. At least, you can let your CTO do most of that job. He or she should have the network to find the people that he wants to hire. There, as well, I&amp;#8217;d recommend networking as the primary means of finding great people to work with. However, for early employees, in some rare cases, you might use a &lt;a href="http://jobs.37signals.com/jobs/4254"&gt;carefully&lt;/a&gt; &lt;a href="http://startuply.com/Jobs/_Sr_Ruby_on_Rails_developer_497_1.aspx"&gt;constructed&lt;/a&gt; &lt;a href="http://jobs.37signals.com/jobs/4248"&gt;job&lt;/a&gt; &lt;a href="http://jobs.37signals.com/jobs/4247"&gt;ad&lt;/a&gt; to fish for possible hires. Bear in mind, though, that at this stage, it&amp;#8217;s usually better not to hire anyone than to hire the wrong person.&lt;/p&gt;

&lt;h3&gt;Taking on a cofounder: final note&lt;/h3&gt;

&lt;p&gt;One last note on cofounders: you can&amp;#8217;t treat them as employees. They&amp;#8217;re not employees, they&amp;#8217;re cofounders. You want them to feel that it&amp;#8217;s their company, and to do that, you have to give them equity - not options, not promises of options, but actual founder&amp;#8217;s equity. Don&amp;#8217;t feel like you&amp;#8217;re giving stuff away here. If you&amp;#8217;ve got the right person for the job, ensuring that they feel ownership of the company will ensure that your share is worth something. It&amp;#8217;s better to own 70 or 80 or even 51% of something than 100% of nothing.&lt;/p&gt;

&lt;p&gt;I hope you&amp;#8217;ve found this post helpful! Comments are, as always, welcome.&lt;/p&gt;</description>
      <pubDate>Wed, 03 Sep 2008 13:00:00 +0000</pubDate>
      <guid isPermaLink="false">urn:uuid:a9796ba5-38b9-4a52-8802-517f5d6ef4d4</guid>
      <comments>http://inter-sections.net/2008/09/03/technology-recruitment-in-an-early-start-up#comments</comments>
      <category>Business</category>
      <category>Technology</category>
      <trackback:ping>http://inter-sections.net/trackbacks?article_id=technology-recruitment-in-an-early-start-up&amp;day=03&amp;month=09&amp;year=2008</trackback:ping>
      <link>http://inter-sections.net/2008/09/03/technology-recruitment-in-an-early-start-up</link>
    </item>
    <item>
      <title>How not to write a job advert</title>
      <description>&lt;p&gt;Recently, I found a &lt;a href="http://toronto.en.craigslist.ca/tor/eng/814593791.html"&gt;Craigslist job advert&lt;/a&gt; that made me chuckle. It seems to manage to do almost everything wrong, from the point of view of recruiting the kind of person it appears to be targeting.&lt;p&gt;

&lt;p&gt;So, in the spirit of improving the web, here&amp;#8217;s my blow-by-blow description of all (or most of) what&amp;#8217;s wrong with this job ad.&lt;/p&gt;

&lt;p&gt;&lt;img src="http://inter-sections.net/files/2008/08/we-want-you.jpg"/&gt;&lt;/p&gt;

&lt;p&gt;Here&amp;#8217;s the advert, first, in case it&amp;#8217;s taken down:&lt;/p&gt;

&lt;p&gt;&lt;style&gt;
pre {
 white-space: pre-wrap;       /* css-3 */
 white-space: -moz-pre-wrap;  /* Mozilla, since 1999 */
 white-space: -pre-wrap;      /* Opera 4-6 */
 white-space: -o-pre-wrap;    /* Opera 7 */
 word-wrap: break-word;       /* Internet Explorer 5.5+ */
}
&lt;/style&gt;&lt;/p&gt;

&lt;pre&gt;Senior Rails Developer (Toronto)

Reply to: jobs@redwirenation.com [?]
Date: 2008-08-26, 9:12PM EDT


Working Role Title: Senior Rails Developer 

Why People Want To Work for Us: RedWire Employees Are Rockstars 


Enabling Entrepreneurs To Connect on a Global Scale 
As far as missions go, ours is pretty cool. How many people get to say their job is to help others be successful? 

Innovating at Warp 9 
We are a small company, but we are driven to change the world. Our reason for being is to help entrepreneurs realize their ambitions. We are innovative, relevant and user-friendly, and we use these qualities to equip business owners with the tools they need for success. 

Fun-zilla 
Working for RedWire means being passionate and creative. We want awesome people to work with who will be contributing members of our team of rockstars. 

The top three reasons why working at RedWire rocks: 

1) You get to do good. People helping people&#8212;it&#8217;s a beautiful thing. 
2) Brainastics, whiteboards, candy and lots of coffee. Sometimes we have to remind our employees to go home. 
3) Flexible work hours. We don&#8217;t do &#8220;9 to 5&#8221;. 
Nuff said. 

We realize that a start-up environment doesn&#8217;t appeal to everybody, but if it works for you, then, please, read on. 


Current Needs: 

&#188; Network Engineer 
+ &#188; Electrical Engineer 
+ 3&#8260;8 Senior Open Source Software Developer 
+ 1&#8260;8&#61472;Mathematician 
= 1 RedWire Senior Developer 

We are looking for an in-house doer-thinker-fixer-betterer whose superpower is to fulfill all the functions of an IT Department. We need an autonomous and resourceful guru to join us in our quest and manage all things IT. You must be ridiculously passionate about the web, love the idea of working in a start-up, enjoy variety in your day-to-day and be able to handle the stress of being the go-to resource. 

Role Overview: 

This is a pivotal role for an ambitious, highly enthusiastic developer who&#8217;s excited at the thought of working in a fast-paced, high-growth web start-up. 

In this position, you will demonstrate your mental prowess as you coordinate a diverse flow of projects and initiatives. 

You will be responsible for: 

- Web application development 
- Network administration 
- Information storage 
- Network functionality 

In addition, you will also be responsible for helping set up email distribution, as well as any other relevant technically related projects as they arise. 

We are looking for a goal-oriented, naturally eager person who can work effectively and efficiently under tight deadlines and who is able to manage multiple projects at once. 

Qualifications:
&#8226; Provable guru status and devoteeism of Ruby on Rails with experience actually deploying applications 
&#8226; Strong experience with MySQL, version 5+ and beyond 
&#8226; Background in developing and optimizing GNU/Linux, *nix, and *BSD platforms for mission critical production environments 
&#8226; Familiar with network infrastructure and design concepts for small networks (&lt;25 machines). 
&#8226; Proven experience in designing security-hardened web applications, using open cryptographic standards 
&#8226; Familiarity with hardware prognostics and normal accident theory 
&#8226; Expertise in open-source programs and development 
&#8226; Familiarity with content versioning systems (e.g., Hg, SVN, CVS) 
&#8226; Experience breaking stuff 
&#8226; Experience fixing what you&#8217;ve broken 

If you are the personification of our long-winded wish list, then we&#8217;d celebrate your email&#8217;s alerting us to your existence. Interested potential rockstars should send their r&#233;sum&#233; to jobs@redwirenation.com. 
&lt;/pre&gt;

&lt;p&gt;Right. &lt;i&gt;*cracks knuckles*&lt;/i&gt; Let&amp;#8217;s get started, shall we?&lt;/p&gt;

&lt;h3&gt;Rockstars helping people for brainastical whiteboard candies&lt;/h3&gt;

&lt;p&gt;&lt;a href="http://flickr.com/photos/dew_wipe/509207376/"&gt;&lt;img src="http://inter-sections.net/files/2008/08/candy.png"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;The first problem: &lt;i&gt;Why people want to work for us: Redwire employees are rockstars&lt;/i&gt;.&lt;/p&gt;

&lt;p&gt;Really? Ok, I&amp;#8217;ll sign up, but I want to get some free tickets to their concerts. Many employers still feel like calling future employees rock stars or ninjas is going to attract better developers. Here&amp;#8217;s some news for you: most of the great developers you&amp;#8217;re interested in can&amp;#8217;t stand the term &amp;#8220;rockstar programmer&amp;#8221; (or ninja, or whatever alternative you may care to come up with).&lt;p&gt;

&lt;p&gt;Next: &lt;i&gt;How many people get to say their job is to help others be successful?&lt;/i&gt;&lt;/p&gt;

&lt;p&gt;Well, let&amp;#8217;s see&amp;#8230; off the top of my head, every single employee in the world? By definition, employees help others be successful. That&amp;#8217;s what &amp;#8220;having a job&amp;#8221; means. Most people who join start-ups do it because they&amp;#8217;d also like to help themselves be successful somewhere along the way, or because the work is more interesting. In any case, if you want to excite start-up developers, you&amp;#8217;re gonna need a better &amp;#8220;mission statement&amp;#8221; than that (ideally, just scrap the mission statement altogether).&lt;/p&gt;

&lt;p&gt;&lt;i&gt;Fun-zilla&lt;/i&gt;&lt;/p&gt;

&lt;p&gt;Well, nothing says fun like Fun-zilla, right? Who are you trying to hire? 10 year olds?&lt;/p&gt;

&lt;p&gt;&lt;i&gt;&amp;#8220;We want awesome people to work with who will be contributing members of our team of rockstars.&amp;#8221;&lt;/i&gt;&lt;/p&gt;

&lt;p&gt;*puke*&lt;/p&gt;

&lt;h3&gt;Top three reasons:&lt;/h3&gt;

&lt;p&gt;&lt;a href="http://flickr.com/photos/78215847@N00/2428624611/"&gt;&lt;img src="http://inter-sections.net/files/2008/08/mother-teresa.jpg"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;i&gt;1) You get to do good. People helping people&#8212;it&#8217;s a beautiful thing.&lt;/i&gt;&lt;/p&gt;

&lt;p&gt;Oh puh-lease, I&amp;#8217;m getting all teary-eyed already. Of course. How could I not see it? Tell you what, it&amp;#8217;s such a beautiful thing, I&amp;#8217;ll work for free too. Every start-up believes their goal is the best, the most worthwhile of them all, but your job in a recruitment ad is to convince other people who haven&amp;#8217;t drunk the kool-aid that that&amp;#8217;s so. This kind of vague nonsense isn&amp;#8217;t going to help.&lt;/p&gt;

&lt;p&gt;&lt;i&gt;2) Brainastics, whiteboards, candy and lots of coffee. Sometimes we have to remind our employees to go home.&lt;/i&gt;&lt;/p&gt;

&lt;p&gt;Translation: long hours, no concept of work/life balance. That&amp;#8217;s acceptable for a start-up (though perhaps it shouldn&amp;#8217;t be), it&amp;#8217;s understood that you may work long hours on a start-up. But you shouldn&amp;#8217;t brandish that about as a key selling point for your company, much in the same way that someone who&amp;#8217;s changing jobs might be doing so because their current job sucks, but they probably shouldn&amp;#8217;t say it outright in the interview. And since when are whiteboards a perk?? What&amp;#8217;s next? &amp;#8220;Our state-of-the-art office premises include a quality toilet seat&amp;#8221;?&lt;/p&gt;

&lt;p&gt;&lt;i&gt;3) Flexible work hours. We don&#8217;t do &amp;#8220;9 to 5&lt;br/&gt;
Nuff said.&amp;#8221;&lt;/i&gt;&lt;/p&gt;

&lt;p&gt;Normally, that would be fine, but in conjunction with the previous statement, it&amp;#8217;s highly suspicious. &amp;#8220;We don&amp;#8217;t do 9 to 5&amp;#8221; could just as easily mean &amp;#8220;We do 10 to 10&amp;#8221;, in this context. Nope, not &amp;#8220;enough said&amp;#8221; - more detail would have been preferable.&lt;/p&gt;

&lt;h3&gt;One cup of flour, two cups of milk, two eggs&lt;/h3&gt;

&lt;p&gt;&lt;img src="http://inter-sections.net/files/2008/08/too-many-ingredients.jpg"&gt;&lt;/p&gt;

&lt;p&gt;&lt;i&gt;1/4 Network Engineer&lt;br/&gt;
+ 1/4 Electrical Engineer&lt;br/&gt;
+ 3/8 Senior Open Source Software Developer&lt;br/&gt;
+ 1/8 Mathematician&lt;br/&gt;
= 1 RedWire Senior Developer&lt;/i&gt;&lt;/p&gt;

&lt;p&gt;Oh boy. Maybe add another 1/32 janitor while they&amp;#8217;re at it? What the heck is up with the /8 fractions anyway?&lt;/p&gt;

&lt;p&gt;&lt;i&gt;We are looking for an in-house doer-thinker-fixer-betterer whose superpower is to fulfill all the functions of an IT Department. We need an autonomous and resourceful guru to join us in our quest and manage all things IT. &lt;/i&gt;&lt;/p&gt;

&lt;p&gt;Ok&amp;#8230; so, what emerges here, is they&amp;#8217;re looking for a CTO. That&amp;#8217;s what a CTO is - a one-man IT department. But either they can&amp;#8217;t afford one, or they haven&amp;#8217;t figured out that&amp;#8217;s what they&amp;#8217;re looking for, or they don&amp;#8217;t know that hiring a CTO in a company like that is the most important hiring decision in the whole history of their company (and should be achieved through intense networking, not through free job ads). Or perhaps, more likely, they just don&amp;#8217;t really have a clue what they want, beyond the fact that it&amp;#8217;s someone who knows stuff about IT.&lt;/p&gt;

&lt;p&gt;&lt;i&gt;In this position, you will demonstrate your mental prowess as you coordinate a diverse flow of projects and initiatives. &lt;/i&gt;&lt;/p&gt;

&lt;p&gt;You &lt;i&gt;will&lt;/i&gt; be everyone&amp;#8217;s IT bitch.&lt;/p&gt;

&lt;p&gt;&lt;i&gt;&amp;#8230;ambitious, highly enthusiastic&amp;#8230;&lt;/i&gt;&lt;/p&gt;

&lt;p&gt;And you will enjoy it!&lt;/p&gt;

&lt;h3&gt;Responsibilabilities and Qualifimications&lt;/h3&gt;

&lt;p&gt;&lt;a href="http://flickr.com/photos/kikipopo/442928977/"&gt;&lt;img src="http://inter-sections.net/files/2008/08/handyman.jpg"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;i&gt;You will be responsible for:&lt;br/&gt;
- Web application development &lt;br/&gt;
- Network administration &lt;br/&gt;
- Information storage &lt;br/&gt;
- Network functionality &lt;/i&gt;&lt;/p&gt;

&lt;p&gt;Wow is that it. Oh wait, you&amp;#8217;re not finished. Please continue.&lt;/p&gt;

&lt;p&gt;&lt;i&gt;In addition, you will also be responsible for helping set up email distribution, as well as any other relevant technically related projects as they arise.&lt;/i&gt;&lt;/p&gt;

&lt;p&gt;Didn&amp;#8217;t we cover this already? If you want someone with that breadth of skills, you&amp;#8217;re hiring your CTO cofounder. And you better give them equity - lots of it. And you will never find them via a craigslist job ad. Also, what the heck is &amp;#8220;Information storage&amp;#8221;? Does this &amp;#8220;Senior Rails Developer&amp;#8221; also have to manage the shared drive, perhaps?&lt;/p&gt;

&lt;p&gt;&lt;i&gt;Provable guru status and devoteeism of Ruby on Rails with experience actually deploying applications&lt;/i&gt;&lt;/p&gt;

&lt;p&gt;Devoteeism? Guru status? Come on, I need some lines that I can make fun of. This is so self-contained, I can&amp;#8217;t possibly make it any more ridiculous than it already is.&lt;/p&gt;

&lt;p&gt;&lt;i&gt;Proven experience in designing security-hardened web applications, using open cryptographic standards&lt;/i&gt;&lt;/p&gt;

&lt;p&gt;What does that even mean? My guess is, it translates to &amp;#8220;is capable of setting up an SSL certificate on apache&amp;#8221;.&lt;/p&gt;

&lt;p&gt;&lt;i&gt;Familiarity with content versioning systems (e.g., Hg, SVN, CVS)&lt;/i&gt;&lt;/p&gt;

&lt;p&gt;Is it even possible to be a &amp;#8220;Ruby guru&amp;#8221; and not be &amp;#8220;familiar&amp;#8221; with source control? Another hint that the person who wrote this job ad doesn&amp;#8217;t know what they&amp;#8217;re talking about.&lt;/p&gt;

&lt;p&gt;&lt;i&gt;Experience breaking stuff&lt;br/&gt;
Experience fixing what you&#8217;ve broken&lt;/i&gt;&lt;/p&gt;

&lt;p&gt;It&amp;#8217;s always a good thing to let your company&amp;#8217;s personality show through your ad. Well, not always, I guess. Not in this case, for example. After this litany of unintentionally awful propositions, this &amp;#8220;joke&amp;#8221; doesn&amp;#8217;t really go down well.&lt;/p&gt;

&lt;h3&gt;In conclusion&lt;/h3&gt;

&lt;p&gt;Now, it&amp;#8217;s possible that actually, Red Wire is a perfectly fine company, and they just happened to get someone&amp;#8217;s friends sister to write and post up the job ad because they were too busy and, heck, craigslist is free anyway. But this is a terrible impression to make to prospective start-up employees and, if they indeed lack a CTO, it&amp;#8217;s no way to hire one.&lt;/p&gt;

&lt;p&gt;If you&amp;#8217;re in a position to hire technical people for a start-up, try not to make quite so many mistakes.&lt;/p&gt;</description>
      <pubDate>Sat, 30 Aug 2008 01:00:00 +0000</pubDate>
      <guid isPermaLink="false">urn:uuid:bf8ec2f4-8f05-4ddc-a4cb-6a010aeed2b7</guid>
      <comments>http://inter-sections.net/2008/08/30/how-not-to-write-a-job-advert#comments</comments>
      <category>Business</category>
      <category>Technology</category>
      <trackback:ping>http://inter-sections.net/trackbacks?article_id=how-not-to-write-a-job-advert&amp;day=30&amp;month=08&amp;year=2008</trackback:ping>
      <link>http://inter-sections.net/2008/08/30/how-not-to-write-a-job-advert</link>
    </item>
    <item>
      <title>Making money off facebook</title>
      <description>&lt;p&gt;&lt;a href="http://venturebeat.com/2008/08/25/developer-analytics-facebook-game-mob-wars-making-22000-a-day/"&gt;Here&lt;/a&gt;&amp;#8217;s an article from VentureBeat waving about some figures about how much money can be made with Facebook apps. Although the figures are a bit anecdotal, and I hope for their sake that no VC&amp;#8217;s ever invest based on such hand-waving mathematics, the real gem is at the end:&lt;/p&gt;

&lt;p&gt;&lt;i&gt;Either way, the many naysayers suggesting that it&amp;#8217;s impossible to make money on Facebook might want to think again.&lt;/i&gt;&lt;/p&gt;

&lt;p&gt;I don&amp;#8217;t know if anyone&amp;#8217;s ever suggested it&amp;#8217;s _impossible_ to make money from Facebook. The main backlash against Facebook applications as a business model has really been against the gold rush mentality of the early Facebook app &#8220;golden age&#8221;. In those days, the mental processes went a little bit like this:&lt;/p&gt;

&lt;ol&gt;

&lt;li&gt;Facebook has lots of users&lt;/li&gt;

&lt;li&gt;Facebook is inherently viral&lt;/li&gt;

&lt;li&gt;If I make a Facebook application, it will be easy to reach millions of people&lt;/li&gt;

&lt;li&gt;An application that can reach millions of people is bound to make money.&lt;/li&gt;

&lt;/ol&gt;

&lt;p&gt;That&amp;#8217;s a nice story, and it explains why some many people (myself included) rushed into Facebook application development last summer. Since then, most of them have pulled out, and for very good reasons.&lt;/p&gt;

&lt;ol&gt;

&lt;li&gt;Facebook became much more protective of its users (and quite sensibly). A large part of the changes to Facebook in the last year have been to protect its users from over-greedy and spammy applications&lt;/li&gt;

&lt;li&gt;Many changes entirely nerfed the virality, making it much, much harder for an application to magically spread from 10 users to a million within a few weeks&lt;/li&gt;

&lt;li&gt;Therefore, it&amp;#8217;s become very hard to reach any large number of people on Facebook&lt;/li&gt;

&lt;li&gt;Even applications that did benefit from the early &#8220;golden age&#8221; conditions didn&amp;#8217;t manage to make that much money. Their business models are still being proven. Slide and RockYou may have a few very successful apps, but they also have many developers, and it&amp;#8217;s unlikely that their Facebook revenues cover their costs yet (though I&amp;#8217;d love to hear some hard numbers on that).&lt;/li&gt;

&lt;/ol&gt;

&lt;p&gt;The truth is, yes, it&amp;#8217;s possible to make money with a Facebook app. But, and this is the key, it&amp;#8217;s no easier than making money with a non-Facebook app. In many ways, it&amp;#8217;s harder. Working with the Facebook platform and its many limitations is a challenge in and of itself. Even if you&amp;#8217;re a consummate start-upper outside of the Facebook bubble-world, you&amp;#8217;ll have to learn application development all over again in this new, different environment. That&amp;#8217;s not a huge deal, but it should give pause to people who think they can just &#8220;make a Facebook version&#8221; of their otherwise successful application.&lt;/p&gt;

&lt;p&gt;More importantly, building a Facebook application puts you in the thrall of Facebook. That is a huge deal, because Facebook is their own business, and they will always do things to their own advantage, even if that involves doing something that will completely destroy your business. The internet is fickle enough as it is. Do you need the extra risk?&lt;/p&gt;</description>
      <pubDate>Wed, 27 Aug 2008 12:00:00 +0000</pubDate>
      <guid isPermaLink="false">urn:uuid:f5b8e505-e998-4984-abeb-1741abe7393b</guid>
      <comments>http://inter-sections.net/2008/08/27/making-money-off-facebook#comments</comments>
      <category>Business</category>
      <category>Technology</category>
      <trackback:ping>http://inter-sections.net/trackbacks?article_id=making-money-off-facebook&amp;day=27&amp;month=08&amp;year=2008</trackback:ping>
      <link>http://inter-sections.net/2008/08/27/making-money-off-facebook</link>
    </item>
    <item>
      <title>Perfection does not exist</title>
      <description>&lt;h3&gt;1. The idealistic path to &#8216;perfection&#8217;&lt;/h3&gt;

&lt;p&gt;You&#8217;re sitting at your desk, alone with your idea. Or perhaps you&#8217;re with some friends or colleagues or both. This is a great idea. You&#8217;re excited! Now all you need is to implement that perfect vision, and you will become rich and famous.&lt;/p&gt;

&lt;p&gt;You&#8217;ve heard that&#160;&lt;a href="http://news.ycombinator.com/item?id=3447"&gt;ideas are nothing&lt;/a&gt; &lt;a href="http://www.jimestill.com/2006/04/ideas-vs-implementation.html"&gt;without implementation&lt;/a&gt;. You&#8217;ve heard that &lt;a href="http://howtosplitanatom.com/news/ideas-are-a-dime-a-dozen/"&gt;ideas are a dime a dozen&lt;/a&gt;, you know that what will make or break your idea (and your business along with it) is how well this idea is implemented. The devil is in the detail, and you&#8217;re going to make damn sure that every detail is right. All you need is to &lt;a href="http://www.paulgraham.com/good.html"&gt;make something people want&lt;/a&gt;, to make it the best damn implementation out there, and you&#8217;ll be laughing all the way to the bank!&lt;/p&gt;

&lt;p&gt;Unfortunately, there&#8217;s a fatal flaw in your plan: you and your brilliant idea. You, I&#8217;m sorry to say, don&#8217;t have the first clue what your users really want. Oh, you have some vague idea &#8212; and at this stage, a vague idea is a pretty good start &#8212; you know roughly where you want to go, but the truth of the matter is, if you took your vague idea, concretised it, and implemented it perfectly as it is currently in your head, it would be a very, very bad product, a monumental flop. This is true whether you have detailed knowledge of the business domain, are a technical expert, or both.&lt;/p&gt;

&lt;p&gt;The real &#8220;perfect&#8221; implementation is somewhere else. This is easily illustrated by the following diagram:&lt;/p&gt;

&lt;p&gt;&lt;img src="/files/2008/05/diagram-1.png" alt="From A to B (but actually you want C)" /&gt;&lt;/p&gt;

&lt;p&gt;Even if you can go from A to B directly and perfectly, that won&#8217;t do it, because, in fact, you want to be at C, but it is impossible for you to have any idea where C is.&lt;/p&gt;

&lt;h3&gt;2. The practical path to &#8216;perfection&#8217;&lt;/h3&gt;

&lt;p&gt;I&#8217;m sorry to say, but there&#8217;s another flaw with your plan: you again! You&#8217;re not alone in this one, though: your whole team is guilty! Real projects are fickle, difficult things. It takes all the willpower and social skills of a competent project manager to keep them aiming roughly in the right direction. Even then &#8212; especially if you&#8217;re lucky enough to be working with very smart people &#8212; there will be many side-steps, jumps and skips along the road. These are all perfectly natural and to be expected.&lt;/p&gt;

&lt;p&gt;You will discover new things along the way, and that&#8217;s a good thing! Those will shift your end goal, and they will shift your direction too. By the end, your history of targets will be spread over a large area.&lt;/p&gt;

&lt;p&gt;Your path to your end point(s) is likely to look something like the following picture.&lt;/p&gt;

&lt;p&gt;&lt;img src="/files/2008/05/diagram-2.png" alt="From A to B (even a straight line isn&#8217;t so easy)" /&gt;&lt;/p&gt;

&lt;p&gt;On the good side, this means that your product will be more practically consistent. On the bad side, there&#8217;s no telling whether those changes will actually bring you nearer to perfection. Consistency doesn&amp;#8217;t make or break a product. Users do.&lt;/p&gt;

&lt;h3&gt;3. The use(r)ful path to &#8216;perfection&#8217;&lt;/h3&gt;

&lt;p&gt;What a disaster. Not only you don&#8217;t know where you&#8217;re going on a high level, but you also don&#8217;t really have a clue from week to week. Surely there must be a solution to this quandary. Someone in the world can tell you what the perfect product is. Just hire them and you&#8217;ll be sorted.&lt;/p&gt;

&lt;p&gt;Problem is, you can&#8217;t hire them. The only people in the whole world who can tell you where your product is going wrong are your users. The minute users get into the equation, you suddenly have some way, as uncertain, fickle, and vague as it might be, to tell whether you&#8217;re going in the right direction. You need them to provide you with &lt;a href="http://www.inter-sections.net/2008/01/02/feedback/"&gt;timely, accurate, effortless feedback&lt;/a&gt; throughout your development process.&lt;/p&gt;

&lt;p&gt;If you followed &lt;a href="http://www.inter-sections.net/2008/05/07/13-tips-for-creating-a-successful-new-online-product/"&gt;my tips&lt;/a&gt; and released a beta, or even alpha, and listened to your users, your path might look a little bit more like this:&lt;/p&gt;

&lt;p&gt;&lt;img src="/files/2008/05/diagram-3.png" alt="From A to B (with some feedback about where C might be)" /&gt;&lt;/p&gt;

&lt;p&gt;And if you do this, chances are, you will probably turn out a pretty damn good product.&lt;/p&gt;

&lt;h3&gt;4. But&#8230; perfection does not exist?&lt;/h3&gt;

&lt;p&gt;Now, you might point out that I&#8217;ve made a pretty good case for why perfection is very hard to achieve. However, what I haven&#8217;t yet done is to explain why perfection doesn&#8217;t exist.&lt;/p&gt;

&lt;p&gt;There are two good reasons why a perfect product doesn&#8217;t exist.&lt;/p&gt;

&lt;p&gt;The first one is that there is an enormous variety of users out there. What&#8217;s perfect to one will be unbearable to another. You can, with some uncommon concentration of talent, build something that&#8217;s almost perfect for a lot of people. Apple have done it. Google have done it. And there are many other unsung heroes (though none seems to be quite as consistent as Apple), delivering fantastic products that are almost perfect for almost everyone. But every single one of these products is flawed in some ways for some people. In this sense, &#8220;perfection&#8221; is meaningless, a red herring. There is no perfection, only a good fit for a common denominator.&lt;/p&gt;

&lt;p&gt;&lt;img src="/files/2008/05/diagram-4.png" alt="Actually, C can&#8217;t be pinpointed" /&gt;&lt;/p&gt;

&lt;p&gt;The second one, much more vicious, is that all those diagrams tell a pernicious lie. They  completely hide the vicious, dynamic, crowded, unpredictable nature of the marketplace of desires, of what people want and how they want it. People&#8217;s needs change. Trends change. Impressions, desires and public perceptions shift each and every day.&lt;/p&gt;

&lt;p&gt;Even if you could build a product that would hit the sweet spot in everyone&#8217;s heart and feel just perfect to your entire target market, that sweet spot will shift, implacably relegating your &#8216;perfect&#8217; product to the dustbins of time. In short, even if perfection was theoretically possible, if you built a product that was perfect today it would be imperfect tomorrow.&lt;/p&gt;

&lt;p&gt;&lt;img src="/files/2008/05/diagram-5.png" alt="Also, C keeps moving about with time" /&gt;&lt;/p&gt;

&lt;h3&gt;5. What to do about it?&lt;/h3&gt;

&lt;p&gt;The main point of this article is to convince you to stop chasing perfection as a concrete goal. Striving towards building the best possible product is a good goal. Striving towards building a perfect product is an illusion, and a dangerous one at that. Striving to achieve perfection (or its sneaky twins, excellence and near-perfection) every step of the way is a deadly mistake.&lt;/p&gt;

&lt;p&gt;Once you make it your aim to &#8220;build the perfect product&#8221;, you find yourself paralised  by lengthy design work, longer iterations, and significant periods of &#8220;making the features perfect&#8221; without releasing anything to the users. This can and probably will kill your startup. Don&#8217;t make that mistake.&lt;/p&gt;

&lt;p&gt;A much better &lt;em&gt;modus operandi&lt;/em&gt; is to aim to move forward a little bit at a time, to build small increments of functionality that you can show to users as soon as possible. This, incidentally, is also the way agile projects are supposed to work (but often don&#8217;t). &lt;strong&gt;Aim small, shoot often, re-adjust each time&lt;/strong&gt;. You need to influence the culture of your project so that it&amp;#8217;s ok to make mistakes, and to make them often. A development model that allows lots and lots of cheap mistakes is far superior to one that tries to achieve perfection at every step, and thus makes each mistake very costly.&lt;/p&gt;

&lt;p&gt;My own projects have fallen into this trap regularly, so I think it&#8217;s not an easy one to avoid. In the contagious enthusiasm of having built something that users love it&#8217;s easy to fall into the perfectionist pattern and decide that because the users like the system now, we need to ensure that they like every single release of the system. This even applies to &lt;a href="http://www.lifereboot.com/2007/nothing-i-write-will-ever-be-perfect/"&gt;other things than products&lt;/a&gt;. It takes a lot of discipline to fight that behaviour and say something that may well resonate, to your coworkers, as &amp;#8220;let&amp;#8217;s build crap&amp;#8221;, but in fact means &#8220;let&#8217;s just release something quickly, no matter how bad it may seem, and see what the users think&#8221;.&lt;/p&gt;

&lt;p&gt;But if you want your product to succeed, it must be done.&lt;/p&gt;</description>
      <pubDate>Mon, 19 May 2008 12:44:00 +0000</pubDate>
      <guid isPermaLink="false">urn:uuid:f9e2237c-196b-456a-99cb-0e54d7a2588e</guid>
      <comments>http://inter-sections.net/2008/05/19/perfection-does-not-exist#comments</comments>
      <category>Business</category>
      <category>Technology</category>
      <trackback:ping>http://inter-sections.net/trackbacks?article_id=perfection-does-not-exist&amp;day=19&amp;month=05&amp;year=2008</trackback:ping>
      <link>http://inter-sections.net/2008/05/19/perfection-does-not-exist</link>
    </item>
    <item>
      <title>13 Tips for creating a successful new online product</title>
      <description>&lt;p&gt;There is &lt;a href="http://www.37signals.com/svn/posts/981-the-secret-to-making-money-online"&gt;much talk&lt;/a&gt; &lt;a href="http://www.37signals.com/svn/posts/997-start-a-business-not-a-startup"&gt;these&lt;/a&gt; &lt;a href="http://www.37signals.com/svn/posts/987-are-you-sure-you-want-to-be-in-san-francisco"&gt;days&lt;/a&gt; about building a product for a niche and making a lifestyle business out of it. Much of the online literature about starting up is focused on how to create some fantastic product which will gather millions of visitors and make you a billionaire, and the &#8220;new wave&#8221;, so to speak, proposes that rather than taking a 1 in 10&#8217;000 bet that you can make billions, it is better to take a 1 in 10 bet that you can make millions.&lt;/p&gt;

&lt;p&gt;Since I have started two such businesses already, here are thirteen tips from my own experience.&lt;/p&gt;

&lt;p style="float: right"&gt;&lt;img src="/files/2008/05/target.png" alt="Target a niche" /&gt;&lt;/p&gt;

&lt;h2&gt;What to build&lt;/h2&gt;

&lt;h3&gt;1. Build for someone specific&lt;/h3&gt;

&lt;p&gt;It&#8217;s very tempting to create a product for the widest audience. &#8220;Everyone can use our product, therefore if even a tiny proportion use it, we&#8217;ll be rich!&#8221; Beware the generalised product. If your product is not built for anyone in particular, it will not be good for anyone in particular. &lt;strong&gt;The worst possible market for a product is &#8220;small businesses on the web&#8221;.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;On the other hand, if you build something that is directly useful for even just one real human being, chances are there will be others like that user and your product will have some success.&lt;/p&gt;

&lt;h3&gt;2. Don&#8217;t be afraid of targeting a narrow niche&lt;/h3&gt;

&lt;p&gt;Niches have numerous advantages. There&#8217;s less competition in niches, which means that your marketing dollars will go further to get you new customers. It&#8217;ll be easier to target likely buyers since there are probably already channels (blogs, magazines, trade shows) targeting that niche, that you can make use of.&lt;/p&gt;

&lt;p&gt;Niches also tend to be very badly served in today&#8217;s world. If you look into almost any niche you will find a plethora of awful products that are just begging to be replaced by something better suited. Being able to build great products cheaply is a fairly recent development, and most pre-existing businesses have had to make do with duct-taped, poorly conceived solutions that are begging to be replaced. &lt;strong&gt;The smaller the niche, the lower the bar to success.&lt;/strong&gt;&lt;/p&gt;

&lt;h3&gt;3. Solve a real problem that costs money&lt;/h3&gt;

&lt;p&gt;As &lt;a href="http://www.loudthinking.com/"&gt;DHH&lt;/a&gt; pointed out, the way to realistic profitability is not through gathering an outrageous number of eyeballs, but through creating a product that people are willing to pay for. The easiest way to get someone to loosen their purse strings is to &lt;strong&gt;convince them that using your product will pay for itself&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;This can be either by enabling them to do something new to earn money or by saving them time and effort (and hence money).&lt;/p&gt;

&lt;p style="float: right"&gt;&lt;img src="/files/2008/05/ape_man_evolution.png" alt="Evolution" /&gt;&lt;/p&gt;

&lt;h2&gt;How to build it&lt;/h2&gt;

&lt;h3&gt;4. Test the market with a working prototype as soon as possible&lt;/h3&gt;

&lt;p&gt;To win in this game, you need to build a great product. The problem is, no one on your team can tell you what the best product is &#8212; only your users can do that. You need a vision to get started on a product, but that vision is critically flawed in ways that you can&#8217;t see. User feedback is the most powerful force to point out those flaws, and until you have users (whether free or paying), you cannot use that force.&lt;/p&gt;

&lt;p&gt;For this reason, it is important that you release something, anything, as embryonic as it might be, to people who can start to use it and let you know what you&#8217;re doing wrong. &lt;strong&gt;Listen to your users&lt;/strong&gt; &#8212; and, to do this, &lt;strong&gt;give them a chance to tell you&lt;/strong&gt;.&lt;/p&gt;

&lt;h3&gt;5. Develop iteratively&lt;/h3&gt;

&lt;p&gt;Your product is ambitious. It will solve many great problems for your users. However, if your product never gets finished, it will solve nothing. Be ambitious in your dreams, but conservative if your immediate goals. Aim for the result of each iteration to be useful in and of itself, but &lt;strong&gt;keep each iteration as tiny as possible&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;Developing something small does not mean giving up your dreams, only delaying them. Cut every feature and every part of a feature that you can cut, but keep it on a list to work on later. If there is any way you can do it later, do so. Often, features that you thought were essential turn out to be unimportant when you have more user feedback.&lt;/p&gt;

&lt;h3&gt;6. Get things right, and be decisive in correcting the wrongs&lt;/h3&gt;

&lt;p&gt;As your product takes off (if it does), you will have less and less time to make up for earlier mistakes. As users pile on, it will become more and more difficult to make big, drastic changes. However you make your bed, that&#8217;s how you&#8217;ll sleep. As much as possible, take &lt;a href="http://www.inter-sections.net/2008/01/22/fundamental-mistakes/"&gt;hard decisions&lt;/a&gt; early rather than letting problems fester. &lt;strong&gt;Don&#8217;t delay necessary change just because you&#8217;re already committed into a different direction&lt;/strong&gt;.&lt;/p&gt;

&lt;h3&gt;7. Don&#8217;t spend the time correcting until you know what you&#8217;re aiming for&lt;/h3&gt;

&lt;p&gt;At the same time, it&#8217;s easy to end up spending all your time refactoring the codebase every time a new feature is brought in. Refactorings must be done to maintain development speed and build a scalable, clean product. However, a refactoring effort should consist of two parts: 1) figuring out what to refactor to, 2) doing it. The first part can take weeks, the second part is often a mere few days long. The first part should never be an excuse to stop work completely.&lt;/p&gt;

&lt;p&gt;This applies to design changes too. If you realise that you need to change the direction of the product significantly, &lt;strong&gt;figure out your new goals for before implementing the change&lt;/strong&gt;.&lt;/p&gt;

&lt;h3&gt;8. Don&#8217;t let your programmers design the user interface&lt;/h3&gt;

&lt;p&gt;I&#8217;m a programmer, among other things. Like many in this profession. I suck at designing UIs (though sometimes I believe I don&#8217;t). When you let programming-focused people like me build your user interface, you will get &lt;a href="http://www.codinghorror.com/blog/archives/000734.html"&gt;things like this&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;Some people are naturally gifted at user interface design. They feel physically sick about adding a button that clutters the interface or messes up the user&#8217;s workflow. &lt;strong&gt;Make sure you have a gifted UI designer on your team&lt;/strong&gt; (whether or not he or she doubles up as a different role &#8212; including programmer). It will make a world of difference when you get your first users &#8212; the difference between a lukewarm response and &#8220;Wow, it&#8217;s great! I love it!&#8221;&lt;/p&gt;

&lt;p style="float: right"&gt;&lt;img src='/files/2008/05/virtuoso.png' alt='Virtuoso Violinist' /&gt;&lt;/p&gt;

&lt;h2&gt;Who to build it with&lt;/h2&gt;

&lt;h3&gt;9. Make sure every member of the development team is passionate about the product&lt;/h3&gt;

&lt;p&gt;Your development team is to your product like parents are to a child. If they do not care about your product, it might turn out well anyway &#8212; but the overwhelming likelihood is it won&#8217;t. Anyone who&#8217;s not passionate about building your product should not be involved in building your product.&lt;/p&gt;

&lt;p&gt;For this reason, it is very unlikely that outsourcing your product development will be successful. &lt;strong&gt;Build your product in-house, and make sure the team is fully bought into the concept and committed to make it a success&lt;/strong&gt;. It is better to give up 50% of your equity for a great product team than to give up 5% for a poor product team. 95% of nothing is still nothing.&lt;/p&gt;

&lt;p&gt;In yesterday&#8217;s world, this was very hard to achieve, since even a relatively simple web application required a fairly large team to implement, and the larger the team, the harder it is to remain passionate. With &lt;a href="http://merbivore.com/"&gt;today&#8217;s&lt;/a&gt; &lt;a href="http://rubyonrails.org/"&gt;web&lt;/a&gt; &lt;a href="http://www.djangoproject.com/"&gt;development&lt;/a&gt; &lt;a href="http://pylonshq.com/"&gt;technologies&lt;/a&gt;, it is possible for a team of 2 or 3 to build an entire business within 3-6 months, but those 2 to 3 must be passionate and dedicated.&lt;/p&gt;

&lt;p&gt;It is very hard to make up for your team&#8217;s lack of passion through your own passion.&lt;/p&gt;

&lt;h3&gt;10. Be sickeningly elitist about your development team and sickeningly inclusive about your users&lt;/h3&gt;

&lt;p&gt;No one should be considered too stupid to use your product. For each person who you know had trouble using your product, there will be many more who had the same trouble but never told you. It&#8217;s never the user&#8217;s fault, &lt;strong&gt;it&#8217;s always your product&#8217;s fault for not being clear and intuitive enough&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;At the same time, your development team needs to be the best. You cannot create greatness out of mediocrity. These days, elitism is regarded almost as a flaw. Actually, it is the only way to greatness. &lt;strong&gt;If you want to create the best product, you need the best people&lt;/strong&gt;.&lt;/p&gt;

&lt;h3&gt;11. The best hiring strategy is to hire no one&lt;/h3&gt;

&lt;p&gt;Hiring employees is a nightmare. There are a lot of legalities to be considered, and it is a lengthy, time-consuming, and expensive process. Fortunately, you don&#8217;t need to hire employees. &lt;strong&gt;You need to recruit a development team to work with you, not for you&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;Your development team is like the heart and lungs and brain of your business. They should be as committed and passionate as you are. For this to happen, you need to treat them as equals, not as subordinates.&lt;/p&gt;

&lt;p&gt;You don&#8217;t need job adverts, you don&#8217;t need resumes, and you don&#8217;t need contract negotiations. What you need is to network in the &lt;a href="http://lrug.org/"&gt;right&lt;/a&gt; &lt;a href="http://www.flexusergroup.org/"&gt;communities&lt;/a&gt;, whether online or offline, to &lt;a href="http://www.inter-sections.net/2007/11/13/how-to-recognise-a-good-programmer/"&gt;recognise the people you need&lt;/a&gt;, and to bring them in not as employees but as partners in your vision.&lt;/p&gt;

&lt;h3&gt;12. Include at least one target user on the development team&lt;/h3&gt;

&lt;p&gt;By development team, I mean the team involved in the day-to-day or week-to-week iteration meetings. If you fail to do this, it will cost you a lot to readjust when a real user finally approaches your application and, inevitably, finds it lacking. If you&#8217;re a small startup on a tight budget, this extra cost can kill you. &lt;strong&gt;Survival is worth giving up equity to get a target user on your development team&lt;/strong&gt;.&lt;/p&gt;

&lt;h3&gt;13. Ensure everyone on your development team understands the problem they&#8217;re solving&lt;/h3&gt;

&lt;p&gt;Immerse your development team in the users&#8217; environment for a short period of time and let them see for themselves just how bad the current systems and processes are. Presumably, you have some contacts who work in the niche that you are targeting (if you don&#8217;t, then it&#8217;s probably not the right niche for you). Convince them to let one or more of your development team sit in their office and experience the pain points for themselves.&lt;/p&gt;

&lt;p&gt;This is the opposite of embedding an end-user in the development team. &lt;strong&gt;Embed your development team into the end-users&#8217; environment&lt;/strong&gt; &#8212; at least for a time.&lt;/p&gt;

&lt;h3&gt;Conclusion and Bonus Tip: Break any and all of these rules rather than do something stupid&lt;/h3&gt;

&lt;p&gt;Creating a new, successful product is like writing a book, creating a movie, or raising a child. It&#8217;s a fiendishly complicated task that requires great adaptability and creativity. Rules can only get you so far. No amount of advice can guarantee you success. Sometimes, the rules fail, and you need to adapt to those situations and do what needs to be done, even if it flies in the face of accepted wisdom. &lt;strong&gt;For every rule of product development, there is a dozen examples of teams which did it differently and still succeeded&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;Good luck!&lt;/p&gt;

&lt;p&gt;As ever, please do share your thoughts and additional tips in the comments below, or on your own blog (I have trackbacks enabled).&lt;/p&gt;</description>
      <pubDate>Wed, 07 May 2008 14:27:00 +0000</pubDate>
      <guid isPermaLink="false">urn:uuid:b4766298-6355-4a1a-b060-8397c41ad3cc</guid>
      <comments>http://inter-sections.net/2008/05/07/13-tips-for-creating-a-successful-new-online-product#comments</comments>
      <category>Business</category>
      <category>Technology</category>
      <trackback:ping>http://inter-sections.net/trackbacks?article_id=13-tips-for-creating-a-successful-new-online-product&amp;day=07&amp;month=05&amp;year=2008</trackback:ping>
      <link>http://inter-sections.net/2008/05/07/13-tips-for-creating-a-successful-new-online-product</link>
    </item>
    <item>
      <title>False Endpoints and the Pareto Principle</title>
      <description>&lt;p&gt;In &lt;a href="http://mssv.net/2008/03/04/false-endpoints/"&gt;this article&lt;/a&gt;, Adrian Hon, picks up on the idea (originally from Gregory Bateson, I believe) that time pressure creates what Bateson calls false endpoints, that reduce the quality of the final solution. He also proposes that the development process in creative fields should be altered to encourage &amp;#8220;play&amp;#8221; as a way of generating solutions, even as part of a business.&lt;/p&gt;

&lt;p&gt;I believe this is misleading, because it&amp;#8217;s partially correct. Time pressure &lt;em&gt;does&lt;/em&gt; cause us to make compromises, but those are not necessarily to the detriment of the overall solution, particularly if one takes a long-term view, or if one considers just how unknowable a concept the &amp;#8220;best&amp;#8221; solution is.&lt;/p&gt;

&lt;h3&gt;Diminishing Returns&lt;/h3&gt;

&lt;p&gt;So let&amp;#8217;s examine this step by step. First, let&amp;#8217;s look at the idea that the compromise solution of a &amp;#8220;false endpoint&amp;#8221; won&amp;#8217;t be as good as the perfect solution of a &amp;#8220;play&amp;#8221; result. In pragmatic terms, what this means is that by spending more time on the solution (an unknown amount of time), some improvement on the solution will be obtained. So basically, you spend more and you get more. Then the question is, are you getting your money&amp;#8217;s worth with the extra time you spend on a solution?&lt;/p&gt;

&lt;p&gt;The pareto principle hints that 80% of the results will likely come out of 20% of the work. If the 20% was done first, and generated the 80% of results, then it is likely that spending another 4 times the initial time is not worth doing for a 20% improvement on the results (no matter what perfectionists may say), unless you have unlimited resources (but most of us don&amp;#8217;t). Since we all prefer to deliver better results, I&amp;#8217;d propose that time pressure forces us to become better, over time, at recognising what the useful 20% are and at discarding the rest. In a pressure-free environment, however, there is no incentive to focus on what really counts.&lt;/p&gt;

&lt;p&gt;In the long term, what you might look at is the &amp;#8220;value&amp;#8221; that&amp;#8217;s been added by all this work. Again, here, the pareto principle holds, and if you constantly, efficiently do 20% of the work in exchange for a &amp;#8220;good enough&amp;#8221; 80% result, once again, you win, since you&amp;#8217;ll be able to produce 5 times as many products as you would otherwise. So adding time pressure for each task results in an increased number of &amp;#8220;shots&amp;#8221; at the solution - you could design 5 products targeting the same market, for instance, or 5 products targetting different markets (which would then perhaps have a better chance of being lucky and hitting a sweet spot).&lt;/p&gt;

&lt;h3&gt;The Unknowable Marketplace&lt;/h3&gt;

&lt;p&gt;Why would you want to do that, though? Surely, you know what the best market is, and what the best solution is going to look like, and how successful it will be&amp;#8230; don&amp;#8217;t you? Well, no. Business is not only a world of limited resources, it is also one of great uncertainties. Before you put a product in front of users, you don&amp;#8217;t know what they need, and so you can&amp;#8217;t even begin to aim for perfection (via play or otherwise). Instead, the best result is derived by getting the &amp;#8220;simplest thing that works&amp;#8221; out there and seeing how it fails, and then improving on it incrementally. Chances are, until you&amp;#8217;ve got your product out there, you won&amp;#8217;t be able to even recognise the best solution if it bashes down your door and yells at you.&lt;/p&gt;

&lt;p&gt;There&amp;#8217;s one last counter-argument here. What about creative activities? What about advertising? Writing? Won&amp;#8217;t they benefit from a &amp;#8220;play&amp;#8221; approach and the removal of deadlines to allow doodling away until the best solution is reached?&lt;/p&gt;

&lt;p&gt;For this, I turn to reality. My father used to be a journalist, and once of the things he told me is that as a journalist, you are required to produce creative output to an extremely tight deadline. I have friends in advertising who tell me the same. Many writers work by setting themselves a daily target. It&amp;#8217;s perhaps not very surprising, but what works in a more engineering type of business (e.g. software development) also applies to softer, more traditionally creative activities.&lt;/p&gt;

&lt;h3&gt;Conclusion&lt;/h3&gt;

&lt;p&gt;In conclusion, what I believe it comes down to is this: deadlines focus the mind, enforce prioritisation, and ensure that some form of value is delivered. A pressure-free environment may or may not produce a great result by the end. A pressurised environment will produce a good enough result, and leave you with spare time to improve on it.&lt;/p&gt;

&lt;p&gt;If you have any thoughts or comments, please feel free to post them up below or on your blog (I have trackbacks enabled).&lt;/p&gt;</description>
      <pubDate>Fri, 21 Mar 2008 09:54:00 +0000</pubDate>
      <guid isPermaLink="false">urn:uuid:ba1edb3a-4f41-4db0-b8da-d8f9bafa10ca</guid>
      <comments>http://inter-sections.net/2008/03/21/false-endpoints-and-the-pareto-principle#comments</comments>
      <category>Life</category>
      <category>Business</category>
      <category>Technology</category>
      <trackback:ping>http://inter-sections.net/trackbacks?article_id=false-endpoints-and-the-pareto-principle&amp;day=21&amp;month=03&amp;year=2008</trackback:ping>
      <link>http://inter-sections.net/2008/03/21/false-endpoints-and-the-pareto-principle</link>
    </item>
    <item>
      <title>How tough is your project?</title>
      <description>&lt;p&gt;You&#8217;re a business guy, a manager, or you&#8217;re a developer. You work on a startup, or within a large corporation. You&#8217;re about to start on your company&#8217;s flagship product, or you&#8217;ve been asked to take project X forward. Or you could be anywhere in between those extremes. One question should be worrying you as you take on the noble task of delivering something viable: how tough is your project, and why?&lt;/p&gt;

&lt;p&gt;This matters a lot, because if your project is tough, you&#8217;re going to need to figure that out quickly and address the things that can go wrong with it. And if your project is really tough, you&#8217;ll need to find &lt;a href="http://www.inter-sections.net/2007/11/13/how-to-recognise-a-good-programmer/"&gt;great developers&lt;/a&gt; to work on it.&lt;/p&gt;

&lt;p&gt;So how do you figure out how tough your project is? There&#8217;s a number of ways. You can ask people, for a start. In aggregate, qualified people who understand the project will have a pretty decent idea of how tough it is. But sometimes you can&#8217;t ask, either because there&#8217;s no one to ask, or because the politics of the place dictate the wrong answer. What you can use in those cases is a list of criteria, of checkboxes that mean your project is tougher if you tick more of them.&lt;/p&gt;

&lt;p&gt;Before we start with this list, a quick summary of where they come from. Projects are tough when they have a high risk of screwing up. Risk comes in two major flavours: technical risk and market risk. Technical risk is linked to whether you&#8217;re capable of building what you&#8217;re building. Market risk is linked to whether you are actually building the right thing. It&#8217;s a useful dichotomy in IT and in many other places - to succeed, you&#8217;ve got to do it right, and you&#8217;ve also got to do the right thing.
Now, you can break these two risks down in all sorts of interesting ways, but what I&#8217;ve tried to do here is to produce a list that will be useful to you no matter where you sit on the scale from hardcore bit-pusher to networker extraordinaire - whether you&#8217;re a techie or a business guy, basically. Here goes.&lt;/p&gt;

&lt;h3&gt;1. Technical Risk: number of features&lt;/h3&gt;

&lt;p style="float: right"&gt;&lt;img src="/files/2008/02/number_of_features.jpg" alt="Many, many features" /&gt;&lt;/p&gt;

&lt;p&gt;Can you summarise what your application will do in a single sentence? Most likely you can (if you really can&amp;#8217;t, you might want to rethink your application - it sounds like it&amp;#8217;s really two or more applications). That sentence gives you your core application feature. But it doesn&#8217;t give a complete rendering of your vision. In order to build something real, you&#8217;re going to have to break it down into smaller, more concrete steps. You can drill down into these (your application requirements) as deeply as you want, but some sort of middle ground is where you should be aiming. You want that specification to take about half a page to a page, no more and no less.&lt;/p&gt;

&lt;p&gt;At this level of detail, you&#8217;ll have a decent feature list, that you can put in bullet points. Here&#8217;s the clincher: every time you add one of these bullet points, you &lt;em&gt;greatly&lt;/em&gt; increase the difficulty of the project. That&#8217;s because no feature stands alone. They all interact with each other, and those interactions increase the complexity, and with it the risk that something will go very wrong. At the extreme, if you add a feature that interacts with all the existing features, you&#8217;ve just doubled your technical risk.
On the good side, this works both ways. The more features you can cut, the easier your project will be to deliver. One of the beauties of software (particularly online applications) is you can add features later, after &lt;a href="http://www.randsinrepose.com/archives/2006/04/20/10.html"&gt;version 1.0&lt;/a&gt; has shipped and started either making some money or at least getting solid user feedback. Do so wherever you can. If your software is still worth shipping without feature X, be merciless and cut it out.&lt;/p&gt;

&lt;p&gt;If after doing this exercise you feel that your project still has a lot of features, your project may be tough. If it meets some of the other points too, it probably is.&lt;/p&gt;

&lt;h3&gt;2. Market risk: user picky-ness&lt;/h3&gt;

&lt;p style="float: right"&gt;&lt;img src="/files/2008/02/user_pickyness.jpg" alt="It just doesn&#8217;t taste right" /&gt;&lt;/p&gt;

&lt;p&gt;The more picky your users are, the higher the chance they&#8217;ll slaughter you when you take your product live. This picky-ness depends both on the type of users and on the number of users. If you&#8217;re aiming for millions of users, they qualify as picky, always. If you&#8217;re aiming for a dozen hedge fund managers, they are picky. If you&#8217;re aiming for a few thousand middle office users in a bank, they&#8217;re probably not that picky (though you may be led to think otherwise after yet another interminable requirements gathering meeting).&lt;/p&gt;

&lt;p&gt;You can&#8217;t do much to cut this risk down on the outset, but it&#8217;s good to be aware of it, particularly since it&#8217;s often overlooked. Technical people, particularly, tend to focus on technical risk, and assume that if the functionality is easy to implement, the product&#8217;s a piece of cake. It&#8217;s not. Creating something millions of people will be willing to use takes a touch of genius, just like creating a brilliant piece of code.&lt;/p&gt;

&lt;p&gt;What you can do once the project is rolling is put it in front of users as soon as you possibly can. If this is a major risk for your project, you absolutely have to use an iterative (probably agile) development process and get some users involved. If you can get them involved before it even starts, great. If you&#8217;re going for something very specialised, you might even consider giving some equity in exchange for a few of your target users on your board of directors.&lt;/p&gt;

&lt;h3&gt;3. Technical risk: complexity of features&lt;/h3&gt;

&lt;p style="float: right"&gt;&lt;img src="/files/2008/02/complexity.jpg" alt="Castles take time to build&#8230;" /&gt;&lt;/p&gt;

&lt;p&gt;Number of features is a big factor, but that doesn&#8217;t cover how complex they are. You might build a GTD todo list that has a zillion features, but none of them are really complex. Build a &#8220;straightforward&#8221; search engine with only a handful of features, though, and complexity goes sky-high.&lt;/p&gt;

&lt;p&gt;If you&#8217;re a business guy, you&#8217;ll need a trusted techie for this. Don&#8217;t take it badly - it&#8217;s one of your qualities, to see things that are really hard or even impossible and try your best to shove them into existence (and then sell them!). But you need someone who &lt;em&gt;knows&lt;/em&gt; what&#8217;s possible, and who can tell it to you straight.&lt;/p&gt;

&lt;p&gt;If you have a really complex feature in your shopping basket, what you should do to reduce risk is build it first. Build it before you build anything else at all, because this feature is where a lot of the technical risk sits, and the sooner you&#8217;ve resolved it, the sooner you can move on and relax. Of course, if you have one (or more) of these features in your project, you earn yourself a tick on this criteria on the &amp;#8220;tough project&amp;#8221; checklist.&lt;/p&gt;

&lt;h3&gt;4. Market risk: strength of the competition&lt;/h3&gt;

&lt;p style="float: right"&gt;&lt;img src="/files/2008/02/competition_strength.jpg" alt="Better not fight this one&#8230;" /&gt;&lt;/p&gt;

&lt;p&gt;This is not about whether there are competitors at all. Having no competitors doesn&#8217;t make things easier - in fact, it makes things much harder for the marketing team, because they have to create a market by convincing people that they need this new thing, and making them understand how it fits into their existing needs. If you&#8217;ve got no competitors, your project is probably tough. Tick this box.&lt;/p&gt;

&lt;p&gt;There are many existing markets that could use some improvement, though. The number of competitors doesn&#8217;t matter so much here, it&#8217;s the quality. Going head-to-head with Google or Apple in any of their core market, for instance, instantly earns you a tick in this box. Evaluate the competition (you did do a competitor analysis before getting started, right?). Chances are, most of them are just also-rans. Those shouldn&#8217;t bother you too much. What you&#8217;re looking for is, would any of them deserve to be called a Tiger, or a Shark, or some other kind of vicious animal. If yes, and if your stated goal is to fight these guys, your project deserves a tick in this box.&lt;/p&gt;

&lt;p&gt;You can&#8217;t do much (.. legally) to reduce this risk. What you should do is be very aware of it and make sure your product does something radically better than the top competition. And keep monitoring them while your project is evolving, just in case they do something that changes the game. If they do, you need to act quickly to ensure that you don&#8217;t come out with an also-ran.&lt;/p&gt;

&lt;h3&gt;5. Technical risk: integration risk&lt;/h3&gt;

&lt;p style="float: right"&gt;&lt;img src="/files/2008/02/integration_risk.jpg" alt="Not as easy as it sounds" /&gt;&lt;/p&gt;

&lt;p&gt;A lot of the largest IT projects have been failures. The stage where they most commonly failed was integration. After building a bunch of components separately, people found, at the last, under-estimated minute, that they didn&#8217;t fit together. You should be prepared for that both within your project and outside of it.&lt;/p&gt;

&lt;p&gt;Within your project, unless you&#8217;re building the next air traffic control system, that&#8217;s probably not a major issue, and you should deal with it very simply by forcing the project to deliver an integrated product throughout the development (using agile processes once again helps here). If it really is an issue (according to yourself or your technical guys), perhaps your feature list could use a bit of initial trimming (see point 1).&lt;/p&gt;

&lt;p&gt;Outside of it, though, this is still important. The more external systems your software needs to integrate with, the greater the risk. By external systems I don&#8217;t mean TCP/IP or &#8220;the internet&#8221;. I mean things like: email processing, linking up to an existing legacy system, SMS integration, phone line integration, streaming technology. Each of these chunks of existing technology will cause you massive headaches, and you should consider every one of them to be as dangerous as a &#8220;complex&#8221; piece of functionality (as discussed in 3). The solution there is the same: cut them out if you can, and if you can&amp;#8217;t, build them first.&lt;/p&gt;

&lt;h3&gt;Conclusion&lt;/h3&gt;

&lt;p&gt;These five points should help you gain a better idea of how tough your project is. If you&#8217;re building a sprawling application which does ten thousand things, is aimed at almost everyone, retrieves and reprocesses data from thirty external systems and has strong, well established competitors (the My Google homepage would qualify), your project is tough.&lt;/p&gt;

&lt;p&gt;On the other hand, if you&#8217;re building an application which has just one feature (e.g. generate random passwords), will be imposed on your five thousand internal corporate users and will require use of cut and paste to work with existing apps, your project is not tough.&lt;/p&gt;

&lt;p&gt;In short:&lt;/p&gt;

&lt;pre&gt;Toughness = Risk = Technical Risk + Market Risk
        = (Number of Features x Complexity of Features x Integration Risk) +
           (User Picky-ness x Strength of Competition)&lt;/pre&gt;

&lt;p&gt;In a later article, I&#8217;ll examine, in a bit more detail, the link between project toughness and the kind of developers you want to hire. In the meantime, thanks for reading. If you have any comments, examples, or suggestions for other criteria, please post them below!&lt;/p&gt;</description>
      <pubDate>Mon, 11 Feb 2008 12:14:00 +0000</pubDate>
      <guid isPermaLink="false">urn:uuid:d685f59d-1720-4c4f-a5a6-7c47f9cbd271</guid>
      <comments>http://inter-sections.net/2008/02/11/how-tough-is-your-project#comments</comments>
      <category>Business</category>
      <category>Technology</category>
      <trackback:ping>http://inter-sections.net/trackbacks?article_id=how-tough-is-your-project&amp;day=11&amp;month=02&amp;year=2008</trackback:ping>
      <link>http://inter-sections.net/2008/02/11/how-tough-is-your-project</link>
    </item>
    <item>
      <title>Fundamental mistakes</title>
      <description>&lt;p&gt;When building something new, mistakes are unavoidable. To paraphrase the common saying, &amp;#8220;if you&amp;#8217;re not making any mistakes, you&amp;#8217;re not trying hard enough&amp;#8221;. There&amp;#8217;s another saying which says that the difference between a good carpenter and a bad carpenter is not that the good carpenter doesn&amp;#8217;t make any mistakes, but that he&amp;#8217;s better at turning them into masterstrokes. You can, and should, try to prevent mistakes from happening, but it&amp;#8217;s a fact of project life that things go wrong.&lt;/p&gt;

&lt;p&gt;Many books can be filled on the subject of how to deal with the huge variety of project mishaps. In this article, I&amp;#8217;ll focus on one specific type of mistake: the big, &lt;a href="http://nasredin.blogspot.com/2008/01/way.html"&gt;fundamental mistake&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;There are some mistakes which scare the living hell out of you when you find out about them. They&amp;#8217;re basic, they&amp;#8217;re fundamental. They&amp;#8217;ve got &amp;#8220;killer&amp;#8221; written all over them. Here are some examples:&lt;/p&gt;

&lt;ul&gt;
    &lt;li&gt;choosing the wrong platform or framework to develop your product&lt;/li&gt;
    &lt;li&gt;building on critically flawed code in the hope that it will improve over time (it won&amp;#8217;t)&lt;/li&gt;
    &lt;li&gt;missing or misunderstanding a major, crucial requirement&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;When you come face to face with one of these, the natural tendency is denial. You might first try to ignore it or downplay it. &amp;#8220;It&amp;#8217;s not that big a deal&amp;#8221;, &amp;#8220;we&amp;#8217;ll deal with it on the side&amp;#8221;, &amp;#8220;the world/plan still goes on&amp;#8221;, &amp;#8220;we can change it later&amp;#8221;.&lt;/p&gt;

&lt;p&gt;It takes a great deal of courage to say &amp;#8220;we&amp;#8217;ve made a fundamental mistake and we need to fix it right now&amp;#8221; when one of those issues crop up, particularly in blame-driven environments where the primary reaction to mistakes is to look for someone to blame.&lt;/p&gt;

&lt;p&gt;The reason why it needs to be fixed right now is that the really big damage from these issues continues to come &lt;em&gt;after&lt;/em&gt; they&amp;#8217;ve been raised. This is why you need to assess the damage and make the decision to fix it as soon as possible. Critical issues that are swept under the carpet grow bigger every day.&lt;/p&gt;

&lt;p&gt;Here are two examples to illustrate both possible outcomes.&lt;/p&gt;

&lt;h3&gt;The applet story&lt;/h3&gt;

&lt;p&gt;I once worked on a &lt;a href="http://struts.apache.org/"&gt;Struts&lt;/a&gt; application, in a bank. A major component of it was an applet. It was badly designed to begin with, being the product of a summer intern&amp;#8217;s prototyping efforts, yet it was considered to be &amp;#8220;80% finished&amp;#8221;. Since a whole summer of cheap labour had already gone into it, the consensus was that it just needed to be finished with a couple of week&amp;#8217;s work from a qualified senior engineer. So a senior software engineer was set to the task. Then a junior software engineer was thrown in. The applet grew, like a cancer. By the time the senior engineer &amp;#8220;fell ill&amp;#8221; and then quit, the applet had several hundred classes. By the time, a year later, the senior architect on the project finally found it politically acceptable to propose a complete rewrite of the applet, it had grown to over a thousand classes, and had swallowed over a man year of pure development effort (with even more QA and overhead time).&lt;/p&gt;

&lt;p&gt;What happened then? The whole thing was rewritten in under a month, and went from over a thousand classes to about twenty. It ran faster, was less buggy, and was clean and easy to maintain.&lt;/p&gt;

&lt;p&gt;Now, to be fair, the project manager didn&amp;#8217;t know that the applet was quite so bad when he took on the project. He also joined the project a couple of months after it started, so he was not in an ideal position to kill the rotten half the project immediately, particularly since he was an external consultant. Truth is, the entire project (and I was a part of it) was responsible. Yet even though everyone knew the applet was a black hole for time and resources, the solution to this critical problem was always pushed back to &amp;#8220;after the go-live&amp;#8221;, because it was not politically acceptable to admit we made that big a mistake.&lt;/p&gt;

&lt;p&gt;This is the kind of mistake a huge international banking corporation can absorb and not even notice it. What&amp;#8217;s a few hundred thousand pounds wasted here or there when your quarterly profits are about 9 billion dollars? If this happens to your startup, though, you&amp;#8217;re toast.&lt;/p&gt;

&lt;h3&gt;The Flex story&lt;/h3&gt;

&lt;p&gt;As a contrasting example, on another project (this one in a startup environment), we initially put in two solid weeks of very productive work building the application using &lt;a href="http://www.adobe.com/products/flex/"&gt;Flex&lt;/a&gt; and the popular &lt;a href="http://labs.adobe.com/wiki/index.php/Cairngorm"&gt;Cairngorm&lt;/a&gt; framework. In that time we followed the Agile mantras and delivered some great user-visible functionality. Everyone was quite excited about the pace of development. There were good feelings all around.&lt;/p&gt;

&lt;p&gt;Then, our Flex developer told me that he didn&amp;#8217;t feel Cairngorm was well suited for the kind of complex RIA we were building, and that he was going to work, &amp;#8220;on the side&amp;#8221;, on porting the functionality over to &lt;a href="http://puremvc.org/"&gt;PureMVC&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;When he casually pointed that out one day during an informal chat, alarm bells went off in my head. It would have been very easy to accept the proposal that we&amp;#8217;d be working on this on the side and continue onwards, building the application with Cairngorm until the PureMVC port gave its fruits. But it would have been the wrong choice.&lt;/p&gt;

&lt;p&gt;Instead, after discussing in earnest whether the limitations of Cairngorm really warranted such a major change of framework (they did), we put all the &amp;#8220;new functionality&amp;#8221; work on hold and did all the porting work right away. Result? It took us two weeks to finish the port (predictably, it took just as long as we&amp;#8217;d spent building the functionality the first time around). If we had waited any longer, it would have taken more time. If we had waited long enough, the switch would have become too costly and we would have had to stick it out with an inappropriate framework. This would have increased out long-term costs by making it significantly more difficult to make changes.&lt;/p&gt;

&lt;p&gt;This was a hard choice. It killed our momentum for two weeks, and in a different environment this may have been politically unacceptable, even so close to the beginning of the project. But it was the right choice, and making it quickly saved us time and money.&lt;/p&gt;

&lt;h3&gt;Conclusion&lt;/h3&gt;

&lt;p&gt;When you&amp;#8217;re faced with a big project mistake, deal with it now, even if it&amp;#8217;s going to cost you. Spending more time and effort going in the wrong direction is like throwing good money after bad. Don&amp;#8217;t &lt;a href="http://www.randsinrepose.com/archives/2002/06/17/the_big_qa_freak_out.html"&gt;freak out&lt;/a&gt;, stay calm and make rational, measured decisions - but don&amp;#8217;t assume that the mistake can be fixed more easily later. Instead, always assume that every day that you wait before acting to fix it will add another day to the cost of the fix itself.&lt;/p&gt;

&lt;p&gt;If, during the discussions, you find that the mistake is not really critical and that it &lt;em&gt;can&lt;/em&gt; be fixed later, go for it - but always ascertain that for yourself rather than assuming it.&lt;/p&gt;

&lt;p&gt;Thank you for reading. As always, any comments and contributions are most welcome.&lt;/p&gt;</description>
      <pubDate>Tue, 22 Jan 2008 11:59:00 +0000</pubDate>
      <guid isPermaLink="false">urn:uuid:1cee785b-74a0-4c1f-96f6-707214bf7535</guid>
      <comments>http://inter-sections.net/2008/01/22/fundamental-mistakes#comments</comments>
      <category>Business</category>
      <category>Technology</category>
      <trackback:ping>http://inter-sections.net/trackbacks?article_id=fundamental-mistakes&amp;day=22&amp;month=01&amp;year=2008</trackback:ping>
      <link>http://inter-sections.net/2008/01/22/fundamental-mistakes</link>
    </item>
    <item>
      <title>Rails sucks?</title>
      <description>&lt;p&gt;With astonishing regularity, articles or posts come out claiming that Rails sucks in some way or another. People complain that Rails &lt;a href="http://blog.dreamhost.com/2008/01/07/how-ruby-on-rails-could-be-much-better/"&gt;isn&amp;#8217;t as easy to deploy as PHP&lt;/a&gt;, that Rails &lt;a href="http://www.oreillynet.com/ruby/blog/2007/09/7_reasons_i_switched_back_to_p_1.html"&gt;just didn&amp;#8217;t do it for project XYZ&lt;/a&gt;. They range from the articulate and well thought out to the &lt;a href="http://cool.weasel.ro/2006/08/22/ruby-on-rails-sucks/"&gt;frankly inane and stupid&lt;/a&gt; (and wrong). Recently, there&amp;#8217;s also of course been the &lt;a href="http://www.zedshaw.com/rants/rails_is_a_ghetto.html"&gt;spectacular nuclear rant by Zed Shaw&lt;/a&gt;, which was more a rant against random elements of the community than against Rails, but was still presented as a rant against Rails.&lt;/p&gt;

&lt;p&gt;These anti-rails rants come in so regularly, and have been doing so for so long, that some people even bothered to write pre-emptive rant responses, like the &lt;a href="http://blog.codahale.com/2006/02/17/six-ground-rules-for-rails-sucks-articles/"&gt;Six ground rules for rails sucks articles&lt;/a&gt;, written all the way back in 2006. &lt;a href="http://www.rubyinside.com/"&gt;RubyInside&lt;/a&gt; even has a &lt;a href="http://www.rubyinside.com/category/troll-of-the-month/"&gt;Troll of the month&lt;/a&gt; category that will provide some fun reading.&lt;/p&gt;

&lt;p&gt;Perhaps this means that this article is redundant. Oh well. It does get tedious after a while, to read all these rants, and I felt like writing my response to them too.&lt;/p&gt;

&lt;h3&gt;Why people say Rails sucks&lt;/h3&gt;

&lt;p&gt;There&amp;#8217;s a large number of reasons why people come to the conclusion that Rails sucks. Here&amp;#8217;s a by-no-means-exhaustive list:&lt;/p&gt;

&lt;ul&gt;
    &lt;li&gt;It&amp;#8217;s too slow&lt;/li&gt;
    &lt;li&gt;It&amp;#8217;s not easy to deploy&lt;/li&gt;
    &lt;li&gt;It uses up a lot of RAM&lt;/li&gt;
    &lt;li&gt;It&amp;#8217;s not as easy as PHP&lt;/li&gt;
    &lt;li&gt;It&amp;#8217;s got weird syntax&lt;/li&gt;
    &lt;li&gt;The manual is too long&lt;/li&gt;
    &lt;li&gt;The manual is too short&lt;/li&gt;
    &lt;li&gt;The creator of Rails is arrogant and eccentric&lt;/li&gt;
    &lt;li&gt;It doesn&amp;#8217;t work with my specific project&lt;/li&gt;
    &lt;li&gt;It doesn&amp;#8217;t scale&lt;/li&gt;
    &lt;li&gt;It&amp;#8217;s got this obscure problem that no one can be bothered to fix&lt;/li&gt;
    &lt;li&gt;It&amp;#8217;s not thread-safe&lt;/li&gt;
    &lt;li&gt;etc&amp;#8230;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;What they all boil down to, in effect, is that some people get immensely irritated because Rails does not conform to their idea of perfection. They have some specific requirement that Rails doesn&amp;#8217;t support, and they post rants about how &amp;#8220;they&amp;#8221; (the rails core team) owes them to adapt Rails to their requirements, or how &amp;#8220;rails sucks&amp;#8221; because it doesn&amp;#8217;t do exactly what they need out of the box.&lt;/p&gt;

&lt;p&gt;I&amp;#8217;m sure you can see the obvious shortcoming of this approach, but let&amp;#8217;s break it down, because there&amp;#8217;s several aspects to this complaint which make it very, very wrong.&lt;/p&gt;

&lt;h3&gt;1. Rails owes you nothing&lt;/h3&gt;

&lt;p&gt;Rails is entirely free. You can run it on any OS you like. You can run it with a free DB or a paying one. You can rip out the bits you like and discard the rest. You can even make changes to it if you want (and with a plugin like &lt;a href="http://piston.rubyforge.org/usage.html"&gt;Piston&lt;/a&gt;, you can keep your changes tracked even as Rails evolves and you update it to the latest edge revision).&lt;/p&gt;

&lt;p&gt;No one in the Rails world owes you a thing. In fact, if you&amp;#8217;re using Rails, you have a big debt to the Rails world. Most importantly, all of us using (or trying to use) Rails owe &lt;a href="http://www.loudthinking.com/"&gt;DHH&lt;/a&gt; a big one for being so kind as to share his framework with the rest of the world. Even if you decide that Rails is not for you, you still have to recognise the influence that Rails has had on web frameworks everywhere - and it&amp;#8217;s a very positive influence.&lt;/p&gt;

&lt;p&gt;The Rails core team also doesn&amp;#8217;t owe you anything. They are all volunteers who work on it for free. You owe them.&lt;/p&gt;

&lt;p&gt;So stop thinking that Rails owes you something. Rails owes you nothing. You owe Rails.&lt;/p&gt;

&lt;h3&gt;2. Rails isn&amp;#8217;t perfect&lt;/h3&gt;

&lt;p&gt;There&amp;#8217;s no such thing as a perfect web development framework. All of them (including Rails) suck in one way or another, once you use them for real stuff. There&amp;#8217;s no such thing as a perfect language, either. All of them (including Ruby, Lisp, Python, haXe, Erlang, Lua, etc.) suck in some way. In fact, there&amp;#8217;s no such thing as a perfect anything - whether in the world of computers or outside of it. Everything is imperfect. If you want perfect, then die. If the Christians are right, you might go to heaven and witness perfection. I wouldn&amp;#8217;t bet my life on it though.&lt;/p&gt;

&lt;p&gt;There&amp;#8217;s a certain maturity in realising this, and it seems that most of the anti-Rails ranters lack that maturity. There&amp;#8217;s a point in life where it suddenly dawns on you that no choice is ever perfect, no matter how much you may try or how perfect it may look before you put it in practice, and that you have to satisfy yourself with the best choice, rather than with illusory perfection. For those on whom this never dawns, everything is perpetually dissatisfying.&lt;/p&gt;

&lt;p&gt;I&amp;#8217;m not saying you should settle for crap. No, strive for the best that you can. Create something even better if you can and have the inclination. But accept that everything has limitations and shortcomings, and that a good choice is one which balances the trade-offs between the available choices to maximise whatever it is you wish to maximise. In some cases, that might mean accepting slower out-of-the-box performance in exchange for quicker development and better maintainability.&lt;/p&gt;

&lt;p&gt;Back to the Rails argument, this becomes especially clear once you&amp;#8217;re put in the position to decide which language and framework to use for your project - for instance when you are starting a business around that application and it really matters. With that experience, there is a very clear learning point: each framework is imperfect, but your responsibility is to choose the one that makes most sense for your specific project. Once you&amp;#8217;ve made your choice, you can even change it, sometimes - but do so with the knowledge that every framework you try will have its own shortcomings.&lt;/p&gt;

&lt;p&gt;But, at the end of the day, there&amp;#8217;s no point in complaining that Rails isn&amp;#8217;t perfect. Yes, it&amp;#8217;s not. If that&amp;#8217;s news to you, you&amp;#8217;ve got a bit of growing up to do.&lt;/p&gt;

&lt;h3&gt;3. Rails isn&amp;#8217;t suited for all applications&lt;/h3&gt;

&lt;p&gt;There are many situations where Rails isn&amp;#8217;t the right choice. If you&amp;#8217;re writing a high volume transaction processing system for a bank, don&amp;#8217;t write it in Rails. If you&amp;#8217;re writing a 3-page web presence for a hairdresser, don&amp;#8217;t write it in Rails. Rails is extremely good for a certain class of applications (medium to large web applications), in a certain set of circumstances (particularly well suited when getting something out soon is of paramount importance).&lt;/p&gt;

&lt;p&gt;If Rails isn&amp;#8217;t right for your project, that doesn&amp;#8217;t mean that Rails sucks. It just means that your project isn&amp;#8217;t right for Rails.&lt;/p&gt;

&lt;h3&gt;4. Rails isn&amp;#8217;t suited for all people&lt;/h3&gt;

&lt;p&gt;Rails is a smart and opinionated framework. It&amp;#8217;s built to allow smart people to leverage their skills to be many times more productive than many other web development frameworks. And it does so - for me, and for many people I know. It allows these smart people to be very productive, create clear, maintainable code, and have fun while doing it.&lt;/p&gt;

&lt;p&gt;This doesn&amp;#8217;t mean that you can do it too. And you know what, those people don&amp;#8217;t care whether you can do it too. They&amp;#8217;ll help you if you ask for help (I know several Rails core developers and they are without exception friendly, polite, helpful people - and that&amp;#8217;s not even counting the rest of the Rails community, who are also very helpful). But if you decide Rails is not for you, no one will shed a tear.&lt;/p&gt;

&lt;p&gt;This, to me, is actually a positive feature of Rails. &lt;strike&gt;Because you have to be smart to write good Rails code, it&amp;#8217;s easy to tell smart developers from not-so-smart ones, because the latter just won&amp;#8217;t be able to cope with Rails, whereas the former will often take to it like a fish to water.&lt;/strike&gt; (see comments) - It&amp;#8217;s much harder to fake being a good Rails developer than it is to fake being a good PHP developer.&lt;/p&gt;

&lt;p&gt;Not &amp;#8220;getting&amp;#8221; Rails doesn&amp;#8217;t mean you&amp;#8217;re stupid, mind you. Some people don&amp;#8217;t get Rails simply because they think differently. Others say that Rails is cool, but they prefer something else (e.g. Django or some Lisp or other). That&amp;#8217;s fine. If you don&amp;#8217;t like to think in the Rails way, no one&amp;#8217;s forcing you to use Rails.&lt;/p&gt;

&lt;p&gt;Rails may not be for you, for any number of reasons. That doesn&amp;#8217;t mean Rails sucks.&lt;/p&gt;

&lt;h3&gt;5. Rails is extremely flexible&lt;/h3&gt;

&lt;p&gt;The thing that really gets me about people who rant about how Rails doesn&amp;#8217;t do what they need is that Rails is by far the most versatile framework I&amp;#8217;ve worked with. When Jakarta Struts didn&amp;#8217;t do what I wanted in the Java world, I had to make wild and ugly contortions to get it to work - or even turn around and tell my boss &amp;#8220;Sorry, we can&amp;#8217;t do this because xyz&amp;#8221;.&lt;/p&gt;

&lt;p&gt;Every time I have a &amp;#8220;different&amp;#8221; requirement, I am astonished to find that either there&amp;#8217;s already a way designed into Rails that allows me to do it easily, or it&amp;#8217;s a neat, well contained three-line hack to get it working. I&amp;#8217;ve never seen this in any other framework (including the ones I wrote myself). Everywhere else, there always comes a point where you have to turn around to the client and say &amp;#8220;it can&amp;#8217;t be done&amp;#8221;. That just never seems to happen when developing web applications with Rails.&lt;/p&gt;

&lt;p&gt;This applies to all enhancements, from performance improvements to functional extensions. If your ActiveRecord query is too slow and causing a bottleneck, you can bypass it with some inline SQL or even memcache it. If you need to get Rails to produce a custom binary output, &lt;a href="http://rubyamf.org/"&gt;you can&lt;/a&gt;. If you need custom table names that don&amp;#8217;t fit the convention, you can. If you need to override the dynamic finders to do things slightly differently, you can. In most other frameworks, you can&amp;#8217;t do anything unless it&amp;#8217;s been thought of. Rails is the most open and versatile web development framework I&amp;#8217;ve ever worked with.&lt;/p&gt;

&lt;p&gt;That&amp;#8217;s what really gets me when people say things like &amp;#8220;Rails doesn&amp;#8217;t scale&amp;#8221;. First of all, that statement is based on outdated information, and secondly, Rails code, when written properly, is so clean and easy to work with that locating and optimising bottlenecks is a breeze - much more so than in many other frameworks.&lt;/p&gt;

&lt;p&gt;So if Rails doesn&amp;#8217;t yet do what you need, don&amp;#8217;t complain that it sucks. Do write a bit of code to make it do what you need.&lt;/p&gt;

&lt;h3&gt;In conclusion&lt;/h3&gt;

&lt;p&gt;There are many valid reasons to use something other than Rails, but do yourself a favour. If you decide Rails isn&amp;#8217;t for you, don&amp;#8217;t post a rant about how &amp;#8220;it sucks&amp;#8221;. You&amp;#8217;re only making yourself look dumb by doing so, and while it may be amusing for the rest of us, it&amp;#8217;s really not doing yourself any favours.&lt;/p&gt;

&lt;p&gt;Feel free to post comments below to tell me that actually, Rails sucks for such and such reason.&lt;/p&gt;</description>
      <pubDate>Thu, 10 Jan 2008 10:33:00 +0000</pubDate>
      <guid isPermaLink="false">urn:uuid:fb063de9-7342-405d-b445-a8cb7a1745ac</guid>
      <comments>http://inter-sections.net/2008/01/10/rails-sucks#comments</comments>
      <category>Technology</category>
      <category>Ruby / Rails</category>
      <trackback:ping>http://inter-sections.net/trackbacks?article_id=rails-sucks&amp;day=10&amp;month=01&amp;year=2008</trackback:ping>
      <link>http://inter-sections.net/2008/01/10/rails-sucks</link>
    </item>
    <item>
      <title>Feedback</title>
      <description>&lt;p&gt;When designing a feedback system to influence change (for instance, a status report to influence the project progress, or an attempt to lose weight or save money) it&amp;#8217;s easy to fall into the trap of going for accuracy first. Countless hours can be wasted designing the perfect measure of progress, making sure it&amp;#8217;s accurate as can be, ensuring everyone fills in the data as accurately as possible, etc. Most of that work is, however, pointless, because accuracy is not the name of the game here. Sure, feedback needs to be &lt;em&gt;vaguely&lt;/em&gt; accurate, but it doesn&amp;#8217;t need to be &lt;em&gt;very&lt;/em&gt; accurate to work.&lt;/p&gt;

&lt;p&gt;So what is good feedback then? In this post, I&amp;#8217;ll look at what constitutes a good feedback system and what doesn&amp;#8217;t. Finally I&amp;#8217;ll propose a simple framework for figuring out what feedback system to use.&lt;/p&gt;

&lt;h3&gt;Feedback should be consistent&lt;/h3&gt;

&lt;p&gt;Inconsistent feedback drives irrational behaviour. In fact, giving random feedback is a &lt;a href="http://findarticles.com/p/articles/mi_m0902/is_n6_v24/ai_19175059/pg_1"&gt;proven&lt;/a&gt;, effective method of driving people to misbehaviour (or even to insanity). If your feedback can&amp;#8217;t be consistent in its frequency (how regularly and often it is given) and its direction (ie positive feedback should always be positive), don&amp;#8217;t bother with it at all - it will only make things worse.&lt;/p&gt;

&lt;p&gt;Consistency of feedback is like consistency of logic - it&amp;#8217;s a sine qua non, without which everything else becomes meaningless.&lt;/p&gt;

&lt;h3&gt;Feedback should be timely&lt;/h3&gt;

&lt;p&gt;I believe the next most important quality of any feedback is timeliness. Here&amp;#8217;s an example: my previous phone company used to send feedback 2 months after the fact. It was very accurate (itemised billing usually is), but since the call went into the next month&amp;#8217;s bill, and that bill came at the end of the following month, there was a very long lag time between abuse of the phone and feedback about it. As a result my phone bill was often over &#163;100 per month (yes, that&amp;#8217;s huge). This didn&amp;#8217;t allow me to correct my behaviour - all it did was make me feel bad that I overspent on my phone again.&lt;/p&gt;

&lt;p&gt;I switched to T-mobile UK, which provides a weekly text message reminding me of how much of my &amp;#8220;Flext&amp;#8221; allowance I have left for this month. Since then, my phone bill has not gone above &#163;46, on a &#163;42.50 tariff.&lt;/p&gt;

&lt;p&gt;Similarly, every project has some form of feedback (at the end of the project). Either the project team gets congratulated, or they get told they screwed up and caused all sorts of issues within the organisation and to clients and the world. Unfortunately, by then, it&amp;#8217;s far too late to take corrective action. All you can do is make everyone unhappy that they were part of a failed project.&lt;/p&gt;

&lt;p&gt;What is timely? Well, in some cases, it&amp;#8217;s instant feedback - but not always. You don&amp;#8217;t want to be snowed under a mountain of white noise about the progress of everything you&amp;#8217;re involved in. &amp;#8220;Timely&amp;#8221;, in the context of feedback, is related to the pace of change. For expenses, for instance, I define &amp;#8220;timely&amp;#8221; as instant. For a project, weekly feedback usually does the trick. For weight loss, try the daily feedback of a scale.&lt;/p&gt;

&lt;h3&gt;Feedback should be effortless&lt;/h3&gt;

&lt;p&gt;I used to try to save money by keeping a log of all my expenses. I carried a little notebook, or a PDA, with me at all times, and recorded all expenses. These were subtracted from my weekly budget, so I knew how well I was doing at any point. This system worked relatively well, but it had one fatal flaw: it required constant effort. I never managed to sustain it more than a few months at a time, after which I would stop tracking things, because it was too much hassle, and relapse into over-spending.&lt;/p&gt;

&lt;p&gt;If your feedback system requires constant effort to maintain (particularly if the effort has to come from the person receiving the feedback), it is flawed in the long term and will eventually fail.&lt;/p&gt;

&lt;p&gt;What did I do about the spending? Well, I came up with a new feedback system. Instead of counting expenses, I switched to paying for everything in cash. On Thursday of each week, I take out my weekly allowance from the cashpoint, and I spend from that. The instant feedback from seeing my little cash pile diminish works as well as counting expenses, but takes no extra effort on my part. The only effort was in thinking of the system in the first place (thanks Bob!). If your expenses are out of control, I highly recommend it!&lt;/p&gt;

&lt;p&gt;In conclusion, the holy grail of any feedback system should be for it to be completely effortless, to continue working even when the attention of the receiver is somewhere else.&lt;/p&gt;

&lt;h3&gt;Feedback should be vaguely accurate&lt;/h3&gt;

&lt;p&gt;Of course, feedback needs to be somewhat accurate. But here, there is an expression that gets across the idea quite well: &amp;#8220;it is better to be vaguely accurate than precisely wrong&amp;#8221;. I&amp;#8217;d add to this: &amp;#8220;especially if the extra accuracy comes at the cost of timeliness or effortlessness&amp;#8221;.&lt;/p&gt;

&lt;p&gt;The feedback from T-mobile&amp;#8217;s Flext is not accurate. It only tells me about my aggregate phone usage. But it&amp;#8217;s timely, and so it works. Similarly, project feedback does not need to be very accurate to work. This is the approach that the typical agile burn-down chart takes. Ultimately, &amp;#8220;story points&amp;#8221; are fairly loose stuff. But what&amp;#8217;s always true is that as long as you&amp;#8217;re not making up silly User Stories with random estimates, it&amp;#8217;ll always be the case that: &amp;#8220;every point you deliver is a good thing&amp;#8221;. So you get a vaguely accurate pat on the back at the end of each iteration telling you you delivered something useful. Or, if you delivered nothing, you get nothing - and that&amp;#8217;s feedback too!&lt;/p&gt;

&lt;p&gt;In contrast, I once had a long discussion with a project manager as to the most accurate way to measure completion of tasks (I supported partial completion percentages, whereas he thought that only a finished task earned any percentage). In hindsight, the discussion was futile, not only because we were both right (both approaches have benefits), but because the accuracy difference between the two was irrelevant. What was relevant was implementing weekly status reporting where there was nothing - Whether it was 10% too high or too low was irrelevant, so long as the error was consistent.&lt;/p&gt;

&lt;p&gt;A typical example of accuracy that can be improved is the weight scale that I mentioned earlier. Weight scales are accurate at measuring weight, but the reason most of us want to lose weight is because we want to lose fat. Plain weight scales don&amp;#8217;t give you that information. Without a Body Fat Percentage scale, you might measure things with the right frequency and with only a little effort, but since you&amp;#8217;re not measuring the right thing (unless you weigh hundreds of kilograms, in which case most of it is certainly fat), it won&amp;#8217;t help you achieve your goal of eliminating fat.&lt;/p&gt;

&lt;h3&gt;Summary&lt;/h3&gt;

&lt;p&gt;So, we have a few key elements of what constitutes good feedback. Good feedback should be:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Consistent&lt;/li&gt;
&lt;li&gt;Timely&lt;/li&gt;
&lt;li&gt;Effortless&lt;/li&gt;
&lt;li&gt;Vaguely accurate&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;This provides a simple framework for improving a feedback system, by providing you with four questions to ask about your current system, and an order of priority between them.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Is the feedback system inconsistent? If so, can I make it more consistent, even at the expense of timeliness, effortlessness and accuracy?&lt;/li&gt;
&lt;li&gt;Is the feedback system timely? If not, can I make it more timely, even at the expense of effortlessness and accuracy?&lt;/li&gt;
&lt;li&gt;Is the feedback system effortless? If not, can I automate any part of it so it happens even if I don&amp;#8217;t do anything, even at the expense of some accuracy?&lt;/li&gt;
&lt;li&gt;Is the feedback system accurate enough? Can I make it more accurate without hurting one of the other key qualities?&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;I hope you found this article useful. Thank you for reading. Any feedback (timely or otherwise) in the comments below would be most welcome!&lt;/p&gt;</description>
      <pubDate>Wed, 02 Jan 2008 14:35:00 +0000</pubDate>
      <guid isPermaLink="false">urn:uuid:bb83a43c-5c7c-4a08-9176-68bdab8d4a40</guid>
      <comments>http://inter-sections.net/2008/01/02/feedback#comments</comments>
      <category>Life</category>
      <category>Business</category>
      <category>Technology</category>
      <trackback:ping>http://inter-sections.net/trackbacks?article_id=feedback&amp;day=02&amp;month=01&amp;year=2008</trackback:ping>
      <link>http://inter-sections.net/2008/01/02/feedback</link>
    </item>
  </channel>
</rss>

