Archives For CEO Friday

Crazed ramblings by the CEO.

But with less walls and and more coding.

Our challenges have fewer walls and and more coding, but same idea.

It’s widely repeated that “great people are 100x more productive than average people.”  But while everybody says it, most companies just hire 100x more average people. At Expensify, we try very, very hard to hold the line and only hire people we think are truly great. This means that despite ample resources and more than enough work to go around, we hire extremely slowly — and spend an enormous amount of energy doing it.  A lot of that energy is directed toward refining the hiring process itself, with a major recurring topic being: what makes someone great?

Last week we had a long conversation on this within the engineering team, and the main conclusion was — there is nowhere near consensus on this topic.  Strong, conflicting opinions were held across the team.  I don’t know that there was a single tangible item that everybody agreed was a true minimum requirement, or a true showstopper.

Accordingly, so far as our “official hiring policy” goes, we’re still far from having a checklist evaluation of candidates.  For better or worse (and I’d argue “for better”), everybody is evaluated on an individual basis, and pretty much any single attribute is fair game.  However, it seems to me that there are three general themes we use to assess the “minimum viable employee” — whether someone meets the most baseline requirements for us to say yes:

Aspires to Excellence

In our team conversation last week, we reviewed a series of programmer applications to share thoughts on each.  To everybody’s surprise, by far the most discussion was on something that seems so trivial on the surface: grammar, punctuation, and capitalization of the cover letter.  Everybody kept saying “ok, we’ve talked about this enough”, but then everybody kept talking.  It was strange, and we intentionally stopped to meta-discuss why we were so concerned by this.  We tossed around a couple possible explanations for why this seemed so important (to some of us), and like everything, there was no consensus.  But my view is this:

Someone who doesn’t proofread and spellcheck something like a cover letter simply isn’t trying their hardest.  Whether they don’t care enough to try, or don’t try even when they do care — either way, this is someone who isn’t putting in the effort to excel, and that’s not someone we want on the team.

To be clear, this isn’t to say that grammar is the sign of excellence.  It’s only saying that poor grammar signifies a lack of excellence.  Other items can too, including:

  • Being late for a call (even by a few minutes)
  • Being slow or failing to respond to an email
  • Inconsistent indentation and other style
  • Poor variable nomenclature
  • Terse answers to open-ended questions
  • Lack of enthusiasm or curiosity

Note how none of this relates to skill: everybody “knows” how to do all these, and to not do them is a choice. Because in practice these aren’t individual choices, but one large choice — and this decision to consistently excel in everything under your control is very nearly an innate quality. Either you do it, or you don’t, and no amount of cajoling is going to change that (at least, not fast enough for our needs). And for this reason, I’d say any indicators about the candidate’s aspiration to excellence weigh extremely heavily on my go/no-go decision, and for many others on our team.

Knows Enough to Learn Fast

It’s hard to say that this second item is less important as the first, as both are necessary but insufficient: you need to both demonstrate that you aspire to excellence, and have also acquired the basic skills to enable you to achieve it.  As for what exactly those minimal skills are is a subject of intense debate.  Most of the team would generally say we shouldn’t hire anyone with less skills than they had when they joined, and some would even say their own skills are too low a bar. But from where I sit, I think the minimum set of skills – for a programmer, at least – is something like:

  • Can create something from scratch. There are a surprising number of pretty good programmers that haven’t ever started a project from scratch, and don’t actually know how. This means setting up some kind of development environment and getting “Hello world” to successfully run in some relevant language.
  • Doesn’t need a framework.  Don’t get me wrong, the right framework can be a huge accelerant to a project.  But it’s important to avoid becoming overly dependent on any particular framework otherwise you lose objectivity – and use it not because it’s actually right for the problem at hand, but because you simply can’t do anything else. So knowledge of a framework gets bonus points, but the ability to work outside a framework is a prerequisite.
  • Successfully finishes the challenge. It sounds obvious, but if we give a programming challenge with an unlimited timeframe, we expect the candidate to deliver a functioning result. It’s amazing how many people send something that simply doesn’t work.
  • Actually writes their own code. Additionally, it’s clear that many applicants just copy/paste snippets they found online, without even the decency to hide it by reformatting it into a consistent style. Certainly, the ability to leverage the internet to help you solve problems is a great skill. But learning and applying a lesson is different than copying a code snippet without understanding.
  • Reuses code appropriately. It’s not enough to create a functioning result, it also needs to be done in a way that minimizes redundancy. This means pulling out shared code into reusable functions, reusing rather than recalculating outputs, etc. Great people are naturally efficient, making minimal, deliberate actions to achieve their goals.
  • Makes sound layering decisions. Knowing where to solve a problem is at least as important as knowing how.  The ideal candidate intuitively recognizes those areas that are tightly coupled and should be kept together as a single unit, from those that are loosely coupled and should be isolated through formal interfaces.

