Leaky Clouds

Joel Spolsky has two timeless pieces – Fire and Motion and The Law of Leaky Abstractions that are cornerstones of what I’m about to preach in this post. Please take a moment to read those articles by Joel – they’re almost 10 years old now, but are as relevant as ever.

My field, software engineering, is young and filled with changing winds. Client-server! No, web-based!.. Win32! No, PHP! No, Cocoa! No, HTML5 / JavaScript!.. Mainframe! No, rich client! No, thin client! No, mobile client!..

Entire industry moves like the trees under a powerful wind. I’ll stipulate that there are two factors in play here:

  1. Psychology. The nerds that are in IT leadership positions are still very much gadget nerds. They love new stuff. They love playing with new stuff. They get the fanciest gadgets available on the market today. It’s not the Patek Phillippe crowd – they won’t go after a 100-year-old watch. They’ll go after a released-1-day-ago iPad v7, stand in line for it for hours, and pay through their nose. Just because it’s new – and new stuff is really exciting.
  2. Incentives of market movers. Large technology vendors – particularly those in the leadership positions in their markets – want to keep customers in the spot where they want to buy again and again. Yes, we sold you a solution to your problems yesterday; but wait, now we have a NEW, MUCH BETTER way to solve that same problem! Yeah, you haven’t yet figured out half of the benefits of the old thing, but the new thing – it’s SO MUCH BETTER!..

Abstractions are an outstanding concept in science: instead of dealing with a bunch of low-level concepts, we create building blocks – and juggle those instead. It’s much easier to build a house if you have bricks; it’s much easier to perform a surgery if you don’t have to make a scalpel from the iron ore yourself.

Perfect abstractions require zero knowledge of how the building block was created. Such abstractions don’t exist – even the surgeon needs to know a little bit about the manufacturing process and chemical composition of the scalpel. For example, the scalpel has certain melting temperature and certain chemical characteristics (hmmm, I guess I shouldn’t put it into hydrocloric acid..).

In software, most abstractions are actually pretty bad. We like to think that the operating system hides away most of the complexities from the users – but it doesn’t. With Android, unless you know to kill apps that are running in the background, your battery life will be abysmal. Even with the famed iPad, you have strange artifacts like “zoomed mode” for old iPhone apps – total weirdness from the end-user point of view.

ORM (object-relational mapping), one of the most famous abstractions, is probably one of the worst (most leaky) – it will make you *think* that you don’t need to know SQL, but my god, that’s a horrible lie.

And yet, for system designers, these abstractions are frequently natural. As software engineers that build those abstractions, we are tempted to design for ourselves. In the end, we’re developers that build on top of those frameworks, too! “How am I not the target customer?..” That, of course, is a horrible mistake that causes unusable abstractions and frameworks that only their creators can understand.

Enter cloud computing. The latest excitement of our industry. The premise is really simple – instead of investing into technology upfront, pay as you go. Have someone else host that technology for you. That someone has vast economies of scale. Increase your investment easily in response to demand.

Sounds like a dream come true to the enterprise, right? I have 50 servers that are each utilized at 3%; I have IT staff of 10 to maintain these technology solutions; that’s really expensive. Instead, I come to a cloud vendor and pay a fraction of the cost.

Also sounds like a dream come true to an independent software shop, right? With my Find Touch project, I used to need a server in my garage – maintaining hardware, network connectivity, software stack, everything. Instead, the cloud promises to solve all of the same issues at a fraction of the cost.

With cloud computing, the situation is even worse. The field is in the “new and super hot” realm – just like those pesky iPads – and early adopters are discovering that the promise of “just move your existing application into the cloud” isn’t quite working.

The lower the level of the service that you’re moving to the cloud, the easier it is to map to what’s in your datacenter. The higher you go up the value chain, the harder the migration becomes.

If all you’re getting from your cloud vendor is hardware, everything is pretty easy from the technology standpoint. The problem, of course, is that the value add of such a service is pretty low. Yeah, I can spin up more machines and I don’t need to wait for DELL to bring those machines to my doorstep.

If, on the other hand, you want to move a VB6 application into the cloud.. And gain the benefits of deployment, scalability, billing, and all the other goodness of SaaS.. Good luck. You’re in for a treat. Get ready to essentially rewrite your software. Oh, you no longer are in touch with the vendor that wrote the source code?.. Too bad…

Moreover, the further you go from technology towards business aspects of cloud computing, the harder the cloud becomes to understand.

Recently, I worked on moving my web-based application from a standard hoster (1&1) to a cloud platform. I chose Amazon EC2 for my experiment. MY GOD, even as a technologist, I was at loss to understand what the costs for my migration are going to be. My old platform offered a pretty large VPS; they screwed up with customer service, so I was looking for a new home. All I wanted was an apples to apples comparison of price and major features. I didn’t expect major demand spikes – even though the ability to respond to them is nice. All I saw was myriads of instance types and datacenter options and pre-pay versus pay-as-you-go per minute of usage and my head was spinning after an hour.

My god, can’t you just tell me how much I’ll pay for the load I *know* I will have? A stupid little calculator for idiots like me that will tell me how much I’ll pay a month?.. To see if your service is worth it?..

Hosting vendors have this down to an art: show just three options, with a clear feature matrix; highlight the middle one with a tad more features than most people want; help upsell that one.

Cloud vendors? We have EC2 and S3 and fancy queues and monitoring with a cool name and you need to learn all of those proprietary acronyms and oh my god am I going to have to have my IT staff relearn everything?.. Cuz my CEO sure isn’t going to like this..

Seriously?.. You call that an easy switch to the cloud?..

I’m not saying the cloud is a fad. I am, though, saying that the cloud is in a state where it’s “hot and sexy because it’s new” and it’s primarily driven by technologists – not the business leaders. I want to see cloud vendors lead with value proposition – and better abstractions – and not with the newfangled technology “fire and motion.”

I want to see someone who’ll take my PHP app and will put it into the cloud – for the same price for a single VPS as my dumb old hoster. Using the paradigms I’m used to. I want my app to *not change at all* in order to adapt a cloud-based billing service. I want my storage to work just like I’m used to. I don’t want my IT staff to learn anything new – I want the framework to adapt to THEM.

Let’s greet the cloud – and hope that it grows up from the infancy it is in now.

Relationships are Everything

It’s so easy to get caught up in the day to day. Today’s firefighting. Major technical issue. This client screaming at you for yet another delayed shipment. That colleague throwing a fit because she wanted to take a vacation in September and your ship date is on September 30th and oh my god she’s really pissed off.

You’ll solve the immediate issue at hand. Of course you will – I have no doubt. Every hot tactical issue gets solved. Look back upon your past year – you’ll remember all those late nights, and you’ll see that it all worked out in the end.

Now look back 5 or 10 years ago. And try to remember the firefighting you did then.

What, having a hard time?.. The tactical stuff doesn’t float up in memory easily? What does come up?..

The people. The feelings. The relationships.

Oh.

Hmmm, interesting. I wonder what that means.

Fine, fine, I am a demeaning bastard. Give me a break, I just scored a free cocktail from a flight attendant.

What it means is that the only thing that matters in the long run is the people. You’ll forget the tactical firefighting. You’ll forget the problems you were working on. You’ll forget the problems, the technology, the contract terms, the programming language, the price you quoted, the vendor you hired…

The only thing you’ll remember are what you felt, who was by your side, who fell apart, and who really made sure everyone made it through.

You’ll keep that memory with you for the rest of your life – and so will the others that were next to you. When you are in need, the people that will help you will be those that have fond memories of you – it’s just as simple as that.

The only thing that matters is people. Invest in people around you. Make sure you comfort them in need. Motivate them when the tough times come and they need to work around the clock.

In the long run, it doesn’t matter how brilliant you are. If you’re an ass, you’ll end up nowhere (in our field, a particular section of nowhere is reserved for the arrogant asses). If you invest into people around you, they will cover for your misjudgements; they will forgive your stupidity; they will pay you back a hundredfold.

Go ahead and smile to the person next to you. Make them feel appreciated. Invest in them, make them better off. You’ll make a world a better place today – and you’ll be so much better off yourself tomorrow.

 “Be nice to people on your way up, because you’ll meet them again on your way down.”

Gaming the Incentives

game-theory-paper-matrix-final1Humans are fantastic at finding holes in incentive systems. Give incentives to retail employees to push an add-on product – and they’ll find a way to do so without increasing your bottom line profits. Incentivize efficient behavior for testers – finding bugs! – and they’ll open millions of stupid, mindless little defects that waste your time.

Joel Spolsky says it best:

I’m always on the lookout for these incentive schemes gone wrong. There’s a great book on the subject by Harvard Business School professor Robert Austin — Measuring and Managing Performance in Organizations. The book’s central thesis is fairly simple: When you try to measure people’s performance, you have to take into account how they are going to react. Inevitably, people will figure out how to get the number you want at the expense of what you are not measuring, including things you can’t measure, such as morale and customer goodwill.

This has far-reaching implications into motivating employees that are far from commission-based. Let’s take two simple premises that many large companies follow:

  1. Reward employees on a curve (ex. 20% great, 60% average, 20% under-performing). Force that curve at every level of the organization to make sure that no manager can claim that his team is “all stars” and thus pull the blanket of rewards to her group.
  2. Tie financial rewards for an employee are to their individual success only – that is, their relative performance compared to their peers, as viewed by a panel of superiors. The logic goes, if you tie employee rewards to product success, you won’t have stars joining struggling teams as they don’t want to be weighed down by failure.

Let’s think about what you get in the end from this explosive combination from a purely logical, reasonable employee. They observe that their own upside is completely disconnected from the success of their product. As a result, two kinds of behaviors start:

  1. Backstabbing and political play. This one is kind of obvious and everyone talks about it: if I’m rewarded based upon subjective opinions of my superiors, I better kiss up to the superiors and make my peers look bad.
  2. Poor hiring. Who are the people doing the interviewing for new talent in your organization? The same people that you apply the incentives to. “If I hire mediocre people onto my team,” the thinking goes, “I will be a shining star at the next performance review!” Therefore, I’ll give a Hire to an intentionally bad candidate! This will ensure my continuous success in the organization, while decreasing the chances of the group as a whole to succeed.

OK, you’re in shock. You’re about to say that:

  • I have to work with these mediocre people that I just brought into my group. Yeah, so what? I can hire really nice and really unproductive co-workers. I’ve seen plenty in my career.
  • If everyone does it, the company will go under and there won’t be any cash wins for anyone! Yeah, except that when I see others doing it, I don’t want to be the one left out.
  • This is plain immoral and intentionally malicious to the organization! Nobody would do this!

Do not ever place people in a situation where rational, logical behavior conflicts with their morals. Your counterpart will either suffer moral trauma (my wife really wanted to go to Hawaii, and there I am, not doing all it takes…) or do the thing that’s wrong for the business.

Here’s an intuitive way to approach this: if your friend lent you a MILLION dollars in cash tomorrow, with no contract or witnesses, with no trace of the transaction, would you be tempted to cheat them and pretend they never gave you the money? How about a BILLION dollars? An amount that will be enough to take care of EVERYONE you love and their grand-children, for the rest of their lives?..

Stop lying to yourself. There is a price for everything. People are rational beings, and they place value on things that are difficult to measure. You probably wouldn’t screw a friend for a thousand dollars, right? But for a BILLION? You would. Everyone would. Don’t put your friends in a position where their morals conflict with what’s good for them in terms of utility. And don’t ever do this to business associates, because I guarantee you – their loyalty to your business is lower than your loyalty to your friends.

Good fences make good neighbors. Good contracts make for fabulous partnerships.

Engineers Don’t Need Babysitting

I’ve recently written about the role of Product Managers in technology organizations. In that article, I looked at what PM’s SHOULD do. I’d like to discuss the subject of one personal pet peeve of mine around what many perceive to be a part of the PM’s role: babysitting engineers.

Let’s imagine the following setup: a 10-engineer technology startup. A single product manager, responsible for the roadmap (what will our agile shop produce – and in what order). They also have commitments to the CEO and the board of directors around business timelines – for example, external partnerships lighting up by certain dates. The PM is also a Scrum Master.

Let’s look at an issue: an engineer frequently forgets to report the remaining/completed hours for their work items. There are several possible interpretations of the issue, and thus, several possible solutions. Let’s look at each of them in detail.

Scenario 1: I “just forget”

The engineer is, presumably, simply forgetful. Someone needs to remind them – and that someone is the PM, as they’re the scrum master. The PM essentially then becomes a walking-talking alarm clock – “Did you update your hours?” – “How about you, did you update your hours?..” Why are you paying a HUNDRED GRAND PLUS to a babysitter?

Allow me to doubt the feasibility of this root cause. Does the engineer forget to put their pants on? Usually not. Do they forget to run unit tests before the checkin? No. When was the last time they forgot to check in a file and broke the build? Never really happened. Hmm. I guess they aren’t a very forgetful person, in general…

Scenario 2: I don’t see the value

The engineer simply doesn’t see the value of reporting their hours. They see it as process for the sake of process. The annoying PM keeps printing the stupid report, and there wasn’t a single time when anything useful came out of following this dance yet.

Possible solutions:

1) Your organization might not need daily stand-ups and up-to-the-day updates on remaining work.

WHAT? DID YOU JUST SAY THAT WE DON’T NEED SCRUM? I’m closing this page right now and unsubscribing from your stupid blog!

Yes, I did say that. Scrum is not a silver bullet. Following the book to the dot will get you nowhere. If your next release is 2-years out, if there are no ambiguity in what you’re building, if you don’t have any budgetary/business/technology interruptions (this does happen!), you can go with a good old waterfall. Or you can change scrum to reduce the amount of daily overhead.

2) Your developer doesn’t have the knowledge that will help them understand the value.

Who uses the roll-up reports? Just the management team, to make prioritization decisions? And you’re wondering why the individual contributor dev has no idea why they should keep updating it? Because they see no value for THEMSELVES. Help connect the dots for them: what you do every day helps us make better business decisions this way and that way, which in turn moves the odds of our business succeeding – and you cashing in on your stock options.

Scenario 3: I don’t give a damn

You’re convinced that the engineer truly understands the value? You talked to them a couple times about it? They still don’t do it?

There’s only one explanation left. They are a lazy ass and don’t give a damn. They simply aren’t hungry – they are coasting along without really caring for success. Get rid of them. They aren’t pulling their weight and are negatively contributing to the morale of others.

In parting, I’d like to once again state – your engineers don’t need babysitting. They need motivation. Treat them like adults, like your partners – and they will pay you back with frenzied dedication and an amazing product.

Arrogance, a fatal flaw

It’s curious to explore reasons for failure. We often discuss lack of vision, poor execution, wrong team as the killer for technology ventures. Allow me to shed some light on my recent favorite: arrogance.

Our field is full of socially awkward, yet really smart people, and many of them see such drastic intellectual superiority over many of their peers that they catch a fatal disease. At some point in high school, they got an A when everyone failed a test. Or, in their big company, they single-handedly saved the day and saved an entire department from slipping. Or they were a young prodigy in academia and wrote a famous paper.

This is when it hit them – dude, I’m really bright. Moreover, I’m so successful that it must be because I’m so much smarter than folks around me. In everything I do, I can only trust my own judgment – because it’s better than that of others.

And this is when they’re dead. Rand Fishkin, the founder of SEOMoz, calls this “the dangerous hubris of the startup world… the original and most serious of the seven deadly sins.”

They’ll be the ones to build a beautiful new gaming system, only to ship it with a controller that’s too large for half of the world to use. Or they’ll build a gorgeous car, and in their wisdom call it something that sounds great to their own ear – but means “it doesn’t go” in Spanish. All of these are the problems of leaders that think that they have the world in the palm of their hand – and they need no one else’s advice.

I stipulate that the cause of death of countless startups is the stubborn certainty of their founders to keep the original course. The reality is, most successful companies changed course drastically since their inception. You have to be flexible to admit a mistake, make a course correction before it’s too late, and vigorously attack the new path.

I’m a big believer that growth happens through what Einstein called a “school of hard knocks.” Through failure and humility, we see our own imperfection, and strive to improve on it. If we think we’re already perfect, the learning stops. The issue is that the others keep learning – and the world keeps evolving. If we keep using the same hammers for the new tasks, we’ll go extinct.

This issue is exacerbated by our talents. There’s a lot of really brilliant arrogant technologists out there. There ingenuity places them into leadership positions – thus putting not just them, but their followers in jeopardy.

Ask yourself, and be really honest – what were some of the mistakes I made in my professional life? What were some of my judgments that ended up being really false? I’ll point to Eric Sink’s Make More Mistakes article as a fantastic inspiration. The guy pours his soul out for the others to learn – it sure is a painful process, but my god, you get to internalize the lesson from those mistakes so well when you put them on paper.

Here’s a couple of my own dumb mistakes.

1. Do the market research before jumping head-first into a venture.

Cocktail Builder, my first entrepreneurial project. Premise is simple: put in the ingredients you have in your bar, it tells you what drinks you can make. Moreover, it says what stuff you can almost make – so that if you were to buy this one extra ingredient, you’d be able to make this cocktail.

