Introduction
My last article was about how I struggled with a particular problem. Turns out this problem was part of an application I was trying to make. Oh, nothing fancy, nothing that will change the way we do business, or live our lives, but it's my thing.
Simply put, it's an invoice generator. You fill out some forms, get to see a preview of your invoice, and it generates a PDF for you. See? Pretty cute. You can find it here.
Side-projects graveyard
I started a lot of projects on my computer/github. How many of them did I finish? None :D There are always proper excuses to not finish a side-project. Not enough time, the excitement fades away, you don't need it anymore...
After solving the PDF issue, I actually didn't work on this for a couple of days. I was happy I solved a difficult problem, and just moved on... The project, like dozens of others before, was doomed to end up with its own grave on my github, and a inactive folder on my computer. A folder I could glance at from time to time and think: Oh yeah, I remember trying to do that.... But, after months of procrastination, planning, wishful thinking... it's finally live.
So, what changed this time?
Who cares about perfection?
First, I had already bought the domain name and the server to host my application. So, I was committed. Not a huge commitment of course, but still, I spent some money on this!
Second, I changed my mindset about this product. I have quite a few ideas about how to make this better ( obviously, I mean look at the state of it... ). There are a lot of functionalities I wish to implement. But, there is one simple rule... The longer it takes to build something, the less likely it will reach production status.
So, I asked myself a very simple question:
What is the one functionality that you can't take away from this?
Answer: Generate an invoice as a PDF
In the amazing book Rework, from DHH and Jason Fried, you'll find a lot of great tips about that kind of things.
Build half a product, not a half-assed product
When is it safe to let people have it? Probably a lot sooner than you're confortable with. Once your product does what it needs to do, get it out there. Just because you've still got a list of things to do doesn't mean it's not done.
The way you build momentum is by getting something done and then moving on to the next thing. No one like to be stuck on an endless project with no finish line in sight.
Endless projects, No finish line in sight. That sounds a lot like all my previous attempts at launching a side-project. Getting my project to one inescapable functionality gave me an attainable goal. So, that version is done. Now, I can move on and improve it, and/or add new functionalities. One at the time, step by step.
All the way
After 3 years as a developer, I actually never had the chance to take care of the sysadmin part. I write code, but I never managed a server, configure the DNS, and understand what is actually going on. Sure, it's not really my job, but I didn't like having such a huge gap in this area. Launching a product meant I finally had to take care of it. Even if I only took care of the basics, it feels good to explore this.
Conclusion
Anyway, Invoice Maker is now live. It's mine, and even if it is not really pretty and it doesn't do all the things I want it to do, I'm proud if it. I'm proud because I battled my own indiscipline, my own fears and insecurities. I hope I'll remember a few things from this experience:
- Launch now!
- Scratch your own itch
- Commit yourself in some way
- Perfection is a myth
- One good functionality is better than a dozen if the product is never launched
Happy Coding <3
Top comments (25)
So relatable. My credo is:
And this is exactly what you've applied. No more procrastination but releasing. It just feels soooo good to have finished the "idea > create > publish > validate" creation cycle, doesn't it?
Onward with validating the idea and making it shine :)
Congrats on you shipping! 🔥🚀👌🏻
Hell yeah! Finishing the cycle is a great self-confidence boost :D
Thank you very much!
Awesome article!
Everything you code without publishing it to the world is wasted time.
You may learn something while you code your secret little project, but no one will ever be able to use it.
It's like running a company, no one knows about besides you.
Keep up the good work. ;)
This is great! Congrats :) Just a note...I tried this out and the Download as PDF was not working? I'm guessing it might have something to do with being at work and our firewall? Just a hunch...
Attached a screenshot. Not that you can tell much. But nothing happens when I click on the button. Seriously not to rain on your parade, here! I thought you might just want to know.
As someone transitioning from A/R to web dev I found this a neat project!
No worries! Thank you for reporting it ;)
Other than that it was great! Maybe you could create a completely new system for our ancient software system for us??? OKTHANKSBYE. ;)
I will note that on my to-do list ;)
I may have solved it. There was a stupid bug I think I fixed. Fingers crossed.
You are totally right. I am currently in that situation, you described (having a ton of ideas, trying to reach 100% code coverage, creating more and more tasks every day... In other words, striving to perfection). Seeing more and more now, that it is to much work for a side project.
This article will have effect on me for sure. Because of that, thank you :)
Glad it helped ;) We all have limited free-time and willpower. Small and frequent wins are so important on side-projects. Good luck!
You hit it on the nail. I've run into the same issue over and over again having an idea, then starting it, but then abandoning it, always feeling like I need to do more. Thanks for the inspiration and motivation to keep grinding!
Glad it helped. Good luck!
Great article!
I could relate to a few things you said. Thank you for this wonderful article. I'm definitely inspired!
I'm glad it inspired you :) Best of luck!
Thank you. Best of luck to you too!
Great you finished and launched it!
I had exactly the same evolution :D
If it does not have all the features you want it to have right now, the launch is the right way to have some motivation to enhance it.
I think when it is live, you always hear a little voice in your head "someone on the world is looking at it and wondering, when feature XY might be added" or "someone looks at it and thinks what the hell this crap is" and this motivates at least me to keep working on something :)
Nice job and congrats! I don't want to be "that guy", but would be cool if you remove the react icon before launch :). All in all good luck with launch!
Haha, thank you. Yeah, there are absolutely some obvious things I should modify!
I think you are not the first one forgetting about the favicon thing (I myself always forget about it).
Gratz man im happy for you
Thank you Damien - this was a great read!
I've been struggling with this too, so thanks for the heads up, and the kick up the bum. :)
Just launch my friend :D
Thank you for the kind words and good luck ;)