Code is central to Stripe: we build APIs, software tools, and infrastructure that are in turn used by other software engineering-driven businesses. And of course code is also central—by definition—at other software companies.
It’s easy for familiarity with code to become a barrier between different groups within a technology company: lots of companies have an upper tier of code-wrangling wizards that are supported by the rest of the company, sometimes known as the non-engineers. From the beginning, we’ve tried hard to avoid this at Stripe. In seating, we mix engineering teams with non-engineering teams. When we hire, we seek out engineers who are excited about problems beyond code itself. When we communicate internally, we make sure our engineering work is open and comprehensible to all Stripes, and that each improvement to our platform and even internal infrastructure is shared widely.
Last year, we decided to take another step and to start a coding class for any interested employees. The goal of this class wasn’t to help people become full-time engineers. It was instead to help people get deeper insight into how modern software development works so that they could better understand how problems get solved at technology companies. We hoped it could also provide a foundation that would make it easier for participants to continue to self-teach if they found it enjoyable—getting started is often the hardest part.
Based on the success of the class, we realized that the experience might be interesting for people at other companies to read about and perhaps replicate. So here’s a blog post about how we did it.
We started our first experiment in August last year by running an immersive 50-hour 10 week coding class pilot with 24 Stripes. (In addition to helping to organize the program, I was also a participant in it.)
We decided to hire a full-time instructor to build, teach, evaluate and scale the class. We realized that having a full-time instructor would be important: the nuances of a particular company’s development stack and putting together relevant educational materials is a quite time-consuming undertaking. Jen, our instructor, spent several weeks integrating into Stripe before writing any of the content or asking about potential applications.
Like most of the class, I’d never so much as seen a line of code before (my day job was working on recruiting). But, pretty soon, I was using the Stripe Ruby library to implement various features into my newly-created web store. More broadly, and probably most importantly, I came to better appreciate the technical underpinnings behind many cultural norms both at Stripe and across the industry. For example, “==” is used at Stripe to mean you’re in agreement—but I learned that it’s used to test for equality between objects as well.
The class also ended up being a fun way to get to know other people within the company. Our TAs were volunteer Stripe engineers and, class by class, I ended up talking to and often working with people who I rarely interacted with in other contexts.
People loved the class: on average, Stripes strongly agreed that we should continue to offer the class internally (rather than provide a stipend for external courses) and agreed that the course made them more effective in their role. Participants also reported improvement in two particular areas: (1) ability to autonomously and confidently work with technical users, candidates, and Stripes and (2) fluency with technical tools like the Stripe API, and our analytics tools. (One participant shared “I’m much more willing to jump into technical conversations or questions given that I actually understand some of the underlying context.”)
So we decided to implement it at scale. Based on the feedback and our general observations, we broke the course into three month-long modules, and launched the first iteration on April 10th:
- Intro to Engineering (4 hours/week): Learn to think about code the way Stripe engineers do. We’ll read and debug Ruby, and use tools like GitHub and Terminal.
- The Stack (1 hour/week): Tackle the combination of technologies that form a web app, such as HTML and CSS.
- Stripe Projects (4 hours/week): Build a simple integration using Stripe’s API and design a final group project of your choice.
This year, we plan on teaching at least 100 Stripes (about 20% of people not currently working in engineering) to code.
At Stripe, we think we’re still in the early days of witnessing the internet’s global impact. More of what takes place in the world is going to in some way feature software as a coordinating or enabling force. I don’t know what the world looks like twenty years out, but it seems clear to me that some of today’s most interesting and important technologies are better understood with a foundational understanding of how programming works.
If you’re thinking about rolling this out at your company, or have more questions about our design or process, I’d love to chat.
Today, we’re updating our support for team roles in the Dashboard: we’ve made what’s there clearer and we’re also adding two new roles.
If you haven't seen this part of the Dashboard before, we support you giving as many team members as you like access to your Stripe account. When we first added teams and roles to Stripe, we only provided three access levels: administrator, read and write, and read-only. We’ve heard feedback that different job functions need a more distinct set of permissions when accessing Stripe accounts.
Now, users assigned the new Developer role can access API keys and most settings, but cannot edit any team or bank account settings. We renamed Read & Write to Analyst, but the permissions remain the same. Users assigned the Support Specialist role can view most data (such as Subscriptions plans, payment data, or charges marked as fraudulent in Radar) and refund charges, but cannot edit settings or modify rules. Since many of your team members may be assigned this role, we limit what aggregate financial data they can access, such as gross volume or payouts. There are more specific details here.
You can apply the new roles in your Dashboard settings.
We hope these granular roles provide more flexibility to tailor access for your teammates and help ensure that sensitive information and actions are protected. If you have any questions or feedback, please let us know!
As software becomes more important in the world, the practice and art of software is becoming more important too. A lot has been written about how individual engineers can be more effective. We've noticed that much less has been written about how software engineering teams can be more effective.
Groups of humans building software together vary enormously in their productivity. Some manage to be vastly more than the sum of their parts while others struggle to reach even half of that. The mechanics of how we work together determine not only the output of the team but also the satisfaction, enjoyment, and growth of the individuals.
Despite their importance, we've noticed our practices for working together tend to be tribally transmitted in ad hoc ways: based on experiences with different approaches that people have had at different companies or on the occasional blog post that someone has read. We wondered if something better was possible.
And so we've decided to start Increment, a software engineering magazine dedicated to providing practical and useful insight into what effective teams are doing so that the rest of us can learn from them more quickly. We plan to focus on the ostensibly small things that are actually big things: testing, deployment, development tools, code review. Team practices are very mutable; if we can help accelerate the transmission of good ideas even a little bit, that could be a big deal across the industry.
Susan Fowler joined Stripe to found and edit Increment and the first issue launches today. It's focused on on-call practices across the industry. Who gets paged? How is incident response coordinated? How should your approach look differently at 10 people versus 1,000? The issue is based on interviews with dozens of experts across the industry and includes data from Google, Facebook, Amazon, Netflix, and more. You should go read the whole thing.
Increment will be published quarterly. If you'd like to submit a piece, please drop us a note. And if you've ideas for topics that you'd like to see addressed in a future issue, we'd love to hear that, too.
Read the first issue
Just over a year ago, we launched Stripe Atlas, a new way to start an internet business. It was something of an experiment to begin with, but the response has been hugely encouraging. Since we announced Atlas, thousands of entrepreneurs from 124 countries have used Atlas to start their company. Atlas companies are building everything you could imagine, including a deployment platform in California, a presentation tool in Chile, and a cosmetics startup in the Gaza Strip.
We've been listening carefully to what Atlas users have requested. Based on this feedback, we’re excited to roll out a bunch of improvements today. These will make it easier to get access to banking services, to join Atlas, and to connect with other Atlas founders.
Faster access to your bank account
Opening a business bank account is often a pain and takes longer than it should. We’ve worked closely with Silicon Valley Bank to provide a bank account for all Atlas companies. (We chose Silicon Valley Bank because they’re the main bank that we see top startups choose.) When we first launched Atlas, it took a few days to get your account set up. We’ve worked on solving that with SVB. Starting today, most Stripe Atlas founders will be able to log in to their bank account within a few minutes of electronically signing the Atlas documents. In addition, Atlas founders can request a U.S. debit card that makes it easy to sign up for other services and pay for other products. (Here’s the full fine print on Atlas and banking.)
Open to U.S. entrepreneurs
When we launched Atlas, we were focused on making it easier for entrepreneurs outside the U.S. to get started. Since then, we’ve heard from thousands of entrepreneurs located within the U.S. who want to use Atlas, and we’ve worked with many founders based in the U.S. to get their companies started. (And it’s not a surprise—Atlas sets up every company with the standard defaults and banking infrastructure used by top U.S. tech companies.) So, starting today, Atlas is now officially open for business for U.S. founders, and we’re working to add more benefits to Atlas that will specifically be useful to founders in the U.S.
Atlas invitations from current members
Stripe Atlas is available to join by invitation only, but we want to make it available to as many founders as we can. Starting today, existing Atlas founders can invite other entrepreneurs to join—we think this will be the easiest way for many people to get access. Anyone can still apply directly for an invitation, and we’ll respond within two weeks.
Expanding the Stripe Atlas Network
We’ve expanded the Stripe Atlas network of investors and accelerators from around the world. The network now consists of over 200 members and we’ve also added other types of organizations like Kickstarter, Indiegogo, and YC Startup School to the network. All of these members can invite founders to join Atlas. You can check out a gallery and get in touch here.
The Atlas Forum
One of the most useful sources of knowledge for entrepreneurs is simply talking to other founders. A lot of Atlas participants asked us about a way to connect with other founders. So we’ve created the Atlas Forum, a members-only discussion board. In addition to providing a place to ask questions and share experiences, we’ve been hosting some special events: in the last month, the forum has featured a Q&A with Keith Rabois of Khosla Ventures, "Ask an Accountant" sessions with accounting firm PwC, and "Ask an Attorney" sessions with international tech law firm Orrick. Many Atlas users are actively raising capital, so we hosted a Q&A session with Kirsty Nathoo (CFO of Y Combinator). We also provided individual feedback on applications to YC’s next class for every Atlas company who requested it. We plan to continue these over time, and, over the next month, we’ll be hosting private interviews with Sam Altman, President of Y Combinator, and Diane Greene, founder of VMWare and SVP of Google Cloud.
With these updates, we’re excited to help more entrepreneurs get started. You can learn more and apply to join. We can’t wait to see what you build.
Start your company with Stripe Atlas Join Atlas
Availability and reliability are paramount for all web applications and APIs. If you’re providing an API, chances are you’ve already experienced sudden increases in traffic that affect the quality of your service, potentially even leading to a service outage for all your users.
The first few times this happens, it’s reasonable to just add more capacity to your infrastructure to accommodate user growth. However, when you’re running a production API, not only do you have to make it robust with techniques like idempotency, you also need to build for scale and ensure that one bad actor can’t accidentally or deliberately affect its availability.
We built Stripe Atlas to help entrepreneurs from all over the globe start and run an internet business, no matter which industry they're in, where they're based, or their gender or ethnicity. However, women are still not starting companies or raising money at nearly the same rate as men—women made up only 7% of founders whose companies received more than $20M in VC funding between 2009 and 2015. We believe that a more diverse entrepreneurial ecosystem leads to better products and services for everyone.
Today is International Women's Day, so we wanted to share the stories of five of the incredible female founders who have used Atlas to start and build their companies.
Based in Ghana, co-founders Priscilla Hazel, Esther Olatunde, and Cassandra Sarfo created Tress, a social app for black women to discover and share hairstyle inspiration. Tress offers its users a place to browse different hair categories and engage with a community of black women and hair enthusiasts. The founders' unique experiences as black women inform the development of the company and also help them empathize with their users and anticipate the needs of women worldwide. Tress' Android app has been downloaded over 100,000 times and they recently released an iOS app.
Founded by Cinthia Gawianski in Argentina, CM Reservas offers online booking and management tools for hotels in 14 countries across Latin America. Although she founded the company in 2013, Cinthia turned to Atlas last year to expand to the US market. Today, hundreds of hotel clients rely on CM Reservas for hotel reservation management services.
Seven years ago, Agni Tilla founded May28th, an e-commerce platform offering jewelry and watch customization. Since then, she has lived in five countries and worked with employees all around the world. Agni is now located in Latvia and has expanded her business to the US, where shipping for the company is now based. May28th has collaborated with designers like Kate Spade and Anthropologie, and has been featured in magazines and TV shows including the Today Show, Good Morning America, New York Magazine, and Marie Claire.
Today, we're expanding the number of currencies that Canadian businesses on Stripe can accept. In the past, Canadian companies could accept only payments in U.S. or Canadian dollars; starting today, you can charge in any of more than 130 currencies. As you'd expect, we'll automatically convert and transfer funds in either CAD or USD.
We've heard from many Canadian businesses on Stripe, such as Vin65, that presenting in local currencies significantly increases conversions. You can start charging in other currencies just by passing in the currency code when creating a charge:
curl https://api.stripe.com/v1/charges \ -u sk_test_mkGsLqEW6SLnZa487HYfJVLf: \ -d amount=3000 \ -d currency=eur \ -d description="Premium plan" \ -d customer=cus_X3he9Ex2Aenkc
And if you'd like to read more details, you can learn more about how Stripe handles currency conversion.
We hope you'll find this feature useful! If you have any questions or feedback, please let me know.
Networks are unreliable. We’ve all experienced trouble connecting to Wi-Fi, or had a phone call drop on us abruptly.
The networks connecting our servers are, on average, more reliable than consumer-level last miles like cellular or home ISPs, but given enough information moving across the wire, they’re still going to fail in exotic ways. Outages, routing problems, and other intermittent failures may be statistically unusual on the whole, but still bound to be happening all the time at some ambient background rate.
To overcome this sort of inherently unreliable environment, it’s important to design APIs and clients that will be robust in the event of failure, and will predictably bring a complex integration to a consistent state despite them. Let’s take a look at a few ways to do that.
development We've released version 2.0 of Stripe's Ruby library, which includes a configurable HTTP client and support for extracting response metadata.