Archives For Job

This is where I live.

This is where I live.

I work for the best Silicon Valley Start-up, Expensify.  I also live right off the shore of the largest body of fresh water, Lake Superior.  Most importantly though, I’m helping to bring Silicon Valley to the area I love and much-needed jobs along with it.

In January of 2013, I was approached by another employee of Expensify that lived in the same area as I did.  He wanted to bring jobs to Northern Wisconsin and Upper Michigan.  He had been experimenting with three people for a couple of weeks to see if it was a viable option to staff a midwest workforce alongside our international team we already had in place and still stay cost-effective. These jobs could be seen as basic data entry positions easily trained to anyone with minor computer knowledge, but there is a growing amount of complexity as Expensify moves more into the global market and receives data from around the world to process for our clients.  The best part, the agents could work from home!  He was also looking into the possibility of bringing entry-level developer jobs to the area.  Where did I fit into all that?  He needed someone to help get it all started, maintain, and manage it.

At the time I was running my own computer repair business full-time out of my home and did contracted computer IT for local businesses.  After hearing his initial pitch about Expensify and what his vision was for the area, I was sold.  When you live in a town with a population of under 6,000 people, and don’t want to move out to Silicon Valley, you never really think you would get a chance to work for a San Francisco based tech start-up.  So, I started working for Expensify as an independent contractor, slowing building a data entry workforce, training them on the work in person and then allowing them to work from home after that.

Fast forward a year.  I’m now a full-time member of the Expensify team and Expensify has brought over 30 jobs to the area and is still expanding!  Exploring more than just data entry jobs too.  How about some Help/Support Email Agents and some more entry-level developer jobs?  We’re looking to utilize an area and its population that most companies never think about.  Even better: we’re still staying cost-effective despite previously relying on a solely international-based workforce as our local employees have shown to be extremely accurate and efficient. This in turn pushes our international team to higher standards increasing performance across the board.

It’s extremely exciting to be a part of a company that is willing to bring Silicon Valley to an area that only hears about it from the news.  But the best part is to see the expression on people’s faces when I tell them that I live in Northern Wisconsin, but I work for a San Francisco based company.  It always leads to awesome conversations.

Do you want to work more with cloud computing? Great– we don’t! When dealing with financial data, knowing where the data lives is important (and “on someone else’s service” is a poor answer), so we’re leaving the cloud. We have three datacenters in active/active/active configuration, and we’re transitioning ancillary services out of “the cloud.”

A perfectly normal monitor in peak operating condition