Hey, I thought, when building this – I can sell the missing ingredients online, right on the spot! People are really likely to buy at this point! And so I go on and build the entire site. I market it, get pretty good traffic.. And then I start working on adding the monetization capabilities for selling liquor.

And that’s when I realize: you can’t really sell hard liquor online in the US. Ooooops. There goes that idea… and 8+ months of work with it.

2. There will always be people smarter than me. Find them.

Find Touch, my next entrepreneurial venture. My co-founder and I were convinced that we needed to amass a large client base by luring them with a free product offering, before we can follow on with a jobs marketplace that will leverage that client base.

Our first advisor and lawyer – thank you, David Marks – asked a seemingly obvious question: why aren’t you guys going for the real deal right away? Why not create a jobs marketplace immediately, instead of a silly entry offering that’s impossible to monetize? This question saved us months of work and ultimately made us a viable business.

Our second advisor – thank you, John Kueber – kicked us in the butt when we were obsessed with raising money. We spent 6 months agonizing over decks, financial models, introductions to angels.. All while we had basically no product and little traction on the marketplace. John made us drop this nonsense in favor of making the product sing – and in favor of getting some real customers use this product.

This is just the beginning of my list.. At this point, I know that I probably have more wrong hunches than right ones. That said, I do know one thing for sure – if you listen carefully, someone will quietly whisper a thought that never visited your head. You may just find a missing piece of the puzzle, if only you are willing to listen.

….

In parting, allow me to offer you a story from a friend. He was recently interviewing in a successful technology company for a senior position; he was speaking directly with a division’s vice president. He asked the VP a simple question: do you see the role of your employees as implementors of your vision, as an extension of your own capabilities?

The VP answered “yes, I simply cannot implement all of my vision myself, so I need my team to follow through on it. I frequently have issues where the team doesn’t quite understand the full scope of my intent, so they have trouble implementing it.”

Is it just me, or does that phrase smell like “I’m the smartest ass in town and I know the solution to every problem. I need cogs for my machine to execute my vision.” No matter how brilliant that guy’s vision is, his team is going nowhere. Innovation comes from diversity and from nay-sayers – from passionate, open, and respectful disagreements. Innovation comes from employees that have autonomy, mastery, and purpose as their motivators.

Interviewing – Challenge Your Assumptions

We’ve all been there. This guy comes in to interview, and three minutes into it you get this feeling. He’s all words and no action. He’s an arrogant bastard. He’s an architecture astronaut.

The interview goes on and on, and with every new topic, you find more and more reasons around why your initial sense is true. Hey, he didn’t give any credit to his peers. He invented it all himself, ha. What an ass!

This is all nice and great, except that you’re really sucking as an interviewer at this point. You had a gut feeling – you made a decision in the first few moments since you met the person – and you’re essentially looking for proof for your already made-up mind.

Since hiring superstars is your #1 priority, this mistake, in my book, is in the category of “lethal” if you’re a founder of a company and you’re bringing in employees #3, 4, and 5.

I’ll go further and stipulate that we’re hard-wired to be making such mistakes. There’s a curious amount of research on first impressions – the amount of judgment people pass on from the first 5 seconds of their interaction. In one leadership training class I took, they brought together a diverse group of people – completely different ages, industries, seniority levels. They had us pair up with a random person in the class, without exchanging a single word with the partner. Then, each of us gave some thoughts about the role, seniority, and industry of the other.

It’s shocking how precise – and how correct! – most of the observations were. The other person didn’t even open their mouth!..

The reason we’re hard-wired to make such a fast, snap call, I believe, is because of the basic fight-or-flight response. You need to judge whether the oncoming object is a danger to us; if we’re bad at it, we’ll get eaten. Thus, natural selection helps advance those that are good at it.

The problem, of course, is that at the workplace, the interactions are much more complex. You WANT to hire people that are radically different from you. You want to hire nay-sayers. You want people with radically different backgrounds, those that approach problems from the other angle. You want the whole of your company to be more than the sum of the individuals. If you fail to challenge your snap judgement, you’ll have a bunch of copies of yourself – creating an environment that magnifies your weaknesses, instead of compensating for them. Like the kings of the medieval times, you’re risking to suffer organizational hemophilia – the disease of “too much blue blood.”

Instead, I invite you to state the assumption that’s popping up in your head, and ask: what could this person say to convince me that they’re NOT what I think they are? If I think they’re not technical enough, can I ask them to code something? If I think they’re too full of themselves, can I ask them about a time when they were wrong? Literally, drop the current conversation topic, and abruptly switch to this new question.

Note that your first impressions, in some cases, will turn out to be exactly true. For example, one gentleman I recently met, I was getting a sense that he’s quite stubborn. I asked him to recall a time when he was convinced by someone else. A time when they thought one way was good and true, but someone jumped in and convinced them of a different approach.

The gentleman thought for a while, and came up with quite a telling example – as a business leader, he saw the technology group gravitate towards a process that he thought was dumb. He didn’t force his opinion down their throats; he let them have it their way. Note a subtle difference: he was NOT convinced himself; he merely allowed his people to make what he considers a mistake. This was quite eye-opening – by focusing on the assumption I made and precisely targeting it, I gave him an honest chance to convince me that my assumption of his stubbornness was wrong; instead, he reinforced it.

I encourage you to do the same the next time you’re interviewing someone for your team. What could this person say to convince me that they’re NOT what I think they are?

Platform as a Cop Out

It’s fascinating how the Microsoft glory isn’t letting people sleep well at night. Most entrepreneurs I talk to these days understand that the way to create a lasting advantage is to create a platform – something that entrenches you way better than an application.

Quoting Mr. Ballmer of Microsoft, “Developers! DEVELOPERS!! DEVELOPERS!!!

The reason, of course, is that every application that gets built on your platform creates a sunk cost and deeper entrenchment. When a developer decides to take on your platform – when another company essentially BETS THEIR LIFE SUPPLY on your platform, you have an ally. That ally is selling their product to end customers. Every time they make a sale, you win tremendously – even if you didn’t make a penny from that transaction. The entrenchment of your platform – and thus, your lasting advantage – has just gone up, because it’s now more difficult to switch – all that money spent on the existing application is already gone. Why reinvent the wheel? We already have a VB-based Access 97 application that solves our problem..

You’ll laugh and point fingers at IT departments of companies stuck in 1997, but this logic very much makes sense. I’m Johnson & Johnson. IT is very much a SERVICE, not the core of my business. IT Department built applications that do the job. Fine, they aren’t great – they don’t scale or deploy easily, and there’s recurring cost to maintaining them that keeps going up – but compare that cost to switching to “free” Linux or super-user-friendly-and-sexy Mac OS, and the choice is clear. They’re sticking with Windows. Joel Spolsky describes this phenomenon well in his “API War” article.

Here’s a problem, though: everyone understands how great the platform advantage is, but few know what it takes to get a platform to win. They think “we have a sexy product; let’s now open up our product for various partners to build on top of! Come on, biz dev people! GET US SOME PARTNERS ALREADY!”

Ummm. How do I say this politely. Your platform story is a cop-out. A platform is viable only if it comes with several MAGICAL applications built on top of it. Applications that INSPIRE developers to play around and experiment. Applications that demonstrate the power and desirability of the platform.

Let’s look back at what Microsoft did when pushing Windows. The key to that victorywas MS OFFICE. Office is the flagship demo application that has always shown developers that OH MY GOD this platform can really be used to build amazing shit. When MS was pushing Windows over DOS, nobody really knew what this Graphical User Interface thing was about. Nobody trusted it. And KABOOM, here comes a fantastic suite that everybody wants. The application DRAGS THE PLATFORM by its ears towards success. Suddenly everybody wants to get Office – but to run it, you need Windows. More users have Windows -> more developers feel like creating software for it.

Another example: Apple and its iPhone development platform. Look back at iPhone v1. It had NO custom applications. Why? Because it made no sense to invest into the platform before there was a flagship set of products to demonstrate its power. As soon as end-users LOVED the mail app, developers took that app as a paradigm for stacked panel interfaces. Customers ENJOYED the tabbed music player interface – and developers started imitating it in their apps, too. If Apple took the Microsoft mobile phone road with its software back then – clunky built-in apps, no real flagship end-to-end scenarios to imitate – iPhone would have been a flop just like Windows Mobile 6.

Here’s the rub: nobody knows your platform better than you do. If YOU can’t ship a few amazing end-to-end solutions on top of your platform, how do you expect others to do it? External partners will start with a little tinkering – replace the MySQL adapter in your sample app with a SQL Server adapter. Maybe change the reporting engine from the sample MS Excel to Tableau. Oh wow, it still worked. I guess I’ll be brave and try a bolder modification of the sample app now.

If you’re building a platform – or even harder, a platform company – make sure that you have some SHINY end-to-end solutions built on top of it the day you ship.

