on December 21, 2020. in Development, Blablabla. A 4 minute read.
Two years ago I started working on a side project. It’s a glorified to-do application, so a fully working version shouldn’t have taken me more than 3 days of focused work. Yet, 2 years, and more than 350 commits later, I still didn’t “finish” it. I was close to launching a year ago. I could’ve launched a week ago.
Yet, I still didn’t do it.
As someone who specializes in working with legacy applications, it kinda always bothered me that I never had one of my own ideas developed from start to finish. I had a fair amount of ideas for side projects over the years. Probably nothing that would allow me to quit my work (nor would I want that as I love what I do), but all of them would be a great learning experience.
Some of them I never even started on, some of them I solved the “core problem”, some of them I even launched, just to shut them down a week later. Sure, they were a technical learning experience, but… I believe there’s more to learn from a launched side project than just improving my programming skills. Customer support, marketing, sales… Not giving up some 4 years ago on the first half-launched project would probably have a bigger impact on my work than it did like this. So would all the other projects and ideas since.
Number one reason is lack of patience. Alright, I solved the technical problem, the tests are green, the code is on GitHub, where are the results? It’s probably hard to admit, but I do suffer from wanting instant gratification. Be it in work, or exercise, or… I just ran 2.3km, what do you mean I still haven’t lost weight?! This is something I want and need to work on.
Somewhat tying in to the lack of patience problem, is the not wanting to work on the non-technical problems. I should put up a terms of use, and a privacy policy page? Hmm… No idea where to start on that, might as well not launch. I have no idea how to receive online payments here in Serbia, this project isn’t that important after all. These problems are as important as any other technical one, if not even more, and they deserve the hours required to solve them.
I know I can solve any technical problem. I know I can ask for help when I’m stuck. Oh, it’s a non-technical problem? I guess we’ll never know the solution to that. Yet, if I’d figure out some of these problems on one of the projects, it would open the floodgates for all of the other ones.
And then probably the most jarring problem is that I procrastinate on the real issues that prevent me from launching by coming up with technical problems that are not problems at all, or solving problems that could wait after launch. I mean, it’s just so fun programming, right?
How to solve the lack of patience I don’t know yet. I need to spend some time thinking about it. It’ll take a lot of introspecting to go through that. I guess now that I admit it to myself, I’ve taken the first step to solving it. Having a dog made me realize I have this problem. Talking about it with my wife helps me work through it.
When facing a non-technical problem, I need to look at it the way I look at a new technical problem. Is it really a blocking issue, or do I see it that way? Research, study, ask for help, get training, pay someone else to do it for me. Other people have solved it, I can solve it as well.
If I solve that, then I would expect that I’d stop working on non-issues, or would better prioritize the time when something needs to be worked on. Or if at least I know I worked on the other problems as well, I could let myself enjoy the “obligation-free” programming again.
I might as well stop thinking about these side projects as side projects, and think about them as projects crucial to business.
Happy hackin’!
Tags: side projects, projects, introspecting, reflecting.