We’re a Linux shop– currently a Ubuntu/CentOS hybrid environment, transitioning to a full CentOS stack, all managed with Salt ( Our site is largely written in PHP and Javascript, but important parts are in Java, C++, plus a smattering of Python holding some rusty parts in place.
Our network stack is built on a Juniper switching fabric, and a pf-based firewalling solution.


We would like you to:

  • Build infrastructure! Every system is configuration managed, so ideally you build a web server once, not a hundred times.
  • Support developers! Our developers are as smart as you ideally are– they need help provisioning development environments, not printing Excel spreadsheets.
  • Participate in a one-week-in-four on-call rotation! The world is beautiful at 3AM– but for better or worse you’ll rarely get to see it, as “the environment is melting” is the exception rather than the rule.
  • Read and debug code! You need not be a developer yourself (though it wouldn’t hurt), but tracking down a bad PHP function call based on log messages shouldn’t scare you.
  • Make big trouble for moose and squirrel! Oh wait, the KGB shut down years ago…
  • Work in San Francisco! Don’t live here? No problem, we’ll fix that.

If you are interested in applying, please send your resume to with a letter explaining why you are awesome and how you found us.

This place is awesome, our product kicks ass and our team is a mesh of rockstars who are passionate about what they do. We’re looking for all sorts of people — always engineers and sales, definitely a designer, but right now we have a desperate need for QA.

No Bugs Allowed

No Bugs Allowed

Now, we’re mostly a bunch of programmers, and to be completely honest, we haven’t had great experience with dedicated QA teams in the past. They generally fit very large, very slow organizations where it takes a dozen people to do anything. But we’re super small, very fast moving, so we need someone who can hang with that.

What exactly that is we’re not sure — after all, we’re looking for someone with QA expertise to tell us what to do. But as best as we can tell, we need someone who is comfortable with PHP, JavaScript, jQuery, HTML, CSS, and ideally a smidge of C++. Don’t worry, we don’t expect you to know all of them. Unless you are a mega rockstar. But a regular rockstar would be lovely too.

Are you still interested? Sweet! Next steps are as follows:
Check out, read more about us, the team, and get a feel for our environment. Are you as into us as we are into you?
Email us your resume and the answers to the questions below with “Sweet QA Analyst” as the subject line (

  1. What is the difference between QA and programming, and why do you prefer to do QA instead of becoming a programmer?
  2. What do you want to do with the rest of your life, and how is Expensify a step toward your long-term goals?
  3. Please forward this application to three people you think we should hire, cc’ing (Don’t worry, we’re eager to hire you and them. Indeed, good people have good friends: solid referrals here increase the odds we’ll hire you.)
  4. How did you hear about us? A job posting? Chalk on a sidewalk? From a friend? Let us know where you saw this opening.

We look forward to hearing form you!

If you know anything about Expensify, you’ve probably heard our CEO David Barrett speak about the “bottom up adoption curve“. As a freemium service, Expensify has seen exceptional bottom up adoption among small businesses – especially those where employees actively seek out alternatives to expense reporting “solutions” that REALLY suck. And in a big way, employees continue to “sell” Expensify with great success across all manner of small business.

Throughout our journey, we’ve kept one ear open to the employees selling our product, and the other to the accounting and finance departments that have had to implement us. Through this approach, our product is poised to command an extensive presence among medium-sized businesses.  And so, with the stage set and the curtains drawn, Expensify is in the first act and first scene of building out a salesforce of the future! Expensify Sales Propaganda

What do we mean by salesforce of the future? That’s a pretty nebulous statement, no? Yes, great point! You’re impressing us already!

In answer, the interesting thing about sales at Expensify is that your job will be just as much about selling our product as it will be supporting the diverse group of individuals, employees, managers and accountants that use our product. Thus, we’re looking for people who can speak in the parlance of accounting and finance departments, and who also have a knack for navigating the ins and outs of a deceptively intricate product – and masterfully so.

Can you troubleshoot on the fly? Great! Are you flexible in solving any given problem? Even better!

Our salesforce of the future will also be very comfortable leveraging various sales tools, including our internal lead generation database and unique online demos, to manage and seek out high value leads.

Important Notice: this isn’t a cold calling job. You will speak with people who have a genuine – sometimes fanatical – interest in our product. Yes we’re talking about expense reports, but people love us. Just check out what people tweet about us!

Finally, and most importantly from your perspective, we will aggressively promote the best among our team. Impress us and you’ll reap clear benefits, both financially and for your career.

Still with us? Awesome! Check out our jobs page, and then email your answers to the following questions to

1. Did you ever have a summer sales job when you were in high school? What did you sell, and what was your personal take on the product? How did you sell it?

2. If you were given free reign to choose the optimal set of sales tools, what would they be and how would they optimize your sales approach? (Feel free to list actual sales tools you’ve used, or fictitious ones. You’ve got free reign).

3. Pretend you had a month to do whatever you wanted. What would you do? And would this be sufficient time to accomplish the goals you set out to achieve?

4. What do you want to do with your life, and how is Expensify a step toward those long-term goals?

Thanks and we look forward to hearing from you!

Recall a certain blog post about Expensify and .NET?  Odds are you stopped reading about five paragraphs in, and possibly missed how “.NET on your resume isn’t an instant showstopper” only that it will “raise questions during the phone screen”.  Similarly, you might have missed that .NET is the “only choice” for Windows Phone 7 development.  Well at risk of dredging up old grievances, I’m happy to announce:

Expensify is Hiring a .NET Programmer!

(Windows Phone coders please apply

As for what we’re building, it’s no secret: we’ve got a cross-platform mobile layer that needs porting to WP7.  It currently works on Android and BlackBerry, and we’re about to launch an iPhone version.  We’re thinking of open-sourcing it if there’s adequate interest; leave a comment below if that appeals to you.  Either way please check out our Elance post for complete details, or just read on:

Port Expensify cross-platform layer to Windows Phone 7

Hello! Expensify has apps for iPhone, Android, BlackBerry, and webOS. A little known fact is that we built our own cross-platform layer, such that we have “write once run everywhere” on these platforms — using native controls. Your mission, should you choose to accept it, is to port this platform to Windows Phone 7.

I somewhat famously blogged about how much I like .NET for Windows Phone, so I’m very excited to start on this project!

It works like this on all other platforms, so we need you to build the WP7 equivalent:

- We instantiate a JavaScript interpreter. This is *not* an embedded browser — on Android and BlackBerry we use Rhino, and on iPhone we use JavaScriptCore. I don’t know what is the best JS interpreter to use on WP7, so it’s up to you to pick it.

- That interpreter loads our cross-platform application logic, written in JavaScript. (This code is currently packaged with the app itself, though could conceivably be downloaded at runtime.)

- The JavaScript calls out to the native wrapper, instructing it to do things like create and position controls, take pictures using the camera, make AJAX calls, get GPS coordinates, and upload photos to our server. We’ll provide you with the JS application code, but you’ll be expected to actually implement all of the JavaScript callback functions.

- All JavaScript code executes in a single thread. So UI events — even if they happen on a different thread (and I’m not sure they do, I’m just saying *if* they do) — should be passed to the JS thread for processing by JS.

- Similarly, most of the JS functions are “blocking”. When the JavaScript asks for a particular UI control to be created, you needn’t (and shouldn’t) return until it’s complete.

- However, some JS functions are “non-blocking”, namely network calls, camera actions, and GPS queries. These should return immediately and be processed in another thread (or even by kicking off an external app and waiting for a response). When they complete, like UI events, the callback should come from the one single JS thread.

- Persistent storage is currently very simple, using flat files on the file system. (Typically writing and reading JSON files.)

We are looking for a long-term contract, ideally with the opportunity to hire on-site in SF if all goes well. (Remote hiring or just remote long-term contract is also fine.) Accordingly, we prefer individuals over teams — especially individuals who like what’s written here: I should also mention that if you’d like to skip the contract and go immediately into hiring talks, that’s fantastic too.

This is a big project, so I’d recommend we split it up as follows:

1) Develop proof of concept. It is a standalone app executing in the emulator that instantiates a JS engine that loads a “hello world” file, which calls a single “alert” function to pop open an alert box. For simplicity, please include a “fixed bid” for this first deliverable, along with an hourly rate that we’ll switch to for future milestones.

2) With proof of concept in hand, flesh out the remaining UI controls. It includes what you’d expect — text, number, date picker, checkboxes, images, etc. A complete specification will be provided; if you prefer we can also handle this second milestone as a fixed bid.

3) Add networking and camera. Historically this is the part that gets hard, as for some reason HTTPS support on every single other platform has been dicey — especially when uploading binary images. This was true for iPhone, Android, BlackBerry, and webOS, so I expect it’ll be true for WP7 as well. Accordingly, I suggest we switch to an hourly rate for this.

