What do you do if you're in the middle of a project and you realize it already exists in the world?

Ben Halpern on June 18, 2019

I got this question in a DM and I thought it made for a good community discussion (of course anyone is welcome to make a post like this, but I'm happy to take the mantle for reach).

How do you react in the situation? Is it appropriate to keep going, if so what should you be mindful of?

markdown guide
 

Everything already exists. Do it better (figure out first, not self-hype) or pivot but be firm.

 

Exactly this. Do it better along one dimension:

  • easier to use
  • more fun
  • more powerful
  • for a specific type of person
  • etc.
 

Yes Michael, 👍 Focus.

They can even merge. Easier to use & more fun can be one thing "better UI".

For example, my comment there is suffering from "reddit syndrome". It's a succinct masterpiece of course, but it is also more popular because it is at the top. The UI is determining content. That is influencing people which is distorting things. It's a sweet sweet comment, but there are better ones in the thread which are lower down the page so getting lower engagement. Later ones too that are better. it's not an easy fix & while devto team was making a polls feature...

Someone came along & built dev.three with the promise of machine learning predictive adaptive personalizing AI comment ranking behavior.

That's basically how it happens. If Goo search slips much more, DDG will really get in. If Chrome doesn't pull itself together, Brave gets in.

"It already exists". Kinda.

Edit, Addendum: If you people make that one my top comment again. @peter 😡

dev.four has comment edit timestamps so you don't end up liking things that people can bait & switch. 🤗

 

Good point!

I usually follow this rules:

  • Do I feel like I can do something better in any of those dimensions regarding to the time I plan to allocate to it?
  • Am I really close to achieving something that can teach me a lot / would clarify something I never understood / anything in that spectrum

If one of those rules is met, then I'd continue working on it, even if I drop it later.

If others (by contributing/publishing) or me (by learning) have earned anything, it was not vain.

 

A fair amount of the things I've made, I started because it already existed and I wanted to have my take on it. Everyone has a unique perspective, and new approaches to old tasks can revolutionize them forever. Stay strong 💗

 
 
 
 

You are thinking like an Artist.

Scientists and Hackers (the original concept) try to solve a problem once and reuse knowledge and solutions.

Also remember that it is not only about you. It is about the community that surounds the projects. They will be divided.

Nevertheles, there are always other reasons related to
Project management. For example if the owner of the other project invest few time, reject many changes, etc..

 

I remember my wife waking me up at 5am because she found a direct competitor to an app I had quit my job to build and was well into the development of. I finish what I start, so I finished the app knowing I was already a me-too. About a year later they went out of business because they ran out of VC cash, where I was bootstrapping. My app may not have been a financial success, but I ended up being the last one standing.

 

I'd say my answer is that no project is static and you can think of the existing project as similar in this time and place, but you could eventually go in a different direction with the evolution of your project so it's not so bad to duplicate for now.

In terms of learning, duplication isn't so bad either.

If you really do have a finite amount of functionality you are trying to build for a library or framework and the exact same thing already exists and is being maintained well, it is probably an opportunity to get involved in the project that already exists. And if you find you want to take things in a different direction at any point, you can get back to your own idea.

As an entrepreneur I'm actually quite a proponent of a sort of "first replicate, then expand" path in terms of getting into a new space. Replicate doesn't mean generic clone, but you can replicate an existing business model that works before being more "innovative" once you've achieved parity. I think the concept of "replicate then extend" could bode well for any project.

 

That can be a tough road, as parity is usually a moving target. It can be done, but the faster they move, the harder it is to catch them.

 

That can be a tough road, as parity is usually a moving target

Yeah, it's more to give you an idea of where to start because innovation is kind of even a faster moving target.

Here's a pretty tangible example: I started by implementing a lot of Medium's features when first building DEV, gradually finding my own ways to do things differently and now we have a whole bunch of super awesome unique things but I didn't try to differentiate in any super meaningful way off the bat except a few basic things I thought were sort of table stakes (like syntax highlighting).

I'd repeat this pattern in the future. If you have an entirely novel idea, that's great, but if you want to create a useful tool in a known market, you don't need to do entirely new things. You can pick and choose from some cool existing ideas. As long as you understand why you're considering doing that and not cargo-culting off of existing implementations, borrowing the good stuff is a great path.

 

Pizza Hut doesn't stop making pizza just because Domino's already does. Be aware of, and focus on, what differentiates you from the competition.

 

The existence of a similar application can be a positive indicator that there is a market for your idea.

It's absolutely possibly to have similar products for the same market.

From there identify any pain points that you can use to provide a unique angle for your own product that the existing solution doesn't cover.

If anything build it out just for the learning experience.

But it shouldn't be instantly trashed due to another solution's existence. Just look at the signs and see if you can carve out your own piece of that user market.

 

If it's a money-making project, this is actually a good thing--competition means there's a market, people are willing to buy what you're making. You'll have to stand out in some way, of course, but it's much better to compete for your share of a lively market than to be building the world's best app nobody wants.

If it's a learning project, it doesn't much matter what already exists. There are thousands of to-do apps out there, but I built one anyway and learned a ton in the process.

If it's an open-source, "giving back" project, there's an argument to be made for abandoning your own project and helping out with the existing one. But there are also several examples of people building their own thing--a module bundler, a framework, a functional toolkit--that ended up having a major influence on the future of existing projects, or even overtook them to become the default solution.

Don't give up just because it's been done before. Unoriginality is one of the foundations of creativity.

 

I've often said...

"Unoriginality is one of the foundations of creativity." 👈🔥 100%.

 

Good that you have made the attempt of looking for some rule and special cases.

I am with you in that open source project should not be duplicated too much.

Big companies reuse all they propietary software code as much as possible.

We might forget the past but, the fact that we can use opensource projects today was because of the free software community and the preasure they gave to the market.

They could only achieve that because of they phylosophy of build and reuse.

Big companies don't use to make redundant solutions, they just concentrate resources on a good, competitive one.

If the opensource community has twenty projects to make the same thing, that is beauty and very dynamic, but from the economical perspective... "the resources are divided".

 

Also there are other costs for the community like the increase of second level dependencies with redundant functionality.

So another criteria would be.. Is it a top level (appliance) project or is it one framework that would be used by many projects?

I would say more basic dependencies sould try to don't repeat themselves.

For the propietary software and componentware marketplace it is something different. I would say.. You have the right to push the market but if you don't contribute back to the opensource projects used, a lot of complexity might accumulate in your customizations and the manteniance costs will grow up to the stress point.

 

I teach branding in a small design school here where I live. My students ask me a very similar question all the time and I always throw back the question to them:

How many toothpaste brands can you buy at the super market? And national wide? Or worldwide? How many toothpaste brands exist worldwide?

So yes, if you have an idea even if you start first, you are going to have some kind of competition. Those who can't understand this, just pay atention next time in a supermarket shelf and count different brands of the same product. Apps aren't any different. It's about solving a necesity or creating it.

 

This is sometimes true, but it really depends on the app. How many successful snapchats exist? How many successful Facebooks? The software world can be (not must be) different.

Myspace is dead, because Facebook did it better. On the other side of the coin even Google failed to dethrone FB with basically unlimited capital on their side. Sometimes your competitor is too big/popular to fail.

 

Also, we can apply this to other industries. What I love about your comment is precisely that you pointed a big problem for starting companies or launching products. You can't pretend to launch the next Facebook without the necessary resources to fight you in, or a very well planned strategy. It's a matter of common sense and reality, and a lot more complex than just developing a product. We all would be millionaire!

Thankyou for bringing this up!

 

Agree! Yes I missed that part in my comment and you are 110% right!

 

This.

You can make a todo app nobody has ever heard of that pays rent. You can make two & self compete.

It's not winner takes all.

 

You should remind yourself to do better research before your next project. Then consider this found project as though you didn't have your own yet. Avoid the fallacy of sunk costs.

If it does what you need, use it. If it doesn't, keep going. Be wart of Not-Invented-Here syndrome, but don't fall for Invented-Here Syndrome.

 

I would be wary working on a project knowing there are no competitors. It's either a truly innovative idea (which should probably be patented?) or there's something you haven't researched enough :-)

Good luck and don't quit!

 

My paper umbrella is fine. You just don't get tech.

 

Add blockchain support!

On a more serious note as others have pointed out, just because it already exists doesn't mean that you can't profit from it (depending on your definition of profit). Simply seeing the project through to completion can score you net gains is two areas:

  1. You learnt something
  2. You beat everyone else who gave up because a competitor already exists

I mean how will it look to folks if you give up because you have competitors?

Plus, as was said on a recent episode of the Complete Developer podcast:

You don't have to monetise everything

 

Ask: "Is there something about my version that improves on the existing implementation(s)?" (This includes performance, maintainability, documentation, and/or license.)

If the answer is definitely "no," switch to the existing implementation.

 

I would take want to clarify why I'm working on the project. For example, if I was creating a personal portfolio - I could use a template or use some of my own flair. Since it's my own space, I'd probably go with still working on it!

As far as business ideas, if it's already out there - I would see how well it's received, how good of a product it is, and if what I'm doing could improve it to take market share. If not, and the project isn't for learning only, I'd find a new one :)

 

Keep going, more than likely you are still doing something in a different way. How many apps exist for tracking to-do lists, but there is always a new way to do it. You're unique take is meaningful, and should be done and deserves to exist.

 

And one more note, if anything look at how they did it and find one point to improve upon or take a different direction

 

Keep building it.

You can learn a lot by building something that already exists. It helps you understand why certain decisions were made by other implementers, gives you insights into the underlying workings and maybe even show you how you can help improve other implementations.

 

Telling a programmer there's already a library to do X is like telling a songwriter there's already a song about love.

Pete Cordell

 

Keep going. What you make is not going to be the same product. They may serve the same purpose. However, your approach to the problem is going to be different.

Strictly from a self growth and learning perspective, what you will learn through this process has extreme value. Designing the system from seemingly the ground up. Building out your database schema, or even hooking into an existing API are worth it just for learning.

The other benefit, what you build for you, is inevitably going to work for someone else. Just because there is an existing product, does not mean that it cannot be done better. Don't limit your creativity just because someone else has already built something similar.

It's not the destination, it's the journey. - Ralph Waldo Emerson

 

It's kind of a broad question, to be honest. There are many reasons why you might complete and maintain a similar project. Otherwise, why would you have hundreds of different implementations of graphics editors, source code editors, development frameworks, content management systems, ERPs, accounting software, etc.

One size doesn't fit all.

 

I usually don't care because I drop most of my projects before finishing them anyway. But objectively I'd say the best course of action is to continue nonetheless and try and make it better (or different enough) than the existing alternatives, this is how software solutions improves.

 

Hehehe, just when you believe you're being a pioneer of the fintech business in your country Facebook announces its Libra coin. In coin-cidence offering all the benefits that you're planning to offer

 

Like many have mentioned before me, I would at first be a little discouraged but then I would analyse their products to see how I can make mine a better product. I would keep in mind why I wanted to do it in the first place and market it for that audience. Try and fill the gap in the market. There are thousands of alarm clock apps out there yet somehow people keep making more and more of them and are still making money. True it won't be as easy now that you've realised there is someone else doing it however it's never lost cause! Likely, once you've published yours knock-offs and copycats would jump on the idea straight away anyway so you have to have a unique selling point always :) Keep it up!

 