And for me, that’s really about it.  I think a fantastic application is one that has a solid, obvious solution, with consistent style, good layering, and appropriate reuse.  A great application doesn’t need to do much.  But what it does, should be done right.  This shows the candidate has a solid, clean foundation on which new skills can be quickly learned.  Because in the fast-changing world of computer programming, how much you can learn is far more important than how much you know.

Knows Little that Needs Unlearning

This last item is at least as important as the first two, and since those were deemed “necessary but insufficient” I’d say the same about this.  Even more important than what you need to learn, is what you need to unlearn.  It’s at least twice as expensive (but probably more like 4x) to unlearn a bad skill than to learn a new skill from scratch.  This is because the cost to learn the skill is the same, but then you need to add the “unlearning cost” — which is probably more expensive than what it took to learn in the first place.  Here are a few hard habits to break for which we’re always on the lookout:

  • Overengineering.  Defensive programming to anticipate and handle a wide range of scenarios can be great.  But it’s easy to go too far, creating custom logic for scenarios that are extremely unlikely in practice, complicating the solution (and often introducing bugs) for the much more common cases.
  • Excessive encapsulation.  Abstraction is a powerful tool for reuse, as well as to create layered decoupling.  But done poorly, “unused reusability” can add such bloated and complicated overhead so as to leave the codebase larger, more fragile and less understandable than before it was “simplified” with abstraction.
  • Premature optimization.  It’s good to be efficient, and to naturally take advantage of low-hanging-fruit performance opportunities where convenient and clear.  But the most important thing to optimize for is code clarity, and that should only be compromised when genuinely necessary.
  • Unnecessary cleverness.  Modern languages have a huge range of esoteric features that enable for enormously powerful and succinct solutions.  But great candidates amaze with simplicity rather than sophistication.

Admittedly, all of those bullets are really just different flavors of the same thing: solving problems that don’t actually exist, while creating new problems in the process.  It’s insidious, as good programmers can imagine a wide range of potential future problems – ranging from performance, to maintainability, to extensibility, and more – and the temptation to solve them all right now can at times be overwhelming. But we need people with strong impulse control who can remain focused on solving the problems of today, without adding to them unnecessarily.


Anyway, I think these are three high level themes we use when evaluating a candidate. So if it wasn’t already apparent, note that where you went to school, what degree you have, where you’ve worked, who has referred you – none of that matters, at all, and I think that’s the one thing we all agree on. However, getting more detailed than that is extremely contentious, and despite how helpful it would be, there really is no such thing as a clear “minimum viable employee” so far as we can tell.

So if you want to impress me, keep the above criteria in mind.  But in all honesty, I’m not the only one (or even the most important one) you want to impress — so view my suggestions above as “necessary but not sufficient” to get the job.

Imagine you ran a coffee shop with great coffee, a cool vibe, comfortable seating… and no customers.  Not an uncommon problem, and the classic solution promoted by social media experts would be something like:

“Create a Twitter handle and offer discounts to customers who follow. Broadcast weekly events and promotions via Twitter and engage with your audience to encourage them to come and bring their friends.  More discounts to people who get their friends to follow.  Create a mailing list; Tumblr; Facebook page; etc, etc.”

It’s an alluring prospect, that no matter where you are, using online social media tools you can tap into a global audience, create a network of influencers, and drive people to your coffee shop in droves.  The only issue?  I frankly doubt you’d get even a single customer out of it.  It’s all reasonable, common advice.  I just don’t believe it would work.  My advice?

“Stand outside your coffee shop, up the block a bit.  Watch the people who come by.  When you see someone who looks like a potential customer, approach them and ask in a friendly, non-confrontational way: Why didn’t you come in?”