4) Release to the Windows Marketplace for Mobile and interface directly with uses to diagnose and resolve issues experienced in the field.

How does this sound? Please let me know, I look forward to talking soon!

Founder and CEO of Expensify

Anyway, I look forward to hearing your cogent, well-considered comments below.  Thanks!

As you might know, we’ve been hiring a steady trickle of engineers, and we’re always eager for more. But we find ourselves without a true sysadmin, and honestly, it’s starting to show.

A long time ago Witold and I joked about scalability being “a problem we’d love to have”. When you are struggling to get anybody to use your product, it just seems like the last thing on your mind. Well, as much as I love the fact that there are hundreds of thousands of people using Expensify — it’s starting to add up to a real problem. Servers are getting overloaded. Databases are getting slow. I think the final straw was when I realized it was going to take over a week — sending mail as fast as we possibly could, 24/7 — just to send out a newsletter to all our users. So I love it, but it’s still a problem, and one that we’re not well equipped to solve.

Sure, we can make due — the great thing about being a programmer is there’s no problem we can’t solve. But our solutions are sometimes, shall we say, suboptimal. We can build anything from scratch, but sometimes it’s better to just install and configure off the shelf.

So this is my request: can you help us hire a sysadmin? Someone ideally familiar with Amazon Web Services (S3, EC2, SES), Ubuntu, lighttpd, PHP, postfix, ssh, and all the other myriad tools of a modern web infrastructure. But also someone with a deep intuitive understanding of disk and memory caching on virtual machines (where every virtual hard drive is actually layered on top of a *physical* hard drive — so there are two layers to manage), is well versed in the consequences of WAN versus LAN replication (high latency, low reliability), and who brings a deep reservoir of enthusiasm and expertise tearing apart a programmer system and rebuilding it the Right Way.

We’ll always need engineers. But engineering isn’t everything. Help us find a sysadmin and you’ll have my eternal gratitude. To apply, please ask them to read up on us on our jobs page and send answers to the following questions to

  1. When did you get started with computers and why?
  2. Contrast the pros and cons of virtual, dedicated, or colocated servers for a company like Expensify?
  3. What’s the largest, fastest, most reliable, most complicated environment you’ve ever managed?
  4. What’s a Linux command or tool that you think is more awesome than most people realize, and why?
  5. Based on what you can determine from outside the network, what would you suggest we change and why?
  6. When you receive a text message, what’s your first thought?

Thanks, I really appreciate your help!

Update: This position has been filled. Thanks for all your help!

We’re pretty excited about our rad office, but it takes some upkeep. Are you man (or woman) enough for the job? Specifically, we need someone to do as much of the following as possible (in order of priority):

  1. Come in the mornings and generally tidy up.  Erase the whiteboards, take the dishes out of the dishwasher, water the flowers, pick up any random items on the floors/surfaces and put them somewhere better, etc.  The cleaning crew does the basics, but they still leave the office in a bit more of a mess than I’d like.
  2. Keep the pantry stocked.  This means doing a weekly inventory to figure out what we have, what people are eating/drinking, ordering more of that, ordering less of what isn’t being used, polling the team to figure out what new things to add, being here to receive the delivery when it comes, stocking the shelves/fridges, etc.
  3. Be the gatekeeper for engineering applicants, ensuring that they’ve correctly filled out the questions, neatly entering their data into our candidate database, letting me know when they’re ready for evaluation, setting up in-person interview travel arrangements, handling hiring paperwork, etc.
  4. Ensuring our job posts are fresh on all the free and paid job boards.
  5. Generally being on hand to do whatever, whenever.