What is the single most hurtful way I can interpret this?

Psychology and human relationships are so undervalued in our brainiac, meritocracy culture of technologists. Particularly in software, where there’s a lot of people with vast amounts of intellectual horsepower – and a lot of passion – conflicts arise. Many talented engineers are quite introverted – and socially challenged at the same time; this creates a dangerous mix – we’re often like children playing with weapons at the kitchen table.

No matter how brilliant we are , we spend lots of time making decisions about what to build – versus building it; discussing the variations, instead of trying them; brainstorming instead of implementing. This is good and natural – there has to be a funnel of ideation, where a lot of options are considered, but only few make it through. It makes sense from the cost and efficiency perspective. Here comes the rub, though: generating the ideas and vetting them is a conflict-generating process, by definition; unless we know how to deal with conflict – as mature adults – we’re going to fail as engineers.

I’ve once taken a “soft skills” training that changed my life. A set of CD’s called Crucial Conversations* describes the dynamics of conversations between passionate, invested people discussing matters with high stakes – when opinions differ.

Sometimes, a difference of opinion comes from a asymmetric information – person X knows something that person Y one doesn’t. In this quite typical situation, person Y tends to take the facts that they do have, and combine them in the single most hurtful way they possibly can.

Here are some examples:

1. Hotel Night

A wife finds a single hotel night and a restaurant charge in the husband’s credit card statement. The hotel is down the street. The husband didn’t sleep at home that night, he said he was on business travel.

OK, confession time. What’s on your mind? How do you interpret the situation? OH WHAT A CHEATING BASTARD!

That’s exactly what the wife will think – naturally, that’s what’s hard-wired into us – based on this information, too. The natural reaction would be to confront the husband about infidelity, yelling and screaming and all.

What might this be in reality? The husband might have really been on a business trip. He might have had an office visitor from out of town, and he had to take care of him on a short notice. So he placed the charges on the personal card.

2. Reckless Driver

You’re driving down the street in your quiet neighborhood. Entering an intersection, you see a car that’s RACING towards your, with screeching tires, going easily 30 over the speed limit. He beeps and shouts loudly, swerves around you, almost hits your car, and speeds away.

What’s your natural reaction? FUCKING MANIAC! You almost killed me! I have a little kid here that I’m driving to school, don’t you see my “kid on the back seat” sticker? Your license should be suspended! You should go to jail! What an inconsiderate bastard, putting the lives of everyone around them in danger!..

OK, time for empathy. The guy has his wife next to him, she’s about to give birth. She’s in terrible pain, her pregnancy didn’t go well, and he’s really trying to get her to a hospital.

……..

You’re feeling pretty bad about these snap judgments, aren’t you. I sure was. And yet we’re still making quick-and-dirty calls like this all the time, confronting our coworkers and friends with accusations that damage the sheer foundation of our relationship. How do you think the husband feels when the wife accuses him of cheating? Do you think he’ll feel love and affection and the strong bond they’ve enjoyed so far?..

Let’s try a different approach.

Now that we know that our natural tendency – as humans – is to interpret the lack of information in the most hurtful way possible, we can compensate for it. The question that really helps in such situations is Why would a reasonable and decent person do this?

Why would a husband pay for a hotel + restaurant and not tell his wife, if he’s a reasonable and decent person? Why would someone put the lives of people around them in danger by reckless driving?

With these questions, we’re exercising empathy. We’re placing ourselves in the other person’s shoes. This simple question not only creates a bridge between you and your “opponent” – really, your friend, your loved one, your co-conspirator in your startup. It removes the blindfold of rage.

So next time you find yourself in a conversation where you’re doubting the integrity of your friend, ask yourself: “Why would a reasonable and decent person do this?”

*Microsoft offers the Crucial Conversations curriculum as a 2-day in-person class to employees – I highly recommend attending it. It’ll change your personal life.

What are Product Managers for, anyway?

I’ve written about the core pillars that drive technologists. In this article, I’d like to drill in on the discipline that’s perhaps least understood – product managers, or PM’s.

Technologists have one fundamental weakness. Like all engineers, they like creating worlds from scratch. They liked disassembling toys when they were kids, and putting them back together slightly differently. They love the control, the thrill that comes from playing God in the virtual world where everything is possible. This causes a tendency to tinker – just because tinkering is fun. This is particularly true in well-funded startups and labs organizations in larger companies.

When your craft is fun, it’s great. You enjoy every moment of messing with the code, laying out those architecture diagrams on a whiteboard with your buddies… The rub, of course, is that at some point, you need to make a profit. You know – step 1: inspire everyone with an idea, step 2: execute on it, step 3: profit. If you keep tinkering forever, your VC will shoot you in the head, the department in your large company will get dismantled, and the bonanza will end.

Basically, you need adult supervision. You need someone who loves and understands technology, but doesn’t get the ultimate pleasure from creating the most robust and beautiful architecture in the world. You need someone who’ll kick you in the butt because your customers have a REAL PROBLEM and the elegant technical solution you’ve been pondering for a few days doesn’t really matter for the client. The client wouldn’t care less if you shipped a SPAGHETTI CODE UNMAINTAINABLE PIECE OF CRAP if it solved their problem.

You need a customer advocate. Someone who has EMPATHY as the core pillar that drives them. Someone who feels the pain of the client and wants to do whatever it takes to have that pain go away. Yet, they are technically savvy to be able to maintain an intelligent conversation with an engineer – they’re not an MBA with zero technical background and Excel financial models in hand. Joel Adams – he was the first to fund Michael Dell of Dell Computers – once said, “When I’m valuing a company, I usually subtract $100,000 for every MBA on the team and add $100,000 for every engineer.”

That customer advocate is your product manager (PM). If you’re a startup, you need ONE product manager. They’re going to be the CEO of your product. Yes, you heard me right – if you’re a CEO of a technology company, you have much more to worry about than just your product. Hiring superstars is your #1 concern; #2 is being the Chief Earnings Officer. You need somebody in the weeds, somebody that’s not distracted by the fundraising and making payroll and getting Jenn the signing bonus despite the fact that the board is against it.

I like to think of a product development as a triangle with these vertices: test, dev, and PM. Here’s what happens if either of the vertices is weak:

  • Test: product is buggy as hell and clients see crashes and data loss.
  • Dev: product cannot be improved over time and an incremental v2 costs an order of magnitude more than it should.
  • PM: the product is technically robust and doesn’t fail, but nobody wants it. It solves no real-world problem.

The mission of the product manager is to instill the customer pain into every single engineer on the team. Let me give you a contrast:

  • Product 1: the PM understands the client well, and defines the product through technical specifications in EXCRUCIATING detail. Field names in the database tables, error messages to the comma.
  • Product 2: the PM understands the client well, but instead of going deep into the details, they explain the reasoning behind the product to everyone involved. They help engineers understand who the client is, what they do every day. How the product will help the customers. They drag the engineers to user research studies, forcing them to watch how customers struggle to find the damn OK button.

Beside sheer capacity issues, the PM on the product 2 will be more successful simply because it’s not humanly possible to oversee every decision. Engineers will be making calls all the time, and some of them will be wrong if they don’t understand the WHY. This is exactly the reason for getting them to feel the pain of the customer – instead of spoon-feeding them the details like they’re dumb.

A couple more notes on what PM’s mission is not –

  • The PM should not be a people manager. Google, Facebook, Redfin, Zillow, and many other companies subscribe to this vision that was initially created at Microsoft 20 years ago. An amazing book on PM called How would you move Mt Fuji describes the formation of this vision beautifully; the crux is that if the ideas about what the product should do come from my boss, I’m highly unlikely to say that they suck. If the PM is my peer, I’ll freely tell them what sucks and outright refuse to code up their dumb solution. The key to PM success is the ability to influence design decisions without authority to force them down the throats of the engineers.
  • The PM should not be a project manager. A project manager is someone who’s responsible for the SCHEDULE. Someone who’s responsible for the resourcing. PM’s have no managerial power over the engineers – so they can’t tell an engineer to hustle or really promise a delivery date. Those responsibilities should land on Dev Lead’s shoulders.

If I got you interested in the subject of the role of PM, you might want to check out this article from my brilliant friend Angela.

Manufactured Happiness and Stockholm Syndrome

A very curious effect happens to people in bad situations. They tend to rationalize that the world around them is actually not bad at all. Moreover, they will honestly, authentically believe that they’re better off because of the adverse position they’re in. There’s a fascinating TED talk about this concept of “manufactured happiness”: a true sense of satisfaction in a situation that any outsider will call straight-up terrible.

