Blog
Apr 4, 2022
How to build a side project, step 1: the idea

How to build a side project, step 1: the idea

Hugo

Very recently, I needed to go back to basics and made a few side projects. For the latest one, I set myself some challenges that I want to share here.

So why should you read this post?

  • You'll learn how to carry out a project from idea to launch, covering each step (ideation, design, integration, backend, deployment)
  • You'll realize that being truly FullStack is far from simple ^^
  • You might discover some cool tools and frameworks
  • You might learn more about jobs you don't know well
  • We're going to talk about how much it costs to create a product, even a simple one like this
  • You'll be able to laugh at my UI skills

Other posts in this series:

Obviously, given the number of topics to cover, it would be too long in a single post. So I'm breaking this down into a series, and here's the first one:

How to develop an idea?

Why make a side project?

First of all, I'm talking here about a side project, not a product.

I don't plan to sell it. And it's really important to avoid confusion between a product and a side project because:

  • you don't put the same effort in
  • you don't have the same expectations

However, I'll cover some things you should consider if you ever want to launch a product. But keep in mind it wasn't the goal of this challenge.

So, why do a side project? (At least for me)

  • Keep learning
  • Experiment
  • Have fun

For a side project, you'll likely need to be a fullstack developer. But fullstack is a catch-all term. Everyone claims to be fullstack. I'm seeing CVs from "Fullstack Front", "Fullstack Back", "Fullstack Data"... (?!)

And when I say fullstack, I mean really fullstack—handling design, frontend, backend, deployment, everything. It's intimidating, but I'll let you in on a secret. You won't become a perfect expert in every area. You just need the 20% that gives you 90% autonomy.

I'm not going to lie, it wasn't easy... But I learned a lot, especially on the frontend side.

By the way, quick note: since my goal was to code a product myself, I didn't use NoCode tools. But that option would probably have been viable, if not preferable, for a real product launch. Even though making a real product is on my mind, I didn't approach this challenge the way I would approach creating a commercial product.

The original idea

At the very beginning, you need an idea to get started on a side project :)

Sure, there are people who think big and ambitious, who plan to go to the moon, create autonomous cars, and impact millions of lives—and who have the means to match their ambition. But that's not a side project anymore.

So, think small. Most of the time, we encounter moments when we're missing that little tool or service that would be just right. These are small utilities we build from time to time that could become more mature products.

In recent years, I've seen many small pain points in companies that could give rise to SaaS tools.

I created a first product before Malt called localizeyourapp.com (RIP), following a messy project to internationalize a site in Chinese. It was an app that basically does what Phrase or Lokalise does today, but in 2010.

At Malt, I made a tool to provide 360 feedback for team members (Rocket 360). It's since been abandoned in favor of OfficeVibe.

And I have plenty of other examples. It's really easy to find an idea that solves a problem we have every day.

We often underestimate the "little" projects we build in our corner, thinking they're not useful enough, too simple, too... not perfect enough.

For example, someone on the team coded a Slack bot to track everyone's office presence for the next day. They never considered turning it into a product. Well, during COVID, we saw an app launch in that exact niche.

Be careful though—this approach isn't the same for a product. You need to do more work to identify an idea that could become a real product. But for a side project, it's fine.

And so Coderwatch was born.

The pitch: learning programming languages and frameworks while playing. You can take quizzes, earn points, and gradually climb the rankings against other players while improving your knowledge.

Coderwatch

Coderwatch is the sum of several ideas coming together: a bit of nostalgia, a strong interest in gamification, and a connection to recruitment.

Nostalgia because I was a user of a site called BlackBeltFactory over 10 years ago, which unfortunately disappeared. It was about earning colored belts, like in martial arts, by completing quizzes on programming languages. Gamification made the challenge fun.

I could also mention "The Legionnaire", another online game with general knowledge quizzes that let you climb the hierarchy of a Roman legion by challenging other players.

Even though BlackBeltFactory was decent, I think it could have gone much further with the gaming aspect. I play quite a bit and I'm very sensitive to gamification mechanics in apps, especially in e-learning. Duolingo is clearly a model in that regard.

Throughout my career, I've had to take or administer technical tests. They're rarely fun, let's be honest. But I learned from going through them, and I think they can be turned into a useful tool.

In short, I wanted to transpose all of this into an experience that would combine fun, gamified learning with a challenging game for devs.

Create an MVP

Once you have the idea, the goal is to define an MVP—a minimal version that can hook players.

While doing this, I thought about 2 things:

  • The value proposition
  • Game mechanics

If it were a product, you'd also think about monetization. But at this stage, even for a product, it would be too early. Monetization should be part of your thought process, but it's not the main focus of the MVP.

However, you can think about it when designing the value proposition.

The value proposition

The value proposition I see is:

  • Create a fun experience to learn tech skills
  • Compete against others
  • Show off (prove your skills)
  • If it were a product with monetization in mind, it could be a recruiting tool to source devs from the community

