What Working at Stripe Has Been Like
kalzumeus.com
kalzumeus.com
That feeling you get when you finish a challenging project, write a great shipped email, and get a bunch of feedback from folks throughout the company is pretty amazing. Once I was invited to convert one of my shipped emails into a presentation for a company all-hands meeting. I had a less than a week to get it done, which was pretty hectic, but in the end it turned out great and it was perhaps my favorite memory of my time at Stripe.
I enjoy my current job, and those little dopamine hits I get from checking things off my list as well as the bigger ones from finishing projects, but now only my boss and some teammates notice when I finish something. One thing I learned about myself, is that I really do care about what other people think about my work.
Neat! I understand that you can't share them, but do you happen to know of any public examples?
It helps make a fuller product, since people have less pressure to always work on the flashier things, and can devote time/energy to things like developer tools that are also extremely important.
However if all the threads are just “great job on X!” I can see how that could be low-value self promotion.
They also made it fun. One manager conspiratorially told me were two schools of thought around what made a great shipped email; copious footnotes or funny gifs, and jokingly told me to make sure I had one or the other or even better both.
Stripes love their "footnotes" though, which are essentially links to things. Even though everyone had full HTML email, they were almost always formatted in the style of Hacker News[0] comment links. The people at the top can definitely set the communications tone for the rest of the company.
That doesn't sound optional at all.
From my point of view, making things fun isn't fun. Watching a comedy routine is fun. Writing one isn't.
Driving a car is fun. Building a custom hotrod isn't.
Going to the museum is fun. Learning to paint isn't.
Playing a video game is fun. Writing a video game isn't.
Going to a concert is fun. Playing a gig isn't.
Eating is fun. Gardening isn't.
Oh, wait, none of that is universally true.
I strongly doubt it was optional, if you wanted a positive career trajectory.
This is also the case in most other companies - it's just that different firms have different expectations for how their employees should market their accomplishments.
I worked for a company that did cards, like thank you cards, or well done cards that you could give a colleague and these would get handed out each month to the recipients. It made me cringe. Can't believe people are so needy.
In reply to foldr's comment, yes, they were totally optional (I can't imagine it's changed).
Seems to be a very polarising thing to be asked to do, judging by the replies on this particular comment.
EDIT: Curious about the downvotes? This is a real thing. I am sure they don't want to hire people that would hate to write shipped emails and publish them to the list if they actively hated writing them. It is simply not good culture fit, and I am sure they would want to identify that early on in the recruitment process.
To clarify, I hate talking about my accomplishments, it makes me feel deeply anxious and uncomfortable, and will say as much if asked. But I’ll also do it if that’s what’s required of me.
I guess those would be the differences.
"Do you like talking about your accomplishments with the rest of your team?"
"Are you comfortable discussing your work with the rest of your team?"
Every company is different and attracts different kinds of employees for various reasons.
Anti-discrimination is important, but it shouldn't go too far.
One of my friends worked for a company where one of the official values was "100%", and to me this was problematic because different people would understand it to mean different things. Some would assume that it just means that everyone works hard, that it's not a cushy job. Whilst others would interpret it to mean that everyone works crazy hours and is expected to give their life to the business at the expense of other commitments. My friend couldn't recognise that different people would interpret the value differently, so believed it was a perfectly reasonable way to get the wrong kinds of candidates to self-filter.
https://www.gov.uk/reasonable-adjustments-for-disabled-worke... says "Employers must make reasonable adjustments to make sure workers with disabilities, or physical or mental health conditions, aren’t substantially disadvantaged when doing their jobs."
and the examples given on the gov.uk site include a specific mention of an anxiety disorder "doing things another way, such as allowing someone with social anxiety disorder to have their own desk instead of hot-desking"
But I don't know where "reasonable adjustments" comes in with this. "I have social anxiety and don't want to present in front of a group, may I send an email instead" sounds reasonable to me. "I don't want to send an email, someone else will have to do this part of the job" doesn't sound reasonable. You don't reasonably hire one person to do a job, then hire another person to the parts the first person cannot do, right? But I'm no lawyer.
I love sharing my accomplishments. I know what's socially expected from me, but not sharing feels really bad to me. It feels as all the work I've done and that cool accomplishment don't matter at all. Therefore I mostly share with friends, though most of them lack the necessary tech-knowledge to really understand it.
I also love hearing about others accomplishments in an easy to digest way. These shipped emails seem like great way to spread knowledge and a positive attitude of getting stuff done.
What I, and the comment you replied to want to say, everyone is different. Let me work at a company that encourages sharing accomplishments and go work for one that values humbleness. But at least please don't take it away from me, just because you don't like it, especially if it's optional.
I was proposing a possible reason as to why the comment I was replying to was receiving downvotes.
Different people are different. It'll exclude a lot of people, but not all of them, and it certainly wouldn't be clear-cut discrimination.
I feel sad for those who are so insecure that they need constant approval from their peers.
It's an internal procedure that helps build company knowledge and information sharing. It has a side requirement for acknowledgement for peers, but it is nothing like an optional purchase being high fived...
In fact, I think the only shipped emails I've written have been on behalf of colleagues since I was so excited about something they'd built/fixed (with their permission). Many (most?) Stripes aren't the type to brag about their work. But it is nice to share, and to let others know that X product is better now.
Let's assume you're wary of talking about accomplishments - what reasons could be there?
Bad memories of trying to convey what awesome things your team did and were generally received really badly? Preferring to sit down and ship and not boast about it at all? Sure, never accomplishing anything might also be the case, but in my experience a lot of really good people weren't keen at all to talk about cool stuff they did in any official or formal form - only over beers between a few developers or not at all. I don't think this is necessarily tied to being an introvert.
I didn't downvote you but I think it's a bad idea. Also because the opposite is true. No matter how much they personally contributed, the loudest people will tell you everything their team did.
The company has grown so much larger since I joined that I have found the Drumbeats to be a godsend. It helps me feel connected to the breadth of what's going on, which would be physically impossible otherwise.
I guess a time will come when there are too many Drumbeat emails to keep up with (it sometimes feels that way -- I've gotten better at skimming). I don't know what I'll do then.
We also have a What We Learned This Week list. It's gone a bit quiet lately, which is a shame, because there were some amazing war stories posted.
Plenty of blue-chip startups have future founders working for them...yet it seems to me that having past founders is much more rare. An incredibly strong company endorsement.
https://angel.co/blog/product-engineering-at-angellist-talen...
I am glad to see we are now explicitly mentioning the aspects of Stripe culture that make it founder friendly.
- Huge transparency - Management optimizes for autonomy & distributed decision-making - Upwards review processes > downwards decision-making - Level obfuscation - Shipping culture - People who are of the quality you'd normally only find by hiring them yourself (and frequently better)
My 3rd week at Stripe (around 7 months ago) Patrick just sat down next to me at lunch, knew my name, and started talking about what my team was working on in great detail. Asked me many direct, important questions and really listened.
As a former CEO of a VC-backed company, I knew he was 100% on his game -- and around you at work you can see that pretty much everyone trusts the execs to be insanely competent, because they are. My only wish is that they don't take as many solo plane rides, haha. :)
On the one hand, there are so many things they do here that make me feel like they’re in the future. On the other hand, every fifth person has a flip phone, the WiFi sucks, you can’t buy a travel SIM card at the mall, and there are CD/DVD stores everywhere.
I can’t help but feel part of their problem is how unwilling most local Japanese people I’ve met here are to break the rules.
Example: I once had to fill out a form (as a designated corporate representative) authorizing myself to access our racks in an NTT data center and then fax it to the DC manager (who I knew personally) before he would let me in. During this entire process we were standing in the same room.
It used to annoy me when I first moved to Tokyo, but you eventually learn to live with it.
1: https://tokyocheapo.com/business/internet/prepaid-cheap-japa...
They offered me a role in Dublin instead, which I wasn't very interested on, and then ghosted me when I pushed to find out compensation before continuing (so I'm assuming they pay under market)
Not surprisingly, the position is still open 3+ months later
Stripe just does not look or function like a credit card processor. It is nearly impossible for non-engineer folk to grasp - to the point of it not being a viable platform. The almost hermit-like reporting interfaces (the best that can be done is a bunch of paginated tables??), the lack of visibility into how charges break down at an aggregate level (how much do we pay Stripe in fees has to be pulled from a shudder export of all transactions), handling of disputes, no ability to generate monthly statements (for Connect accounts), no direct line access to an account manager etc etc - the list goes on unfortunately.
I love the simplicity, but I can tell you that Stripe is lagging far behind in functionality and ease of platform use for SMB and enterprise SaaS companies (specifically, in our case, a platform/service provider that runs payments for a bunch of small businesses). We're small, but not tiny, and growing - so the noise around the problems we face just keeps amplifying by the day. The moment we crossed a dozen customers and 100-200K in monthly processing, it’s as if Stripe just stopped working for us.
Stripe's clearly an extraordinary engineering-driven company, but solving for real business use-cases is key. From the outside, it feels like Stripe is solving all the back-end problems and optimizing it, but doing nothing about the front-end, metaphorically speaking.
I'm now having to get on calls with old-school card processing providers since Stripe just doesn't "scale" for us from a business use-case perspective. It's too catered to the devs.
Hope this falls on the right ear. I'm happy to chat more and provide my 2c of feedback if someone wants to listen.
I don't see the need for "reporting" from the Stripe website as I think most businesses should be doing it on their own in their own tooling, but in the cases I want to quickly look things up, Stripe's back-end has been just fine as well.
This is odd. We have hundreds of monthly customers and ship physical + digital products, handle returns, disputes, and so forth fairly well.
Support has been good for us as well, if unconventional, so I'll agree with the lack of a direct line access to an AM/AE being annoying... but ultimately it hasn't stopped us from doing anything timely.
We have a SaaS product in addition to physical retailing and Stripe works very well for us and I don't see how it won't for years to come. We use third-party systems in addition to Stripe for inventory management, fulfillment, and we do reporting from pulling raw data into our own back-end and doing the work there (which... I'm pretty sure is standard with most small tech businesses, as you have much more granular control over things), so I guess we just almost entirely disagree with each other.
I think your suggestions are good... I just don't see them as being anything more than sustainment features for me.
Who love getting an error back when shipping code because some things are possible on Stripe test server but blocked in production.
How did patio11 develop these?
———
EDIT: How do you know that what you are working on is not a distraction?
I could be entirely wrong though.
I wear an insane amount of hats at my company because 1) I'm confident/stupid enough to believe I can handle it [see the part above about hubris] and 2) I actually have a track record of being able to tackle whatever has been thrown at me. My curiosity helps me from getting bored because I'm fine jumping from researching DC EV chargers to file permissions issues to tax law to.... anything.
I wouldn't have considered myself as having "hubris" but I have a kind of semi-wild enthusiasm for being able to do things that people have reacted badly to before for exactly the reason you said. I'm not sure how to signal to companies "my deal is I want to do things; I will more or less literally jump off my seat to assist anyone and no job is beneath me and I will stay up and work 16 hours straight if I screw something up; but I'm not really good at hearing no".
"I have a proven track record of executing relentlessly, rapidly delivering value, and moving between internal roles effortlessly. What challenges are you facing I could contribute to in a meaningful way?"
Be more comfortable hearing "No". Trust takes time to build.
In my experience at large companies, on teams that were technical and heavily collaborated with engineering, but were not overseen by engineering managers. Middle management was entirely focused on optimizing for metrics that were either assigned to them, or would result in career progress; instead of what was best for the company. Regardless of whether the companies claimed to have a "nothing is someone else's problem" culture. As a result, any embodiment of that principle, was either punished or perceived as creating problems by non-technical managers. Even if direct praise was often received from engineers and their managers for those actions. In that workplace dynamic, it inherently carries a lot of risk and easily puts a target on your back.
Besides posts like this that give first-hand accounts from employees. It's quite hard to identify what would be an honest signal of true dedication to that principle. Especially in interviews where you're a very qualified candidate, it's difficult to tell if interviewer is trying to selling you the idea of working there.
Instead, I think the core of it is perpetuating "beginner's mind" - that is, you approach every problem with the enthusiasm of a beginner, not with conviction that something can or cannot be done. It's not necessarily pride or self-confidence as much as it is a belief that the thing can be done by someone, and it's just the knowledge you don't have that keeps you from accomplishing it.
So, you don't avoid doing something because it's "not your job", you move it to another team who is better positioned to address the issue. Or maybe you deprioritize it because it doesn't fit in with your team's current priorities, etc. Eppur si muove.
Facebook culture makes a similar statement: "Nothing at Facebook is someone else's problem." I don't take it to mean that you are supposed to be the Atlas of the organization, but rather that when you see problems and issues that might arise, you don't ignore them because it's "not my job" or "not my problem" - you embrace it, escalate or forward it to the correct people, and then go back to what else you have to do.
This type of thinking stops issues from being buried when they're noticed by someone, even if it's something outside of what they are judged on in their responsibilities (and performance reviews). A good hypothetical example of this is a crash condition you may trigger as an engineer. You might not quite know what is going on but you have a reproducible testcase of a crash condition in someone else's stack, and saying it's not your job means the bug doesn't get fixed or reported. Had you submitted that crash condition and made it temporarily your problem, you could have indirectly helped patch a deserialization bug that could've led to code execution on that tier with a more malicious testcase (i.e. exploit).
In smaller companies, I think everything technical kind of ends up being your job, so your job becomes what you make of it at that moment. Do what needs to be done to ship the thing.
This here is key.
There are plenty of seemingly-intelligent individuals out there who refuse to acknowledge gaps in their knowledge.
They instead favor suppression and/or deflection over escalation because their own fragile egos could not handle the fact.
Full ownership mentality tends to weed these people out.
So another way that suppression can happen is, “oh that seems like it could be a problem. But is it? Who would I ask? Would asking about that be a distraction? {switches back to original task}”
Yet another way is, “this error email seems like this is a problem. But I’m new and nobody else is responding to it and there are like 30 of them. I should probably filter them out so as to avoid getting distracted. I wish I knew why we weren’t allocating time to dealing with these alarms. {switches to remain focused on original task}.”
I should have been more specific and mentioned "active suppression" to imply a focus on behaviors inclusive of things like pre-emptive sabotage.
Trying to really educate around this at my workplace.
I call it "throwing your hands up." If you run into a problem, or notice that something isn't working, what-have-you, if you throw your hands up instead of working to fix it, or find the person who should fix it, you are on my shit list.
It's hard to explain this part of ownership. But it's very obvious when you see someone doing it. Their first response is often to say something like "not my job," and they often think that Extreme Ownership or Question Behind the Question mentality covers it, but after it all shakes out in the wash, it's actually the opposite.
Maybe people need to do a better job of explaining ownership up front, or choose different words. IDK
What would you tell a junior engineer who feels so overwhelmed with the tasks he is supposed to be focused on that he decides not to switch task to solving this other thing that may-or-may-not be a real problem?
Also, are the phrases “Extreme Ownership” and “Question Behind the Question” from a US Navy SEAL book by Willink and Babin? Would you generally recommend that book?
My problem with this is that everything is always not working, or barely working, and nobody wants to hear about it. You're going to say "of course I mean important things", but wherever you look, if you look for problems, you see problems, there aren't a few things which are problems, there are oceans and oceans of problems and potential problems.
The only coherent response to this is blinders - do what everyone else does, and pretend everything is fine - until an incident forces people to face it. Then face the smallest possible case of it, and reassure each other it's fine now. I think you really mean "intuit the same judgement of importance that I have", but either you're so used to not-seeing-problems that you don't see how many there are, or you aren't willing to say that outright because it leaves the person with an escape from you putting the blame on them, and you don't want them to have an escape and you need someone to shitlist for .. I dunno what reasons. Why /do/ you have a shitlist instead of a "training" list?
"Everything broken, or barely patched together" is the norm.
Cynical people reading this, give a couple of minutes thought how many things you've experienced just today, which aren't right or could be a problem. I bet you'll pass a dozen in that time, right?
Then the rest of the organisation, including leadership hasn't embraced the approach. You can't do it unless the culture really baked in, or else you will break yourself.
>Leaders are owners...They never say “that’s not my job".
You own your entire problem space, not just your solution. If something unexpected comes up, you're still ultimately responsible for dealing with it with the goal of solving your actual problem
In a large company it's tempting for people or teams to put up walls around what they think their job description should be. Invariably there are gaps no one wants to own and it turns toxic pretty quickly.
How would you maintain this habit in a world where:
1) Time is limited.
2) Context-switching has a high time cost (see “manager time vs maker time”).
3) Communication takes effort. Describing issues conherently takes at least 15 minutes of focused time.
4) “Noticing an issue” is an event which happens at least 4x per hour? This includes seeing an alert come in via your error-reporting infra and determining if it is or is not spurious.
Your attention would be jerked this way and that. If you are in the process of reporting one issue and see another issue, do you report that first or second? How do you find time to defrag your working memory and to focus on your original task for the day?
We live in a tremendously noisy world.
Without a commitment to focus for 2 hours and ignore things other than your current task, How do you accomplish anything?
Could someone explain the "CMS e-r-b" joke to me?
This bit in the post about the author having previously been a founder of a business intrigued me.
As a founder myself, I know that there are bits of the business that don't fit into my natural skillset but have to be done. That is accepted as part and parcel of running a business.
The second point intrigues me though. In my decades of running my own software business, I have had a lot of staff come through as employees, get skilled up, then leave to start their own businesses using the skills they learned while at my company.
This actually gives me a great deal of pleasure and pride. I LOVE seeing people's career pathways take off, and I love it more if I had contributed in some way.
I heard [0] for a long time it was all about long form posts to a massive number of Google Groups mailing lists with custom tooling to manage subscriptions (bc the Groups UI is poor). I understand these lists range from general to hyper specific.
But then I’ve also heard much of the communication has shifted to Slack or other tools. Slack tends to degrade into chaos at a certain size, and at Stripe’s scale I’m curious if this is a big pain point or how you mitigate it.
Other tools, like a wiki, an issue tracker, Home[0], and a culture of "run" rotations (like on-call but for helping folks on other teams) help keep chaos manageable.
It might be interesting for us to write up another update on this, since many folks are curious...
Their documentation is very clear. Their email and irc support is smart and responsive, with nary a "I can help you with that today" script recited by an agent to waste my time.
They set and meet expectations about the financial stuff, like how long it takes for transactions to hit the bank, and what happens with disputes and chargebacks and other parts of the world of serving real paying people.
It's not hard to guess that the things in this article are all true.
> Their documentation is very clear.
In a world where no one gives a shit about cleanly documenting processes - especially ones that are versioned or change - I really appreciate Stripe's dedication to this.
I have no idea what the percentage is but I recently had a decline I think may have been from Stripe itself.
A few months back I’d dropped my car off at the shop and tried to Lyft home. I’m a very infrequent Lyft/Uber user. Lyft refused to accept my payment. Tried with two different cards (Chase, AmEx) both directly, via Apple Pay and via PayPal. Couldn’t hail a car.
So then I try with Uber. Same thing! Payment rejected, no car for you.
I wrote to both Lyft and Uber customer support. Never heard back from Uber. Lyft claimed my card was denied (“It appears that the card is not working due to a decline from your bank. Because the information we receive about bank declines is very limited, you’ll need to reach out to your bank directly for more information as to why the transaction was denied.”) I contact both my card companies - they tell me there are no blocks on my card nor anything that would cause the payment to be rejected.
The only thing I could find Lyft/Uber had in common was they both used Stripe.
(But that doesn’t explain not being able to pay via Apple Pay/PayPal unless those somehow route through Stripe.)
Never did figure out what it was (“Jay, I had checked and verified that the last four of the card that you have provided is already added on this account. There shouldn't be any issues in requesting for a ride. If you had any issues with your Lyft request. Please kindly send a screen shot so that we will be able to see and rectify the issue.”) and haven’t had cause to use Lyft/Uber since.
This incident is the only time I can recall payments being rejected like that. I think Chase once temporarily blocked an Internet payment, sent me a notification immediately, I indicated the charge was legitimate, tried again and it went through.
Oh well. (I ended up getting a ride home in the shop’s customer service van.)
The actual number is more than an order of magnitude higher, across the industry, for fifty years. Insert "this is fine" gif here.
If anyone thinks "Oh wow that isn't fine" I'd encourage you to join the team working on it.
Anecdotally I've had my own cards denied because I've reported my card missing and had to get new numbers. This is fairly common from what I've seen, many people I know have had issues because of this (late fees, etc.). Just another case I thought I'd add, as we sufficient funds and it wasn't fraud.
When a generic code comes back, you don't get your money, but in a not insignificant number of cases, you do get an upset customer contacting you to ask why their payment didn't go through when their card should be fine and they've been using it with you for a year now and they just used it this morning at their local store with no problems. You can understand their frustration.
The reality is that most people don't realise how horribly unreliable the card payment infrastructure we rely on actually is. They can and will blame the merchant who declined their card if they don't know of any reason that it shouldn't have worked. Even if they don't blame the merchant explicitly, having their card declined causes a lot of people some embarrassment, and that is not a reaction you want associated with your store or service if neither you nor your customer has done anything wrong.
As a data point, one business I work with offers subscriptions, and sometimes the majority of its entire churn is caused by unexplained failed card charges from Stripe. For comparison, where Direct Debit schemes are available in Europe and used by that business, they essentially never exhibit unexplained charge failures.
To put that in terms of somewhat realistic numbers, say you have a 97% retention rate on a typical monthly subscription for some SAAS offering. After 12 months, just from attrition, you have lost more than 30% of the subscribers you had at the start of the year. This is why improving retention for subscription business models is such a big deal. Now suppose you have a 92% retention rate, because you're losing an additional 5% of subscribers each month due to failed charges. After a year, you have lost over 63% of the subscribers you started with. That's a devastating difference.
Now suppose you are also attracting new subscribers at a respectable 10% per month. In the first case, you have net 7% growth per month, meaning your business will be around 125% bigger at the end of the year. That's more than double its previous size -- yay for hockey stick growth charts! But in the second case, with just 2% net growth per month, your business is only 27% bigger at the end of the year. The 5% losses due to unclassified failed card charges have basically cost you as much as your entire business made last year in terms of lost growth.
Stripe do seem to be aware of the problem, because they have rolled out a number of systems over the years for retrying failed transactions and the like. Unfortunately, these systems have often been rather complicated, incompletely documented, and most importantly almost entirely untestable before deployment, which seriously undermines their value.
In our experience, shifting subscribers to other payment methods can be an effective solution if it's an option, but of course in places like the US card payments still dominate. If that's where your customers are, you could probably save a lot of lost business by handling those failure flows better. Just be aware that with Stripe in particular, you may have to read between the lines in the documentation, put your first integration into production largely untested, and then rely on monitoring your logs to pick up and deal with problems if you've done anything wrong.
It's refreshing to see people thinking like this. Maximizing impact is undervalued. For instance a lot of companies restrict themselves to one country thus dramatically reducing the maximum impact.
Oh well, I'll keep working with them to build cool stuff for my clients :-)
> Stripe Atlas, a seamless way to start your company in the U.S.
Apparently it's a filing-paperwork-etc-as-a-service
That's probably the countries where they can hire remotely. It would seems in my experience with other companies that even if they don't advertise non-US remote roles (probably to prevent a large influx of applications from all over the world, most of which invalid due to no-offices there) they will accept candidates that are better than the US counterparts (but still US-based workers have an advantage).
Would love an answer from Stripe/patio11 though.
Also in the case of Stripe, it seems like they are making an engineering hub in Singapore: https://stripe.com/blog/singapore-eng-office
- open requirements
- open recommendations
- open requisites
- open offers
I'm not really expecting an answer so I asked on stackexchange: https://english.stackexchange.com/questions/490404/what-does...
What other processors pay you for referring your customers, and whom are your customers?
Very curious. Since processing is a low-margin business, it's really rare to see referral bonuses, especially the type you're describing. If we do have room to open up a program like this, I could mention it internally.
Like... how could they not try harder to make that a focus of their branding?
"This is a good example of why it is import to have a logo that is versatile."
I wonder if the author was considering using the phrase "of import" [1] and decided to be less clever.
1: https://dictionary.cambridge.org/dictionary/english/import third definition, import noun (IMPORTANCE)
I've only just noticed it, I can't imagine it's not intentional though. Mind you I don't spend long looking at logos unless I'm working on them.
Is that yellow? It looks more orange to me.