For example, someone who’s been on a powerful senator for 30 years, got publicly discredited in a scandal and lost it all, and now lives a quiet life. Or, someone who lost all their limbs in an accident. Someone who spent most of their life in jail unjustly, only to be released in old age with an apology. They all proclaim – in a very honest, deep way – that they’re truly happy that these events happened to them.

You can argue that all of these are examples of nature’s coping mechanisms that are hard-wired into our brains. When we feel that there’s no choice, no exit from a bad position, we give up and start truly believing that it’s all good.

Here’s a problem, though: the world is not black and white. Particularly at the workplace, there is no single situation that is so unchangeable that you have to put up with it. Your brain, however, will be tempted to play that same trick: it’ll try to convince you that it’s all good.

Wait. That person that just yelled at you for an hour – that’s objectively not so good. The fact that your startup sank millions in VC money and still has no idea how to make money – that’s not quite so good. All your coworkers left – hmmm… The product captured 10 times less market share than you expected.

You’ll be tempted to rationalize, every single time. You’ll keep telling yourself that this is just a part of life, and it’ll all get better.

Stop.

There’s time to press on, and there’s time to step back and think. Ideally, your thinking will be reinforced by an external mentor, someone who isn’t intimately involved in your day-to-day tactics. Evaluate the crap you see at your workplace in objective terms. Not in the context of subjective spin created by “intellectually shallow PowerPoint BS artists” (hat goes off to WhoDaPunk for this expression).

My brilliant friend and mentor once likened the “stuck in a crappy work environment” situation to the Stockholm Syndrome: the victim of a kidnapping falls in love with the kidnappers. You fall in love with the crap that’s falling on you. It’s normal, that’s how it’s supposed to be… And then, three years later, you look back at that mess and think: “why did I put up with all that? Why didn’t I put up a good fight, or find a better place to work?”

Another great mind suggested that it’s very difficult to objectively judge whether the situation you’re in is good – tolerable – and temporary, or not. All you know is where you are now. You also have a few experiences from your prior life. You know that switching to another line of work, another company, whatever – that has cost, too. You start from scratch, and like any optimization algorithm that employs random jumps to get rid of the possible local maximums, you risk to wander forever.

Don’t sacrifice a moment of your life. Take some time to reflect regularly – and do it with an outsider friend.

Take the Job Where You’re Really Wanted

I’ve been making this exact mistake for the vast majority of my life. Reading the job description, coming to an interview, listening to what the interviewer wants, and then carefully reciting the story about their dream candidate – me, that is – in a way that makes them feel like I really am the manifestation of the perfect candidate on Earth. I’m Plato’s Form of the dream employee.

You want someone to do project management? I LOVE PROJECT MANAGEMENT! I’m anal retentive!! You want someone who’ll be a visionary?? I’m the most creative technologist ever! And of course I’m also detail-oriented,  because I’m a special kind of creative guy that isn’t like all the other fluffy creative dudes. Ha.

It’s such an easy temptation – and a fight that’s so easy to win and lose at the same time. It goes approximately like this in my head: “You can force yourself to be anything! Just get the damned job and then you’ll think about whether you want it!..”

What a pile of crap. A typical example of a short-term win (yay! got a job!) leading to medium-term disasters (hate every moment at the job and work performance is terrible as a result).

My dear friend and mentor once gave me an amazing advice: “Wear your heart on your sleeve… People that you want to associate with will immediately be attracted to the true you… People that you don’t want to be around will be repelled by your true self – and that’s a good thing.” There is just not enough time in life to waste a moment of your life on doing something that you deep down inside don’t enjoy.

Instead, I lately go with a radically opposite approach. You know what? I’m not perfect. I passionately hate project management. I’m a technologist and an efficiency junkie. I hate process for the sake of process. I love passionate people and can’t stand mindless, political drones. Note how truth is polarizing: some will be repelled; others will say “wow, this guy is actually authentic and is in touch with his true self.” And those are the people that I want to connect with.

Let me take that thought even further: don’t fight to get any job. Yes, times are tough, this might not be the time to be picky. But if you’re like me, and are a fan of looking for a job when you already have a job, then be extremely picky in your search and don’t fake a single breath. Once you find an opportunity that looks good, watch for the reaction from the other side: if this is meant to be – and you’ll be happy at the job – the hiring managers will be ECSTATIC about you joining in. They’ll be blind to any of your faults. They’ll fight tooth and nail to get you the last dollar you asked for. They’ll tell you how perfect you truly are for this job – and you know what, you probably are. Because you were your true self when you were applying.

Avoid The Sea of Mediocrity

I recently wrote about motivational issues associated with large teams. In this post, I’d like to explore organizational aspects of this issue.

Larry Ellison, the CEO of Oracle, is known for a curious approach to solving problems in the product teams. If he sees a team that’s struggling,  he pulls a person from this team – reassign them – until they “stopped useless meetings and started shipping.”

Steve Jobs of Apple, said that “a small team of A players can run circles around a large team of B players.”

The famous book Mythical Man-Month that shaped generations of engineering managers explores one side of this issue – inefficiencies related to communication, where every new engineer needs to talk with all the other engineers in order to be successful. Communication costs grow exponentially with the addition of every new team member.

Joel Spolsky, another brilliant mind, speaks of “best engineers being ten times as effective as average engineers” in his famous essay. He backs it up with very curious research.

Guy Kawasaki says that “A players hire A players; B players hire C players.”

All of them are really saying the same thing: if you think you need a large team to solve the problem, think again. If you think you can hire a lot of OK developers to solve a large problem – by splitting the problem into small chunks – you’re going towards failure. If you think that compensating your engineers at the 66th percentile is going to bring you the best talent, try again.

There’s a simpler way. Instead of hiring team of 20 mediocre developers – and paying them 20 “industry average” units – hire 2 SUPERSTARS and pay them 2 units each, way at the 99th percentile of comp. Take the issue of salary completely off the table. Create the best possible working environments for them, with free on-site massage, best tools money can buy, and most importantly, colleagues they can be proud of.  There’s one important point to this rhetoric: the superstar you hire has to be AMAZING. Not just good, but head and shoulders better than you as an engineer. They have to be a true “free electron.”

One single moron in the office, and every superstar that ever interacts with them will ask “what does it say of me that I’m working in this office? This guy is a developer just like me; he’s probably bringing in the same cash home. Am I stupid? Are the managers here not understanding who’s good and who’s not? This guy wastes so much of my time..”

What, you’re telling me that you can’t afford to pay your developers twice the industry average? But you CAN afford to pay ten developers that are doing the same amount of  work?.. I’m literally talking about saving FIVE TIMES the cash. And gaining the efficiency – because that one guy will not have the useless meetings every day just to align the schedules.

I’ll say even more – if you bring in someone average, you’re making a NEGATIVE impact on your company’s bottom line. Over the long term, you’re assuring its place in the sea of mediocrity. A brilliant friend of mine – a true free electron – once shared a story about working at a large company. He and a friend were superstars on a SWAT team, kicking serious butt and attracting positive attention of the executive team. They wanted to bring in a third person to their tiny group to help scale their efforts. Both of them were amazing engineers; those that are 10 times as productive as the rest. They wanted someone at their level of output. Their request was blocked by HR, who suggested that “you should get an underachiever to transfer to your team; by working with you, they’ll get better!”

What do you think they did? Did they agree to bring in an underachiever? Did they stay motivated? Were they convinced of the HUNGRY PASSION of the company to succeed?..

I once personally was a part of an organization where someone truly incompetent was brought in. After a few weeks in the office, it was obviously clear to everyone that the hire was a mistake. There was just one little problem, though: it took a painstakingly long time to fire them. 18 months. This was the time it took to build a case and convince HR that there is enough documented failure and no possible lawsuit coming, so they could fire them.

What do you think was the impact on the morale and output of the team?..

Avoid the sea of mediocrity. Avoid hiring average people like the plague. Hire PASSIONATE, HUNGRY people that are SUPERSTARS in their field. Compensate them in a way that makes them forget about other jobs – and never interview externally because of pay.

Cut Down Those Choices

You’ve certainly heard about the phenomenon called The Paradox of Choice. If you haven’t read the book, I welcome you to take a look at a 20-minute TED talk on the subject.

Cliff notes version: you’d think that having choices makes you happier. And wrong you are. If the choice is made for you, if you have fewer options, you in the end will be happier with the result. Choice messes with your head, making you THINK that the process of choosing is liberating, while in reality, it plain sucks. Why? Because of the What-If thinking that poisons the brain after the decision is made (here’s one more fantastic TED talk from a Columbia Biz School prof on the subject).

Yes-yes-yes, this all can be taken to an extreme and converted to Socialist crap. I’m not talking about societies here – it’s obvious that removing all choice and having a central entity at the helm is plain stupid and Russians have tried and I’ve experienced this personally and my god it sucks.

