How Hard Can It Be?
5 years ago a few friends and I came together and had that insidious thought that every developer has when daydreaming about things we could build, “how hard can it be?” 5 years, hundreds of hours, thousands of dollars, and multiple ‘launches’ later, our refined micro-service platform has one small problem, we have no users.
In this post, we hope to share some of the lessons we learned as we started our journey to turn our fun side project into a full-fledged company that promises to be ‘the easiest way to play games with your friends.’
Another Dedicated Game Server Provider?
Before getting into the lessons we learned, let’s provide some background into what we built with stratos.host.
stratos.host is an application that simplifies the process of creating, deploying, and managing dedicated servers for popular games like Minecraft, Factorio, and Satisfactory. The simplified process our users experience comes from hiding the complexity of orchestrating game server deployments in the background. Some of that hidden complexity includes: a REST API that schedules containerized services onto our Nomad clusters, a desktop application that detects when you start playing a supported game and offers to create or resume a server for that game (among other server management features), a service that manages deduplicated backups using content-defined chunking, a unique URL for each user that’s powered by Consul service discovery. Not to mention that all of these features are instrumented with OpenTelemetry for monitoring and debugging.
Implementing these technically challenging and interesting features, we learned many valuable lessons that we hope to share with other start-up founders or hobbyists that want to take their side project to the next level.
Lesson 1: No one cares about your tech stack
We think that we have a pretty cool tech stack and spent many years refining our infrastructure to meet our needs. We only work on stratos.host in our spare time and want low upfront costs so we chose low-cost cloud providers instead of investing in bare-metal servers. When we got our first user (a friend who agreed to use it for free), he didn’t care about deduplicated backups that increase our storage capacity or end-to-end tracing. He didn’t care about where we chose to build out our infrastructure or the costs involved. He simply wanted a product that solved the problems he was having and to enjoy the experience of using our product. One could argue that a feature like deduplicated backups is important to the user since increasing our storage capacity increases the amount of backups we can store on their behalf, but we have to keep in mind what matters to the user is the fact that they can have more backups and not the cool tech we made to do it.
This may sound very self evident to you reading this (and is self evident to me writing it), but I think we as developers often get caught up in the ‘art’ of our craft. We want to develop our code using the latest patterns, fanciest technologies, and the most modern tech stacks, but these are just tools that help us to enrich the lives of users. We as software engineers serve as translators between the needs of users and the esoteric language that command our CPUs. Software developers need to be intentional about understanding our users and solving the problems they have regardless of whether we can use the latest framework to do it.
Lesson 2: No one cares about the amount of effort
You may be thinking ‘5 years is a lot of time to dedicate to a single project’ and you’d be right. This fact is mitigated by us (1) working full-time jobs, (2) learning a lot about ourselves, and (3) becoming better developers by spending so much time obsessing over a single problem, but even I can see you nodding off while reading that sentence. Your users don’t care about how you spent 3 months researching deduplicated backup managers by trolling Github and academic papers (can you tell I care about our backup system). Pouring your soul into your project will increase the quality of your work but it won’t make people use your project.
There is an opportunity cost to everything that we do - should we have implemented feature X or feature Y, should we have worked on project A or project B, should I continue working on stratos.host or should I try something new?
We had a bad way of dealing with this at stratos.host—moving the goalpost. This created 5 years of opportunity cost that could have been spent elsewhere. Be efficient with your time by focusing on features that actually matter to the user then identify stopping criteria and stick to it.
What you choose as ‘stopping criteria’ will be highly dependent on your circumstances.
Are you trying to successfully bootstrap a business without bleeding too much money? Then maybe it makes sense to say either X users or X dollars spent, whatever happens first.
Are you a VC funded startup that needs to show growth? Great! Your VCs will make the stopping criteria for you.
Are you a hobbyist doing the project for fun? Maybe then there is no true stopping criteria and you quit when you stop enjoying the process.
What matters in stopping is what are your goals and needs for the project.
Lesson 3: No one cares about a product they don’t know about
It’s a common trope to say ‘if you build it they will come’, but we need to understand the mechanics of how ‘they will come’ to test if this is a good phrase. Are they going to
be on google one day, stumble upon your website, and magically start to use it? It’s not uncommon for websites to have <1% click-through rate so you’d need to have this happen to > 100 people to have the smallest chance of conversion
walk down the street and see your cool t-shirt or other swag and pull out their phone to look at your website? This may work for some, but who is trying to find a dedicated hosting provider on their morning walk
see your post about lessons you’ve learned while making your project and click all of the links you put in the article?
As much as we hate to admit it, marketing is just as important if not more important than the product itself. Having a good product allows you to retain the users that you have and tap into the most powerful marketing tool available, word of mouth. Without your application being in front of users’ eyeballs, no one will have the chance to experience the thought that you put into the user experience. This is explained even better in the very informative Veritasium video ‘Clickbait is Unreasonably Effective.’
This is made for YouTube content creators trying to game the YouTube algorithm, but all the same lessons apply.
We still haven’t figured this one out, but we are trying many different things like
refining our main website stratos.host to show our strengths more clearly
investing more time in our marketing strategy through defining our target customer and trying to meet that target customer where they are
seeking feedback from more diverse sources to validate our idea
Lesson 4: No one cares about your challenges
Developing good software is hard. It often has unique constraints and challenges that aren’t obvious when you start a project and creep up on you due to trying to solve a real problem with real-world concerns.
In our case, we had a lot of trouble supporting a large number of different game servers since each had its own
resource requirements that largely assumed they were running on a user’s computer resulting in less-than-ideal RAM usage increasing our costs. Moreover, some game servers shipped with their assets meaning that container images for games could end up being > 8 GB.
implementation quirks that depended on the game like - needing a unique port per user, certain versions having memory leaks, or not being able to configure which port it’s listening on (which is critical for a multi-tenant cloud environment)
support for features we relied on such as DNS resolution for game servers (we were shocked that some games didn’t support DNS lookup) or looking up who is playing the game.
All the customer sees is the experience that you provide them regardless of these constraints. Is there a memory leak for game server X? All they see is that their server is unavailable and ask “what’s wrong with my server?” Is their server start time slow because the server spends 5 minutes initializing assets? They see a 5 minute delay and wonder why the service is slow. It’s hard to tell a user (even though sometimes it’s true) “oh the game you’re using is the problem” when they just want to sit and play a game with friends during the one session they have in their already busy weekend.
Developers have an obligation to not pass our burdens to our users regardless of the underlying challenges. Is there a memory leak in the game? Instead of having it crash when it hits the memory limit, you detect the memory leak, inform the user ahead of time, and automatically restart their server when there are no players. A game doesn’t support DNS? Provide a robust guide for inputting the correct field into the game through your app.
There is a fine line here between unreasonable expectations and reasonable expectations, but there are generally good ways of solving a problem that benefits a user’s experience without forcing that user to solve the problem themselves.
Lesson 5: No one cares about how often you’ve failed*
We have all heard many stories of serial entrepreneurs who took multiple iterations of their product or started multiple different companies that all ultimately failed until they founded the one at the right time. The classic Thomas Edison line about his journey to create the light bulb
I have not failed. I’ve just found 10,000 ways that won’t work.
Similarly, the invention of super glue or silly putty were just ‘accidents’ that resulted in life-altering inventions.
The advantage of being hyper-focused on delivering value for your customers is that it doesn’t matter if your previous ideas all failed, but *I believe that only truly applies if you remain focused on solving your customers’ needs.
My team and I hope this applies to us as we continue to support stratos.host over the coming months.
Conclusion
Users are diverse, busy people that are trying to use software to enrich their lives and help them be more productive so they have more time for things they enjoy (or meet deadlines). We as developers and startup founders have a duty to deeply consider our users and in return they will help us achieve our goals to become successful startup founders, achieve freedom from corporate jobs, or maybe have fun working on a side project that a couple of people enjoy. With a complicated mix of good software, good marketing, and good luck maybe you’ll be the next unicorn, but hopefully we’ll beat you there ;)
If you enjoyed this article, consider checking out our product at stratos.host and leave us some feedback in our Discord.