It’s not a particularly “difficult” job in the sense that there are no special skills required.  The only real showstopper qualifications are:

  • Can be reliably in our San Francisco office at the corner of Sutter and Market before 10am, Monday through Friday
  • Is generally web savvy
  • Has a credit card (you’ll occasionally need to buy things on behalf of the company and get reimbursed)
  • Is at least 21
  • Will work a 50 hour workweek without complaint
  • Is a sufficiently non-picky eater to join us for lunch on most days (we go someplace different every day, and the company reimburses you)
  • Can remain productive in a boisterous environment, with a diverse crew and soundtrack
  • Is super chill and easy to work with.

But that’s such a low bar to jump that it’s an especially hard position to fill.  After all, how do you screen candidates when almost everybody is qualified? Normally we ask a bunch of essay questions, but this time I’m going to do something a little different. This time, to apply for this position:

  • Record a 1 Min Video:  It honestly doesn’t matter about what.  There are very few “hard skills” required to do this job, so we’re just looking for personality.  We’re not looking for a master plant-waterer or anything.  We just want someone cool to hang with, who we can trust will do the work — day in and day out — with minimal drama and maximum friendliness.  Some suggestions:
    • Would you rather have the superpower of invisibility, flying, or mind-reading, and why?
    • What is your favorite beverage, and what is the ideal environment in which to drink it?
    • What was your most disastrous first date?
    • What is the most painful expense report you’ve ever filed?
  • Upload it to YouTube.  Or Vimeo, or Facebook, or anywhere you like to get your video fix.  Test the link to make sure it’ll work when we click it. (Hint: send it to someone else, or use Google Chrome’s “Incognito Window” to verify it works for more than just you.)
  • Send it.  Tweet it to @expensify (follow us so I can DM you back) or email it to, along with a resume or anything else you’d like to include.

That’s all.  If you follow the above instructions, I promise we’ll respond.  Hopefully in a timely manner, but definitely sometime.   Thanks, I look forward to hearing from you soon!

Update: The end is near, Expensify is hiring a .NET programmer!  Learn more…

Saturday edit: Wow, quite a response to this.  Some additional comments at the end.

Sunday edit: Still going! More comments at the end.

Monday edit: Skip my post and read this one instead.  It says the same thing, but less offensively.  (Or, rather, more offensively to Facebook and Google employees, less offensive to .NET developers, though the underlying message is the same.)

Tuesday midnight edit: After >500 comments, >1000 tweets, and >1000 Facebook likes, I’m closing comments on this thread so we can all get back to work.  The very last comment takes the cake, however, and is a fitting close.  Thanks ez, whoever you are!

As you might know, we’re hiring the best programmers in the world.  Sure, everyone says that.  But my coders will beat up your coders, any day of the week.  For example, Mich is barely 5 foot tall, but is a competitive fencer.  Witold is a 6’3″ former professional hockey player.  Nate practices knife fighting for fun.  And they’re pretty decent programmers, too.

But finding such people is more than a full time job.  Indeed, I spend about half my time on it, while Lisa spends about all hers.  And on top of that we have an army of recruiters out scouring the globe, leaving no resume unturned.  Taken all together, this creates a lot of resumes.  So many that we don’t look at them, because resumes — let’s be honest — are totally worthless.  Rather, we pay all our attention to a few key questions we ask every candidate, each aiming at uncovering a single key point: is this someone we really want to work with?

See, experience is cheap.  All it takes is time.  Skill is harder, but really only requires hard work — a lot of people can get that.  But attitude.  You either have it, or you don’t.  The right sort of person is so passionate about coding, they can’t be stopped from doing it.  They typically started before high school — sometimes before middle school — and never looked back.  They write everything from assembly to jQuery, on PCs to mobile phones, doing hard core computer graphics to high level social networking.  They’ve tried everything.

Everything, that is, but .NET.

Now let me clarify — .NET is a dandy language.  It’s modern, it’s fancy, it’s got all the bells and whistles.  And if you’re doing Windows Mobile 7 apps (which the stats suggest you aren’t), it’s your only choice.  But choosing .NET is a choice, and whenever anybody does it, I can’t help but ask “why?”

Don’t get me wrong: .NET on your resume isn’t an instant showstopper.  But it will definitely raise questions during the phone screen, for reasons that are best explained by simile:

Programming with .NET is like cooking in a McDonalds kitchen.  It is full of amazing tools that automate absolutely everything.  Just press the right button and follow the beeping lights, and you can churn out flawless 1.6 oz burgers faster than anybody else on the planet.

However, if you need to make a 1.7 oz burger, you simply can’t.  There’s no button for it.  The patties are pre-formed in the wrong size.  They start out frozen so they can’t be smushed up and reformed, and the thawing machine is so tightly integrated with the cooking machine that there’s no way to intercept it between the two.  A McDonalds kitchen makes exactly what’s on the McDonalds menu — and does so in an absolutely foolproof fashion.  But it can’t go off the menu, and any attempt to bend the machine to your will just breaks it such that it needs to be sent back to the factory for repairs.

Instead, we look for a very different sort of person.  The sort of person who grew up cooking squirrels over a campfire with sharpened sticks — squirrels they caught and skinned while scavenging in the deep forests for survival.  We don’t want a short order chef, we want a Lord of the Flies, carried by wolves into civilization and raised in a French kitchen full of copper-bottomed pots and fresh-picked herbs.  We need people who can not only cook burgers, but cook anything, from scratch.

See, Microsoft very intentionally (and very successfully) created .NET to be as different as possible from everything else out there, keeping the programmer far away from the details such that they’re wholly and utterly dependent on Microsoft’s truly amazing suite of programming tools to do all the thinking for them.  Microsoft started down this path when they were the only game in town, explicitly to maintain their monopoly by making it as hard as possible to either port Windows apps to non-Windows platforms, or to even conceive of how to do it in the first place.

This decision — or this mandate for incompatibility, perhaps — has produced countless ramifications.  Small things, like using backslashes in file paths rather than forward slashes like any dignified OS., or using a left-handed coordinate system with DirectX instead of right-handed as was used since the dawn of computer graphics.  Big things, like obscuring the networking stack under so many countless layers of abstraction that it’s virtually impossible to even imagine what bytes are actually going over the wire.  And a thousand other things in between: programming tools that generate a dozen complex files before you even write your first line of code, expensive servers that force a remote GUI terminal on you to do essentially anything despite a few keystrokes being perfectly adequate for everybody else,  a programming culture almost allergic to open source licensing.  The list goes on and on.

None of this makes you a “bad programmer”.  All these differences are perfectly irrelevant if you just want to make 1.6 oz burgers as fast as possible, and commit the rest of your career to an endless series of McDonalds menus.  But every day spent in that kitchen is a day NOT spent in a real kitchen, learning how to cook real food, and write real code.

Even worse, every day spent learning a Microsoft kitchen takes TWO days to unlearn, meaning once you get a reasonable way down the .NET career path, there is almost no going back.  You become so steeped in tools and techniques that have absolutely no relevance outside of .NET that you are actually less valuable to a startup than had you just taken a long nap.

So what’s the moral of this whole story?  Two things:

  1. If you ever want to work in a startup, avoid .NET.  It does you no favors.
  2. If you are a startup looking to hire really excellent people, take notice of .NET on a resume, and ask why it’s there.

It might sound harsh, and it is.  But sometimes we only have squirrels to eat, and we need them to taste good.