I wager in the first hour you’ll get at least one real customer, dozens of potential customers who are much more likely to stop by in the future, and a hundred tangible ideas on what you can do right now to attract more business:

  • Did they not like the vibe?  Redecorate!
  • Did they doubt the quality of your coffee?  Emphasize the roaster’s brand to demonstrate quality!
  • Did they just not notice you?  Put an A-board out front with an arrow pointing at your store!
  • Did they not want to go to an empty place?  Promote free coffee whenever you’re empty to anyone who comes in and sits for an hour!

The problem with “social media” is that you actually don’t care about a global audience: whatever you are, you want a very, very localized audience. The most important audience of all are the people who stopped by, checked you out, and walked away. Just ask them why, and let that guide you. Granted, I’ve chosen a physical example of a coffee shop to illustrate this idea, but as I imagine is obvious: the principle is exactly the same for your website. The fact that “the internet” has billions of people is irrelevant to your service — the handful of people who actually visit your site are the ones that matter the most. Again, everybody would agree with this, but what would the classic social media advice be? Probably to use the same sort of bland strategy the fictional coffee shop owner would follow — and probably with the same (lack of) results.  Instead, my advice to you would be:

“Do everything you can to talk with your visitors.  Put a giant sign up button on the homepage requiring nothing but an email address.  If that doesn’t work, just have it open directly to a chat window with you logged in ready to talk.  Ask them why they came, what they’re looking for.  You’ll be amazed what you hear.”

It sounds so obvious. It’s so easy to do. Yet, nearly nobody does this. Luckily, we did, and I count as one of the most important techniques we ever used to get real world customer feedback. I literally believe that had we not done this, Expensify simply wouldn’t be here today. Our initial assumptions about what people cared about were so far off, in so many directions, that had we not a tool like this we simply wouldn’t have survived the first year and never become the leading brand we are today. Despite this being such a hilariously obvious technique, I’m almost embarrassed to say we only stumbled into the technique by accident:

  1. Our first homepage had a big sign up button on it that required only an email address.  (This is common now, but at the time it was really controversial: What, I don’t need to create a password? *mindblown*)
  2. Immediately after sign up, you’d get a fancy stylized HTML email with a bunch of information nobody would ever read, and a validation link that most people would never click.
  3. However, we had a system that every hour, would email everybody who signed up in the past hour.
  4. This system ran on whatever increment in the hour that we started it, so if we started it at 1:17, it would run at 2:17, 3:17, etc.
  5. Furthermore, this system only sent plain-text emails, and only using my actual email account (“David Barrett <>”)
  6. And the message, contrary to all marketing best practices, was extremely open-ended with no actionable link to click:
From: David Barrett <>
Subject: Welcome to Expensify!
Hi there! I see you just signed up for Expensify, welcome! Can you tell me about yourself?  Namely, what sort of work do you do, how big is your company, how do you currently do expense reports, how did you learn about Expensify, how do you hope to use it -- that sort of thing. Thanks!

Founder and CEO of Expensify
Follow us here:

A good response rate to an email like this is 2-3%. A great response rate is 5%.  But this email got a 12% response rate.  And not just any responses — pages and pages of thoughtful, priceless feedback, from people who genuinely wanted us to succeed. We were floored. Not only was the feedback inspirational and motivational, but it created long-term relationships with our champions that have stayed with us for the many years since. As for why it performed so well, I have a few theories:

  • It came a random duration after you signed up, on a random minute in the hour, so it wasn’t obviously an automated message.
  • This was reinforced by the fact that it was a simple text email.  Let’s be honest: nobody “real” writes well stylized emails with a formal greeting and logo — all it does is mentally flag you as spam.
  • It was written by me, and sent from my actual email address.  Hitting reply went straight to me, not some obvious mailbox. (Many responses would start with “You can’t have actually just emailed me for real, so I doubt you’ll actually read this and I’d be shocked if you actually replied, but since you asked here are my thoughts…”)

And most important of all:

  • It came on average 30 minutes after signing up. This meant that you received it right after your first interaction with the product, while it was still on your mind and your initial impressions were on the tip of your tongue, just waiting for someone to ask.