My reaction:

Wow, look at this nice person validating my product idea for me!

 

Try to make whatever I am building better or incorporate some of my optimisations in the exisiting one if there are any.

But I would never abandon it reason being there is always a way to do things better we just have to figure it out along the way.

 

I once described in great detail an idea for a video game I wanted to create. The person I was speaking to told me about Sid Meier's Civilization. I had never played it before, and it was almost identical to the idea I described.

All that to say, researching prior art before investing a lot of time into a project is a critical skill to develop. Trying to find holes and limitations in existing solutions can be a fun exercise, and it can help to convince yourself and others why what you're building is novel.

If I was deep into a project and someone pointed out something similar, I'd evaluate whether what I'm building adds something new and is viable, and worst case scenario, I probably learned a lot from what I had built up to that point.

 

I heard a great quote awhile ago that I again heard again recently and it really motivates me to keep going. "There are no unique messages, only unique messengers". As others have already stated you're probably not going to be creating content that doesn't exist. If you're writing a blog post, recording a video, creating a course or giving a presentation it is up to you to deliver that message in only a way that you can. You might have a way of resinating with others or have a lot of experience in something that gives your project a fresh perspective. Stay positive, focused and get your work out there for others to see. Good luck!

 

I answered this same question for a friend in a DM the other day. You carry on and do it. Your idea isn't really going to be the same as someone else. Your thinking will be different so maybe both can co exist.

