However, in the past 10 years, I haven't build a single product that was shippable, I've had plenty of ideas, many that I just didn't execute because I often overthink things.
My usual flow goes something like: 1. Come up with an idea for a product, and be really excited about it 2. Do some basic research and start planning 3. Start development 4. Quickly obsess over every tiny UI detail 5. Start second guessing the product 6. Find an existing product that's closely related 7. Give up
I've had ideas written down for years, only to see someone else build it, and be reasonably successful.
It's not that I'm a bad developer, I've shipped many products while working for different companies. It seems to be that when I'm on my own, I just can't seem to do it. I feel like I've wasted 10 years messing around, and it's really bringing me down.
Has anyone else been in a similar situation, how did you deal with it?
2. Find a pain point in an area you understand or have experience etc, then talk to people about if it is something worth solving for them before you ever build something. Don't build until you have multiple people say it is worth it and ask when they can have it/demo it pay for it etc.
3. Build the simple version, one that is almost embarrassing in simplicity but is reliable and not bug ridden. The simple version must solve a key pain point and then get it in one or more client(s) hands for testing and refinement.
4. Keep refining 1 thing in the product at a time. Listen to clients but do not chase features only. Chasing features is a sure way to die by a thousand cuts, be selective on features that solve the need and which a client is actually paying for or using. I've had lots of customers say we need this feature or we can't buy, then you do it and they either still don't buy or never use the feature and drop you in 3 months. Be weary of this.
5. Stop second guessing so much. We all have doubt but the reason so many young people succeed early on in getting a product out is they don't have combined experiences telling them all the stuff that shouldn't work. As we age we see all the failures of the past and can let it cloud our drive and vision, you need to actively ignore this at some level but not stupidly so. At the same time the most successful founders are usually a little older who took that youthful inquisitiveness/naiveté forward but with life lessons on how not to shoot themselves in the foot.
Also, all the stuff everyone else said. Get customers first. Build the MVP not the final draft of the product, etc.
A couple other things that I do is to sit on an idea for at least a month before I start building. A lot of times I run out of energy for an idea before I even start (this helps filter out the ideas that I don't really want to work on). And I also really like to pick projects that I think I can create an MVP in less than 2 weeks. If it takes 6 months to build an MVP, then I am far more likely to run out of energy and question if this is really want I want to be working on.
When you shipped things at companies... maybe half the time you were actually excited and half the time you figured if you don't work you'll get fired. So there is a system in place to keep you working even when you aren't especially motivated.
So what are some systems or tricks you can put in place? A person to work with helps. Working on something really tiny and just getting it out there helps build momentum. What other things have worked in your life to get you moving? Setting a specific time every day to work for 30 minutes might help.
To repeat - it's not a you thing, it's a general problem. Figure tricks and systems to help you.
On a side-note, even though you don't mention having analysis paralysis at your step 3 & 4, something that held me back during pre-development was always trying to decide which language to use and which libraries/frameworks to go for. I've heard this from my peers as well, so I thought I'd mention that as well.
My solution to this problem is to treat the language and tools I'm most familiar with as if they are the only ones that exist in the universe. I learned this from retro game hackathons that apply artificial limits on color palette, sprites, available memory size etc. For some reason, I'm much more creative when a set of these decisions are already made, in this case by my past-self.
When I want to just play, learn, experiment with things I can choose whatever I want. But when it's building a product by myself, then I always apply plenty of artificial limitations from day 0.
My experience was something like this: I had a small niche website while having a job. This website was making less than $50/mo from ads. When I quit my job to start an online business, I wanted to make something new, a community. But I had no experience with that type of website. Not only did I spend a lot of time (12 months) building the "product", but I also had no idea how to market it and no idea how to make money from it. Eventually, I started making small websites again, similar to the one I already had. I used the same platform, so a new "product" was ready in less than 3 months, sometimes less than a month. Surprisingly, at least to me, these small websites grew bigger and bigger, so they have become my source of income.
After all of this, the lesson for me was to stick to what works and what I can do.
Regarding point 6, I also have that problem, so I try to see if I can offer something more, different or if I can remix it. If not, I move on. I don't find it satisfactory to just clone an existing product.
In the past, I have tried a lot of silly ideas. Recently, I shipped a web app but marketing scares me so I currently have 1 user other than myself. Here are my unsolicited tips that a younger self would have found useful:
- Stick with building software, since that's something I am good at. Not e-commerce, podcasting or becoming a Youtuber.
- Build something that fixes a problem that you yourself have. At the very least, you have one customer after you ship.
- Build small bits of features every day or at a semi-regular interval at your choosing. I did this and was amazed at the progress made after 1-2 months.
- Keep the infrastructure simple in the beginning. For example, rather than paying $x/mo for an email with my custom domain, I use an email alias such as forwardemail.net or simplelogin.io. Use as many services with generous free tiers as possible.
- Stop worrying about similar products out there until after you ship yours. I personally have stopped trying to look for similar products (or tune them out when I see one) and focus on my own instead.
I'll plug an idea if I may - I have been thinking about starting a chat group with other developers working on side projects. I myself am a solo dev looking for support (while also working a full-time day job). If this is something that you or others in this thread are interested, please let me know. My contact info is in my profile. I have tried searching on hn for such support groups without much success; there have been interest in the past but they are many years ago.
Ideas are exciting, especially in the beginning. When you decide to work on a product, you are giving up on an endless amount of new (read: temporarily more exciting) ideas that come up to you as a creative person. This is a tough choice to be made, have you made this choice?
What does success look like to you? Is it the ability to work on what you like? If so, any kind of commitment to work on one product is going to be a difficult.
Also, you mentioned second guessing due to competition. You may notice that in any field there are many products which seem, like you said, "closely related". Thats because they only look similar from the outside. In reality they have something different about each of them, something significant enough for their makers and for the market. For example, they may be focusing on different aspect of the same problem or may be targeted at a different stakeholder or reach the same customers in a different way. Learning to find this differentiation in existing products might help you see more clearly where your product is unique.
https://medium.com/swlh/5-reasons-your-side-project-never-be...
I got over it by religiously plotting out the final steps to release, and then ticking them off 1 by 1. I find it useful to give myself an "official release date" and then trim features off the list so that I can meet that date.
You need discipline to do this, and you need to be able to look at your app or whatever it is critically, with a user who is not you in mind. You don't need to be in this frame of mind all the time, just in those final weeks as you prepare to go live.
The final weeks can be boring to a degree, but as you tick all those dull tasks off the list and near the finish it can get exiting and build up a very real sense of achievement.
Of course, none of the above determines whether your app will be successful or not. That's a whole different thing. But if you never release, it absolutely, 100%, will not be successful.
Then, find a semi-technical "business accountability person" (could be a CEO) that has a vested interest in keeping you on track.
Sure it's a balance of "keeping it loosey goosey and fun" and "wow this just feels like another JIRA tracked corporate project" when you get non-technical people involved, but that balance can be half the fun.
Also, you don't have to come up with the idea yourself necessarily. There are hundreds of non-technical founders vying for technical cofounders with 10 years of experience.
My one actionable piece of advice: do more hackathons (especially Web3 ones)
I'm just now about to launch my first self-made production project after four years, and it wouldn't have happened if I hadn't had a kind of accountability partner.
I met my business partner in a Chainlink Hackathon last year. We were working on the same thing, I liked his team, so we fused. He's kept me on track ever since as we enter seed financing, and I like to think I've perhaps kept the technicals on track as CTO.
1. Find someone with whom you can share your goal/passion. It does not have to be a business partner right away. You will find a lot of communities on the web for people working on your project, for small start-up businesses, etc. Maybe it will give you some motivation.
2. Accept that there are tons of similar products globally, and some will be successful and some will not. Besides, even if a product on the market is similar to yours, it doesn't mean that you can't beat it.
3. Remember that the process of creating a product, introducing it to the market, and further development is complex and often takes a long time to get the results you want. Don't give up in the early stages!
4. Learn. Observe how creating products and introducing them to the market looks like for others. See what they fail to do and learn what they are doing right. It is also worth establishing closer contact with such people. You can get valuable advice from them (you may even find that some of them have had similar problems to yours).
As was mentioned above I think building something you can use yourself daily (or regularly) helps. When I my side project that’s where o get excited about continuing to develop it.
And as you mentioned in your post I’d recommend not “obsess[ing] over every UI” detail. Might be a good idea to just make it ugly/imperfect for V1 intentionally?
Really just try to add the basic functionality MVP style. And since you’re using it regularly you will find little features you really think are necessary or bugs throughout the day to add to your list of things to do on your next planned programming session.
And I’d recommend picking only one side project and sticking to it, only one is important so you see more progress quicker and sticking to it is important because sometimes you just need to keep doing it to finish v1. Then you’ll have that as a milestone.
This is my thread https://news.ycombinator.com/item?id=25911355
I launched it very early with lot of "hacky" feature(and still nowsadays).
Few thing to help you shipped:
- Choose something you are super and very familiar. This is your product, not your play ground to experiment - Have your friend use it from day one. It forces you to roll up your sleeve and fix bugs - Weekly sync
If you want, hit me up at vinh@mailwip.com and I can do a weekly sync 15mins with you.
Why do you want to do a full-time job PLUS a side project?
What kind of life is that? You would work most of your waking hours. That is not the kind of possible future that motivates one to push through.
I think you are asking the wrong question. From where I sit you have a discipline and consistency problem. Not a “I can’t build a product” problem.
Building anything in life takes time and patience. The reason you never finish anything is you don’t have those traits developed.
For all these years, what you have done is played with technology and learned new things. You didn’t actually try to build a product.
While the first is very valuable, it’s completely different than the second.
I have 3 side projects that are on limbo. One of them is stuck because I am feeling technically challenged. Another one depends on the completion of the third project. Third project is stuck because I think I should finish the first project entirely then move to this project.
But here is what I am doing and get this, I built another project over couple of weekends that is 99% finish. Why did I do that? Simple answer is that I wanted to get my sideproject-building-juices flowing. I wanted to see if I had the ability to build something from scratch and ship it out FULLY FINISHED.
The scope was brutally limited and that meant that I couldn't simply add features to it. I intentionally choose solutions that I knew can never be scalable and extensible. And I also promised myself I won't spend a dime on it and I won't expect anything beyond upvotes in a Show HN post.
So what I built? A opinionated news link aggregator. There is no way it could scalable, marketable or profitable. The goal is getting a bookmark and 3+ upvotes. Period. I am more proud of the development story of the story rather than the project itself. (I am unironically using Google Sheets for my backend).
TLDR: Build a something that can be shipped in under 3 days.