I can’t overstate how helpful this was in shaping the company, and building us into the responsive, user-focused company we are today. Clearly, this gets harder and harder to maintain as you scale — when I send out our newsletter to my millions of closest friends, I get a lot of responses. It takes a long time to go through them all, but I do because “social media strategy” isn’t about the media, and it’s only loosely about strategy. It’s really just about being social, talking with the people who like you (and those who don’t), and being responsive to those who matter the most to your business: customers, users, and those who might be some day.

A modern interview sessionBased on the sudden spike in applications we’ve seen, there are a lot of people out there with New Year’s resolutions to make the jump.  Before you do, I’d recommend asking your employer-to-be the following questions:

  1. How many people do you hire in a typical month?  Great people are just hard to come by.  I don’t know of any startup that can reliably hire more than one truly fantastic person per month, so if they’re hiring people in droves, they’re not getting the cream of the crop.  Hiring is easy if you don’t care who you get: make sure they care.
  2. Who was the last person to quit, and why?  People change.  Companies change.  Even amazing people and amazing companies.  A great fit one day might gradually become less great over time, and the best people don’t tolerate that for long.  It’s an awkward topic, but see how they handle it.  Are they defensive?  Introspective?  Do they throw their former teammate under the bus, or provide a thoughtful explanation?  Is the company better off without that person, or what did they learn and change in response?  Nobody likes to be dumped, but if it doesn’t happen sometimes, you aren’t aiming high enough.
  3. When do you intend to raise money, and why?  The worst answer is “we just raised so we’re not even thinking about it” — raising is something you should always think about.  A better answer is “we have X months of runway before we need to raise again” — this means they’re at least paying attention.  But the best answer is “once X happens in the business, then we’ll raise”.  It’s subtle, but this question is really determining if a company is burning investor dollars to survive (and without it, they die) or to grow (and without it, they just grow slower).  Is the company primarily financed by selling product, or selling itself?  To be fair, most startups linger one failed round from certain death, especially in the early days.  But be aware that until you are growing under your own steam, you are wholly dependent on investors for your survival — and investors don’t always share your vision.
  4. Can I see where I’ll sit?  This actually wraps up a bunch of questions into one.  Do they even know?  Do they have assigned seating, and if so, can you influence it?  Did you meet the people you’ll be sitting next to in the interview process?  Is it clean and is there natural light?  Is it quiet, or is there music, or just generally noisy?  And most important: is it a place you really want to sit 2000+ hours a year?  Your workspace is your home away from home, and there is an enormous range between “we just have an awesome office full of diverse regions and you can sit anywhere” and “here’s your awesome standing desk with big monitor”.  There are no right answers, but put some real thought into what’s important to you and make sure to factor that in.
  5. And last but not least: What do I want to do accomplish in my life, and how does this help me down that path?  This is one you should ask yourself — every day, about everything you do.  Our industry is unique in that anybody reasonably good can make money, and with a bit of luck you can make a lot.  But all the ways you can spend it get boring much faster than you’d expect.  Hard problems and cool technology will keep you occupied for a while, but there are always more problems and more technology, and eventually even those get old.  If you’re great — or if you want to be great — your motivations likely run deeper.  You have some kind of secret, quiet ambition that is so grand, so audacious, that you are embarrassed to say it out loud.  So big that even if you devote the rest of your life to it, you still couldn’t finish it.  But so important to you, that you genuinely want to try anyway.  Knowing what you want out of life dramatically increases the odds you’ll get it, so figure out what that is, figure out what’s preventing you from doing it right now, and then evaluate whether this startup is going to give you the tools to take the next step.  Maybe you lack money, or maybe it’s skill, but more likely you just lack the confidence that comes from being part of a successful team.  Make sure your next job is the launchpad for the rest of your life, and not just a landing pad with an extended layover.

I picked five to make the subject link click-baity, but really you should ask a lot of questions.  If you’re great, you can probably work anywhere you want.  Interview them as much or more than they’re interviewing you.  If they’re great too, they’ll recognize you’re worth it and thank you for the effort.

[Edit] Lots of great discussion about interviewing advice over at HackerNews.

You might recall that we added the option to reimburse Expensify reports using Bitcoin.  (It’s not widely used, but it’s no gimmick — Bitcoin is a great option for reimbursing international contractors without the expense or hassle of a wire transfer or PayPal.)  Literally the next day, Bitcoin exploded in popularity.  Whether or not those two events are related is unclear.  But what is clear is that the timing made Expensify the mainstream media face of Bitcoin.

