Last Friday I tendered my resignation at Expensify, the startup I've been working at for the last 2 years. The following Tuesday (by mutual decision) was my last day.
Before I made the decision to start looking at other companies, I wrote a short essay to myself outlining the reasons. Since several people have asked, here follows a cleaned-up version of that essay.
The most glaring reason is PHP. I've made no secret among my coworkers and my friends that I don't care for the language. The classic article Fractal of Bad Design hits on a lot of my gripes with it. I think I'd be legitimately happier working with most other web tech stacks. However, I'm an engineer. I can get by with almost any language, which is only a tool. My distaste for PHP was a factor in my decision to leave, but not the main one.
However, another facet of PHP was the driving factor: it's not a particularly marketable skill. Or rather, it's not a skill I can use at any company I intend to work for. As such, I'm spending 10 hours a day working with a tool I'll never use after expensify (if I can avoid it). In that light, it seems like the longer I spend there, the more time I'm wasting that could be put to improving my toolset as an engineer.
Of course, I can (and do) work with other languages and frameworks in my spare time. I play with Rails and JS when time allows. Unfortunately, I only have a few hours a day to fit that in, along with maintaining myself physically and socially. This makes it really hard to grow as an engineer.
Part of that is the 10-hour days. This was not a surprise- I was told up front that to work at Expensify meant 50 hour weeks, and I was fine with that to start. I figured I'd have a little less time for brewing and other hobbies. What I didn't anticipate was that I'd have significantly less time to build my toolset by learning new languages, frameworks, and techniques. Going back down to even something like 45 hours would make it a lot easier for me to become a better developer.
In fact, "growth as an engineer" seems to be a common theme here. My final complaint is that I don't feel I'm learning as much as I used to. When I joined, I had the pleasure of watching David and Witold (the cofounders) discuss business plans, partnership deals, feature planning, UI tradeoffs, engineering philosophies, and more. I got a great look at how they built a company, and it was educational in ways I would not have predicted.
However, I feel like that growth has tapered off over the last year. These days, most decisions I see made I could have predicted beforehand. The projects we undertake are banal and straightforward (product-wise). I know the expensify way of doing things pretty well, and I think it's time to see how another group of people run a company. There will probably be things I think Expensify did better than my new employer, and some I think they did worse, but it'll be educational.
Although none of these factors would be enough to warrant leaving on their own, all of them together made me seriously consider leaving for a few months. What pushed me over the edge was probably the least important but most objectively bad factor: we all had to take a 15% pay cut (and lost some other perks like free lunch/dinner). Not the end of the world, but not great either.
So, those are my reasons. You'll notice that they're pretty much all related to my personal growth. None of them are an indictment of expensify; in fact, I loved the team. The group of smart and hardworking people assembled at expensify is probably why I stayed as long as I did. Further, although we hit a financial rough patch, I'm sure they'll pull out of it- I intend to exercise all the equity I've vested. Expensify is a fine company, and I'd recommend them to any engineer not too put off by PHP!