I’m talking about small choices. Which of the 5000 templates do I pick for my essay? Which of the digital cameras to buy? Do I want to send the Christmas e-card on the 21st, 22nd, 23rd, or 24th?..

Every one of those choices takes mental capacity to make. Every one of them makes you LESS happy in the end.

Software engineers  frequently think about flexibility as the measure for the usefulness of the application. They put in knobs to do all permutations of the possible tasks. They offer settings that let you mess with the inner working of the application, all for the purpose of making complex things possible. I’ll tell you this much – every one of these choices is making SIMPLE things way harder. They take the attention away from the obvious, 95% path, all for that fringe scenario you were going for.

A great design book called Don’t Make Me Think whines about the stupidest paradigm in software development – the “are you sure?” dialogs. Well f#@!, if I wasn’t sure, I wouldn’t click the damn button, would I?.. They speak about the gigantic settings dialogs like this one – exposing features nobody cares about in a huge hairball of unrelated knobs, switches, options..

I’d say this much: every option you allow the user to modify is a cop-out. You were too chicken to make a choice for them, and are instead punting the problem, pretending that this choice will make the customer better off. Guess what, it won’t. Grow some cojones, make the decision that optimizes the key path and cuts out the unnecessary options. Find the ONE scenario that your product solves well, concentrate everything you have on that scenario. Be the first generation iPhone – forget about FM radio, Start button, multiple devices, hardware keyboard, good battery, applications.  Deliver a BEAUTIFUL end-to-end experience in very few areas. FORGET about the rest.

Hey, if you think I’m wrong, feel free to follow the other path – the path of features, the path of Windows Mobile 6 – the most flexible platform out there! You can make any application you want on it! So many hardware choices to select from! Physical keyboard! It’s cheaper! Has much better battery life! FM radio!..

What Are People Paying for This Today?

So, your brilliant idea is shaping up, and you’re ready to go all steam ahead – get some funding, quit your day job, and move into your mom’s garage. One key question you kept asking yourself was “what is the potential of this business?”

Your typical market sizing goes like this: “20 million target customers; with target penetration of just 1%, we should have 200K clients, each bringing in $50, so our target sales for us are $50*200K = $10M.”

This is all nice and great, except that this model is just full of crap. You have no idea whether clients will pay $50 for your service. You have no idea whether 1% penetration will be even remotely achievable.

Let me offer an alternate model – a model summarized by “what are your prospective clients paying for this today?” It’s based on a fundamental idea that if you have to convince your clients that they have a need, you’ve lost already.

Here’s how it works:

  1. Pose the problem that your business solves.
  2. Find the ways that customers are solving that problem today. If they aren’t solving it today – through some clunky or inefficient means, hopefully – go back 3 spaces and come up with a better idea.
  3. Find out what the customers are paying for this problem. This will be the cap of what you’ll be able to charge for your improved solution.
  4. Find out how many customers are paying to solve this problem. This will be your target market size, the one you’ll multiply by the imaginary “market penetration target.”

Let’s try going through this on some of the businesses / ideas that are close to my heart.

  1. CocktailBuilder.com. Motto: find drinks you can make from ingredients in your bar. Do customers have this pain? Yes. Do they PAY for somebody/something to solve it? Nope. Result: complete fail as a  business.
  2. FindTouch.com. Motto: help create quick job connections in the Health and Beauty industry. Do customers have this pain? Yes. Do they PAY for it now? Yes. What are the existing solutions? Use Craigslist. How much are they paying? $25 per job posting. How many are there? A hundred postings per month per metropolitan area.  Result: sales potential of $25 * 100 * number of major cities. Much lower than you’d get through other forecasting approaches, and MUCH more realistic in hindsight.
  3. kCura, a company built by a talented gentleman I met recently. Motto: help companies save money on the e-discovery part of litigation. Do customers have this pain today? Yes. Do they PAY for it now? Yes, $400/hour to lawyers reviewing thousands of documents. WOW, now we’re talking. Give them a 20% efficiency gain over existing methods, and you’ll save them a TON of cash. Result: fantastic growth and a very promising business.
  4. Cloud computing. Motto: help ride the usage curve without investing into infrastructure. Do customers have this pain? Heck yes. Do they pay for it now? Of course, through all of that hardware that just sits there most of the time. You get the drill.

Apply that same model to your business before leaping forward.

Slaying the Network Effect Dragon

You have a brilliant idea. There’s just one problem: there’s someone doing something similar, and they’re really entrenched. They command 80% of the market. They have much more capital than you, and a stronger brand. Yet, you believe that you can take them – because the way you solve the problem is better.

A famous venture capitalist, Paul Graham once said that a 10% better solution is not enough; for people to switch, your solution needs to be 10 times better. Lesser known, but absolutely brilliant Steven Sinofsky suggested that “10% better is 100% different” – a small delta is not good enough to change the behavior.

OK, let’s be honest here. Is your solution *really* 10 times better? You’re building a new photo sharing site. It’s fast, gorgeous, and so much more usable than Flickr. But is it 10 times better? How can you judge?..

Well, create a quantifiable metric or two. How long does it take to upload photos? How long does it take to view a 20-picture album? On a scale of 1 to 10, how would you rate the usability of each option?

I guarantee you, if you’re building a general-purpose photo sharing site, the measurements between you and Flickr are not going to be 10 times different. You’ll be somewhere between 10% and 50% better if you’ve done your job well.

So what now? There’s no way to build a better Flickr? Once someone captures 90% of the market, there’s no more innovation happening? That’s absurd!

Of course it’s absurd. Facebook overtook Myspace. Google ate Overture/Yahoo. Both of these marketplaces – social networking and search advertising – have HUGE network effects: the more clients you have, the better you can serve them, thus creating a barrier to entry for competitors.

What’s the secret, then? How did they do it? Did they create solutions that were 10 times better? I think you can answer this question yourself. Was facebook 10 times more usable than Myspace? Not 10 times, maybe 50% more usable because of a cleaner layout and streamlined workflows. Then HOW? HOW THE HECK DID THEY DO IT? And how do I do the same thing with Craigslist, Monster, Flickr, etc?

I’ve asked that same exact question to a deep thinker named Gary Flake. He gave me the most structured and comprehensive answer I’ve heard to date. There are two ways to break the entrenchment of a competitor in a marketplace with a strong network effect: bite off pieces of the long tail, or funnel an existing community into this new market.

1. Long Tail

Let’s start with the long tail. Craigslist is a general-purpose classified ads platform. Does it serve everyone equally well? Heck no, it serves everyone equally CRAPPY. Why? Because by definition, a general-purpose system does a mediocre job for everyone. How do you eat their lunch? Start with a system that targets a sub-section of their customers – a sub-section that’s heavily under-served.

Find Touch is an example of exactly this kind of business. Take a TINY niche – massage therapy jobs – and create a solution that is SUPER targeted at this exact scenario. Is THAT solution ten times better than craigslist for hiring massage therapists? Yes. Is Find Touch in general better than Craigslist for all other things? Heck no, it doesn’t even compete.

Gary continues to stipulate that once you’ve bitten off one piece of the long tail, you can continue along the same path – in case with Find Touch, jumping at adjacent, highly targeted areas like jobs for nail care techs, estheticians, hair stylists. Through laser focus, you are able to create an experience that’s RADICALLY better – and with a growing customer base, you will at some point find yourself wielding a sizeable chunk of your competitor’s customer base.

Gary likes to point out that Google did exactly the same thing with Overture/Yahoo around search advertising. One of the key promises of Yahoo/Overture to their client base was “exact match” – you pay only if the person using the search engine is looking for EXACTLY the thing you’ve bid on. Google said “we’ll go after the fringe – fuzzy matches.” With that new approach, they first got the most desperate of the advertisers (because fuzzy match was completely unproven, risky, and as some argued, a waste of money). Once they proved the idea, they were able to go after the entire marketplace – adding the mainstream (exact match) while popularizing their key competitive advantage to more and more of the clients, thus entrenching themselves even deeper. Fabulous win.

2. Funnel

When you have a successful product, and you’re entering another marketplace that’s in any way related to that product, you might be able to leverage that advantage to gain a head start on an entrenched competitor in that new market. What does this mean? If you’re a Redfin – you command a large audience in the real estate market – and you want to enter the mortgage marketplace game, you can funnel your existing client base towards your new business. You can argue that LendingTree.com has a HUGE customer brand in this space – and so do regular banks. But with a loyal audience that very much needs mortgages, Redfin can easily jump into this space and reap immediate returns.