But the bottom line you learn far more from trying and launching something than from stopping. Once you put it out there you might be able to find a new market for the product that the other products don't do. Or some feature you have that others don't.

The skills you learn building / making something and putting it out there are worth way more for doing it. So go for it.

 

If it's an open-source project I usually just try to see if I can somehow integrate it in my project, or use the standard it's using. If it's closed source then no reason for me not to make my own version I can tweak.

 

I started a web app only to find 3 weeks in that a company was working on a native iPhone app to do same thing and was about to release. I continued anyway and a few weeks later released it. The iPhone app is still months away from beta release and we got the lead on acquiring new users and market attention in the meantime. Glad I didnt get discouraged.

 

I've read the answers here and came to conclusion that if the products you found is exactly what you are doing and is exactly what you would have used yourself then it's time to stop and do some other product instead.

If, however, you feel that you have something to offer, or you have your own take on it then continue.

 

Today, how many products can you find on the market that are unique? A product may have a novel idea but may be implemented like another product, or it is based on the ideas of another product but is implemented in a completely different way.

Whenever we make a product or app that already exists, it has probably already been replicated a thousand times and a few replications (or inspirations) are even well-known and being used by people. So it's not really bad to make something that already exists.

The point is to not copy everything, from idea to execution. As long as you do one thing differently, it's a separate product/app.