Since then, I’ve spoken on BSkyB, Bloomberg, CNBC, and Fox Business News — repeatedly, for several minutes at at time, usually arguing against someone else, but sometimes speaking solo.  Ask anybody and they will tell you confidently that this sort of coverage is priceless stuff.  Primetime coverage to a global, financial-savvy audience for a finance-related product?  Any PR agency would tout this as the most tremendous success (and charge you a lot for the privilege).

But to my total surprise: it’s worthless.

Maybe “worthless” is an overstatement.  I’m sure the brand recognition is worth something.  And to be clear, the audience fit isn’t perfect.  The segment is only tangentially about us.  The audience is generally investors, and they don’t submit a lot of expense reports.  So I’m sure if I just paid a PR agency the hundred thousand dollars it would have cost to get this, they would have no shortage of excuses to explain why this supposedly priceless coverage isn’t showing any apparent results.

But the reality is, when we go on TV, nobody notices.  There are no tweets.  Our website sees no new traffic.  Customers don’t cite it as a reason they signed up.  It’s like crickets chirping.

Anyway, luckily we were able to run this experiment for free.  And don’t get me wrong: if you get the opportunity to speak on nationwide primetime TV for free, take it.  It’s a super weird experience if nothing else.  But if you’re a startup with a tight budget, don’t believe the hype.

Speaking live on nationwide TV is about the most chaotic, stressful, underwhelming, and anti-climactic thing I've ever done

Speaking live on nationwide TV is about the most chaotic, stressful, underwhelming, and anti-climactic thing I’ve ever done

When I started Expensify, I had no idea being a CEO involved talking so much, to so many people, on such a wide array of topics.  Whether it’s a chance encounter in a hallway, keynoting a conference, or being woken up by CNBC with an offer to debate Howard Dean about whether the FEC should accept Bitcoin (answer: yes), you never know what opportunity will come up — and it’ll pass you by if you aren’t ready to jump on it without notice or preparation.

Prior to Expensify, I don’t think I’d ever been on stage or spoken to more than two people at the same time, but here are some tips I’ve come to swear by:

  1. Only memorize the first 5 seconds.  It’s tempting to try to memorize everything word-for-word, but unless your memory is amazing, you’ll probably screw it up.  Instead just make sure you are absolutely clear on how you’re going to start.  The start is the scary time: its when the mic turns on, the lights turn up, and everybody turns to you expectantly.  If you can get through the first 5 seconds, the rest is easy.
  2. Practice a lot of dots, and then connect them in realtime.  Any presentation can boiled down to a few key points that the audience will remember.  They typically have concise, intuitive, and hopefully catchy phrasing.  (“Expense reporting is naturally viral: every time you submit an expense report, you submit it to someone more important than you — (dramatic pause) — your boss, your finance manager, etc.”)   Just memorize those specific phrases, decide ahead of time the rough order you intend to say them, and then do your best to fill the gaps in between with something that sounds reasonably smart and deliberate.  Over time you’ll build up such a library of seemingly off-the-cuff key phrases that you can fill any amount of time, on any topic, and sound reasonably intelligent doing so.
  3. Bring a drink on stage.  Something hot is ideal (coffee, tea) but even an empty cup will do.  Holding liquid in your hand will help you suppress the natural urge to gesticulate wildly — a surprisingly hard and distracting habit to break.  And best of all: whenever you need a moment to decide what you’re going to say (especially when you get a question from the audience), just take a drink.
  4. Slow down.  The faster you talk, the more you need to say to fill your time — and the greater the odds that you’ll run out of things to say and begin to panic.  I’m terrible at this, but make an explicit point throughout the presentation to consciously breathe deep and slow down.  The best presentations are cool, calm, and super super casual.

If I were to pick a fifth tip, it would be “take a shot before going up on stage”.  Seriously — it’ll calm your nerves.  And if the audience is getting bored, swear really loudly about something.  We’ve A/B tested it, and it’s a cheap trick, but it works.  Good luck!

Most VC pitches hinge on a key number:

Return On Investment (ROI) = LifeTime Value (LTV) / Cost to Acquire a Customer (CAC)

And I can’t blame them: VCs are in the business of selling money.  They want to know that if they sell you their money (paid for with equity), it’ll be put to good use.   This is more true today than ever because startups are so cheap to run anymore, meaning the only realistic way you can spend millions of dollars is on customer acquisition.

