Removing 100% of Hamster Wheel from Backend Development
Tags: productivity, programming, backend, startup
Published: 2023-11-15 15:20:41

**For any startup, moving fast is directly correlated with survival and success.** This means startup engineering teams need a scalable and reliable tech stack that will still let them move fast.⚡️

☁️ Cloud services have long helped provide scalability, but often put a damper on development productivity. Moving to the cloud comes with a load of "hamster wheel" activities — repetitive and undifferentiated tasks that do not directly contribute to product development or drive any customer value.

## 🐹 The problem: Hamster Wheel

So what are these common hamster wheel activities?

- **Complex Cloud Infrastructure Management:** Many startup teams struggle with setting up and maintaining their cloud infrastructure. It often involves a steep learning curve and continuous effort to ensure efficient and secure operations. Getting it wrong can mean downtime, security problems, and expensive cloud bills. 😬

- **Repetitive DevOps Tasks:** Routine tasks like server provisioning, configuration, and scaling are time-consuming. These activities, while necessary, don't directly contribute to product innovation or improvement.

- **API Integration Challenges:** Establishing a reliable and efficient collaboration between frontend and backend developers and systems can be tricky. Often teams rely on a lot of manual coding and testing, which is prone to errors and inconsistencies. 👯‍♂️

- **Lack of Observability:** Without observability tools, monitoring system performance and understanding application behavior is extremely difficult. This lack of observability often leads to uncaught bugs in development which leads to production issues and a poor user experience.

## 🤕 Common Band-Aids

So what are teams doing to cope with these challenges?

- **Infrastructure as Code tools like Terraform:** These tools help manage infrastructure by codifying it and working with it through a git-based process. However, this requires extensive setup and expertise, which can be a hurdle for smaller teams. It also means creating a separate codebase to manage, which needs to be manually replicated when you want multiple environments. 🐹

- **Building the Backend in the Frontend:** This common shortcut simplifies architecture and removes the need for "a real backend". It's useful for getting something live, but will inevitably lead to limitations and problems once the product grows and more use cases crop up. 🤦‍♂️

- **BaaS / PaaS:** These "Backend as a Service" or "Platform as a Service" tools include things like Firebase/Supabase and Heroku. They are appreciated by many inexperienced startup engineering teams as they provide a robust infrastructure for core use cases like user databases. The drawbacks are much the same as in the "Backend in the Frontend" case; ultimately you are limited by the service providers' functionality and you will likely require "real cloud services" once your application complexity increases. The challenge at that point is that all your data is stuck, which leaves you to navigate a complex and risky migration. 😬

## 💡 A new solution: The Backend Development Platform

At [Encore](https://encore.dev) we're working on building a next-generation platform to solve these Hamster Wheel challenges for startup engineers.

While we call it a platform, it shouldn't be confused with PaaS platforms like Heroku. 🙅‍♂️

💡 Encore does provide Heroku-like simplicity by automating provisioning and management of all common infrastructure primitives like Compute, Databases, Queues, Caching, Secrets, etc.

📣 The difference is: **Encore is NOT a hosting provider**

Instead, Encore is designed to be a tool to help you build your application using REAL cloud services from the major cloud providers, like AWS and GCP. This way you get the full power of "big cloud", without the learning curve and the ongoing DevOps investment. 💸

We think this is the only way to build a longer-term sustainable product that will be able to scale with our best users. 💗

### 🤓 How it works

Encore provides an [Infrastructure SDK](https://encore.dev/docs/primitives/) to simplify building complex powerful applications by declaring the infra primitives you need — directly in application code.

This gets around the Hamster Wheel challenges of Infrastructure as Code, as everything is kept in one programming language (choose between Go or TypeScript) and in one code base. Encore parses your application code and automates cloud infrastructure provisioning and deployment in your own cloud (AWS/GCP).

🙋‍♂️ Aside from orchestrating cloud infrastructure, Encore also runs your local environment and sets up dedicated local test infra for automated testing.

### ✨ Bonus: End-to-End Type-Safety
Type-Safety is an often underemphasized yet crucial aspect of robust software engineering. Encore's Infrastructure SDK extends type-safety to cloud infrastructure components, like Pub/Sub in event-driven architectures.

This ensures that the types you define are consistently applied, reducing runtime errors and enhancing code quality.

That means less time spent debugging and more time spent building new features.🚀

### Try Encore for your project

If you're curious if Encore could help your project, there's no easier way to learn more than to try building an example app. Check out these [Tutorials](https://encore.dev/docs/tutorials) to get started.👈

If you have questions, join the developers' hangout in Encore's [community Slack](https://encore.dev/slack).👈