Even articles written on the same exact topics are different; because the person who wrote them is different. Simply because you recreate an already existing product doesn't make it a rip-off of the original. Since in this world where one innovative idea or implementation begets a ton of inspirational ideas, very few ideas truly remain one-of-a-kind.

If the project I'm building turns out to already exist, I'd keep going, making sure to take ideas from the existing one. If it's popular, it's a good idea to take some of its features. I can then decide how to improve upon it or do things differently.

 

Well if the project is any sort of frontend framework keep going! We need a new one every 10 days :)

 

It happens everytime 😅
What we can possibly do :

  • Look for the project repository see if there are missing features you could implement or improve.
  • Make your own version in a different language.
  • I generally find some awesome tools which are generally writing in node. In that case I would create a Python version
 

This really depends on what exactly already exists and how much capital (money and development capital) you have available.

If you can do it better, then great. If they are already well ahead on features and you can't find the capital to come to feature parity and beyond, or to do something radically different, then you may have to cut your losses and pivot.

This really is likely a failure to do full research before starting the project, unless the competitor launched during your development.

I've seen this happen far too many times, and not only with software. This is a common failure in small business. The smaller you are and the less resources you have, the more critical this type of research, before starting a project, is. Large household names can afford throwing away capital. Small business can't.

If you have to pivot, let it be a lesson and do way more research next time.

 

So I think that unless you can do it a lot better, then its best to just bail on it. That being said, I don’t think that it’s bad experience to try building things that already exist. I think most of my biggest strides as a developer have come from trying to build an app that already existed and I thought I could do better. Most of the time you become woke to the technical trade offs and gain a sense of empathy for the tech debt that had to exist for that thing to come into the world.

That being said sometimes an idea already existing is actually a good thing. It means that a market actually exists for what you are making. If the market is big enough there should be a smaller yet still rather large niche that is being underserved that you can specialize in. Project management software is the perfect example of this. It appears there is an infinite well that can be tapped here with new softwares popping up every year that do just some tiny piece a little bit better or cater to a different type of workflow.

 

My favorite todo app is ticktick. I had tested everything that exists for the last 15 years. I found ticktick about 5 years ago. The developing team is from China (I think). I started using it when it was written in broken English and had terrible UI. But something about how they did it just works for me. I am happy they have stuck with it and tried to reach English-speaking markets because today it is a beautiful app with a unique approach that is a joy to use.

 

You continue and finish.Then see how you can make it better.

 

If you are planning on making an app or service with the intent of making money you definitely need a solid business plan, and that includes scouting competition. If you think you can expand on a feature or better a current app go for it. If you look at most apps reviews you can gather ideas for features, etc. People want simplicity, customization, and overall they want something to just work without spending too much time learning about it. I would say a high percentage of apps on Google play are crap, and a very small percentage listen to the users.

 

It depends on the purpose of the project. Is it for you to learn? Then you can think of the other project as confirmation that the idea is sound, take a look at it for ideas, then keep working on your own. If the project is an open source project that you just discovered, is it close to your original idea? Then consider maybe contributing to that project as well. Is it very different - implementation wise? Then move forward with your project and offer to collaborate with the other one. Are you making this for profit? Perhaps to sell? Then again you see that your idea is good because someone else seems to think so enough to make something with it. Your goal now is to not only match the other project for features, but to surpass it. If you want folks to use yours instead, it has to be faster, more features, easier to use, and less expensive. If you aren't willing to do those things, then you will be wasting your time (unless, as I said, you are doing this to learn). There's nothing wrong with having lots of different versions of the same kind of project. Look how many text editors there are! Your choices are collaborate, compete, or capitulate.

 