Another example: think about Opera (a FANTASTIC browser that’s been around forever, but never really grew in popularity) versus Chrome. Google commands a tremendous customer base with Search. You might be surprised to hear this, but most non-techies think that a browser and a search engine is THE SAME THING, so the two products are quite complementary. Chrome took off like fire – yes, it was a good product, but the reason it was able to penetrate a market place that took FOREVER for Firefox to crack open was due to the funnel that Google created from their search business towards this new enterprise.

Next time you’re entering a marketplace with an entrenched competitor, think about biting off the long tail – and think about partnerships you can establish that will help you funnel a good-sized customer base into your new offering.

Emotional Connection with The Computer

OK, this article isn’t about virtual pets, Sim-girlfriends, or robots that cook better than your wife.This article is about why people buy Apple products, and what you need to do to create that same level of fanatical following for your company’s stuff.

iPhone is a killer device – and it’s successful not because of its features. Comparing to the ancient Windows Mobile phones or even the Zune, it completely sucks – no radio, application development platform is this Cocoa crap that’s a decade behind C# and Java.

The iPhone is successful because the things it does, it does *very* well. Every aspect of the user experience, every interaction is so polished, it feels like it was (1) designed by a single hand, and (2) was created by a true craftsman. The device creates an EMOTIONAL RESPONSE. I can’t help it but smile every time I drag my finger across the screen to switch to another page on the Home screen. The animation follows my phisycal action PERFECTLY. It does not miss a single frame.

Contrast this with the Android phones – same functionality is jagged and laggy. Apple has their damned walled garden, it’s expensive and tied to AT&T, the network provider almost everyone hates with passion. Yet, the iPhone is incredibly successful in the mainstream, among non-techies – and Android is popular with just the nerds.

Emotional connection is completely orthogonal to functionality. You can have a beautiful product – a product that evokes wows – that does NOTHING AT ALL. It will obviously be difficult to sell, I’m not recommending you build one – just realize that the two characteristics are very much separate.

Also, note that engineers by default tend to value functionality over polish – and that polish is exactly what makes the emotional connection. Click on the checkbox and wait half-a-second for it to become checked – no big deal in terms of functionality, right? HUGE deal in terms of customer perception. Most non-technies won’t even be able to quantify what makes them dislike a product, but they’ll say that it “didn’t feel polished” or “felt like yet another bleh product.” Invest your heart and soul into polish, and you’ll get the usability study participants to say “wow, this must have come from Apple.”

Here comes the rub: features and polish compete for your company’s resources. Unless you do something, features will always win. Your product will fall smack in the middle of the sea of mediocrity, evoking the same emotions as as average accounting spreadsheet.

With so many technologists ignoring the emotional aspect of the computing experience, I encourage you to think about it as your potential competitive advantage. It can create the level of loyalty that is fundamentally stronger than the dependency on your features. Microsoft had a tablet 5 years before the iPad; those tablets ran all of the applications on the Windows platform. Seemingly, a huge competitive advantage – a FEATURE advantage, a platform entrenchment that seems insurmountable. We all know how the iPad was able to gain serious market traction, even with this disadvantage to begin with.

So make the every N-th sprint of your development cycle a “polish” sprint. Refuse to take any features – have everyone running around with a fine comb, looking for ways to make your product beautiful, desirable, usable. Even better, hire dedicated User Experience people.

The Core Pillar That Drives Technologists

This article is about putting labels on people. If you’re a technologist – a nerd at heart – I’m going to put you into one of three categories. I’ll call them D, T, and P. I’ll explain what they are in the end.

D’s like beautiful code. They love complex algorithms, elegant systems, clever hacks. They thrive on discussing design patterns, threading, synchronization. They care about HOW something is built. They don’t care what the thing is – a microcontroller in the pacemaker that saves lives or a mission control system in a nuclear weapon.

P’s don’t give a crap about how something is built. They care about the customer’s pain. They almost *feel* this pain themselves, and this empathy drives every action they take. They want that pain to go away. They want the double entry to disappear. Seeing the “OH MY GOD THIS IS AMAZING!” expression in customer’s eyes is the ultimate goal for them. P’s don’t care if the way this was achieved was through copy-pasting the same stupid code snippet thirty times, creating an unmaintainable, ugly piece of code.

T’s like breaking things. From their early age, they found satisfaction – true, internal pleasure – in pushing the boundaries of our everyday objects. Any creative person might give you dozens of ways to use a paper clip in a few minutes. T’s will tell you how to break a paper clip –  and it will be quite a natural mental exploration for them. T’s just feel so snug inside when they can look at a piece of someone else’s work, and find a way to make it do unexpected things. T’s have a drive to prove their mental superiority over the creator of the product.

Fine, fine, this wasn’t a difficult puzzle. D’s are developers. P’s are PM’s, product managers (Microsoft calls them “Program Managers”). T’s are testers.

Here’s why understanding these core pillars might be useful: when you know what should drive a successful person in this role, you can interview for it.

Test. Don’t ask them whether they’ve written automation before. Ask them to list 50 ways to break an elevator.

Dev. Don’t ask a Dev whether what the difference between ShowDialog() and DialogBox() is. That trivia can be looked up in 30 seconds or less. Ask them a basic algorithmic question; ask them to code it in any language of their choice.

PM. Interview for empathy, and the ability to convert that empathy into designs. Ask them to design an ATM for a 5-year-old kid. Ask them to design a remote-control system for window blinds.

P.S. If you didn’t guess from the rest of this blog yet, I’m very much a PM. Most of the code I write is quite crappy – it’s a means to an end.

Hungry Artist Paints Way Better

When you are running a startup, it’s easy to imagine how great life is for the head honcho of the Microsoft Bing group. They have all the resources in the world available to them. The company is pouring money at them – BILLIONS every year! There are thousands of people working on the product! With that might, anything should be possible, right?..

You compare your tiny 20-person startup to Bing, and you feel inadequate. You’re worried about making payroll. Investors are holding you by the balls. You sort-of have market traction, and there are a lot of ideas, but you don’t have the resources to try most of them. Any mistake can be your last. You compare yourself to the giant Bing, that keeps pouring HUGE sums of money into every imaginable experiment, and are feeling like your constraints make you ineffective.

And here’s where I’ll jump in: Au Contraire. The constraints are making you MORE effective.

YOU are in a much better position. You’re a hungry artist, and you know that you have your butt on the line. Calculate your financial projections wrong, and you’ll run out of cash and won’t make payroll. The friends that you brought into your business – your *personal* friends – will not be able to pay their mortgage. Your *personal* reputation is on the line.

Since you’re desperate – hungry, constrained, call it whatever you want – you’ll become a maniac of perfectionism. You’ll POUR YOUR SOUL into every decision you make. The people on your team will do the same – if this company succeeds, each of you will be rich. If it doesn’t – and you’re on the clock here, seed money is running out – you all won’t be able to provide for your families. And will have a sad story to tell when interviewing for your next gig.

Let’s look at an example of what the lack of hunger can lead to.

First, it’s lack of commitment – when less is on the line, people tend to be less committed. Passionate people tend to do well and get better at their craft – and the lack of the passion often zeroes out all the other great qualities.

Second, it’s randomization. I’ll give you an example of what over-investing in product management will do. The core value of PM is to be the advocate for the user; they are the gatekeepers of end-to-end experiences. If you have too many PM’s for a product, then instead of owning large chunks and scenarios, you have each junior PM own a couple checkboxes. With this level of ownership, you get (a) zero motivation and (b) people start inventing work for themselves. And PM’s inventing work often leads to “running around with your heads cut off” for the entire organization – highly tactical efforts that don’t add up to a significant improvement in the end.

Third, it’s the famous Mythical Man Month effect. The larger an organization gets, the higher the communication costs. At some point, adding resources to a project makes it go SLOWER, not faster.

So the key phrase for me is “Strategic Under-Investment.” If you’re in a large organization with lots of resources, give people a little less resources than what they need. Force them to make tough choices.

So, rejoice and embrace your constraints. They are making you work harder, thus increasing the chance of your success. They are forcing you to make careful choices, all while facing accountability in the face of your personal friends. Just like with a hungry artist, your painting will be better.

Startup Factory

What do you do if your business succeeds? If you make up a startup, struggle for 7 years, and become the overnight success – suddenly exploding to a hundred people – what do you do?

You’re by no means Microsoft, and you’re most likely not Mint.com either. You’re probably in some niche business, and your customers love you – but you aren’t about to go public or be acquired by Google for $6B. You are, however, in a pretty good place – you’re no longer worried about making payroll or paying rent.

A new worry then enters your mind – I already have a golden egg; how do I make another golden egg and grow my business?

Or, look at another situation: imagine that you’re a successful company like Oracle. You have an entrenched position in a couple markets; you have established businesses that are bringing in over a billion dollars. Those are your “golden eggs.” The question again is, how do I make more of those golden eggs? How do I grow my business?

