In 2019, Stripe open sourced a type checker for Ruby called Sorbet. Stripe uses a lot of Ruby, the majority of Stripe source code is Ruby. I'm going to fast forward a little bit from that story to Sorbet. If it solves the problems that you have, then do it, and then think about building the next things. I just want to emphasize that when you're small, it's perfectly good and fine to start very low tech. Obviously, Stripe grew out of it very quickly. Is anyone else using it?" Someone else said, "No, hold on, wait for it some time," and so on. There was a Slack channel per box, and you went to the box number five Slack channel and said, "I want to test the API server. We were coordinated using Slack channels. These were pretty big instances, so they were shared across a lot of people in the company. They would find some way to get their code changes in there, start the services that they need, do whatever builds they need to, and test everything manually. Essentially, there was a set of EC2 instances that people would SSH into. Way back when Stripe was much smaller, and there wasn't much of a dev productivity organization, the dev environment consisted of something very low tech. I want to share a quick story about small beginnings. How do the tools help you comprehend better the software that you're working with? This is the idea of building expertise. This is both because Stripe is growing, and there are lots of new people, but also, the set of software is quite large, and you might be working on something unfamiliar on any given day. Finally, maybe a less obvious point is that we want our tools to help our users become experts at the software they're working with. Of course, fast feedback means that you're faster at fixing problems, so if there's any breakage or incident, the developer environment shouldn't be getting in the way of you fixing that. It also means that, for example, developers stay in their flow state as they are iterating through their code changes. Of course, having fast feedback means that you go through the iterations of making code changes, testing them faster, and therefore you get faster at shipping features. If there's a code change that would break something in production, how likely are we to catch it in general in the software lifecycle, but specifically in the dev environment itself? How well is a potential bug caught in dev, and vice versa? How well do problems caught in dev represent the problems that you would face in production? That's accuracy. In other words, it's much better to find a problem before it hits production than after. This is in other words, the DevOps idea of shifting left. We ask the question in developer productivity, how does that translate to requirements for our developer tools? One thing we talk about is accuracy. Something to think about is that Stripe's software is extremely critical to its users, because we process their payments, everything that we ship is very business critical to them. What Do We Aim For in Our Dev Environment? In terms of engineering, the software powering all of this is built by on the order of thousands of engineers who are also distributed across the world. Last year, more than half of UK adults bought something on Stripe. Millions of businesses worldwide use Stripe to accept payments, do payouts, and manage their business. Stripe is building payments infrastructure for the internet. I'm going to talk about building and scaling developer environments. I work in the Developer Environments team at Stripe.
0 Comments
Leave a Reply. |
AuthorWrite something about yourself. No need to be fancy, just an overview. ArchivesCategories |