Replicating as a way forward

Posted on May 16, 2024

For a while now, I’ve been thinking about ways to find a motivation lever to commit more into personal projects. It’s always been a challenge for me, to stay involved in a hobby project of some sort, despite the clear benefits. I always end up setting it up, fiddling a bit, but then I switch to something else and rarely come back to it, if ever.

This is kind of what shows up in my Gitlab project list, a collection of small projects, technical PoCs, learning topics, that often stopped early and don’t go much further than that:

I’m a bit frustrated that I don’t have a pet project that I can always come back to and chip at.

The quest for ideas

One of the main hurdles for me is that no idea really sticks with me1. It always comes down to one of the following:

  • I think that someone else already did it, and did a rather good job, so why do it?
  • I thought I’d like to explore that topic, but after a while, it’s not as interesting as it looked/was
  • I reach a milestone, then am a bit unsure where I should bring it next, and it eventually fades away
  • I simply forget about it, it wasn’t sticky enough to occupy some permanent space in my mind

Some of these are fallacies, like the “someone already did it”. We can’t keep inventing new stuff all the time, and there’s value in working on existing ideas no matter how many people have already done it. I think innovation is a bit over-valued these days, while good execution is under-valued.

Anticipating whether it’ll turn out to be a relatively good or bad implementation isn’t productive, and nothing forces us to be systematically in a competitive mindset with regards to existing implementations.

Some of the other situations probably reflect a bit of my state of mind at the time, where I was focusing on something else, or thought that a topic would grab my attention long-term, but it didn’t in the end. It’s okay, it’s part of a search after all, and it’s hard to predict beforehand how it’ll turn out.

After a while it got to a point where I would anticipate that one of these would happen when considering starting something new, and it doesn’t even get to that point.

But the itch for finding something truly motivating is still there. Thus I keep searching.

Which brings us to a little while ago. While skimming through some of the job offers that end up in my inbox, a new thought emerged for considering project ideas. I thought that some of the companies related to these job offers had interesting products.

Even though I wasn’t really attracted by working for these companies, I still thought that there was a good opportunity for a new type of project there. I don’t know if that will lead anywhere, but I’ll definitely try it out in the coming months. And by “it”, I mean

Start cloning their product

Simple as that.

Keeping their tech stack would often be the most sensible, but not necessarily. That would depend on personal preference, the chosen perimeter, and judgment. Actually, using other languages, frameworks, etc. could even be an interesting differentiating factor to leverage, for performance or speed-of-execution for example2.

Now of course, it might not always be doable. First, the resources are not the same, and you probably don’t have expertise in all of design, UI/UX, frontend, backend, infrastructure, possibly hardware even, so which product to clone should be reasonable, and expectations should be appropriate.

However there’s also zero overhead coming from communication, team organization, changing requirements, or customers influence3 (yet…). That makes you more nimble. Also, being the only person with every aspect of the product and its implementation in mind can greatly speed up work.

It’s also not necessary – and probably unreasonable – to clone everything from that product. The best strategy would be to accurately identify what the core features are, and then find the biggest overlap between that and what truly feels fun working on. It should remain a side project which is pleasant to come back to, after all.

If you can’t join them…

I see multiple benefits in working on such a project.

First, you’d have to think, identifying the core problem they tackle, how you would solve it, and how you would implement a solution yourself. You could anticipate what their customers would like to achieve or solve. This would yield a huge head start in terms of understanding the space, the problems, and the possible ways to tackle it before even starting a process with that company, should you choose to. Interviewing while already having a solid grasp of what they’re doing, an idea of how, and why, will definitely look extremely good.

Then, it also somehow frees you of the “coming up with an idea” part. There should be convictions on your end as to why it’s useful, maybe with a few difference in how you would approach certain things. But the idea is already there, validated to some degrees by a handful of people. At least those that poured some money into the company doing it4 and those that invested significant time and effort into building it from the ground up.

The most interesting benefits lie in the outcomes of the project. At the very worst, you’ll have at least learned and got some hands on practice. You had to think it through end-to-end both from the product and the technical point, you possibly got out of your comfort zone a bit.

Moving up from the worst case, we land somewhere where what you’ve done is at least useful for you. If you worked on something that could be useful in your day-to-day life, then that’s already very good.

It’s also even better if it can be useful to others as well. And if it lands you a job at that specific company! You even already know what it’s like working on such a project. Chances are that it bodes very well if you liked investing that much time into it, and you can retire that project should you choose to go to that company.

In the best case scenario (and assuming you didn’t go there) you might just have created an actual competitor to the product you’ve cloned5.

Congratulations!


  1. Somehow, project setup has very rarely been an issue, despite C++ and the general lack of pleasure that comes from this phase. It helps that I made myself a small C++ project template to simply clone each time I need something new. ↩︎

  2. There are definitely companies out there building products on top of, e.g., kubernetes and complex, over-engineered microservices architectures that are way overkill for their current customer base and workload. I wouldn’t be surprised if talented individuals could legitimately compete with them using simpler designs and sounder decisions. ↩︎

  3. Not that customer influence is bad in itself, it’s good to listen to customers, but there’s the fallacy of following what customers want or think they want a bit too much, which can dilute the product’s essence into a myriad of features that eventually lack coherence, for the sake of pleasing one specific customer. Something akin to the Feature Factory trap. ↩︎

  4. Which certainly doesn’t mean there aren’t clueless investors putting millions in products they absolutely do not understand, but at least someone was convinced by the pitch, and if you’re interested by the product itself then you are somewhat convinced of its value, no matter where it comes from. ↩︎

  5. Note that I would really not get into this type of project with the primary objective of creating a competitor to an existing product. This is a different approach, which focuses on finding project ideas. Of course you’re free to do that but this changes the perspective significantly and it’s not what I’m specifically chasing after here. I might pursue that if the opportunity shows up after starting the project, but that’s it. ↩︎