-david (Follow us at

Saturday edit: Wow, this post has hit quite a nerve.  Had I known it was going to take the internet by storm I probably would have been a bit more careful with my word choice (especially referring to .NET as a language, doh!).  But just to clarify a couple points, 24-hours into the storm:

  • Yes, .NET developers are great at what they do. It’s the most modern platform for application development on the planet.  Microsoft has always produced the best tools for building internal business applications, and .NET is their masterpiece.  There’s a reason why they own that space; they earned it.  That space employs millions of people, and those people are unquestionably the masters at what they do.
  • But what they do is very, very rarely startups. I’m sorry if that sounds offensive, but that’s a simple fact.  You can measure this yourself: go to any list of startups, maybe look at YCombinator’s recent graduate class, or Scoble’s list of picks for 2010, or Sequoia’s list of seed companies — or  go find a list you like better.  Do a curl (or your .NET equivalent) on each domain, and see how many are running a Windows server: I think you’ll find the fraction very small.  Don’t get me wrong: there are a lot of people who aren’t interested in working at a startup, for a lot of very valid reasons.  But if you are the odd person who is interested, it’s worth asking: why do so few use .NET?
  • Because .NET is designed to extend, not disrupt. The same could largely be said about J2EE, but in general anybody who “grows up” with these self-contained, highly-automated platforms can’t help but view computers in a different way than those who start from a lower, less automated, more difficult level.  (As one of the coherent commentators says below, Joel Spolsky himself laments schools teaching Java with the same basic reasoning of my article above, albeit more diplomatically stated.)  .NET is designed to tightly integrate with and seamlessly extend the Microsoft stack in extremely powerful but ultimately incremental ways.  Again, there’s nothing wrong about that if that’s what you want to do.  But if that’s not what you want to do, then .NET probably isn’t the right choice, as evidenced by how few people in the startup world choose it.

Again, this isn’t a rant against .NET — it’s fine.  It’s not even a rant against .NET developers being incapable of learning — they can learn as well as anyone.  It’s a rant against .NET teaching the wrong things for startups.  And about how people who use it for too long, can’t help but learn those things.  This is a rant about how startups, by definition, need to think of things from new angles, and those angles typically don’t involve .NET.

Anyway, I was going to leave all this to blow over before making any comments in a follow-up post next Friday.  Indeed, for all the outrage and fury, this is actually common knowledge amongst startups, and I was going to support that with a bit more data to win over the skeptics (at least, those who were open to listening).

But I’ve seen some recent comments that this post might have upset and offended the SMB community that we serve, and that I cannot abide.  For that, I’m truly sorry.  As someone who grew up using and ultimately becoming frustrated with the limitations of Microsoft tools, and grew up submitting and hating small-business expense reports, I hope I can convince you that we’re fighting for the same goals.  Even if our tools and techniques might differ wildly.

Sunday edit: Incredible that this post is still going strong, on a weekend no less.  But what’s most interesting is how the comments have gradually shifted over time.  Granted, me even pointing this out will probably have an effect on comments going forward, but the general trend has been:

  • First wave: Raw, incoherent hate, constructed from near-pure profanity.  I took the liberty of deleting most of this, as this is a PG-13 site.  Perhaps 1% of the first wave agreed with me.
  • Second wave: “Reasoned” hate, though most of that reasoning was done by extrapolating my misuse of one word (“language” instead of “platform”) into every conceivable sin.  I’d say maybe 15% of the second wave agreed with me (if weighted by actual coherent text).
  • Third wave: A very heated discussion.  It would appear that every possible insult had already been slung so there was nothing left to do but actually discuss the merits of the post.  I’d say maybe 25% of the third wave agreed with me.

It’s harder to get a sense of agreement/disagreement from Twitter as most people just retweet without comment.  But I’d say those who do make comments have fit the rough curve above.

EDIT (2/2/11): This position has been filled. Please see to review any currently open positions.

Hi! I’m David Barrett, the founder and CEO of Expensify. We’ve got a ton of money in the bank, paying customers, hundreds of thousands of users, a fantastic (albeit small) team, and a super pimp office. Things are really starting to take off, and we need your help taming the chaos. Here are some examples of what we’d love your help with:

  • Shop for the office! – About that pimp office we mentioned above… it’s currently empty. We’ve got ideas of what we generally need and a generous budget to go and make the awesome office of our dreams, but are too busy to actually go out and do it. We need someone with a good sense of style to turn these empty rooms into an exquisite workspace:
  • Schmooze on company time! – So many parties, so little time. We need someone to attend all sorts of social, tech, and industry events to carry the Expensify flag to the far reaches of the Bay Area. We need everybody to know that we’re here, we’re hiring, and we’re ready to rock their socks.
  • Walk my dog! – And keep the kitchen stocked, handle the mail, schedule meetings, arrange travel for interview candidates, get coffee for guests, answer the phone, and so on. All the little things that every once in a while just need to get done.
  • Build a company! – Anybody can do the above. But only you can do that while also helping us build Expensify in a very tangible way. Do market research, analyze data, contact customers, support users, execute PR and marketing campaigns, manage contractors. We need it all; the more you can and are interested in doing, the more we all win.

The job isn’t strictly a difficult one; on its face it doesn’t require any specialized skills. But that doesn’t mean it’s easy, or just anybody can do it. In fact, I’m hesitant to even ask because I’m certain I’m going to get a flood of resumes from everybody in the universe. So while I’m sure you’re awesome, please make it really easy for me to find you by emailing me the answers to the following questions:

  1. What’s your website? Or blog, or Facebook, or Twitter, or whatever you use to identify yourself online. We’re looking for a social, web-savvy person; let’s see what you’ve got!
  2. What’s your story? Basically, where did you come from, what are you doing with your life, what do you want to do with the rest of it, etc. (FYI, we’re only considering local candidates for this position; relocation isn’t an option. Sorry!)
  3. What do you hope to get out of Expensify? Obviously there’s fame and fortune (obviously), but what else?
  4. Shopping is easy when you have either no budget or a fixed budget. But we’re somewhere in between: We have money and are willing to spend it on things that are nicer than strictly necessary. But we don’t want to waste our money unnecessarily. Rather, we’re looking for some level of spending that’s “nice and maybe a touch extravagant at times, but without going overboard”. Given that, and given the vast range of options available, how will you decide which — for example — conference room table to buy?
  5. Going along with the previous question, provide a link to a conference room table that you’d recommend we buy. It should be about 8 feet long and comfortably seat 8.
  6. What experience do you have talking on the phone in a professional manner?
  7. Imagine a candidate is flying in for an interview next Friday, and will be staying the weekend. Go check out the travel websites right now and pick which exact flight and hotel you’d book for the candidate. (Once again, you’re not being given a strict budget to work within: I want to see what you feel is a reasonable balance between cost, convenience, and comfort.)
  8. Anything else? Why are you the perfect person for the job?

That should do the trick for now. Write up answers to the above questions, email them and a resume to and I promise I will personally respond — hopefully in a timely manner, but definitely sometime. Thanks, I’m genuinely eager to meet you soon!

Founder and CEO of Expensify
Follow us at on Twitter
Like us on Facebook

Hello technical recruiter! (Or anybody else interested in Expensify hiring.) The challenge of running a startup with too few people is it’s hard to find the time to hire more.  That said, it’s absolutely crucial that we do, as soon as possible.  With this in mind, I’ve tried to capture some of the most common questions into one place.  I have no doubt you’ll have many more, and I am more than willing to make the time to answer them, but can you please do me the great favor of reading these first:

What roles are you trying to fill?

Junior engineers.  We only hire generalists that can do everything, but you might consider any of the following job titles to get into the right ballpark:

  • Junior software engineer
  • Mobile app developer
  • Junior web developer
  • Web designer
  • Usability designer

How many people are you trying to hire?

We would like to continuously hire as fast as we possibly can for the foreseeable future, potentially 1-2 a month for the next year or more.  That might sound slow — lots of companies suck up employees by the hundreds — but it’s fast for us.

Why have you hired so slow?

For better or worse, we’re very, very picky — we’re looking for a very certain sort of very unusual person, and we’re willing to wait as long as it takes to find them.  I know everybody says that, but we actually mean it.  So we’ve had a process that has been slowly pulling in very high quality candidates, but just too slowly.

What hasn’t been working that you want to change?

I feel the overall message we have is a good one — the company is the leader in its space, we have an incredibly solid team, a great working environment, etc.  But that message isn’t getting out to enough people, or the right people.  For example, we’d previously relied heavily upon Craigslist, only to learn from our more recent hires that they don’t even look there (and in fact view it as a place to get scammed), and it was only through sheer luck that they stumbled into one of our job posts.  Accordingly, we need you to carry the Expensify banner to the far reaches of the earth and make sure everybody who wants to work at an awesome startup considers us as an option.

What do you want me to do?

How exactly you do that is up to you — after all, you’re the expert.  I’m more or less open to any crazy ideas you have on how to find candidates: the “input” is up to you.  However, I need you to act as a strict filter such that I’m not overwhelmed with unqualified leads.  The best filter we’ve found is our application questions. Accordingly, when you find a candidate you think might be a good match, I suggest:

  1. Email with their resume (if you have it) or just say “I’m contacting person X” — this gets your representation of the client “on record” in case they contact us direct.
  2. Ask them to fill out these questions and either send them to us directly, or send them to you (and you forward to us).

What’s up with these crazy questions?

The people we look for are very unusual, and we’ve found that the resume format is almost never informative: they’re formulaic, riddled with bulleted lists, and like boiling down a fine steak into hard leather.  The people we hire have incredibly complex and interesting stories, and a resume just isn’t the right format to capture that.  Indeed, many of our candidates have actively applied precisely because we didn’t ask for a resume.  They don’t like them, we don’t like them, so we’ve just cut them out of our process entirely.  Instead, we ask candidates who are interested in Expensify to just tell their real story, in their own words.  This has a variety of effects.

  • It actively discourages people who aren’t interested (or interesting) from applying.  This is a good thing — it saves them time, saves us time, and everybody wins.
  • It lets us evaluate actual writing and programming skills from the very first contact.
  • It gives us a detailed picture of their full skillset, history, hopes, and dreams.

But most importantly:

  • It actually attracts the best candidates.  Everybody we’ve hired *liked* the questions.  They weren’t a burden to fill out, they were a relief: they showed that Expensify actually cared enough about them to look past their resume and learn the true story.  And (again, for the right person) they’re actually fun to fill out.

They’re unorthodox; most people don’t reply.  But those who do are the tiny, tiny subset we *want* to reply, and that’s all that matters.

There’s no way people really like these questions

I understand it’s hard to believe.  But here are some recent comments:

Get back in touch if you want to get back in touch, and thanks — and I do mean this sincerely, not in an ass-kissy way — thanks for putting together such an enjoyable application process!

I like the way you posted the job position; it gives me great flexibility on providing a response.

I found your posting on Craigslist yesterday — aside from the fact you started out by saying the job was perfect for new college grads, which I am, I found the questions interesting, so I decided to take a crack at answering them.

I’ve filled out the questions found on your website. It was rather enjoyable to fill out, I hope I’m what you are looking for.

And so on.  It’s crazy, but works.

What are non-salary perks and benefits?

The main perk is that we truly value our employees (as evidenced by how hard we work to get them).  And we’re not really a “perk heavy” company, instead favoring just better salaries.  But additional perks include:

  • Health
  • Dental
  • Matching IRA (retirement account)
  • Free lunch (at whatever restaurant you want, not crappy takeout or cafeteria)
  • Annual trip overseas to work from a remote beach (on their own dime,  unfortunately)

Will you sponsor a visa?  Relocate?

Yep.  For the right candidate we’ll bend over backwards.

What sort of candidates are you looking for?

Junior engineers with better skills than senior engineers.  They’re out there; we already have several.  They’re just really hard to find.

How can I identify a good candidate?

Some hallmarks of a good candidate are: (These are just examples; not all will fit.)

  • Probably not from the Bay Area
  • Started programming in elementary or middle school
  • Wants to eventually start their own startup
  • Has a really interesting life outside work
  • Has done a lot of travelling
  • Dabbled with 3D graphics or video games at some point
  • Went to school but was incredibly bored and disappointed
  • Worked their way through school
  • Has bounced between a lot of jobs
  • Hasn’t worked for anybody you’ve ever heard of
  • Wants an opportunity that appreciates and exercises their full talents

Why junior; don’t you want senior people?

The sort of person we like has such a fast career trajectory that our only option is to get them while junior; after a few years they’ll be so successful we could never afford them — they’ll be starting their own startup and thus unobtainable.  There are always exceptions to this rule (especially people who are just looking around for a better opportunity, or people whose previous startups didn’t pan out), but in general unemployed senior people who need to actively look for a job are almost implicitly unqualified.

Why self-taught; why not PhD’s?

There’s nothing about programming you can’t learn with a cheap laptop in your parents’ basement.  The sort of person we like goes to school because they felt obligated to, or has been misled into thinking it’s somehow required for a good job.  But they typically realize this mistake well before finishing any sort of PhD program — often well before graduating with any degree at all.  People who go through the full program without realizing that they’re wasting time and paying money to be *less* employable are typically not the people we’re looking for, though there are always exceptions.

Why generalists; why not super awesome specialists?

Programming isn’t hard.  Anybody who says it is just isn’t very good.  Granted, there are some extremely esoteric things that are genuinely hard or for which specialization is useful or required — supercomputers, device drivers, advanced artificial intelligence, computer vision, etc.  We don’t do any of those.  We want people who can do pretty much any non-specialized programming task, ranging from C++ networking, SQL queries, PHP web development, HTML layout, AJAX interaction, jQuery manipulation, etc.  Contrary to popular belief, technology isn’t the hard part.  It’s the process of deploying technology in an effective way to solve a meaningful problem — *that’s* hard.  And generalists in effect specialize in that.

How do I pitch Expensify to a candidate?

Though Expensify is the leader in its space, has won lots of awards, is growing fast, and so on — it’s still not a household name.  We’re not looking for people who want to work for Google, but for the *next* Google, before anybody heard of it.  Expensify’s biggest single advantage is genuine and immediate empowerment: you don’t need to “prove yourself” before getting to the good stuff.  You start the good stuff right away.  Accordingly, you never work “for” Expensify. You work for yourself, furthering your own passions and career (and wealth), side by side with the rest of us.

Is a Master’s degree a showstopper?

No. It’s a demerit, but not a showstopper. (A PhD almost is, however.) The question is: why did they go back to school after graduating with a Bachelor’s degree? Did they go back because of some really amazing opportunity, or because they couldn’t find a real job and were afraid of the real world? There are no hard and fast rules — find the story behind the facts. If that story is compelling and shows the person is really awesome, that’s what matters.

Recognizing that nothing is a showstopper, what are some flags?

Here are some things to be wary of:

  • Graduated before 2005. What have they been doing for the past 5 years that still caused them to be interested in a junior programmer role?
  • Uses a lot of Microsoft technologies (, C#, Windows Server, etc). Nobody good uses the Microsoft stack without an amazingly compelling reason, though I honestly can’t think of any.
  • Has a bunch of certifications. Those certifications are meaningless; good people don’t want or get them.
  • Has worked for a large company (>1000 employees) for a long time. It’s good to work for a boring company for a short time — that teaches people what they want to avoid. But anybody who sticks with it for too long must not really care about their career.
  • Doesn’t have a website. Not everybody has one, and certainly nobody *needs* one. But good people have them anyway to experiment with and host personal projects.
  • Sounds boring. If you sound boring in email, you probably are boring. That’s not always true — I originally rejected one of my employees due to sounding boring, and boy was I wrong. But though there are exceptions, most people aren’t exceptional.

Where can I read more information?

We’ve got a bunch of information online.  We’re adjusting it all the time (before it was too terse, currently it’s a bit too verbose), but you can read it here:

Or, just send me an email at  Thanks for reading all this, I really appreciate your  help!