Is Developer Experience a must for startups to scale?
From all the experience I had working in startups or building them, one thing always came back: developer experience is crucial to success.
Thomas Boni is a French engineer and entrepreneur, and CTO & Co-Founder of R2Devops. His career started in HPC (high-performance computing), then evolved towards DevOps. This — and in particular CI/CD pipelines — became the focus of his consulting company, which then became his startup, R2DevOps.
He told its enlightening story at Scaleway’s recent “The Jam” event, April 5 in Paris. Read on to find out how an engineer’s perfectionist mindset doesn’t always fit with that of a flexible startup founder… and how Boni overcame that gap!
In 2020, my co-founder Aurélien Coget and I started our own consulting business, helping other companies to develop their DevOps methodologies. We both have pronounced engineer mindsets, I should point out at this stage.
Our main focus was on CI/CD (continuous integration/continuous deployment); we offered a way to automate testing, building, and deployment of clients’ software. Our clients were happy with the value we provided, and we grew quickly to a staff of eight.
However, we felt like we were reinventing the wheel every time. Creating a CI/CD pipeline requires considerable effort. After all this effort, you have something that’s great for your customers; but you also create a single point of failure in their development workflow.
Because, if one day the pipeline stops working, the developers can’t code anymore. So it’s become really critical.
Creating a CI/CD pipeline can be a huge waste of time, and money. In this domain, there are no reusable components on GitLab; testing is hard; and it’s a vast ecosystem.
A pipeline itself consists of hundreds of YAML lines — YAML is a way to write your configuration — which are undocumented, because there’s no single way to write these configurations. Everyone has their own recipe. So nobody cares about the CI/CD pipeline until it fails, and then no one knows how to fix it… and the customer certainly isn’t going to maintain it themselves.
This exact thing happened with a founder I met earlier this year: he hired someone to create their company’s CI/CD pipeline. Then that person left. When it broke, no one in the company could fix it. So the founder decided to trash everything and start from scratch.
We also discovered incredible inefficiencies in the projects we worked on. One client had 15 different custom-built pipelines, all of them serving exactly the same purpose. They had spent a lot of money on each of these 15 different pipelines, when they could have been using variations of the same one.
So we realized this was a generalized problem, that we could do something about. We started by creating an open source repository of reusable CI/CD templates on GitLab, as a side project. People liked them, and we gained some contributors. This showed us we needed to build something more ambitious; what we saw as the ‘perfect’ product.
However, when we decided to launch our startup, we made a lot of mistakes:
On top of that, we made some major technical choices:
✅ Cloud native product
✅ CI/CD everywhere
✅ Reuse existing components, e.g. to manage system identities, we used Kratos (an open-source identity service)
❌ Design the whole system as microservices
❌ With hexagonal architecture (putting the business logic at the core of each component, input and output are modular)
With hindsight, the latter two decisions were not great ones. Using microservices, for example, added a lot more complexities than necessary. Overall, this was a fail.
But it wasn't all bad!
Firstly, GitLab called us, because they were interested in what we’d done on their platform. We’re now an official technical partner.
Secondly, in Spring 2022, we went to San Francisco for a few months to explore the tech ecosystem there, to talk to developers, founders and investors, to try to identify what we did wrong and work out what we could do better. It was an awesome experience, if a bit harsh at first, as you have to change the way you present your product.
Even more so if you’re a French engineer, who wants to explain everything in great detail; they don’t want to hear about that! The feedback was a bit harsh at first, but super useful for us in the end.
Then, we applied for funding from Y Combinator (one of the world’s leading, and most selective, startup funds). We were two months late, but they still called us back, and we got to the last stage: a ten-minute pitch to three investors, where you have precisely 15 seconds for each answer. So you have to be really impactful. We weren’t selected in the end, but still learned a lot, so it was a great experience.
This experience inspired us to try again, but with some radical changes:
So today, we work by iteration, on the assumption that nothing is definitive, and that any part of the project can be changed radically from one day to the next. We also understood this way that we didn’t need to build a project that’s scaleable to millions of queries from day one. We need to put the product on the market first, see if developers like it, and then think about making it scaleable, resilient, and bug-free.
Finally, we stopped being ashamed of the product, and showed it to customers even if it had issues. This was really stressful at first, because there were plenty of bugs, but it was the right move in the end.
Users helped us to test real-world use cases, and gave us feedback about their real needs. Some of them ended up developing parts of the system. For example, one customer needed to deploy an Instance of our product on Kubernetes. He wrote the Helm chart himself, gave it to us, and we just had to integrate it into our system.
The ‘non-perfectionist’ principle was one of the hardest points to get across. One developer actually quit when we told him we’d enforce this principle. But it worked.
Better yet: the user with whom we had the most bugs at first was the first to sign up as a paying customer. When customers are that involved in the product, they feel like it’s being developed just for them.
This is where we really saw that failing is the best way to learn. And to learn, you need to be proactive about sourcing feedback. Share your calendly everywhere and anywhere developers might be online. Start the conversation by not talking about your product, and then it’ll come up naturally, later in the conversation.
We also had the humility to rethink some of our aforementioned technical choices, to favor more simple and efficient tools. So we opted for Monolith instead of the cumbersome previous choice of microservices; and for MVC instead of hexagonal architecture.
So, to conclude, we learned from our big fail, and continue to iterate today. We’ve run 300,000 pipelines for our users on our public CI/CD marketplace; and we made our first sales in Q1 2023. So much for that perfectionist mindset!
More enlightening engineering insights at the next edition of The Jam; sign up here!
From all the experience I had working in startups or building them, one thing always came back: developer experience is crucial to success.
Fifteen years ago, hardware was at the center of infrastructure; then, the cloud revolutionized that. Now, hardware is a commodity and what matters is the software on top of it.
Creating, launching, and scaling your Minimum Viable Product (MVP) is no small task. To help you on those missions, here are a few budget-friendly tools to help you bootstrap your startup.