Why it matters?
I often struggle with choosing the right tech when I start a new project and even worse, I constantly doubt myself to have made the correct choice after making a certain amount of progress in a project. Yet to get things done, this sort of self-doubt only leads to reduced output and diminished returns. So finding a good balance between the tech stack I choose and accepting that decision helps me to actually getting things done.
I often find myself pondering the decision of the tech in use in a given project, instead of simply doing the work necessary to advance and finish the project I’m working on. It’s true, that you can use a hammer to drive a screw into place, but it also leads to all sorts of problems, first and foremost, a screw tends to hold better, if it was screwed in instead of being forced into place with a hammer. The same is true in my experience when it comes to programming projects, where you usually can accomplish everything with pretty much every tool, if you just put your mind to it. Whether the choice of tool was good and/or sensible tends to be written on another page.
Making a decision without knowing all the variables
The great difficulty of choosing a tech stack for a project, lies in the impossible to overlook amount of readily available tech that is out there to choose from. Nobody can ever claim to know it all, because it’s simply too much and considering every programming language, framework and library would require several lifetimes worth of time, which one unfortunately doesn’t have at their disposal. Even if you had enough time to go through all that exists now, by the time you’re through, there will be so many new entries on that list, that you still couldn’t consider them all.
Your best option is thus to rely on what you picked up along the way and hope you don’t stumble over much better options after you invested a lot of your time to make progress in your endeavor. I advocate for myself to never stop learning, which comes with both up- and downsides to it. The upside being that you widen your horizon quite significantly by learning something new regularly, while the downside tends to present itself as uncovering bad judgments from your past decisions.
How to get things done then?
I don’t have a straight answer for that… Otherwise I probably wouldn’t have the time to actually write this post. What I appear to lack is the drive to simply push through a problem while ignoring the problem with my past choices. It helps to think out loud about it and even more so, if you can forgive your past self for what appear to be bad choices.
If the goal is to create something and have a large output of creations, it’s probably best to not look what your neighbor is doing with his garden and simply enjoy tending to your own. For me it seems that I enjoy learning new and more complex stuff a lot more, than having a large output stream of stuff I create. I guess that’s also the reason that I abandon a lot more projects than what I actually finish.
Don't feel bad about not finishing
While I haven’t really finished a lot of projects and I have so far failed to become successful as a content creator or a gamedev, I have actually learned a ton in the past years. When I started out, I only knew a single programming language well enough to accomplish something and didn’t really understand how a computer actually works. Nowadays I know several programming languages, I have worked with a multitude of libraries, frameworks and technology.
I still don’t understand how a computer works. Yet that realization seems to be a direct result of the Dunning-Kruger effect at work, because every time I learn and understand more of it, it becomes much clearer how little I actually know about the topic as a whole.
My advice to myself and others that experience the same is simple: “Don’t beat yourself up about it and try to see the positive side of things!“
Well great! This post was no help at all in choosing the right Tool
I’m sorry I couldn’t deliver an answer to a question that is probably more philosophical in nature than it has to do with actual fact based decision making. If you were hoping to find the answers, you may want to reconsider whether you understand the problem and it’s implications.
I’m happy if you reached the end of this post. This really means a lot to me and signifies that my words aren’t all that boring to others. The motive for me writing this is simple, I’m stuck in other projects and writing about why I’m stuck tends to help me to loosen that knot and get back to actually creating something, instead of pondering philosophical topics that don’t help with getting things done. Those topics are important to understand and should not get in the way of feeling proud about everything you accomplish, no matter how big or small of an accomplishment it was and even if you used the “wrong tool for the job”!