As a startup, a major factor in your success is how fast you can ship your product and iterate based on feedback from your customers. A well-chosen set of developer tools can be the key to moving quickly. The ideal stack should be easy to set up, affordable, and integrate services that your team already knows and trusts. In this article, we'll explore the nine principles that make up the perfect startup developer stack.
As an early stage team, you want to build a great product and not worry about your infrastructure time or cost. The best dev tools focus on ease of setup, provide free tiers to get started and scale without huge jumps from a cost perspective as your team scales.
You want to use tools that you already know and trust. Tools like Slack, GitHub, AWS/GCP, Linear/JIRA, Docker, and VSCode. Your dev stack should meet you where you already are and support databases like Postgres and Redis which are popular choices for startups.
Your stack should be flexible enough to support the tools and languages that your team is already using. The rise of “Infra from Code” frameworks such as serverless.com and Encore are cool for new projects. But they require you to rewrite your application into a new format, or to have a greenfield project and be open to using novel tools or languages. You don’t want your team spending time learning a new framework or language when they should be focused on shipping your product to customers.
As your team scales and you move beyond the free tier and/or your startup credits, you’ll want a stack that is proactively optimizing costs for you without compromising performance, security, or reliability. You’ll need visibility into your cloud usage and will want to use monitoring to identify areas where you can save money.
Workflows that achieve industry best-practices will pay dividends in the long run and will allow you to align with critical standards like SOC2/HIPAA/ISO27001. The SDLC (Software Development Life Cycle) should include tools to enable the various phases such as coding, testing, deployment, maintenance, patching, monitoring, and updating.
The next-gen development workflow offers branch previews for the whole app, allowing your team to preview changes before they are merged. This increases productivity by removing bottlenecks of a shared staging environment. Just as important, it improves quality by giving a dedicated place to run integration tests and do manual testing on this code in isolation from other branches, reducing the risk of introducing bugs to your next release.
You want to ensure that your code is tested and analyzed before it is deployed. Build pipelines with testing, static analysis, database migrations will get you there.
Continuous Deployment (CD) allows your team to deploy changes quickly and frequently, reducing the risk of introducing bugs and maintaining velocity.
Your stack should include RBAC (Role-Based Access Control) and the "two-person rule" for infrastructure. Your tools should also eliminate the need for your team to manually manage credentials to access environments, reducing the risk of security breaches.
Unfortunately, most teams end up using a stack built on a PaaS (Platform as a Service) and kick the can on worrying about the development process. They build their own integrations based on copy/paste from Stack Overflow and manage the process in their heads. When an issue arises, they figure out how to solve the problem without building the fix into their process, causing future delays and downtime.
As startups scale, they outgrow their PaaS solution and their cobbled together stack falls apart. They end up having to rebuild and often need to hire experts to manage and maintain their new infrastructure. These experts need to migrate the existing systems to new platforms without causing downtime, which can be a time-consuming and expensive process.
They also need to keep legacy decisions, which can make things 10x slower and harder, as they may have to work around existing infrastructure and systems. An example might be that they chose to use a config file instead of an environment variable for some kind of information, and thus they cannot move to a system that only supports environment variables, even if it were better and simpler and cheaper in every other way. For some cases config files are the right choice - so this isn’t about that one particular item, but rather the kinds of snowballing decisions that cause long-term speed impacts on startup teams.
Furthermore, as the team grows, even a small percentage of the engineering salary budget can be a significant amount of money. It can take years to get ahead on the infra roadmap and implement the necessary changes to optimize costs and improve the platform's performance. This delay can be a real dollar drag on the startup's finances and may impede its ability to compete with other companies in the market. Therefore, startups need to consider the cost of engineering time when building and maintaining their platform to ensure that it is scalable and cost-effective in the long run.
Building the perfect developer platform for startups is critical to moving quickly and achieving success. It should be easy to set up, affordable, and support the tools that your team already knows and trusts. It should also provide a best-practice workflow that aligns with industry standards, complete build pipelines, and security best practices. That’s why we built Coherence. You should be able to get the ease of use and setup of a PaaS AND these nine principles (and more!) on day one, which will allow you to focus on building great products AND scale once you find product market fit. Be ready for the long term on day one with Coherence.