Here's a secret to building great software products.
Pick boring tools.
They just work ^tm
I learned this lesson the hard way, a few years back. I used to manage IT services for my family's company.
In this, I had to pick from a suite of tools to solve our business needs. Email services, network servers for data storage, security camera specs, etc.
I chose the ones that I found interesting in the time. Shiny tools
Now every so often I have to maintain these servers now. This means learning every nuance of the obscure tools I chose. These tools didn't have a ton of great documentation, so I was the only one who could fix issues when problems arise. My weekends suffered at the expense of my poor decisions.
Fast forward a few years later. I'm working as a software developer at a tech agency. We're having a conversation about what tools we should use for building a software startup.
We ended up choosing a fancy new technology stack that came out that year.
Along the way we learned that we had to write our own custom libraries for business features we needed. This ate alot of time, and integration work, that ultimately could have been saved by choosing tools that were more less risky
In the end, the startup failed and got stuck with a lot of technical debt, and we didn't accelerate quickly enough to get the product off the ground.
I started to adopt a "ship first" ask questions later mentality. This meant, instead of spending time reinventing the wheel, we chose things that worked.
So we bought a prebuilt coding templates off of ThemeForest for a financial app we were building.
In just 3 months, we shipped the entire thing from start to finish. Our client was happy with the end result, and we ended up having alot of code reuse we used in other projects.
We chose a boring stack here. Something that was well established and known, and could get us to the finish line quicker.
In using this boring stack, we eliminated a lot of risk. Anytime we ran into a problem, someone else asked this same question on stackoverflow and answered it.
Anytime we need a specific library plugin, we didn't have to write our own! We could just install one, roll with it, and if we didn't like it, pick another one.
This also meant that when we hired and onboarded new developers as well, we didn't have to worry about coding conventions. It was all standarized from the get go
In the end, we could focus all of our attention to figuring out what the client wanted and just shipping stuff out.
This might be all ancedotal, but choosing boring stuff just works. It isn't particular to just technology stacks as well.
When I used to tutor at the coding bootcamp, sometimes students would ask me what to build for their portfolio.
You know what I told them?
Just pick boring apps. Clone a trello app, instagram, twitter, etc. Don't build novel solutions until your comfortable with the boring stuff.
I learned this the hard way. Back when I was still a newb at coding, I joined a international coding cohort. An online bootcamp for just coding projects
I joined a team full of senior developers that wanted to build a novel search engine, using alot of other overkill services that were not needed. Needlessly to say that project didn't even come close to completion.
In another team of junior developers, we cloned trello. We didn't have to spend anytime figuring out what we were building. Through this we were able to learn how drag and drop worked, git, amongst many other things.
This sped up my learning process which in turn eventually helped me land my first job
When you need to ship something, use boring tools. They just work.