But the open secret that has taken me years to learn is this: it’s all bullshit.  Yes, all startups do present those numbers (you can’t not), and some even believe them.  And the more confident (or deluded) you are by those numbers, the more aggressively you can bet (excuse me, invest) into it.  But in the vast majority of cases, for the vast majority of successful startups I’ve researched (both old and new), the numbers are total crap.  Again and again, I see:

  1. LTV is usually infinite.  The easy place to start is estimating LTV = Monthly Churn / MRR.  But monthly churn is always super erratic (due to the law of small numbers) and MRR is always changing (hopefully going up), meaning due to “accumulation of error” the statistical relevance of that number is so low as to be useless.  Furthermore, even if it wasn’t useless, oftentimes that method of estimating LTV is flat out wrong.  If you have a large variance in your MRR (for example, Expensify has customers who pay under $5/mo to over $5K/mo — all for the same basic product) and low churn amongst real customers (versus those who just did a “paid trial”) you might find yourself ending up with “negative revenue churn”.   This means that the people who stay continue to pay you more over time than the people who leave, indefinitely.  Which means your LTV is, effectively, infinity.  Which isn’t nearly as awesome as it sounds, because it’s immediately discarded out of hand as impossible.
  2. CAC is usually zero.  Most freemium businesses (and many of the top non-freemium businesses) don’t pay for leads — or if they do, pay for them in ways that are completely unquantifiable.  (Dig in to Intuit, Xero, Yammer, Box, Atlassian, Salesforce, or a dozen others and you’ll typically find that less than a third of marketing spend can be attributed directly to new revenue.  Nobody likes to admit it, but in most cases — especially for the most successful businesses — marketing is largely of matter of faith.)   But again, like an infinite LTV, having a zero CAC isn’t actually that awesome because it doesn’t mean your leads are actually free (in a non-marginal sense), but rather that you don’t have any realistic way to buy more.
  3. Therefore, LTV / CAC = Infinity / Zero.  What does that even mean?  I have no idea, but that’s what the math says.

The dirty secret that I think is gaining more traction in Silicon Valley is that the classic metrics we’ve all grown up with aren’t making nearly as much sense as they once did.  You know you’re talking with a savvy VC when they don’t freak out when your business doesn’t fit these outdated formulas.  You know you’re talking with a great VC if they don’t even ask outdated questions in the first place.

It’s very fashionable to quantify every aspect of your business to the N-th degree.  It sounds great in cocktail conversations to rattle off CAC, LTV, retention rates, magic numbers, and a host of other variables — and to extol the virtues of A/B testing every single thing from day one (or even before).  But beware getting too reliant on data, because when it comes to your most important and difficult decisions, it won’t be there to save you.  This is because startups are trapped between a rock and a hard place:

  • You’re new to the market and thus can benefit the most from real world data…
  • … but you’re new to the market, and thus have the least real world data to study.

You can approach this dilemma a few ways:

  1. Trust the competition.  This is based on the belief that success can be learned by emulating the success of others, and then beating them at their own game.
  2. Trust your data.  This is based on the belief that success comes by careful analysis of reality.
  3. Trust your instincts.  This is based on the belief that you are smarter than the next guy.

The challenge with the first is if it’s right, you’re screwed.  You might catch up to the competition by copying your rivals, but when you get there, you’ll completely lack the skills and organization for taking the lead.

The challenge with the second is, if it’s right, you’re screwed.  If all you can do is wait for the data to come in and let it make your decisions for you, then you can’t ever achieve the “escape velocity” necessary to get something out into the real world to begin gathering data.

Accordingly, I feel the third option isn’t just the best option, it’s the only option.  No matter what the topic is, if you’re faced with a difficult decision, it’s because you don’t have enough data to make it obvious.  But by the time you do have the data (assuming you ever get it), it’s too late.  Someone else who will have already seen the opportunity and taken it from you.

To be clear, your instincts will often be wrong.  But success isn’t about being right 100% of the time, it’s about making decisions that are just slightly faster and slightly better than everyone else around you.  At the end of the day, there’s no better data than data that’s telling you something you’ve tried is succeeding or failing.  But you’ve got to trust your instincts first to go out and get it.