I’ll argue that by searching for golden eggs, you’re making a mistake already. You need to be looking for a goose that will lay those golden eggs. That goose is a framework for generating, vetting, and incubating ideas. That goose is an internal “startup factory.”

Let’s look at a standard way of going into new businesses.  You get together with your executives, brainstorm, and based on your gut – and, hopefully, a little bit of solid data – make a call on where you’ll go next. You then bet your farm on that idea – investing half of your company’s resources over the next product cycle into that idea.

But what if the idea was, ahem, dumb?.. What if you were wrong? Do you have a plan B?

Allow me to offer you an alternative – a framework of innovation I’ll call the “startup factory.” Here’s how it works:

1. Start with idea generation.

Once a quarter, have your engineers, product managers, and marketers drop whatever they are doing for ONE day. Obviously, don’t drop the ball on the urgent customer matters. Instead, plan for this “hack day” in advance and include it into your schedules. During the hack day, everyone is free to work on whatever they want. There are no management chains there; people are encouraged to self-organize by interest. The only requirement is that at the end of the day, they get to present their work at an informal all-hands – ideally, over beer.

You will be SHOCKED to see the kind of ideas that get presented. Your people WANT to innovate; they HAVE ideas, you just need to get out of their way for a day. They are so booked up with fires that they have no time to try out some of the bold ideas they’ve brewing. Some of those ideas will be truly revolutionary – unlike the “faster horse” asks you get from your clients, some of the ideas from your staff will be in the “build a car” realm.

I’m by no means an inventor of the “hack day” concept. It’s been mentioned in my favorite Autonomy, Mastery, and Purpose TED talk. Microsoft Live Labs called this exact concept an “out of the box week” (it was actually a week-long engagement there). Google’s 20% time is essentially the same thing – except that its ongoing nature makes it a lower priority for participants, thus reducing its effectiveness.

2. Create a funnel for ideas.

At the end of your Hack Day, have a committee of senior folks select three projects that will get “funded” to be incubated. Let the person who presented the idea run the effort – they’re by definition most excited about it. Give them some extra resources – one other person to bounce ideas off of. Then, allow them to leave their current job responsibilities – completely – for three months, so that they can incubate the idea.

WHAT? LET THEM LEAVE THEIR JOB FOR THREE MONTHS???… ARE YOU F#@ING CRAZY?!?!

Yeah, that’s exactly what I said. If your organization has such a strong tactical dependencies on any individual contributor that you can’t have them work on a strategic incubation for three months, you’re in trouble and long-term success should be at the end of your list. You’re about to see short-term failure when that person leaves.

3. Create accountability and an evaluation framework.

Your 2-person, shielded incubations have been running for 3 months. They’ve built some prototypes and demos. They’ve done some market research. They might have talked to some customers. They’ve been RUNNING THEIR OWN STARTUP within your company – a startup that’s on a short leash, a startup made out of the people that know your marketplace and are working on ideas that YOU have hand-picked.

Now it’s time to decide whether it makes sense to continue investment in any of these incubations.

Create an evaluation framework for your decision making. Try to be as specific as possible: Are we convinced in the market value enough? Do we think the roadblocks that were obvious have been researched enough? Before any of the projects are funded for this 3-month stint, make sure to advertise your decision-making framework broadly.

4. Make decisions on what to do with your incubations next.

I bet you anything that most of your incubations are going to fail for one reason or another. Why? Because luck was a HUGE factor in the initial success of your enterprise. Because 99% of the startups fail. Because most ideas turn out to be crap for one reason or the other.

Here are the good news: if at the end of these 3 months, you decide to kill an idea, it’s a GREAT THING. This means that you were convinced that something will work, ready to put a ton of money behind it, but you didn’t bet the farm on it – instead, you put something like 2% of your company’s resources behind it for 3 months. So now that the idea failed, your company’s existence is not in danger in any way.

Moreover, now, you have a plan B. You have 2 other ideas that you were pursuing in parallel. One of them might be the next big thing – all pieces of the puzzle will add up, and you’ll be so excited to finally throw all your company’s might behind it. AWESOME.

Let me recap the key benefits of the Startup Factory approach:

  • Generate groundbreaking ideas.
  • Incubate the most promising ones – without risking your entire business – and evaluate these incubations.
  • Build up internal expertise before major resources get assigned to the new idea, so that roadblocks can be discovered early, and tackled by a surgical team – instead of blocking progress for a bigger group.
  • Amazing effect on the morale. I won’t get tired of preaching Autonomy, Mastery, and Purpose. This framework hits on all three.
  • Entrepreneurial growth of your employees. When running a 3-month incubation, your employees get to wear many hats – working as mini-CEO’s for that project. Don’t be surprised when an engineer starts understanding marketing much better after this 3-month stint.

A couple other intuitive ways to look at this framework:

  • Startup factory is really about diversification of seed investment – something that VC’s have been doing forever.
  • It’s an insurance policy that lowers your risk exposure by gradually increasing the investment over time – instead of the binary 0 to 1 change, you slowly move the dial from 0 to 0.1 to 0.5 to 1. Like any insurance policy, you pay a little upfront to get its benefits.

Go create a golden goose in your own organization and watch it lay golden eggs for you.

The Whole Is More Than the Sum of the Parts

Aristotle suggested that the whole of a system – be it a human body, an organization, or a device – is more than the sum of the parts. Most recently, a brilliant gentleman named Gary Flake* has been applying this same concept to information that surrounds us.

Every day, we’re inundated with massive amounts of data. Picking a vacation destination (hundreds of options). Picking a puppy for the kid (hundreds of breeds). Buying a holiday gift (millions of options).

How do you make these choices? I’ll make a bet:

  • Start with a couple options that you heard about from your friends.
  • Google those options, read some webpages, read about them on Wikipedia.
  • Read reviews on other sites, keep a few tabs open in your browser at once, compare-and-contrast a couple options.
  • Find a few new options – maybe because they have good reviews – and add those to the mix.
  • If you’re like me, rinse and repeat the last two steps for 3 hours.
  • Finally, make your purchase.

Here’s a question for you: what are you really doing during that research phase? You’re looking for a needle in a haystack of options. You have a mental model – Plato’s Form of what the ideal option is – and you keep sifting through the dataset, one item at a time, comparing each item against the ideal.

There are problems with this approach: it takes forever, it leaves HUGE gaps in your data analysis, and it leaves you frustrated with the process – and frequently, the result.

How can we make this better? Flake’s answer: by merging the concepts of browse and search together. Let’s look at the puppy breed task in detail. Typical Google search is fantastic for finding an answer, not outlining the shape of the landscape that you’re unfamiliar with. Thus, when you search for a specific breed, you’ll quickly find a Wikipedia page about that breed – with pictures for it. But how can you find other breeds like it? Does this breed live long or not – it’s really impossible to tell, without being a subject matter expert, whether 12 year life expectancy is a lot or a little.

What we’re really want to do is to see the data as a whole. ALL breeds at once, not just one breed. With that, patterns will pop: hmmm, 12 years is about average for all dog breeds. Hmmm, small dogs tend to live longer. There’s no way to find that insight from individual Wikipedia pages describing the dog breeds. Even if you were to read every one of those pages, you couldn’t keep every detail in memory – thus, missing out on important trends in the data.

Let’s look at a website that almost delivers on this promise: Amazon. Search for a digital camera inside the Electronics department; you’ll see a bunch of pages of results. Here’s a key, though: on the left side, you’ll notice some characteristics of the ENTIRE dataset. Those characteristics make some non-obvious things pop: Panasonic is in the Top 3 manufacturers, I didn’t even know they made digital cameras; products are evenly distributed across the 1 to 5 star review scale. WOW, cool – now that I know this, I can (1) trust the review system – people don’t just rate everything 5 stars and (2) buy myself a Panasonic camera, because they’re my “trusted brand.”

See how by looking at the forest, I was able to approach my selection from a completely different angle? I narrowed in on a subset of the data through a holistic, systemic analysis. This is profoundly different from the haphazard approach of “reading the reviews on the top 5 search results” that we’re so accustomed to today.

Moreover, another pattern becomes possible: when you saw the forest, noticed an outlier, and learned about it, you can jump back out and expand your query in brand new directions. Wait, that Panasonic camera is WAY cheaper than I expected an SLR to be… Are there other SLR’s in the price range where I’m not even looking?..

This type of interaction – combining search and browse – allow you to consume the dataset as a whole. And the whole finally becomes more than just the sum of the parts. If you found this at all curious, I encourage you to look at this 6-minute TED video and this project called PivotViewer.

*Full disclosure: Gary Flake has been my boss for two years. The intent of this article isn’t about ass-kissing – he is no longer my boss. He’s not even in the same company.