Magicians never share their secrets. But we do. Sign up for our Ruby Magic email series and receive deep insights about garbage collection, memory allocation, concurrency and much more.
We started AppSignal four years ago as a side-project at a software development agency. At the time, we only had a vague idea of what AppSignal would become. Four years later we have learned a lot of things about becoming a product business.
They say that founders should be a little naive sometimes. If they are realists, they would probably never start new ventures. AppSignal started with the ambition to be an alternative to New Relic, which is not a small challenge. But the introduction of
ActiveSupport::Notifications to Rails gave us a jump-start, making it easy for us to collect metrics from applications. Here we went, down the rabbit hole.
There were lots of things we did not foresee. We had set up hosting environments for clients in the past, but managing an infrastructure that would eventually process 30 billion monthly requests in real-time was new to us. Having your first huge customer flipping the switch and tripling your traffic in minutes is a humbling–and server breaking–experience. We had to go back to the drawing board multiple times.
Besides the challenges of scaling, there were so many small things that are easily overlooked and took continuous effort:
That said, we are glad to have been a little naive. Facing these challenges one by one is doable, but looking back it was a lot of work.
Client work is great at either a small or large scale. At a medium scale however, it can suck big time. If you are a team of just a few people, you can work with clients with little overhead. You can make good money and have fun doing it.
Growing to a medium scale brings a different set of challenges. You start out with a great small team, and you try to grow by getting more work. This means you have to have some type of management to find and filter projects. But since you have now created overhead, keeping your team billable is more important than ever. Each hour your team is not working on customer projects will cost you money.
Continuously making sure there's enough new client work means you incidentally have to pick some not-so-amazing projects. And your talented team will pick up on that in a heartbeat, possibly leading to a talent retention problem. Growing beyond this, the power of scale will help you to maintain a more stable billability (is that even a word?), but can turn you into a soulless beast where billing hours is more important than delivering good work for nice clients.
Moving to a product business seems to be the holy grail. You can have talented people work on an exciting product, with full ownership. But revenue will come in slowly at the beginning, while great people cost a great amount of money. This means you have to invest your own money, or find outside funding, and be very patient. Or find a team that works for free (ping us when you find one).
The outliers in our industry give a wrong idea of what startup growth looks like. Growth is not always a steep curve, growth is mostly slow and (hopefully) steady. It’s the long run that makes you profitable. We aren't all in the position to grow 100% month over month.
Facebook, for example, had a mantra that said “Move fast and break things”. This would’ve been a terrible idea for a real-time metrics company like AppSignal. We found out early on that we had to go slow and could not break things, just so our customers could go fast and find out what they broke.
In the end, if you create a product that people love—even if it’s just a few of them—and are willing to pay for, you can build a company on top of it. If you keep going where others have given up, you can build something that others did not. It takes a lot of traits to grow a startup, and one of those things certainly is perseverance. So, just keep swimming.
Our team consisted of two founders who had worked together for over a decade, and a new founder that had never done any business with them before. So early on, we hired outside coaching to help us work on our company vision and team dynamics.
We had made a conscious decision to have some of the difficult conversations early, when things were going well. We discussed finances, vision, what to do if we would fail, what everyone's ambition was in the long turn. This proved to be valuable when things weren’t going as planned. Every startup hits rough patches, but being able to fall back to a shared vision helps to stay focused on the big picture.
We also talked about what drives each team member personally. These needs and traits showed us the DNA of our company. It also taught us who the right people are to work together on a specific set of challenges.
We pride ourselves on putting a lot of effort in our software development, to make sure our setup stays flexible and future-proof. This is a fine line to walk, because looking at the future is always full of assumptions. And assumptions are the origin of most f*ckups.
Nevertheless, if you look at technical debt (doing something quick and dirty) as you do at financial debt, it almost never makes sense to create it. Because just like with money, you have to pay it back with interest. What makes you move fast in the short term, will slow you down in the long run. We only create “debt” when we're experimenting to learn more. Our goal then isn't to build something future-proof, but to get real-world feedback.
Making choices with a focus on flexibility is always a good idea.
Our founders are developers and designers. But in order to grow a company, you need more expertise than that. When trying to find ways to acquire new customers, we wanted to try Google Adwords. So we hired an outside company to help us with this. We told them that our business was something else than selling toasters online, and our target audience is wary of advertisement. They were optimistic and set up a campaign for us and let it run for a few weeks.
And it failed.
The agency was unable to get the campaign successful and the collaboration ended. Sure, we got some signups from
email@example.com (free email addresses almost never convert) and none of them ever pushed any data.
Failing is part of growing, you learn and improve. But we spent money on ads and an agency, and did not gain any new insights about Adwords or paid advertising other than “it is complicated to get right”. The next time we do something similar we will spend more time on it ourselves, and probably fail a bit too. But at least we will have learned something more, and that knowledge will stay inside the company.
Each day we face decisions we have to make based on uncertainty. It can cause us to feel like impostors, while looking around at a million other companies that seem to know exactly what they're doing. They don't, and thinking like that can damage your spirit as a founder. Experience is valuable, but there has been no company like ours before, and no company like yours. There are only a few generations of founders before us in the tech industry, and we the landscape is changing constantly.
So at AppSignal, we know we are going to make more mistakes. But we also know we can use the learnings from the first four years to not repeat our mistakes. And we hope that sharing a little bit of what we learned might avoid a mistake or two for others.