Screaming in the Cloud - Holiday Replay Edition - Continuous Integration and Continuous Delivery Made Easy with Rob Zuber

Episode Date: December 22, 2022

About RobRob Zuber is a 20-year veteran of software startups; a four-time founder, three-time CTO. Since joining CircleCI, Rob has seen the company through its Series B, Series C, and Series ...D funding and delivered on product innovation at scale. Rob leads a team of 150+ engineers who are distributed around the globe.Prior to CircleCI, Rob was the CTO and Co-founder of Distiller, a continuous integration and deployment platform for mobile applications acquired by CircleCI in 2014. Before that, he cofounded Copious an online social marketplace. Rob was the CTO and Co-founder of Yoohoot, a technology company that enabled local businesses to connect with nearby consumers, which was acquired by Appconomy in 2011.Links:Twitter: @z00bLinkedIn URL: https://www.linkedin.com/in/robzuber/Personal site: https://www.crunchbase.com/person/rob-zuber#section-overviewCompany site: www.circleci.com

Transcript
Discussion (0)
Starting point is 00:00:00 Hello and welcome to a special holiday replay edition of Screaming in the Cloud. This special edition features one of our favorite conversations from the past few years as we prepare for a new year of shenanigans in 2023. Thanks for listening and happy holidays. Hello and welcome to Screaming in the Cloud, with your host, Chief Cloud Economist at the Duckbill Group, Corey Quinn. This weekly show features conversations with people doing interesting work in the world of cloud, thoughtful commentary on the state of the technical world, and ridiculous titles for which Corey refuses to apologize. This is Screaming in the Cloud.
Starting point is 00:00:51 If you asked me to rank which cloud provider is the best developer experience, I'd be hard-pressed to choose a platform that isn't Google Cloud. Their developer experience is unparalleled in the early stages of building something great. That translates directly into velocity. Try it yourself with the Google for Startups cloud program over at cloud.google.com slash startup. It'll give you up to a hundred grand a year for
Starting point is 00:01:14 each of the first two years in Google cloud credits for companies that range from bootstraps all the way on up to series A. Go build, and then tell me about it. My thanks to Google Cloud for sponsoring this ridiculous podcast. This episode is brought to us in part by our friends at Pinecone. They believe that all anyone really wants is to be understood, and that includes your users. AI models combined with the Pinecone Vector Database let your applications understand and act on what your users want without making them spell it out. Make your search application find results by meaning instead of just keywords. Your personalization system make picks based on relevance instead of just tags.
Starting point is 00:01:56 And your security applications match threats by resemblance instead of just regular expressions. Pinecone provides the cloud infrastructure that makes this easy, fast, and scalable. Thanks to my friends at Pinecone for sponsoring this episode. Visit pinecone.io to understand more. Welcome to Screaming in the Cloud. I'm Corey Quinn. I'm joined this week by Rob Zuber, CTO of CircleCI. Rob, welcome to the show.
Starting point is 00:02:23 Thanks. Thanks for having me. It's great to be here. It really is, isn't it? So you've been doing the CTO dance, for lack of a better term, at CircleCI for about five, six years now at this point? Yeah, that's right. I joined five and a half years ago. I actually came in through an acquisition. We were building a CI CD platform for mobile iOS specifically. And there were just a few of us. And I came in, in, in an engineering role, but within, I think a year had, had taken over the CTO role and I've been doing that since.
Starting point is 00:02:57 So for those of us who've been living under a rock and recording podcasts, CI CD or continuous integration slash continuous delivery, has gone through a bit of, shall we say, evolution since the term first showed up. I mean, my first exposure to it many moons ago was back when Jenkins was still called Hudson. And it was the box that you ran that it would wait for some event to happen, whether it was the passing of time, a commit to a particular branch, someone clicked a button, and then it would run a series of scripts, which sort of lent itself to the idea of the Hacker News Anthem. That doesn't look hard. I can build that in a weekend. And now we've seen a bit of growth in that space of not just, I guess, the systems you can run yourselves,
Starting point is 00:03:42 but also a lot of the SaaS offerings around this. So that's the, I guess, the systems you can run yourselves, but also a lot of the SaaS offerings around this. So that's the, I guess, the moron's journey from my perspective, path through CICD. That's almost certainly lacking nuance. What is it, I guess, in the real world with adults talking about it? Yeah. So I think it's a good perspective or it's a good description of the perspective that many people have. Many people enter into this feeling that way. I think specifically when you talk about cloud providers and CircleCI, we do have a on-prem offering or behind the firewall. No one really runs anything on-prem anymore, but we have an offering for that market, but the real leverage is for folks that can use our stuff,
Starting point is 00:04:26 you know, multi-tenant SaaS cloud offering, because ultimately it's true. Many people start with something simple from a code-based perspective, right? I'm starting out, I've got a small team, we have a pretty simple project, maybe a little monolith, you know, Ruby on Rails, something like that. I guess, actually, I think in the time of the start of CircleCI, probably not too many people kick off a Rails monolith these days because if you're not using Kubernetes and Docker, then you're probably not doing it right. So the Kubernetes and Docker people tell us. Yeah, exactly. They will proudly tell you that. So we'll come back around to that point if we want to. But so you have a simple project and you have simple CI, right? Like you, you may
Starting point is 00:05:05 just have a simple script that you're putting in a Jenkins box or something like that. But what ultimately ends up happening is it gets complicated. And as it gets complicated, it becomes a bigger and bigger distraction from the thing that you're really trying to do, right? You're trying to build a business to, um, I don't know, to do ride hailing, to do scooter sharing. I mean, what's big these days, right? You might be trying to do any of these. My side project is Twitter for pets. We're revolutionizing the world of pet communication.
Starting point is 00:05:34 Right. And do you want to spend your time working on pet communication or on CICD, right? CICD is a thing that we understand very well. We spend our time on it every day. We think about some of the depths of it, which we can go into in a second. One of the things that gets complicated amongst others is just scale, right? So you build a big team, you have multiple projects, and you have that, you know, one box under your desk where you said, oh, it's not that hard to build CI and CD, right?
Starting point is 00:05:59 And now everybody's waiting for their stuff to run because someone else got in there before them. And you're thinking, okay, well, how do I buy, you know, maybe you're not buying more boxes, you're building out something in a cloud provider. And then you're worrying about auto scaling because it starts to cost you too much to run those boxes. And how do you respond to the amount of load that you have on any given day? Because, you know, you're crunching for a deadline versus everybody's taking a week off. And then you want to get your build done as quickly as possible. So you start figuring out how to parallelize the work and spread it across those machines.
Starting point is 00:06:30 The list goes on and on. And this is the reality that everyone runs into as they scale their work. And we do that for you. So while it seems simple, and I said I came in through an acquisition, we were building CI and CD for iOS. And I was that person. I said, this seems really simple. And, you know, I said I came in through an acquisition. We were building CI and CD for iOS. And I was that person. I said, this seems really simple. We should build it and put it in the market. And it didn't take us very long to get that that first version to build. And it had to be generic to support many different types of customers and their particular builds.
Starting point is 00:07:01 It was a small start, but we started to run into the same problems. And then, of course, as a business, we ran into the problem of getting access to customers and all those things. And that's why we joined CircleCI and sort of that became what is now our iOS offering. But there is a lot of value that you can get quickly, you know, to your point, but then you start focusing time and energy on that. I often refer to it, others in the industry refer to these sorts of things as undifferentiated heavy lifting, right? Something that becomes big and complex over time and is not the core of your business. Then as you start to invest in it, as we invest in it, then we build capabilities that most
Starting point is 00:07:39 people wouldn't bother to build when they write that first bash script, you know, off a trigger or whatever around helping you get your projects set up, handling the connection into hooks, handling authentication so that different users only have access to the code they should have access to, maybe isolating access to production secrets, for example, if you're doing deploy, the kinds of things that keep coming up over and over in CI and CD that people don't think about, you know, on that first pass, but end up hunting them down the road. What do you think that people tend to misunderstand the most about CI CD as you take a look at that throughout the ecosystem? I mean,
Starting point is 00:08:17 from my perspective, when it was a box that you ran behind the firewall, as you say, the problem was, is that everyone talked about,, yes, we use cattle, not pets, except the box that does the builds. And, of course, that box has a bunch of hand-built stuff on it that's impossible to replicate. It has extraordinary permissions into production environments and can do horrifying things. And it was always the star of various security finding reports.
Starting point is 00:08:42 So there are a number of us who came up from an operations side viewing CICD as in some ways a liability, which I understand is a very biased and one-sided perspective. But going beyond that, what are people missing? What are they not seeing about the CICD landscape?
Starting point is 00:08:58 One thing that I think is really interesting there, like, well, one thing you called out was just resiliency, right? So we think about that in the way that we operate that system. And so we have a world of cattle because we've managed to think about that as a true offering, right? So as you scale and you start to think, oh, how do I make this resilient inside my operation? That's going to become a challenge that you face. The other thing that I think about that I've noticed over the years is I want to call it division of labor or division of responsibilities.
Starting point is 00:09:28 Many of those single instance or even multi-instance self-managed CICD tools end up in a place where, you know, past any size of team, honestly, somebody needs to own it and manage it to make sure it's stable. And the changes that you want to make as a developer are often tied to basically being managed by that administrator. So to be a little clearer, if I have a group responsible for running CI and CD, and I want to start building a different type of code or a different project and it requires a plugin or an extension to the CI and CD platform or CI CD tool then I need to probably file a ticket and wait for another department who is generally not super motivated and you know to get my code out into production to go make a change that they are going to evaluate and review and decide or maybe creates conflict with something somebody else is doing on that system. And then
Starting point is 00:10:30 you say, oh, well, actually, we can't have these co-installed. So now we need two systems. And it's that division of responsibilities. Whereas having built a multi-tenant cloud offering, we could never have that, right? There's no world in which our customers say to us, hey, we want this plugin installed. Can you go do that for us, right? So everything that is about how the development team thinks about their software and how they want their build to run, how they want their deploys to run, et cetera, needs to be in the hands of the developers. And everything that is about maintenance and operation and scale needs to be in our hands. So it's created a very clear separation out of necessity, but one that even, you know, I mentioned that we, you can deploy CircleCI yourself and run it within a team and
Starting point is 00:11:17 in large organizations, that separation really helps them get leverage. Does that make sense? It really does. And I think we're also seeing a change in perspective around resiliency and how this works. I once worked at a company, I will not name, where they were, it was either CircleCI or TeamCity. This was years and years ago where I don't recall exactly what they were using, but it doesn't matter because at one point the service took an outage and in typical knee-jerk reaction well that can never happen again so they wound up doing all of the cicd work for some godforsaken reason on a raspberry pi that some developer brought in and left in the corner of the office and surprise it took an awfully long time for tests to run on basically an underpowered toy project. And the answer there was to just use less
Starting point is 00:12:06 tests because you generally don't need to run nearly as many. And I just stared at people for the longest time when it came to that. I think that one of the problems that we still see, I know when I write code myself, I'm as guilty of this as anyone. I'm a terrible developer and don't believe in tests. So the CIC CD pipeline that I tend to look at is more or less a glorified script runner. Whenever I make a commit to this branch, go ahead and run the following three line script that does a serverless deployment and puts it where it needs to go. And then I'll test it manually or it's a pre-production environment. So it's not that big of a deal and that can work for some use cases, but it's also a great thing
Starting point is 00:12:42 that no one actually depends on the stuff that I write for day-to-day business operations or anything critical. At what point does it stop being a script runner? Well, to the point of the scale, I think there's a couple things that you brought up in there that are interesting to me. One is the culture of testing. these sort of areas of software development, because I was around in a time when no one really understood what it was to do automated testing. I won't even go into TDD, but just in general, why would I do that? We have this QA team. It's so much, you know, it's cost effective to give it to a bunch of people. Or I mean, thinking backwards or thinking back on that, it all seems a little bit, well, wrong. But getting to the point where you've worked effectively with tests takes a little bit
Starting point is 00:13:29 of effort. But once you have that, once you've sat and worked on something and had the feedback loop of, oh, this thing's not working, I'll just change this. Now it's working. Like really having that locally as a developer is super rewarding in my mind and enabling, I guess I would say as well. And so then you get to this place where you're excited about building tests, right? Especially as you're working in a team.
Starting point is 00:13:54 And then culturally you end up in a place where I put up a PR and someone else looks at it and says, I see you're making an assumption or I believe you're making an assumption here, but I don't see any way that that's being validated. So please add testing to, you know, to ensure that is actually true, both because I want to make sure it's true now. But when we both forget that you ever wrote this and someone else makes a change, your, you know, your assumptions hold or someone can understand that you were making those assumptions and they can make appropriate changes to deal with it. Right. And I think as you work in a team that's growing and scaling and beyond your sort of pet project, once you've witnessed the value of that, you don't want to go back. And so people do end up writing more and more tests.
Starting point is 00:14:36 And that's what drives the scale, at least on the testing and CI side in a way that you need to then manage that, right? And going the opposite direction of what you're describing, which is, hey, let's just write fewer tests and use cheaper machines. People are recognizing the value and saying, okay, we want that value, but we don't want to bottleneck everyone with an hour-long build, you know, to run all these. So how do we get a system that's going to scale and support that? And that's what's fascinating is watching that start to percolate beyond the traditional web applications with particular blessed languages and into other things. For example, in my copious spare time, I'm the community lead for the Open Guide to AWS, which is a GitHub project that has 25,000 stars or so. So, you know, it's good where it's just a giant markdown document that lists the
Starting point is 00:15:25 10,000 tips and tricks that we all wish we'd known when we'd gotten started with AWS and in a format that's easily consumable. The CICD approach we have right now, which I believe is done through Travis, is it just winds up running a giant link checker in parallel across the thousands of links that are, sorry, I want to say 1200 links that are included within that document. There's really not a lot else we can do in that type of environment. I mean, a spell checker with all of the terms of art involved would more or less segfault itself to death as soon as it took a look. But other than making sure we don't have dead links in, it feels like there's not a lot of automation or testing opportunity in something
Starting point is 00:16:04 like that. Is that accurate? Am I completely wrong and missing something? I've never built that particular site. So it, I mean, it sounds reasonable. I think that going the other way, we often think about, you know, before we kick off a large complex set of testing for a more complex application, maybe than a Markdown document, a lot of people now will use things similar to what you're using. Like maybe I'm part of my application is a bunch of links to outside docs or outside sites that I'm referencing. Or, you know, if I run into a problem, I link you to our help site or something and making sure all that stuff is validated, doing linting on the structure and format of code itself. One of the things that
Starting point is 00:16:46 comes up as you scale out of, you know, the individual script runner is doing that work in parallel, right? So I can say, you know what, do the linting over here, do the link checking over here, only use very small boxes for those. We don't happen to have Raspberry Pis in our infrastructure, but we can give you a much smaller resource, which costs you less if you're not going to be pushing the limits of that. But then if you have, you know, big integration tests or something which need more space, then we can provide that as well, both in a single channel or pathway to give you the room to move faster and then to break that out and run, you know break up your work like at an extreme example and of course anyone who's done parallelization knows there's there's cost to splitting up work in
Starting point is 00:17:33 like the management overhead but if you have 1,200 links like you could check them all at the same time right I doubt that would be a good use of of our platform but you could check 601 and 600 and another, you know, or 300s at a time or whatever in find the optimal path if you really cared about getting that done more quickly. Right. Usually it's not that big of a concern, and usually it winds up throwing errors on existing bad links, not something that has been included in the pull request in question. So again, there's nothing that is so awesome that I can't horribly misuse it for something
Starting point is 00:18:09 ridiculous. It's my entire stock and trade. It's why I believe Route 53 remains the best database option for everyone. But it's fun going through this space and just seeing how things have evolved. One question I do have, since you come from a background by way of acquisition that was aimed squarely at this, historically, it seems that running a lot of testing on mobile devices, specifically iOS devices, was the stuff of nightmares because you couldn't really run that in any meaningful way in a virtualized environment. So it generally required an awful lot of devices. Is that still the case? Has that environment changed radically since I last worked at a mobile shop? I don't think so, but I think we've all started to think a little bit differently. And so we got started in that business because we were building iOS apps and thought, wow,
Starting point is 00:18:58 the tooling here is really frustrating. To be clear, at CircleCI and at that business, we were solving the problem of managing the machines themselves. So the portion of the testing that you would run effectively in a simulator, not the problem of the device farm, if people shifting the MVC layers a little bit such that the thing that you needed to test on a device was getting smaller and smaller, meaning putting more logic in, I forget what the name was specifically, but it was like the view. I don't, I don't want to try to even guess, but basically pulling logic out of the actual rendering and down into what we'll call state transitions, I guess. If you think about that in modern day and look at maybe web frameworks like React you know you're you're trying to just respond with rendering on top of a lot of state change that happens underneath that
Starting point is 00:20:11 and in that model if you thin out the user interface portion you make a lot more of your code testable if that makes sense so the reason we're all trying to test on all these different devices is often that we've baked a lot of business logic into the view layer. Does that make sense? Yeah, it absolutely does. Please continue. Oh, and so instead of saying, well, all our logic's in the view layer, so let's get really good at testing the view layer, which means massive device farms and a bunch of people testing all these things. Let's make that layer as thin as possible. And there's analogies for this in even how we do service design these days and structure the architecture of systems.
Starting point is 00:20:53 Basically, make the boundaries as thin as possible and the interaction with the outside world as thin as possible. And that gives you much more capability to effectively test the majority or much larger portions of your business logic. So the device farm problem is still a problem. People still want to see how something specifically renders on a particular screen or whatever. But by minimizing that, the amount that you have to invest in that gets smaller. This episode is sponsored in part by our friends at Optics because they believe that many of you
Starting point is 00:21:27 are looking to bolster your security posture with CNAP and XDR solutions. They offer both cloud and endpoint security in a single UI and data model. Listeners can get Optics for up to a thousand assets through the end of 2023, that is next year, for $1. But this offer is only available for a limited time on OpticsSecretMenu.com. That's U-P-T-Y-C-S SecretMenu.com.
Starting point is 00:21:55 You mentioned Device Farm, which is an app choice, given that that is the name of an AWS service that has a crap ton of mobile devices that you can log into, and it's one of my top candidates for the, did I make this service up to mess with you competitions? It does lead us to an interesting question. CICD has gotten an increased amount of attention lately from pretty much everyone. And AWS, as is typical for Amazon, tends to lie awake at night worrying that someone somehow is making money that isn't them. So their product strategy distills down to yes. So they wound up releasing a whole bunch of CICD-oriented products
Starting point is 00:22:32 that at launch were, to be polite, terrible. And over time, they've gotten slightly better, but it's still a very confusing ecosystem there. And then we see things like Azure DevOps, who it seems is aimed at a very similar type of problem. And they're also trying to challenge Amazon on the grounds of terrible names of services. But we're now seeing an increased focus from the first party providers themselves around the CI CD space. What does that mean for existing entrenched players who have been
Starting point is 00:23:01 making a specialty out of this for a lot longer than these folks have been playing with it? Yeah. So it's a great question. I think about the approaches very differently, which is probably unsurprising. I mean, speaking of lying awake at night or like spending all day thinking about these things like this is this is what we do. So you've used the term script runner a few times in the conversation. The thing that I see when I see someone like AWS looking at this problem is basically, you know, people are using the way that I think about it as maybe less the money, although it translates pretty quickly. People are using compute to do something. You know, can we get them to do that with us? And, you know, oddly enough, a massive chunk of CircleCI runs on AWS, so it doesn't really matter to them one way or another. But they're effectively looking to drive compute hours and looking to drive, you know, a pathway
Starting point is 00:23:51 onto their platform. And so one thing about that is it doesn't really matter to them, in my perspective, whether people use that particular product or not. And as a result, it gets the product investment that you put in when that's the case. And so it's a sort of a check the box approach. Like, hey, we have CI and we have CD like other people do. Whereas when we look at CI and CD, we've been talking about some of the factors like scaling it effectively and making it really easy for you to understand what's going on. We think about very much the core use case, like what is one of our customers or users doing when they show up? How do we do that in a way that maximizes their flow, minimizes the overhead to them of using our system,
Starting point is 00:24:40 whether it's getting set up and running really quickly, like talk about being in the center of how much of the world is developing software. So we see patterns, we see mistakes that people are making and can use that to inform both how our product works and inform you directly as a user. Hey, I see that you're trying to do this. You know, it would go better if you did this and so i think both from the the honestly the years that we've been doing this and the amount that we've witnessed in terms of um what works well for customers what doesn't what we see going through just from a data perspective you know as we see hundreds of thousands of of builds running that rich perspective is unique to us because as you said we're a player that's been doing this for a really long time and very focused on it and we treat the experience with I guess I'm trying to
Starting point is 00:25:35 figure out a way to say this that doesn't sound as bad as it might but a lot of people have suffered a lot with CI and CD there's a lot that goes into getting CI and CD to work effectively and getting it to work reliably over time as your system is constantly changing. And honestly, there's a lot of frustration. And we come in to work every day thinking about minimizing that frustration so that our customers can go spend their time doing what matters to them. And again, when I think you, you know, you sort of, a lot of these big players present you with a runtime in which you can execute a script of your choosing. It's not, it's not thinking about
Starting point is 00:26:17 the problem in that way. And I don't see them changing their perspective. Honestly, I just don't worry about them. Which is a very fair tack to take. And it's interesting watching companies and as far as how much time and energy they spend worrying about competition versus how much they focus instead on customers. So to turn it around slightly, what makes what you do challenging in some respects, I would imagine, is that a lot of your target market is themselves developers. Developers, in my experience, are challenging customers in that first, they tend to devalue their own time to the point where, oh, that doesn't sound hard. I'll build that overnight. Secondly, once you finally win them over to the idea of paying for something,
Starting point is 00:27:01 it's challenging to get them to have the necessary signing authority. So at best they become champions, but what you do has to start with developers in order to win widespread adoption and technical buy-in. How does that wind up manifesting as approach to what some people call it developer relations, developer advocacy. I refer to those folks as dev relippers because I have problems. But how do you folks view that? Yeah, it's a really insightful view, actually, because we do end up in most of our customers or in the environments of our customers, however you want to describe it, as a result of the enthusiasm of individual developers, development teams, much more so than, you know, there are many products in certainly an enterprise software.
Starting point is 00:27:52 And I don't really think purely an enterprise, but there are many products that can only be purchased by the CIO or the CTO or whatever. Right. And so to your question of developer relations, we spend a lot of time out in the market, you know, talking to individuals, talking at conferences, writing content about how we think about the space
Starting point is 00:28:16 and things that people can do. But we are a very product-driven company, meaning both that's what we think about first and then support it with these other things but second we win on product right like we don't win in the market because you thought um a blog post that we wrote was really cool that might make you aware of us but if you don't love the product i mean developers to your point they they want to use things that they really enjoy using. And when developers use the product and love the product, then they champion it and they get access because they might work on a side project or an open source project,
Starting point is 00:28:56 or maybe they worked in another company that used CircleCI and then they go somewhere else and they say, what are we doing? Life is so much better for you circle ci those sorts of things um but it very much comes from the bottom up it's it's pretty difficult you know to go into an organization and say hey you should push this down to all of your developers there's a lot of uh there's a lot of rejection that comes from developers on mandated tooling And so we have to provide knowledge, we have to provide capabilities in our product that appeal to those other folks. So for example, administrators of our tooling,
Starting point is 00:29:35 or when it gets to the point where someone owns how you use CircleCI versus just being a regular user of the product, we have capabilities to support them around understanding what's happening, around creating shared capabilities that multiple teams can use, those sorts of things. But ultimately, we have to lead with product and we have to get into the sort of hearts and minds of the developers themselves and then grow from there. And everything we do from marketing you know, marketing, developer relations, myself, I spend a lot of time talking to customers or out in the market
Starting point is 00:30:10 is all about propping up or helping people, like helping raise awareness effectively. But there's nothing that we can do if the product doesn't meet the needs of our customers. And that's what it seems like it comes down to a fair bit. It's always weird to consider that at its heart, developer relations is marketing. And the folks I talk to who argue against that, it seems that it comes from a misunderstanding of what marketing actually is. It's not buying ads in airports. It's not doing podcast advertisements, which is a subject near and dear to my heart. It's not about annoying people by showing up at their office with the sales team. It's about understanding what their challenges
Starting point is 00:30:50 and problems are, and then positioning a solution that ideally solves them in a place that, and in a way that is, that they can be receptive to. Instead, people tend to equate marketing to this whole ridiculous statistics driven nonsense that doesn't really resonate with anyone. And I think that that's unfair to everyone involved. That said, I will say that having spent a fair bit of time in this space, I've yet to see anything from CircleCI that has annoyed me to the point where I would have remembered it, which is awesome.
Starting point is 00:31:18 I don't see it in in-flight magazines generally. I don't see it on obnoxious people trying to tackle me as I walk through an expo hall and want to scan my badge. It just seems very well executed and you have some very talented people working for you. To that end, you are largely a distributed company, which is fascinating. Did it start that way? Did it happen that way by a quirk of fate? Yeah, those two things probably come together. So the company from very early days, now I wasn't there, but I think some of our earliest engineers were distributed.
Starting point is 00:31:51 And, you know, the company started out basically entirely as engineers, the team solving problems of other engineers, which is a, it's a fun challenge. And so there were early participants who were distributed, mostly, you know, when you start a company and no one has ever heard of you and no one knows if you're going to be successful, going and recruiting is generally a different game than when you're certainly when you're where we are now. There were some personal relations that just happened to connect with people around the globe who wanted to participate. And so we started out pretty early with some distribution and that led to structuring the org in a way, you know, both from a tooling and process perspective, a lot of that sort of happens organically, but building a culture that really supported that, you know, I personally am based in the Bay Area, so we have a headquarters in San Francisco, but it doesn't really make a difference if I go in versus, you know, just stay
Starting point is 00:32:52 and work from home on any given day because the company operates in such a way that that distribution is completely normal. We accidentally did the same thing. My business partner and I used to live across the street from each other, and we decided to merge a week before he moved out of state to Portland. So, awesome. Great. We have wonderful timing on all of these things. It's fun to build that way from the ground up. The challenge I've always seen is when you start off with having a centralized office and everyone's there except this one person who, no matter how you try to work around it is never as involved. So it feels like the sort of thing you've
Starting point is 00:33:25 absolutely got to be building from day one, or otherwise you're going to have a massive cultural growing pain as you try to get there. Yeah, I think that's, I think that's true. So I've actually been that one person. I, um, at some point in my career prior to, to CircleCI was helping out a company founded by some friends of mine based in Toronto. I grew up in Toronto and I kicked off a project and then the project grew and grew until I was the one person out of maybe 50 or 60 who wasn't in an office in Toronto. And it got to the point where no one remembered who I was. And I was like, cool, I think I'm done. I'm out. I was fine with that. It was always meant to be a temporary thing,
Starting point is 00:34:09 but I really felt that transition for the organization. And I would say in terms of growing, I mean, yes, if you start out, it kind of goes both ways. If you start out distributed, you're going to remain distributed. There are certain things that get more challenging at scale, right? Um, if everybody is sort of just in their home, um, all over the globe, then the communication overhead continues to increase and increase. And just understanding who, um, who people are, who you should be talking to. You need to focus. There's always a time zone hierarchy too. Oh, the time zones are a delight. Yes. And I would say like we talk a lot about in this industry, Dunbar's number and sizes of teams and the points at which things get more complex. And I think there's probably a different scale for distributed teams. It takes fewer people to reach a point
Starting point is 00:35:00 where communication gets challenging and trust and all the other things that go with sort of Dunbar's views, you know, you kind of have that challenge and then you start to think, oh, well, you know, then you have some offices because we actually have maybe six physical offices, partly because in our go-to-market org, you know, we've started to expand globally and put people in regional offices. So there's kind of this interesting disconnect. I don't know about disconnect, but there's a split, right, in how we operate in different parts of the org. And I think what I've seen people, well, I don't know about succeed, but I've sort of seen people try when you start out with one org or sorry, one location is let's not jump to like that one person somewhere else and then one person somewhere else
Starting point is 00:35:45 kind of thing, but build out a second office, build out another office, like pick another location where you think you, it's often certainly where we are in the Bay area. Um, it's often driven by just this market, right? Finding, finding talent, finding, uh, people who want to join you, hanging on to those people when there are so many other opportunities around tends to be much more challenging. And when you offer people alternatives, like you can stay where you are, but have access to a cool and interesting company, or you can work from home, which a lot of people value, then there's different things that you bring to the table. So I see a lot of people trying to expand in that way. But when you are so office centric, a second office, I think, is a smoother transition point than just suddenly distributing people, because especially the first and second one, unless you're hiring in a massive wave, are really going to struggle in that environment. I think that's probably one of the more astute things that's been noticed on this show in the last couple of years.
Starting point is 00:36:49 If people want to hear more about what you have to say and how you think about the world, where can they find you? I would say on our blog, I tend to write stuff there as do other people. There's a lot of, you talked about having great people in the organization. We have a lot of great people talking about how we think about engineering, how we think about both engineering teams and culture, and then some of the problems we're trying to solve. So off our site, circleci.com, go to our blog. And then I tend to speak and hang out on podcasts and do guest writing. I think I'm pretty easy to find. You can find me on Twitter.
Starting point is 00:37:23 My handle is ZubZ00B. I'm not super prolific, but if someone was to track me down and ask me something, I'd probably be more than happy to answer. And you can expect some engagement as soon as this goes out. Thank you so much for taking the time to speak with me today. I appreciate it. Yeah, thanks for having me. This was a ton of fun. Rob Zuber, CTO at CircleCI. I'm Corey Quinn, and this is Screaming in the Cloud. If you've enjoyed this podcast, please leave a five-star review on Apple Podcasts. If you've hated this podcast, please leave a five-star review on Apple Podcasts, along
Starting point is 00:37:58 with something amusing for me to read later while I'm crying. If your AWS bill keeps rising and your blood pressure is doing the same, then you need the Duck Bill Group. We help companies fix their AWS bill by making it smaller and less horrifying. The Duck Bill Group works for you, not AWS, we tailor recommendations to your business and we get to the point. Visit duckbillgroup.com to get started. This has been a humble pod production stay humble

There aren't comments yet for this episode. Click on any sentence in the transcript to leave a comment.