Depends,

For work: If it is open source, I see if it works for what I needed. If that is the case, I just stop what I was doing, and implement it. If the project need something to work for my case, I first make the change in the forked version, then if it is something generic post a PR to the original project.

If is a personal project I embark for learning purposes, I read the code, compare it with my implementation, I continue with my project with the knowledge gain.

 

I guess it depends on the scope of the project. It's perfectly fine to remake something.

Look at how people start out by making things like a TODO app. There are a gajillion of these, and it doesn't matter if what you're getting out of it is experience and a sense of satisfaction.

There are loads of things like blogs and frameworks out there, but it's pretty rare to actually duplicate an existing project without making yours slightly different.

I made a clone of a Ruby project once, in Python because I never understood Ruby and I wanted to add one feature.

For a more cynical viewpoint, look at how everyone and their dog made npm modules that did nothing except replicate existing things and let their authors call themselves "package maintainers" on their CVs.

 

What would I do if I discovered another site like DevLids?

Since it's a non-commercial project it primarily would not be a big deal. I'd try to get in touch with the author and see what happens. I would try to do the old-fashioned link-exchange, where I link to them and they link to me.

I would definitely keep going since it's not a lot of work and I made lots of nice connections around DevLids, especially on Twitter. And with soon over 400 submitters after a year, it's worth keeping up!

 

I think that there is no idea that there isn't something at least similar out there, you have to live with it and somewhat reinvent yourself. Take Uber and Lyft for example, Lyft was founded after Uber and they have a lot of similarities, but they reinvented themselves with ideas from each other.
Here in Brazil there were already apps that connect drivers to riders, but mostly it was for taxis, when Uber came with private drivers (taxis are private in a sense, but you get what I mean) and most of the time with cheaper prices (Uber came to here around 2014 World Cup with aggressive discounts to attract visitors who were here for the World Cup and already familiar with Uber and locals alike). The companies already here had to reinvent themselves having private drivers as well as taxis. Uber responded with what is known now as Uber X and payment by cash.
I don't even need to talk about food delivery apps, there is a bunch here and I saw the same in the US when I went there, the details are what differentiate them. The key is to be creative to differentiate yourself somehow.

 

If it was my case, i keep forward. At this point of the mankind there are a lot of thing already done, but you can make it better. Example: MySpace and Facebook.

 

I'd sign up for that existing thing and see what I can do better. Or if I can't beat it, I just focus on the learning (especially if it's just a personal/side project).

 

You join or make them join or learn from them ;)

 

Convince myself that the other project is garbage, steal all the best features and make them better

 
 
 

What do you do when you are in a middle of coding a library and you realize it already exists ... and you wrote it years ago too 😂

 

But seriously, there’s no cookie cutter solution. It depends. I admire Richard Branson for the simple fact that all his business ventures were an improvement of something that already existed (mobile, airlines, newspaper, music) and he managed to come out on top by simply doing a better job than the competition. If you choose to stick to the project, then make sure it is delivering a better value than the best competitor.

 

I keep going. You learn when you solve a task or problem.

 

If you didn't know this existed, there are a lot of people who do not know either. Make a marketing campaign better than your competitor.

 

Project exists means market exists.
Market is educated.
It is a good thing.

 

What do you do when you're in the middle of writing a love song and you realize there are already love songs out there?

 
 

See it as an advantage
They paved the road, got the users accustom to a way of doing things (UX) and the best thing you can learn from their mistakes. Study them, their team and their history.

 

Finish it or if it OSS switch to working on that code.

 

There exists many brands showrooms in a town, having same stuff inside.
What makes the difference is what features / innovation you are applying :)

 

Projects are usually for fun. If it existing is enough to put you off then what were you trying to achieve?

 

If it already exists then one part is easier because it's already been validated. So learn from the competency and put a little salt and pepper.

 

You might want to know what is the differential value deliver the existing solution vs your solution.

 

What I'll do is, I'll continue on what I'm doing. Who knows, I might accidentally create an algorithm of whatnot.

code of conduct - report abuse