I recently started a project - a note-taking application called Notey (not finished yet so cannot share a URL) and I've been stuck from the beginning. The main reason was that I was a huge overthinker.
I was so swamped with issues and questions that were better kept for the future.
"Should I use supabase or convex or some other db service? I'd better use Supabase because it provides features like realtime which I THINK I'll use in the future. But... Convex is so easy and friendly to use"
"Should I use Clerk or implement authentication on my own? I love Clerk because it handles all of the authentication process for me. It even provides me with useful hooks for my app. But I also want to make this project PERFECT and want to implement my own authentication from scratch using Auth.JS"
Even though I had the motivation to sit in front of my monitor and code, I just couldn't because it was incredibly difficult to make a decision.
I'm an overthinker, I overthink about things that didn't even happen. And it is affecting me and my motivation to work on my projects.
I knew that this wasn't a good sign. I needed to start anyway because as time goes by, my motivation levels will decrease bit by bit.
After some time, I said "Welp, I'll just do it with whatever comes to mind" and started with my project. There's no such thing as a "perfect" tech stack for my projects. I could use Supabase with project A and use Clerk with Convex for project B.
The most important thing was to experience as many technologies as I can. I put my focus on the wrong thing.
In the future, I may be working with tech stacks I haven't even tried out. What will happen if I keep on holding on to a closed mindset when I have to use new technologies?
It was for my own good to try new things and get out of my comfort zone, especially when it comes to programming where technologies are changing and advancing at a fast pace.