<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>Nicollet.Net &#187; Psychology</title>
	<atom:link href="http://www.nicollet.net/toroidal/psychology/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.nicollet.net</link>
	<description>Everyone Loves Me</description>
	<lastBuildDate>Mon, 23 Jan 2012 16:55:59 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=</generator>
		<item>
		<title>Consensus and Compromise</title>
		<link>http://www.nicollet.net/2011/12/consensus-and-compromise/</link>
		<comments>http://www.nicollet.net/2011/12/consensus-and-compromise/#comments</comments>
		<pubDate>Fri, 30 Dec 2011 16:54:29 +0000</pubDate>
		<dc:creator>Victor Nicollet</dc:creator>
				<category><![CDATA[Strategy]]></category>
		<category><![CDATA[Discussion]]></category>
		<category><![CDATA[Management]]></category>
		<category><![CDATA[Psychology]]></category>
		<category><![CDATA[Start-Up]]></category>

		<guid isPermaLink="false">http://www.nicollet.net/?p=2645</guid>
		<description><![CDATA[Working on a start-up involves many decisions — how features should work, how pages should look like, how advertising should be written&#8230; and making decisions is a difficult process when working as a team. Even in the tightest-knit team of two, disagreements happen. Sometimes, on the less important decisions, you might get out of it [...]]]></description>
			<content:encoded><![CDATA[<p>Working on a start-up involves many decisions — how features should work, how pages should look like, how advertising should be written&#8230; and making decisions is a difficult process when working as a team. Even in the tightest-knit team of two, disagreements happen.</p>
<p>Sometimes, on the less important decisions, you might get out of it by default — A disagrees with B, but doesn&#8217;t care enough about the topic to actually do something about it, so B proceeds anyway.</p>
<p>Sometimes, decisions will be dictated by competence. If A disagrees with a proposed solution because of objective technical or legal implications, well, that&#8217;s it.</p>
<p>Quite often, though, there is no such solution. This is where one must be aware of the dangerous tendency of <em>consensus</em>-based teams to devolve into <em>compromise</em>-based discussions.</p>
<p><strong>Consensus</strong>-based discussions feel like this :</p>
<blockquote><p>A: I&#8217;m going to frobnicate the thingamajig.<br />
B: If you frobnicate the foobar instead, you would get a 10% increase in floogum output.<br />
A: You&#8217;re right. Let&#8217;s frobnicate the foobar, then.</p></blockquote>
<p>That is, initially differing opinions evolve through an <strong>argumentation</strong> process, so that everyone agrees that the final outcome is the best one.</p>
<p><strong>Compromise</strong>-based discussions feel like this :</p>
<blockquote><p>A: I&#8217;m going to frobnicate the thingamajig.<br />
B: I would rather that we frobnicate the bazquux instead. Might get better results.<br />
A: Actually, I have a hunch that the thingamajig is the better option.<br />
B: Tell you what, let&#8217;s frobnicate 50% of the thingamajig and 50% of the bazquux. This way we have everything covered.<br />
A: All right.</p></blockquote>
<p>Here, initially differing opinions are settled through a <strong>negotiation</strong> process, so that everyone&#8217;s input is respected, but no one agrees the final outcome is really the best.</p>
<p>Compromise is a bad idea for several reasons.</p>
<ul>
<li>Quite often, going 100% with any reasonable solution is better than investing only 50% into two different solutions. In more general terms, lack of commitment to a single strategy or objective is a dangerous thing to do, and often less effective than commiting to any strategy or objective one might come up with.</li>
<li>Compromise is not agreement, it&#8217;s negotiation : you give something and get something else in return until everyone agrees that it&#8217;s an even trade. People who are good negotiators tend to dictate their terms in such circumstances, and others might feel helpless and useless after a few unbalanced trades. It also leads to « I agreed with your idea yesterday so agree with mine today » or « You&#8217;ve already changed my idea enough, stop asking me to change it again, » both of which are content-free sentences that aim to make a decision based on interpersonal history instead of objective analysis.</li>
<li>The inability to come to a logical conclusion sometimes happens because there is not enough data available to decide. The first priority in such circumstances should be to actually search for the data (possibly accepting one of the proposed solutions as temporary until the data is collected), not settling for an arbitrary compromise.</li>
<li>Building consensus is hard when people have trouble putting their insight into words, no matter how convincing or true that insight might be. I&#8217;m objectively right, but I cannot seem to explain to you the reason for it. This can mean going for a compromise today instead of a consensus tomorrow — hasty decisions are seldom good. Always make sure everyone has had enough time to think the decision through, even if it means adjourning it until later.</li>
</ul>
]]></content:encoded>
			<wfw:commentRss>http://www.nicollet.net/2011/12/consensus-and-compromise/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>The Three Components of Negotiation</title>
		<link>http://www.nicollet.net/2011/11/the-three-components-of-negotiation/</link>
		<comments>http://www.nicollet.net/2011/11/the-three-components-of-negotiation/#comments</comments>
		<pubDate>Thu, 10 Nov 2011 13:33:46 +0000</pubDate>
		<dc:creator>Victor Nicollet</dc:creator>
				<category><![CDATA[Strategy]]></category>
		<category><![CDATA[Marketing]]></category>
		<category><![CDATA[Psychology]]></category>

		<guid isPermaLink="false">http://www.nicollet.net/?p=2611</guid>
		<description><![CDATA[We negotiate several times a day, even if we do not recognize those occurences as such — « accept or walk away » is a fairly instinctive, if somewhat inefficient, negotiation strategy, and it goes hand in hand with the modern « take it or leave it » strategy employed by most mass consumer shops. [...]]]></description>
			<content:encoded><![CDATA[<p><img class="aligncenter size-full wp-image-2616" title="bazaar" src="http://www.nicollet.net/wp-content/uploads/2011/11/bazaar.png" alt="" width="675" height="100" /></p>
<p>We negotiate several times a day, even if we do not recognize those occurences as such — « accept or walk away » is a fairly instinctive, if somewhat inefficient, negotiation strategy, and it goes hand in hand with the modern « take it or leave it » strategy employed by most mass consumer shops.</p>
<p>What is negotiation anyway, and why does it happen?</p>
<p>It happens because when humans cooperate, they get a cake that is bigger than the sum of its parts, and they need to decide how to split it. For instance, if I grow potatoes and you breed cattle, we could decide to put together my delicious Désirée tubers and your tasty Charolais steaks, which is a big improvement over otherwise potato- or beef-only diets. And then, we would argue over how much of the final mix each of us would get:</p>
<blockquote><p>ME: We both contributed equally, so let&#8217;s get 50% each.<br />
YOU: Breeding cattle is harder than watching potatoes grow, so I want 65%.<br />
ME: Suit yourself, I know a guy who only asks for 55%.<br />
YOU: Fine, I&#8217;ll go as low as 60% because I like your blog.<br />
ME: I just told you I know a guy who&#8230;<br />
YOU: &#8230;and that would save you the effort of finding that guy before lunch.<br />
ME: Right. 60% it is, then.</p></blockquote>
<p>You were a good negotiator, so you managed to squeeze 10% out of this. What happened? Let&#8217;s break this down.</p>
<h4>Irrational Arguments</h4>
<p>« We both contributed equally » might be true. Maybe I spent as much time growing my potatoes than you spent working in your ranch. But that is not my argument. What I have written between the lines is that it is <em>fair</em> for equal efforts to receive equal rewards.</p>
<p>And <strong>fairness</strong> is not a rational argument. It is a subtle way to circumvent rational thinking and aim for our unconscious ethical programming and, by definition, make decisions that are not in our best interest. In the eyes of a good negotiator, this is a loophole to be exploited.</p>
<p>There are many other such loopholes in the human mind. My favorites are:</p>
<p><a href="http://en.wikipedia.org/wiki/Reciprocity_(social_psychology)" target="_blank"><strong>Reciprocity</strong></a> is an atavistic impulse to give back whenever we receive something, even if that something is mostly unrelated to our objectives. In the example above, going from 65% to 60% is cleverly framed as a gift instead of a simple acceptance of my terms, which makes me unwilling to further haggle over whether it should be 57.5%.</p>
<p><strong>Imprinting</strong> is our tendency, when we have no idea how much something is worth, to go with the first guess, clue or hint that we find about it. By suggesting a 50-50 trade, I imprinted you on the idea that potatoes are about as valuable than meat, and this serves as a basis for your « reasonable » 35-65 counter-proposal instead an extreme trade like, say, 3-97.</p>
<p>Guess what the market rate for potatoes and Charolais steak is? 3-97. I would like to correct my previous sentence:</p>
<blockquote><p>You were a <span style="text-decoration: line-through;">good</span><strong> bad </strong>negotiator, so <span style="text-decoration: line-through;">you</span><strong> I</strong> managed to squeeze <span style="text-decoration: line-through;">10%</span> <strong>37%</strong> out of this.</p></blockquote>
<p>And then, there&#8217;s a slew of <strong>emotional manipulation</strong> that does not appear at all in my example above. You can feign disappointment to try and get more out of a deal — &#8220;I really hoped you, of all people, could get this done for me.&#8221; You can pretend to be offended, shocked or angry in order to cause a large shift in the terms being negotiated — when you haggle in a bazaar, quote a price that is too low and you will be told that it is <em>insulting</em>, and kicked out of the store.</p>
<p>There are many other examples. Go read <a href="http://conversionxl.com/17-lesser-known-ways-to-persuade-people/" target="_blank">this blog article</a> and read <a href="http://www.amazon.com/gp/product/B002C949KE" target="_blank">Predictably Irrational</a> by Dan Ariely.</p>
<h4>Rational arguments</h4>
<p>You might expect this section to be as rich as the previous one, but it is not. There are only two different rational arguments you can say in a negotiation: &#8220;I will  not accept this outcome because [credible reason]&#8221; and &#8220;You will accept this outcome because [credible reason]&#8220;. Let&#8217;s examine our conversation with this convention:</p>
<blockquote><p>ME: <strong>Suggests 50-50</strong><br />
YOU: <strong>No, because</strong> [breeding cattle is harder than watching potatoes grow], <strong>suggests 35-65</strong><br />
ME: <strong>No, because</strong> [I know a guy who only asks for 55%]<br />
YOU: <strong>Suggests 40-60</strong><br />
ME: <strong>No, because</strong> [I know a guy who only asks for 55%]<br />
YOU: <strong>Yes, because</strong> [that would save you the effort of finding that guy before lunch]<br />
ME: <strong>Accepts 40-60</strong></p></blockquote>
<p>This is the reason why the most fundamental principle in negotiations is <strong>be willing to walk away</strong>. If you cannot or will not walk away, and the other guy knows this, then you can no longer say « No, because » and this cripples your ability to negotiate properly.</p>
<p>Typical reasons why I will not accept an outcome:</p>
<ul>
<li>The costs are greater than what I get out of it. Maybe I&#8217;ll ask for more money, or non-financial benefits (exclusive rights, free advertising&#8230;)</li>
<li>It&#8217;s too risky for me. Maybe I&#8217;ll ask for insurance, or add terms to our contract that provide me with acceptable protection.</li>
<li>I can get a better offer elsewhere. You can either match that offer, give me something I cannot get elsewhere, or give up.</li>
</ul>
<p>Typical reasons why you should accept an outcome:</p>
<ul>
<li>There are additional benefits you did not take into consideration, such as not spending the time to find a better offer elsewhere, or my goodwill in terms of future trades, or my reputation as your client/provider.</li>
<li>If you do not accept now but change your mind later, I will not be able the same offer to you again in the future.</li>
</ul>
<p>These reasons do not have to be <em>true</em>, they only have to <em>believable</em>. I don&#8217;t know anyone who would accept a 45-55 split on potatoes and Charolais steak, but you don&#8217;t know that, so I can still bluff my way through our negotiation, bringing you down from 65% (which is still a 32% win for me) to 60%. If you knew that no sane person would accept a 45-55 split, you could certainly call my bluff and even bring me back up to 10-90 or so.</p>
<p>How you present those arguments is a matter of style. Here are four different ways of presenting the same argument (you will not get more than $30k for an <a href="http://en.wikipedia.org/wiki/APL_(programming_language)" target="_blank">APL</a> job) :</p>
<ol>
<li>No one else in town hires APL developers like yourself, so you either accept this $30k job or get out.</li>
<li>I am certainly interested in your APL skills, but I would be losing money if I paid you more than $30k.</li>
<li>We are looking to fill our APL development position, but I am not at liberty to offer you more than $30k.</li>
<li>We have interviewed several candidates with your skills, and most of them are below your wage requirements.</li>
</ol>
<p>Some aggressive types would prefer approach 1, while manipulator types would go with 2 (which is a lie), passive types would hide behind a third party authority using 3, and sneaky types would try to get an even lower salary quote by withholding the $30k figure in approach 4.</p>
<h4>Alternative Benefits</h4>
<p>This is a subtle but essential part of many successful negotiations. <strong>It&#8217;s not only about the money</strong>. In the above example, I traded 5% for the ability to get my food in time for lunch — a concept that had not been mentioned at all before. You decided that instead of matching my requirements as I expressed them, you would offer me something that was unexpected and which, to you, cost less than 5% but still, to me, was worth at least 5%.</p>
<p>Going down alternate routes is an excellent way to get a stuck negotiation moving.</p>
<p><small>Article Image &copy; William Neuheisel &mdash; <a href="http://www.flickr.com/photos/wneuheisel/6167306708/">Flickr</a></small></p>
]]></content:encoded>
			<wfw:commentRss>http://www.nicollet.net/2011/11/the-three-components-of-negotiation/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>RS Latches</title>
		<link>http://www.nicollet.net/2011/09/rs-latches/</link>
		<comments>http://www.nicollet.net/2011/09/rs-latches/#comments</comments>
		<pubDate>Mon, 12 Sep 2011 20:17:57 +0000</pubDate>
		<dc:creator>Victor Nicollet</dc:creator>
				<category><![CDATA[People]]></category>
		<category><![CDATA[Algorithms]]></category>
		<category><![CDATA[Learning]]></category>
		<category><![CDATA[Psychology]]></category>
		<category><![CDATA[Useless]]></category>

		<guid isPermaLink="false">http://www.nicollet.net/?p=2542</guid>
		<description><![CDATA[One of my oldest memories harkens back to 1989 — I was a four years old boy in communist Romania. My mother has a PhD in biochemistry, and her father and brother both had a PhD in physics, so it might seem quite unsurprising that I followed in their rational and scientific steps, but it [...]]]></description>
			<content:encoded><![CDATA[<p><img class="aligncenter size-full wp-image-2543" title="cranes" src="http://www.nicollet.net/wp-content/uploads/2011/09/cranes.png" alt="" width="675" height="100" /><br />
One of my oldest memories harkens back to 1989 — I was a four years old boy in communist Romania. My mother has a PhD in biochemistry, and her father and brother both had a PhD in physics, so it might seem quite unsurprising that I followed in their rational and scientific steps, but it would be hard to put the proverbial finger on how, precisely, that happened. This is what that specific memory is about.</p>
<p>It all started with my frequent stays at my grandparents&#8217; house, a conventional second-floor flat in Bucharest, where my grandmother and grandfather took turns babysitting me while my parents were out hammer-and-sickling (well, laboratory-and-architecturing) the socialist ideal. My grandfather was intent on turning me into a bright scientific mind, so he asked my uncle to <a href="http://en.wikipedia.org/wiki/Commodore_64" target="_blank">build me a computer</a>. Nothing fancy, mind you : it had no operating system worth mentioning, no hard drive, and depended on magnetic tapes and 8&#8243; floppies to actually work. My grandfather showed me a standard BASIC interpreter, and had me type in a program that displayed, line by line, an analog wall clock.</p>
<p>Fascinated, I started spending my days on that thing writing BASIC code, learning how to build increasingly complex programs, and starting my career as a programmer. Or so had my grandfather hoped. A few seconds after discovering computer programming, I discovered computer <em>games</em>, which were a far more fascinating novelty than displaying wall clocks on a screen. I promptly forgot about the BASIC interpreter and for nine long years, I assumed that programming computers was some sort of esoteric arcane art, invisible to the uninitiated, and remained entirely uninterested in it.</p>
<p>Instead, my <a href="http://www.girlgeniusonline.com" target="_blank">breakthrough</a> as a rational mind was triggered by the close proximity of two unlikely catalysts : one was a frequent diet of <a href="http://en.wikipedia.org/wiki/GoShogun" target="_blank">mecha anime</a> (the quality of the Romanian dubbing was hilarious), and the other was a cupboard drawer full of bits and pieces that could, to a child&#8217;s mind, be spare parts out of which a robot could be built : wheels, small electrical engines, cables, batteries, microprocessors, light bulbs&#8230; as a matter of fact, once I had the basic understanding of how a batteries + cables + engine setup worked, I <em>did</em> build small uninteresting contraptions.</p>
<p>I became intensely interested in building a robot myself. Obviously, I did not have the technical skills or the willpower to follow through with this plan, but I would listen, entranced, to any explanations I would receive that were related to robot-building. My grandfather was writing a book on semiconductors at the time, so he showed me a large <a href="http://en.wikipedia.org/wiki/Adder_%28electronics%29" target="_blank">digital circuit</a> and let me understand that this is what the brain of a robot would look like — only quite larger !</p>
<p>And so he started teaching me the elementary principles of digital circuits. We spent little time discussing the underlying technical details, and instead concentrated on the simpler abstractions of logical gates. This time, I was fascinated. I would grab a pen and paper and draw circuits for fun. The meaning of AND, OR, NOT, NAND, NOR and XOR are imprinted in my brain ever since I was five years old&#8230; there are few concepts remaining in my brain that have been there for so long.</p>
<p>My circuits behaved like mathematical functions : I would mentally set the input bits, and the output bits would contain the result, so I could build the truth tables that mapped input combinations to output combinations. I experimented with basic arithmetic functions, learning binary as I went. And then one day my grandfather showed me a circuit that I could draw from memory to this day : the RS latch.</p>
<p>The fun thing about the RS latch is that it cannot have a truth table. It is an entirely different beast from arithmetic &#8220;write input bits, read output bits&#8221; circuits in that it has a <em>state</em>. If you write 1 to the S input bit, the output becomes 1 and remains 1 until you write 1 to the R bit, at which point the output becomes 0, and so on. To say things differently, the S input bit stands for &#8220;Set&#8221; and sets the output to 1, and the R input bit stands for &#8220;Reset&#8221; and sets the output to 0. When both R and S are set to 0, then the latch output bit is equal to whatever it was previously set to.</p>
<p>The RS latch is a versatile little thing. It can be used to implement RAM (one of the first things I did with it), or it can be chained to create an incrementing counter.</p>
<p>After a while, my interest in digital circuits faded, but the effects it had on my character were permanent : I now had experience applying abstract rules to abstract concepts, <em>and it was fun</em>.</p>
<p><small>Article image &copy; Cornelia Kopp &mdash; <a href="http://www.flickr.com/photos/alicepopkorn/5588624889/">Flickr</a></small></p>
]]></content:encoded>
			<wfw:commentRss>http://www.nicollet.net/2011/09/rs-latches/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Having a Strong Opinion</title>
		<link>http://www.nicollet.net/2011/09/having-a-strong-opinion/</link>
		<comments>http://www.nicollet.net/2011/09/having-a-strong-opinion/#comments</comments>
		<pubDate>Thu, 01 Sep 2011 12:14:21 +0000</pubDate>
		<dc:creator>Victor Nicollet</dc:creator>
				<category><![CDATA[Imperative]]></category>
		<category><![CDATA[Architecture]]></category>
		<category><![CDATA[Psychology]]></category>
		<category><![CDATA[Strategy]]></category>

		<guid isPermaLink="false">http://www.nicollet.net/?p=2534</guid>
		<description><![CDATA[Many blogs about technical hiring will at one point state something about buzzwords and programmer flexibility. One of the original trendsetters, Joel Spolsky, said: The recruiters-who-use-grep, by the way, are ridiculed here, and for good reason. I have never met anyone who can do Scheme, Haskell, and C pointers who can&#8217;t pick up Java in [...]]]></description>
			<content:encoded><![CDATA[<p><img class="aligncenter size-full wp-image-2535" title="sunset" src="http://www.nicollet.net/wp-content/uploads/2011/09/sunset.png" alt="" width="675" height="100" /></p>
<p>Many blogs about technical hiring will at one point state something about buzzwords and programmer flexibility. One of the original trendsetters, <a href="http://www.joelonsoftware.com/articles/ThePerilsofJavaSchools.html" target="_blank">Joel Spolsky</a>, said:</p>
<blockquote><p>The recruiters-who-use-grep, by the way, are ridiculed here, and for  good reason. I have never met anyone who can do Scheme, Haskell, and C  pointers who can&#8217;t pick up Java in two days, and create better Java code  than people with five years of experience in Java, but try explaining  that to the average HR drone.</p></blockquote>
<p>And this is not only a point about elite languages like Scheme-Haskell-C versus mundane languages like Java-PHP-whatever : flexibility, the ability to switch languages and to adapt to new interfaces and libraries, is almost always presented as a prerequisite to being competent. John can perform miracles with PHP but cannot easily learn Ruby ? Then John is not a competent programmer, he is just a competent <em>PHP</em> programmer.</p>
<p>Maybe there is some truth to this characterization. Maybe there is indeed something about good programmers that lets them shine in a language-independent way, with languages as mere details of their day-to-day miracles. But I am vaguely uncomfortable with that notion. And not for personal reasons — my current language of choice is one of those elite functional languages that would hypothetically place me at the apex of the competence food chain.</p>
<p>I believe the critical element of programming competence is not <em>ability</em> but <em>passion</em>. What makes you a good programmer is how much you care about software development. Does John have a nine-to-five PHP programming job and hardly touch the computer outside of work, or does he do small projects on the side, or contribute to Open Source PHP software, or answer technical PHP questions on Stack Overflow, or perform any other number of PHP-related activities that do not have professional rewards as their main objective? Does he unconsciously try to <em>do the right thing</em> in his code, even though it will be harder than writing a dirty hack to make his boss happy?</p>
<p>I have seen people, many of them high-ranking academics, with the intellectual firepower to outgun me in any programming-related endeavor, but a striking lack of passion that let their applications crippled, hideous and unreliable. And I have no doubts that, had they cared about those things, they could have done better.</p>
<p>I have seen people, many of them students, with a genuine passion for software development, who would spend their free time hacking together video games or dynamic websites or clever hacks, who would notice after a while that their abilities were stagnating and, unable to improve, would give up programming rather than live with the frustration of writing software worthy of their expectations.</p>
<p>And when you care about programming, you tend to have strong opinions about how it should be done.</p>
<p>Some of these opinions are trivial. My hair stands on end whenever I have to read badly formatted code — I don&#8217;t care about the opening-brace-position flame wars, any convention is fine by me as long as it is consistently followed — and the authors often wonder why I would care about such a silly thing. I have a strong opinion about how code should look like, and I dislike working with people who do not share that opinion.</p>
<p>Yes, I am one of those Scheme-Haskell-C elite programmers, and I can pick up Java in a few days and outperform experienced Java-only programmers. I have done it several times in the past. And every single time I did so, I felt dirty and miserable, because Java goes against several of my opinions about what software development should be like.</p>
<p>In fact, I am not really surprised about the popular success of Python and Ruby on Rails — not in terms of how many projects are written, but in terms of how outspoken the technical advocates are. This is because those two have something that appeals to people who can become passionate about them : a clean core philosophy you can agree or disagree with.</p>
<p>Python zealots flock around the <a href="http://www.python.org/dev/peps/pep-0020/" target="_blank">Zen of Python</a> :</p>
<blockquote><p>Beautiful is better than ugly.<br />
Explicit is better than implicit.<br />
Simple is better than complex.<br />
Complex is better than complicated.<br />
Flat is better than nested.<br />
Sparse is better than dense.<br />
Readability counts.<br />
Special cases aren&#8217;t special enough to break the rules.<br />
Although practicality beats purity.<br />
Errors should never pass silently.<br />
Unless explicitly silenced.<br />
In the face of ambiguity, refuse the temptation to guess.<br />
There should be one&#8211; and preferably only one &#8211;obvious way to do it.<br />
Although that way may not be obvious at first unless you&#8217;re Dutch.<br />
Now is better than never.<br />
Although never is often better than *right* now.<br />
If the implementation is hard to explain, it&#8217;s a bad idea.<br />
If the implementation is easy to explain, it may be a good idea.<br />
Namespaces are one honking great idea &#8212; let&#8217;s do more of those!</p></blockquote>
<p>Ruby on Rails fanboys have a similar set of core beliefs, the <a href="http://guides.rubyonrails.org/getting_started.html#what-is-rails" target="_blank">Rails Way</a>:</p>
<blockquote><p>DRY – “Don’t Repeat Yourself” – suggests that writing the same code over and over again is a bad thing.<br />
Convention Over Configuration – means that Rails makes assumptions about what you want to do and how you’re going to d o it, rather than requiring you to specify every little thing through endless configuration files.<br />
REST is the best pattern for web applications – organizing your application around resources and standard HTTP verbs is the fastest way to go.</p></blockquote>
<p>So, if you happen to wholeheartedly agree with the Ruby on Rails way, then by using it you are certain to find both a technical environment in which you can feel happy, and a community that shares you strong opinions about software development. It is any wonder, then, that people <em>passionate</em> about the RoR values would flock to RoR and, inevitably, start advocating its use?</p>
<p>Going a little bit further, if you are hiring for your software company, would you rather hire someone with weak opinions on most topics because they are «flexible» or someone with strong opinions that match the strong opinions of your company? Given the choice, I would certainly hire the latter.</p>
<p>I have my own «core philosophy» that I apply to the way I write my own code. These would be, by order of decreasing importance:</p>
<ol>
<li>It is better to <strong>have a correct program with few features</strong>, than a buggy program with many features.<br />
<small>If possible, take the time to design your code and your interface so that errors cannot happen. If not, explicitly detect and display all errors as they happen. If possible, have a programming language and a programming style that can eliminate by design many errors, rather than a programming language or programming style that improves productivity at the cost of having more errors.<br />
</small></li>
<li>It is better to <strong>prove the correctness of a program</strong>, than to test for the existence of bugs.<br />
<small>Tests cannot prove that the software is correct, they may only prove the existence of bugs. A proven program contains no bugs, there is no worry about having enough code coverage and enough test cases. This is a special case of &#8220;fail early&#8221; : better to fail at the compilation stage, than to fail during tests or at runtime.</small></li>
<li>It is better to <strong>accept that code will have to be rewritten</strong>, than to future-proof a complex design.<br />
<small>Future-proof code will likely be larger, and contains more untested pieces, than normal code. This increases the probability of bugs, without completely eliminating the possibility of a completely unforeseen design change that still involves a rewrite. Preparing your code for a rewrite, by splitting it up into clean independent self-documenting modules and creating automated correctness checks for these, is the best way to make it flexible.<br />
</small></li>
<li>It is better to <strong>enforce data constraints through types</strong>, than to enforce it through code.<br />
<small>Attempting to store data that violates the constraints fails earlier if the type cannot represent that data, especially in a statically typed language. Doing things this way might take longer than just keeping a flexible data type and performing the constraint checks in the code, but the odds of it being correct are higher.<br />
</small></li>
<li>It is better to <strong>have the computer do work for you</strong>, than for you to do that work yourself.<br />
<small>Why write trivial unit tests when you can harness the type system to perform those checks? Why define or configure things by hand when your framework could define or configure them for you?</small></li>
<li>It is better to <strong>rewrite your code using new concepts</strong>, than to insist on using existing but ill-adapted concepts.<br />
<small>Concepts improve productivity and readability, and by design will prevent some kinds of incorrect usage, but only as long as they match what the software is expected to be doing. Otherwise, at best they will be a useless weight and at worst will have to be tediously worked around to achieve anything. The size of the refactoring is no obstacle: if half the application needs to be adapted to the new concept, then so be it.<br />
</small></li>
<li>It is better to <strong>repeat yourself from time to time</strong>, than to introduce too many concepts.<br />
<small>Any repetition can be eliminated by adding a new abstraction through refactoring. That abstraction is usually a mere application of an existing pattern or concept, but might sometimes give flesh to a new concept. While that concept arguably already existed in the non-refactored code, it is easier to understand uncommon concepts by looking at their repeated code, than to give them a sufficiently understandable name.</small></li>
</ol>
<p>I don&#8217;t know. Maybe someone might agree with me one day.<br />
<small>Article image © Timo Newton-Syms — <a href="http://www.flickr.com/photos/timo_w2s/6021716943/in/photostream/">Flickr</a></small></p>
]]></content:encoded>
			<wfw:commentRss>http://www.nicollet.net/2011/09/having-a-strong-opinion/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Be Careful What You Ask For</title>
		<link>http://www.nicollet.net/2010/12/be-careful-what-you-ask-for/</link>
		<comments>http://www.nicollet.net/2010/12/be-careful-what-you-ask-for/#comments</comments>
		<pubDate>Fri, 03 Dec 2010 18:42:16 +0000</pubDate>
		<dc:creator>Victor Nicollet</dc:creator>
				<category><![CDATA[People]]></category>
		<category><![CDATA[facebook]]></category>
		<category><![CDATA[Marketing]]></category>
		<category><![CDATA[Psychology]]></category>
		<category><![CDATA[Spam]]></category>
		<category><![CDATA[Useless]]></category>

		<guid isPermaLink="false">http://www.nicollet.net/?p=2175</guid>
		<description><![CDATA[Jumo is a brand new social network that lets you connect with the causes and organizations that you support. They started their open beta recently, so I chimed in to see what was going on over there. I didn&#8217;t get past the signup form. Not because of any bugs or technical difficulties, but because of [...]]]></description>
			<content:encoded><![CDATA[<p>Jumo is a brand new social network that lets you connect with the causes and organizations that you support. They started their open beta recently, so I chimed in to see what was going on over there.</p>
<p>I didn&#8217;t get past the signup form. Not because of any bugs or technical difficulties, but because of this:</p>
<p><img class="aligncenter size-full wp-image-2176" title="jumo" src="http://www.nicollet.net/wp-content/uploads/2010/12/jumo.png" alt="" width="600" height="566" /></p>
<p>So, it turns out that to connect to Jumo, you need to have a valid Facebook account. Why not? Letting your users connect through Facebook is a good strategy to gather information easily (it lets the user import his personal information from Facebook instead of typing it by hand). Requiring a Facebook account is probably a bit <em>too extreme </em>in my opinion, especially when it&#8217;s technically unnecessary, but I can live with it, especially since my Facebook profile is designed to contain only public information.</p>
<p>The showstopper here is that I need to grant <strong>permission to post on my wall</strong>. I&#8217;m utterly and irrevocably paranoid about my online image, so anything that looks like me saying things I don&#8217;t actually want to say is grounds for immediate rejection. I have absolutely no idea what Jumo is going to do with this permission once granted, and the last few times I&#8217;ve seen that permission granted by my friends, shady applications flooded their walls with advertising for other third party sites said friends knew nothing about. I&#8217;m pretty sure Jumo is not going to do <em>that</em>, but them asking for permission can only mean one thing: sooner or later, a message from Jumo will appear on my wall without letting me review its contents first.</p>
<p>Ultimately, this is a gamble: by asking for wall access, Jumo is willingly throwing away all the reputation-obsessed people who will not grant that permission, but earns the right to post a message on the walls of all those people who don&#8217;t care enough about Jumo to write that message of their own accord. And they&#8217;re playing their cards just right, because people like me are a minority. But that doesn&#8217;t mean it&#8217;s not a cheap, dirty trick.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.nicollet.net/2010/12/be-careful-what-you-ask-for/feed/</wfw:commentRss>
		<slash:comments>4</slash:comments>
		</item>
		<item>
		<title>It&#8217;s payback time. Not.</title>
		<link>http://www.nicollet.net/2010/12/its-payback-time-not/</link>
		<comments>http://www.nicollet.net/2010/12/its-payback-time-not/#comments</comments>
		<pubDate>Fri, 03 Dec 2010 09:53:06 +0000</pubDate>
		<dc:creator>Victor Nicollet</dc:creator>
				<category><![CDATA[People]]></category>
		<category><![CDATA[Psychology]]></category>
		<category><![CDATA[Scam]]></category>

		<guid isPermaLink="false">http://www.nicollet.net/?p=2167</guid>
		<description><![CDATA[Why do generosity and sharing survive? Giving stuff away without asking for something in return is irrational. In a cold, rational society, those who give willingly would be taken advantage of by free riders until they wither and go away. Well, it sounds like humans are conditioned to find and punish free riders, and unfair [...]]]></description>
			<content:encoded><![CDATA[<p>Why do generosity and sharing survive? Giving stuff away without asking for something in return is irrational. In a cold, rational society, those who give willingly would be taken advantage of by free riders until they wither and go away. Well, it sounds like humans are conditioned to find and punish free riders, and unfair behavior in general.</p>
<p>A recent experiment by <a href="http://reason.com/archives/2010/11/30/the-eleventh-commandment-punis" target="_blank">Ryan McKay</a> illustrated this quite clearly. Subjects were grouped in pairs, one of the two was given a lump of money and told he could share any or all of it with the other. The second subject could then spend the money he received to reduce the first subject&#8217;s earnings at a 3:1 ratio (so spending $1 would reduce the first subject&#8217;s earnings by $3), thereby punishing him for being unfair. Priming the second subject with words related to religion caused the second subject to have a significantly more aggressive punishment behavior — they would rather lose $1 than have an unfair individual earn $3.</p>
<p>Combine this with <a href="http://www.ted.com/talks/dan_ariely_on_our_buggy_moral_code.html" target="_blank">Dan Ariely</a>&#8216;s conclusions in a cheating-based experiment: subjects were given a timed examination, and were rewarded based on how many questions they <em>said </em>they had answered — so you could cheat and say you answered all the questions, and get the maximum payout, even if you did pretty badly on the test. The first conclusion was that everyone cheated by a little amount, which is fairly interesting in itself, but the second conclusion was very surprising: by asking the participants to remember the Ten Commandments before taking the test, all cheating was eliminated, including those people who self-identified as atheists and therefore had no <a href="http://www.youtube.com/watch?v=H6YyWi4eQCI" target="_blank">earning-points-for-the-afterlife</a> motivation to respect the Ten Commandments. Ariely&#8217;s entire talk is pretty interesting for that matter:</p>
<div style="margin: 10px auto; width: 446px;"><object classid="clsid:d27cdb6e-ae6d-11cf-96b8-444553540000" width="446" height="326" codebase="http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=6,0,40,0"><param name="allowFullScreen" value="true" /><param name="allowScriptAccess" value="always" /><param name="wmode" value="transparent" /><param name="bgColor" value="#ffffff" /><param name="flashvars" value="vu=http://video.ted.com/talks/dynamic/DanAriely_2009-medium.flv&amp;su=http://images.ted.com/images/ted/tedindex/embed-posters/DanAriely-2009.embed_thumbnail.jpg&amp;vw=432&amp;vh=240&amp;ap=0&amp;ti=487&amp;introDuration=15330&amp;adDuration=4000&amp;postAdDuration=830&amp;adKeys=talk=dan_ariely_on_our_buggy_moral_code;year=2009;theme=unconventional_explanations;theme=what_makes_us_happy;theme=speaking_at_ted2009;theme=how_the_mind_works;event=TED2009;&amp;preAdTag=tconf.ted/embed;tile=1;sz=512x288;" /><param name="src" value="http://video.ted.com/assets/player/swf/EmbedPlayer.swf" /><param name="bgcolor" value="#ffffff" /><param name="allowfullscreen" value="true" /><embed type="application/x-shockwave-flash" width="446" height="326" src="http://video.ted.com/assets/player/swf/EmbedPlayer.swf" flashvars="vu=http://video.ted.com/talks/dynamic/DanAriely_2009-medium.flv&amp;su=http://images.ted.com/images/ted/tedindex/embed-posters/DanAriely-2009.embed_thumbnail.jpg&amp;vw=432&amp;vh=240&amp;ap=0&amp;ti=487&amp;introDuration=15330&amp;adDuration=4000&amp;postAdDuration=830&amp;adKeys=talk=dan_ariely_on_our_buggy_moral_code;year=2009;theme=unconventional_explanations;theme=what_makes_us_happy;theme=speaking_at_ted2009;theme=how_the_mind_works;event=TED2009;&amp;preAdTag=tconf.ted/embed;tile=1;sz=512x288;" bgcolor="#ffffff" wmode="transparent" allowscriptaccess="always" allowfullscreen="true"></embed></object></div>
<p>In short, we&#8217;re nice to each other because 1° that&#8217;s the way we were conditioned to be and 2° the others will punish us if we don&#8217;t. The problem with the Internet is that it&#8217;s a mostly anonymous environment, so reason 2° goes out the window. You can&#8217;t punish someone you don&#8217;t know and probably lives in a different country. It follows that people who are not affected by reason 1° and find out reason 2° does not apply will take advantage of everyone else.</p>
<p>The New York Times ran a moving piece about <a href="http://www.nytimes.com/2010/11/28/business/28borker.html?_r=3&amp;pagewanted=all" target="_blank">Vitaly Borker</a>, who has set up a fairly interesting business model: he waits for people to land on the web page of his DecorMyEyes online shopping site, and buy a pair of designer glasses. Once this happens, he buys fake glasses from eBay, ships an incomplete package and charges more than what was billed. From the New York Times piece:</p>
<blockquote><p>[She] placed an order for both the Lafonts and a set of doctor-prescribed Ciba Vision contact lenses on that site, DecorMyEyes.com. The total cost was $361.97. [...] The next day, a man named Tony Russo called to say that DecorMyEyes had run out of the Ciba Visions. Pick another brand, he advised a little brusquely. [...] With the contacts issue unresolved, her eyeglasses arrived two days later. But the frames appeared to be counterfeits [...] Soon after, she discovered that DecorMyEyes had charged her $487 — or an extra $125.</p></blockquote>
<p>And once the customers ask for a refund or threaten to get their money back from their bank, DecorMyEyes threatens them with lawsuits, and stalks them on Google Earth and sends them a picture of their home to bully them into giving up their money.</p>
<p>The elegant part of this business model is that this outrageous customer «service» means those people who ended up on the wrong side of a DecorMyEyes transaction will complain about it on the internet. The typical Google search for DecorMyEyes yields pages upon pages of angry «<em>don&#8217;t buy from DecorMyEyes</em>» customer reviews. This should even the odds and let everyone know it&#8217;s a hellish scamlike business, right? Wrong. Most people will never do a search for DecorMyEyes, even if they&#8217;re about to give them their credit card number. Silly humans. On the other hand, since all those angry reviews invariably linked to the company&#8217;s website, their Google rating blew through the roof, which in turn let them end up in delicious spots in searches that really matter, like «Ciba Vision» and incidentally prove me right as far as<a href="http://www.nicollet.net/2010/11/get-rid-of-your-brand/" target="_blank"> my earlier theories about scamming</a> go:</p>
<ul>
<li>Relying on repeat business is impractical — glasses are a rare, costly expense.</li>
<li>There are no dominant brands that own the market — at least, not on the Internet selling French glasses in the US.</li>
<li>There is little to no contact between potential customers — because humans don&#8217;t do reputation research.</li>
</ul>
<p>Customer losses are estimated at $1.7 <strong>billion</strong>. Nice one. Vitaly Borker has been going at it for at least two years, and there&#8217;s still no public righteous avenger wrath going on. The Internet is too busy righteous-avenger-wrathing <a href="http://boingboing.net/2010/08/24/internet-finds-cat-t.html" target="_blank">a lady who puts a cat in a trash bin</a> to go after a billion-dollar bully.</p>
<p>Silly Internet.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.nicollet.net/2010/12/its-payback-time-not/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>As Soon As Possible</title>
		<link>http://www.nicollet.net/2010/11/as-soon-as-possible/</link>
		<comments>http://www.nicollet.net/2010/11/as-soon-as-possible/#comments</comments>
		<pubDate>Mon, 15 Nov 2010 16:58:37 +0000</pubDate>
		<dc:creator>Victor Nicollet</dc:creator>
				<category><![CDATA[Strategy]]></category>
		<category><![CDATA[Communication]]></category>
		<category><![CDATA[Management]]></category>
		<category><![CDATA[Psychology]]></category>
		<category><![CDATA[Start-Up]]></category>

		<guid isPermaLink="false">http://www.nicollet.net/?p=2147</guid>
		<description><![CDATA[As you might expect from a Start-Up team, we of RunOrg work alone on whatever task we have to do, with fragmentary communication during the day and frequent one-hour meetings to discuss the state of the project. We have a pretty clean road map ahead of us, but there&#8217;s a lot of unexpected or unpredictable [...]]]></description>
			<content:encoded><![CDATA[<p>As you might expect from a Start-Up team, we of <a href="http://www.nicollet.net/2010/10/runorg-aka-muahahaha/" target="_blank">RunOrg</a> work alone on whatever task we have to do, with fragmentary communication during the day and frequent one-hour meetings to discuss the state of the project. We have a pretty clean road map ahead of us, but there&#8217;s a lot of unexpected or unpredictable things going on in the early months of a start-up: new, cheaper service providers on the market let us do a 180° turn on our production strategy ; an administrative process requires immediate submission of even more forms (oh God, let it <em>end</em>!) ; important customers show up and want to discuss our product-to-be ; something important happens in the life of one of the three associates, crippling 33% of the work force for a short while &#8230;</p>
<p>After a few weeks, there&#8217;s one lesson to be learned : <strong>in a start-up, there is no such thing as ASAP</strong>.</p>
<p><img class="aligncenter size-full wp-image-2149" title="nuke" src="http://www.nicollet.net/wp-content/uploads/2010/11/nuke.png" alt="" width="650" height="553" /></p>
<p>Suppose I&#8217;m your core product developer (not a very bold assumption) and you need me to fill in some administrative form, because you&#8217;re in charge of asking for a government grant. There&#8217;s a pretty tight deadline, so you tell me to send back that form <em>ASAP</em>. The problem being that almost every single other thing I need to do needs to be done ASAP: set up the production server backups, correct that bug that sends ten thousand password recovery e-mails for every single request, submit some critical information for a conference we&#8217;re attending, and give some developer from FoobarCorp technical details about our API. So, there&#8217;s a chance that by the end of the week, I&#8217;ll be done with your form, <em>unless the server dies at 11 p.m. the day before and I spend the night bringing it back to life</em>.</p>
<p>You know that the administrative form is a 10-minute task that needs to be done by Tuesday evening and that could win or lose us $25,000 but I don&#8217;t have any information about it other than its urgency. Why is it so important? I know why the server backups are important because I&#8217;ve put them on my todo-list myself and I have an intimate knowledge of what is at stake. I know what it means to receive ten thousand e-mails for a single password request. I just cannot feel the same about an administrative form that you dump on me. In fact, the only reason you said it was to be done ASAP might be that for the last few weeks I&#8217;ve been passively filtering out any non-ASAP requests from you. The oral equivalent of writing V!agra instead of Viagra to get your spam e-mail past the spam filters.</p>
<p>It&#8217;s nothing personal. It&#8217;s just a consequence of three environmental factors:</p>
<ul>
<li>Everyone is overworked, so tasks that are not blatantly important might be postponed forever.</li>
<li>We&#8217;re equals, so you can&#8217;t give me «drop everything and do this now» orders.</li>
<li>You didn&#8217;t give me enough information to decide how important your request is.</li>
</ul>
<p>This is a nasty mix. To get over it, there are two simple rules you can follow.</p>
<p>The first rule is the requester&#8217;s responsibility: <strong>always add a deadline to your requests</strong>. If you tell me that you need those forms for Tuesday evening, there will be no ambiguity as to the urgency of the matter — I could have questions about the priority (<em>is this form more important than setting up the server backups?</em>) and it&#8217;s up to you to defend the importance (<em>this could win us $25,000</em>) until we agree on whether the action is must-have (<em>$25,000? of course we&#8217;ll do it</em>), nice-to-have (<em>$250? I&#8217;ll see if I have time</em>&#8230;) or ridiculous (<em>$2.5? are you kidding me?</em>). Basically, we&#8217;re working together to help me fit this new task in my own mental priority queue.</p>
<p>The second rule is symmetrical: <strong>always ask for a deadline</strong>. «<em>We need to frobnicate the product as soon as possible</em>» could equally mean «<em>drop everything and frobnicate the product immediately or we&#8217;ll be sued to hell and back</em>» or «<em>make a mental note to add frobnication on the Q3 2011 wishlist</em>» and whatever level of urgency you thought you heard is probably not the level the requester intended. You can ask for a deadline explicitly, or you can provide a plausible deadline based on your current load — do whichever you believe fits the situation, both are ultimately equivalent.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.nicollet.net/2010/11/as-soon-as-possible/feed/</wfw:commentRss>
		<slash:comments>4</slash:comments>
		</item>
		<item>
		<title>I&#8217;m Terribly Disappointed with Myself</title>
		<link>http://www.nicollet.net/2010/11/disappointed-with-myself/</link>
		<comments>http://www.nicollet.net/2010/11/disappointed-with-myself/#comments</comments>
		<pubDate>Wed, 10 Nov 2010 15:27:29 +0000</pubDate>
		<dc:creator>Victor Nicollet</dc:creator>
				<category><![CDATA[People]]></category>
		<category><![CDATA[Psychology]]></category>
		<category><![CDATA[Success]]></category>

		<guid isPermaLink="false">http://www.nicollet.net/?p=2139</guid>
		<description><![CDATA[I know it sounds sad, but actually, I wish I could be even more disappointed with my self. Many successful people around me (and by successful, I mean the target of my secret envious hatred) have a strange and yet obvious personality trait: they believe the things a person does are an accurate reflection of [...]]]></description>
			<content:encoded><![CDATA[<p>I know it sounds sad, but actually, I wish I could be even <em>more</em> disappointed with my self.</p>
<p style="text-align: center;"><a href="http://www.flickr.com/photos/montypython/118907697/"><img class="size-full wp-image-2141 aligncenter" title="disappointing" src="http://www.nicollet.net/wp-content/uploads/2010/11/disappointing.png" alt="" width="307" height="230" /></a></p>
<p>Many successful people around me (and by <em>successful</em>, I mean <em>the target of my secret envious hatred</em>) have a strange and yet obvious personality trait: they believe the things a person does are an accurate reflection of that person&#8217;s quality as a human being. For instance, they might be convinced that a person who wakes up at 9:00 am <em>on a Tuesday</em> is a lazy sloth that is subtly inferior to non-lazy non-sloth types. What reflections a given action casts is ultimately a consequence of their upbringing, education and personal beliefs — in two men kissing each other in public, one may see perversion and shameful sin where the other sees courage and happiness. You will never hear these people utter «well, he can live his life however he wants» about anyone — in anything, they see either grandeur or mediocrity, but never open-minded neutrality, and anything that may sound like neutrality is either polite self-censorship or bored indifference.</p>
<p>These people are sincere. Not only do they say that waking up at 9:00 on a workday is irresponsible, but they wouldn&#8217;t be caught <em>dead</em> waking up at 9:00 on a workday. The noble, respectable thing to do is to wake up at 7:00 and they will do so because their pride and their opinion of themselves depends on it.</p>
<p>And that is why they&#8217;re successful. Let me explain.</p>
<p>Everyone wants to be successful, because everyone hates mediocrity. And yet, if I asked you «What&#8217;s your plan for being successful?» it would involve a lot of hesitation and a lot of things that are oddly reminiscent of things you are <em>already</em> doing (ironically, that&#8217;s also what the successful people would answer, but at least <em>they&#8217;re</em> right). The biggest issue with being successful is the lack of a road map.</p>
<p>The end result is a descent into mediocrity: when you were a small child, you wanted to be an astronaut. When you were in middle school, you had lesser yet prestigious dreams of having a great job and living in a great neighborhood with a great family. As you get older, your job and home expectations get increasingly lower as you find outsome of your objectives are too difficult to achieve, until you decide you&#8217;re lucky to have whatever you ended up with.</p>
<p>Those people who have a sharp opinion about every single thing around them? They have a much easier time avoiding that slippery slope, because «I guess this is acceptable» grey areas are simply not a part of their world view. If they took a second-rate job anywhere, it would sting like sharp, rusty jalapeño-coated needles. They have a ten mile wide road map with «you are not here» written all over it in blood and tears of shameful disappointment. No wonder they ended up where they did. And they cannot find any excuses, because they&#8217;re not just trying to impress their friend or keep up with the Joneses: the only judge of their eventual success is their own opinion of what is great and what is not.</p>
<p>Are you happy with yourself? With your job? With your home? <em>They never are</em>.</p>
<p>It sounds like a sad life. But I ask: is a parent not constantly disappointed with specific things their child does, and still proud of him at the same time? The way to stay sane is to constantly remember that things should be better, and yet to be proud of the life you lead.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.nicollet.net/2010/11/disappointed-with-myself/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Low-Cost Software</title>
		<link>http://www.nicollet.net/2010/11/low-cost-software/</link>
		<comments>http://www.nicollet.net/2010/11/low-cost-software/#comments</comments>
		<pubDate>Fri, 05 Nov 2010 12:53:27 +0000</pubDate>
		<dc:creator>Victor Nicollet</dc:creator>
				<category><![CDATA[Strategy]]></category>
		<category><![CDATA[Economics]]></category>
		<category><![CDATA[Features]]></category>
		<category><![CDATA[Marketing]]></category>
		<category><![CDATA[Psychology]]></category>

		<guid isPermaLink="false">http://www.nicollet.net/?p=2133</guid>
		<description><![CDATA[Low-Cost is all about having a dirt cheap base product, such as plane trips, combined with additional fees for almost every single thing you can imagine, such as carry-on luggage, using the restrooms during the flight, or wearing a blonde wig. In the B2C and B2IB (Business-to-Itty-Biz) worlds, the Low-Cost model works when it seems [...]]]></description>
			<content:encoded><![CDATA[<p>Low-Cost is all about having a dirt cheap base product, such as plane trips, combined with additional fees for almost every single thing you can imagine, such as carry-on luggage, using the restrooms during the flight, or wearing a blonde wig. In the B2C and B2IB (<a href="http://ittybiz.com/" target="_blank">Business-to-Itty-Biz</a>) worlds, the Low-Cost model works when it seems fair. Asking people to pay for what they use is fair in two ways:</p>
<ul>
<li><strong>Share the cost</strong>: What I use costs the company money. They went to great lengths to drive the base price down, so it&#8217;s only fair that I participate in any additional expenses I cause.</li>
<li><strong>Avoid free riders</strong>: If I don&#8217;t have heavy luggage or use the restrooms, I won&#8217;t have to pay for the kerosene spent carrying around other people&#8217;s luggage or the water for their restroom usage.</li>
</ul>
<p>That&#8217;s why a Low-Cost model cannot charge for wearing a blonde wig : the wig doesn&#8217;t cost the airplane company anything, so there&#8217;s no reason they should charge you for it.</p>
<p>This obsession with fairness goes head-to-head against traditional economic theory. In a traditional economic world with purely rational agents, everyone agrees that a printer that prints 100 pages/minute costs more than a printer that prints 20 pages/minute. In our real world, if the 20-pages printer is the exact same hardware as the 100-pages printer with a speed inhibitor tacked on, bloody murder <em>will</em> be screamed. Of course, big businesses don&#8217;t care — it&#8217;s a game everyone plays, so they&#8217;re going to negotiate discounts and settle for the higher price anyway — but if you&#8217;re targeting the B2C/B2IB market and they find out you&#8217;re into that kind of backstabbing, you&#8217;re done for.</p>
<p>If you&#8217;re going for a product with multiple prices, or with additional features available for a fee, remember that customers will be looking at the price difference through two very different lenses:</p>
<ul>
<li><strong>Is it worth it</strong>? Does that $5 feature provide me with happiness or productivity that exceeds $5?</li>
<li><strong>Is it fair</strong>? Does that $5 feature cost the provider anything close to $5, or are they just gouging me for the fun (and gross margin) of it?</li>
</ul>
<p>In the software world, we&#8217;re all concentrating on the first question, but we had better keep away from the second one : writing software is <span style="text-decoration: line-through;">dirt</span> open-source cheap.</p>
<p><img class="aligncenter size-full wp-image-2136" title="ff-tabs" src="http://www.nicollet.net/wp-content/uploads/2010/11/ff-tabs.png" alt="" width="673" height="470" /></p>
<p>It&#8217;s fair to ask for some money when you&#8217;ve spent weeks working on a feature. It stops being fair when you cripple your software to create a cheaper version. And by «cripple» I do not necessarily mean removing or blocking existing features: willingly straying from the optimal design to be able to monetize a feature that would have been an immediate consequence of that optimal design.</p>
<p>Are you providing some of your users with daily backups, instead of guaranteeing that you will never lose their data?</p>
<p>Are you trying to sell data recovery features by selling a product without a revision history tool?</p>
<p>Are you actively fighting third party data conversion tools to force customers into buying your own data extraction plug-in?</p>
<p>Are you limiting the number of anything (users, posts, files&#8230;) that the users are doing with your software on <em>their</em> computers?</p>
]]></content:encoded>
			<wfw:commentRss>http://www.nicollet.net/2010/11/low-cost-software/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Know Thyself</title>
		<link>http://www.nicollet.net/2010/11/know-thyself/</link>
		<comments>http://www.nicollet.net/2010/11/know-thyself/#comments</comments>
		<pubDate>Wed, 03 Nov 2010 07:27:14 +0000</pubDate>
		<dc:creator>Victor Nicollet</dc:creator>
				<category><![CDATA[Strategy]]></category>
		<category><![CDATA[Productivity]]></category>
		<category><![CDATA[Psychology]]></category>
		<category><![CDATA[Short]]></category>
		<category><![CDATA[Start-Up]]></category>

		<guid isPermaLink="false">http://www.nicollet.net/?p=2128</guid>
		<description><![CDATA[What do you enjoy about this project? What do you utterly hate about it? What&#8217;s the long-term motivation that keeps you working on it : fame, money, passion, something else? What are the day-to-day activities that you love doing? What would you rather not do? Do these match your actual skills, or are you unskilled [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://www.flickr.com/photos/telemax/3543722468/"><img class="aligncenter size-full wp-image-2131" title="know-thyself" src="http://www.nicollet.net/wp-content/uploads/2010/11/know-thyself.jpg" alt="" width="500" height="308" /></a></p>
<p>What do you enjoy about this project? What do you utterly hate about it? What&#8217;s the long-term motivation that keeps you working on it : fame, money, passion, something else?</p>
<p>What are the day-to-day activities that you love doing? What would you rather not do? Do these match your actual skills, or are you unskilled in what you love and hate what you&#8217;re skilled in?</p>
<p>When and where are you the most productive? Are you a regular worker, or do you have infrequent bursts of productivity?</p>
<p>I&#8217;m glad you took the time to know all of these tidbits about yourself. It really helps.</p>
<p><strong>Have you told the people you work with? Have they told you what makes them tick? If not, how do you know you&#8217;re working with them and not against them?</strong></p>
]]></content:encoded>
			<wfw:commentRss>http://www.nicollet.net/2010/11/know-thyself/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>

