From Seed to Series A: From 1 Engineer to 10 Engineers
Mar 4, 2024 12:32:26 GMT 2
Post by account_disabled on Mar 4, 2024 12:32:26 GMT 2
This guest post is written by Rob Zuber, Chief Technology Officer at CircleCI. CircleCI is the world's largest continuous integration and continuous delivery (CI/CD) platform. Below, Rob examines best practices for growing a development team from the start. The second part covers 11 to 20 engineers. The following article is excerpted from CircleCI’s Startup Founder’s Guide to Software Delivery, the full text is available here . Software delivery by a team of 2 is very different from software delivery by a team of 200 people. As your startup grows, process and tool choices will evolve naturally - but either optimizing too early or letting them evolve without knowing you can cost you time and agility later on. That’s why I want to talk to you about how you can improve your delivery process with purpose. The best approach to software delivery is related to your software architecture, which in turn is related to your organizational structure, as we know from Conway's Law. Throughout this article, I’ll dive into how these factors come into play to allow you to achieve high growth or hit roadblocks as you scale, depending on the decisions you make at key inflection points. Founding Stage: 1-10 Engineers This is my favorite stage of company development. You are excited. You have an idea. The last thing you want to do is tools. At some point, you will manually deploy your 20th change to the initial environment. You might be thinking "This isn't the right thing to do." You'd be right. Although technically you can do this, now it's time to put the CI and CD in place.
In the early stages of your company, you might not even be in the right business, but fast delivery and confidence in your releases will help get you there. This exploration phase requires simplicity. At this scale, coordination Paraguay Mobile Number List costs are lower, so take advantage of this: single team, single codebase, basic (automated) deployment. You don’t want to stop and ask your co-founder, “Hey, remind me of the Capistrano command?” or “Did I just push on top of your push?” You don’t want your laptop to be a “build laptop” , when someone wants to push code, they have to come to you. You can have CI/CD with the click of a button. Don't make it harder on yourself. CircleCI has a free plan. Use it. This step alone, even if you "don't need" it now (and I'll try to convince you that you do), will put you a step ahead down the road. When things get real and you have a security issue that catches you off guard, or you actually have customers and you're solving the problem at scale, you can release a fix. This is much better than "Rob is at lunch and we can't deploy." What the early development teams did…put CI/CD in place now. Your application is changing a lot and you want to learn as quickly as possible. No need to spend time remembering how to deploy securely.
When your system does start to require more complexity (I'll explain later why you should postpone complexity as much as possible), you'll have the practices and tools to deal with complex systems. Keep things simple. Deploying CI and CD is very easy. Get Google Analytics and set up CircleCI. At this stage, this may be all you need. But not having them is a big problem. Without these basic tools, you give your competitors a huge advantage. The most important thing about building a company is execution; get the tools you need to perform reliably and put off the rest. Create a placeholder implementation. This basically means deferring complexity, but starting processes early to support complex parts of the engineering organization). Traceability is a good example of a process that is relatively easy to set up in its entirety, but difficult to implement once the application is expanded to include services. Why bother? Traceability drives certain behaviors and decisions. Because even with a simple implementation, you're thinking about traceability of everything you build. Implementing these practices early will actually change the way you code.
In the early stages of your company, you might not even be in the right business, but fast delivery and confidence in your releases will help get you there. This exploration phase requires simplicity. At this scale, coordination Paraguay Mobile Number List costs are lower, so take advantage of this: single team, single codebase, basic (automated) deployment. You don’t want to stop and ask your co-founder, “Hey, remind me of the Capistrano command?” or “Did I just push on top of your push?” You don’t want your laptop to be a “build laptop” , when someone wants to push code, they have to come to you. You can have CI/CD with the click of a button. Don't make it harder on yourself. CircleCI has a free plan. Use it. This step alone, even if you "don't need" it now (and I'll try to convince you that you do), will put you a step ahead down the road. When things get real and you have a security issue that catches you off guard, or you actually have customers and you're solving the problem at scale, you can release a fix. This is much better than "Rob is at lunch and we can't deploy." What the early development teams did…put CI/CD in place now. Your application is changing a lot and you want to learn as quickly as possible. No need to spend time remembering how to deploy securely.
When your system does start to require more complexity (I'll explain later why you should postpone complexity as much as possible), you'll have the practices and tools to deal with complex systems. Keep things simple. Deploying CI and CD is very easy. Get Google Analytics and set up CircleCI. At this stage, this may be all you need. But not having them is a big problem. Without these basic tools, you give your competitors a huge advantage. The most important thing about building a company is execution; get the tools you need to perform reliably and put off the rest. Create a placeholder implementation. This basically means deferring complexity, but starting processes early to support complex parts of the engineering organization). Traceability is a good example of a process that is relatively easy to set up in its entirety, but difficult to implement once the application is expanded to include services. Why bother? Traceability drives certain behaviors and decisions. Because even with a simple implementation, you're thinking about traceability of everything you build. Implementing these practices early will actually change the way you code.