Before you start, you can do a benchmark of the applications that already exist (it's mandatory if you build a product).

And I found lots of cool sites:

Codewars, Exercism, Codingame, Coderbyte, Hackerrank, Welovedevs

The first ones all have an identical approach: you can code in the browser and work on real algorithms. My favorite is Codingame (developed by French people!).

I like it a lot, but the time investment is significant. You can't play it on mobile during a Metro ride, and overall, I find the gamification somewhat limited.

For gamification itself, I much prefer Duolingo, which is oriented toward language learning.

Finally, Welovedevs comes closer to what I'm looking for since it includes quizzes. The gaming experience is still limited—it's not the main focus of the site—but it's fun to use.

If it were for a product, when you find so many apps in the same space, the first reaction is to think you should move on. They all have teams working on them, more mature tech (like in-browser IDEs), and established revenue models.

But here's the thing: first, I think it actually proves it can work. It shows there's interest and that you can even make a profitable business from it.

Second, I think I can bring something a bit different.

And third, I have zero pressure. It's a side project. At worst, it'll cost me money, but I'll have learned a lot. So I don't really care.

By the way, studying these sites, I discovered their business models: SaaS tools for recruiters to create their own tests, team building tools, job boards, etc. And to be honest, it's really interesting to understand their underlying business models. I learned as much about how to build the thing as how some people would sell it.

The game mechanics

This is the heart of the project since I want it to be fun to play. I want to use video game codes and vocabulary: badges, bonuses that unlock features, levels to pass, leaderboards, free-to-play mechanics, etc.

I know design and UX will be my biggest weakness for this project because that's what should make all the difference, and it's far from my specialty. But whatever, that's precisely the challenge.

I won't spoil all the game modes I'm considering, but I imagine two main modes:

  • A single-player campaign mode allowing you to explore a language or framework in depth, with levels to pass and a world ranking
  • An arcade mode made up of quick games with various modes (random questions, speed bonuses, challenges, guild games, etc.)

Another aspect that seems important is involving the player community to create new quizzes and enrich the game.

Except I know this will be the first barrier: writing the initial quizzes. This is my Cold Start problem.

Few quizzes = few players, and interest quickly fizzles out.

Few players = few quizzes since most questions should come from them.

It's a vicious circle.

So my bet is to place the contribution request directly on the game results page and reward contributions with XP points, allowing players to climb the rankings.

It'll certainly be part of the success metrics, but I don't have complete confidence in it.

To mitigate this weakness initially, I decided to make only one game mode available: Arcade mode with only "Random" games (random questions). Players can play one game per day with a maximum of 20 questions if they make no mistakes. I need 100 questions to offer 5 days of play to the best players who make no errors, but I can extend the experience to 10 days for those who make occasional mistakes.

Monetization

Why think about monetization if I said the idea wasn't to make it a commercial product?

Well, it's true, but even if the goal is just to create a community based on a multiplayer game, it'll still have a cost. So I asked myself how I could generate minimal income to cover the service.

How much does it cost to run Coderwatch?

  • €40 domain name (once a year)
  • €49 Figma themes (I'll come back to this)
  • €20 monthly consumption on Clever Cloud (a PaaS to run the application)

In short, the target isn't high: I need to generate around €25 per month.

In reality, it's a bit more complex. If there were more users, consumption on Clever Cloud would also increase. But even in the unlikely event of widespread adoption, I think there's time to see what happens before going over €50 per month.

But let's not get ahead of ourselves. At this stage, I have 0 users, no working site yet, and the time available is limited to evenings and weekends. In principle, that's the perfect recipe to release something close to zero, so I'll probably have to accept paying out of pocket and doing it for the glory.

Again, that's not my goal. I have a job I really can't complain about, so this will remain a hobby.

Yes, some people have weird hobbies...

That said, there are a few possible solutions depending on traffic. Advertising is an option (like Duolingo). Posting job ads, either through affiliation or directly, is another option.

For advertising, AdSense offers a revenue simulation tool based on traffic.

With some basic calculations, it takes about 200 active users per day to reach those famous €50 per month—and that's assuming no one uses adblock, which would be surprising for a dev population. It's not the solution that appeals to me most; I don't like advertising. But I have to keep it in mind because it's very simple to implement.

Making a job board requires more development, though it doesn't seem too complex. However, you need significant daily traffic to interest companies in posting ads. On the other hand, an ad on a niche job board costs between €100 and €200. With just one ad, I'd reach my goal of covering the service cost. It's also the option that scales best because with volume, it could even become real income—there are companies whose entire business model is based on this.

Well, it's not super lucrative, but as I said, it might be mostly for the glory.

What's next?!

That's it for today in this first post of the series. I've revealed the entire thought process behind the early stages of creating the game.

In the next posts, I'll talk about design, frontend integration, backend development, and how I deploy it all on Clever Cloud.

Stay tuned.

Enjoyed this article?

Subscribe to receive the latest articles directly in your inbox.

0 Comments

No comments yet. Be the first to comment!