When you're faced with these tasks, how do you decide which tools and programming languages to use? Do you prefer to write code or use no-code solutions? And how do you go about researching and evaluating open-source projects?
Essentially, I believe that finding the best solutions with the current technologies available is an engineering process in itself. I'd like to learn more about how to approach this effectively.
I'm hoping there's a PDF or book called "The Missing Engineering of Crafting Software" that can provide some guidance.
Before jumping into solutions, it's important to take a moment to think things through and ensure that the solution you create is reliable.
Let's say recently I created one personal project but without thinking I just directly jump into code and used nest.js as backend to create APIs but later I found out it doesn't even needed If I have used something like strapi no code solution with authentication as well which would be even easy.
Thank you.
The same way that you would craft a beautiful piece of furniture, or fabulous wine, or marvelous garment. By caring first and foremost for the qualities of the result. Not the speed with which you can build it. Not the profitability. Nor its sale-ability. And you go beyond 'acceptable', way beyond least-saleable-product. You consider where it exists, what it's really used for, the environment around it, and you do the best you can :)
Whenever I have a new idea, I start sketching (yes, on paper, with pencils/pens). I quickly notice the things that I don't know or understand. So then I research the domain and write up my understanding and how it relates to the original idea.
Once I have the essence and its implementation formulated. I use one of the programming languages that I already now and the hardware which I think is most suitable and start hacking.
I rarely get it right first time. That is part of the learning experience. So v1, v2, etc often follow. At other times, I realize that the idea is unrealistic or I simply lose interest, etc. Have lots of abandoned projects.
By corollary, painters will make sketches and studies before embarking upon a key work. Sculptors will sketch, make models, smaller works before hacking away at some huge slab of marble, or casting tons of metal.
The comparison between software development and real world construction has been discussed by many folks. I think the consensus is that software development differs greatly due to the nature of each project being bespoke. Unlike construction where you can apply the same techniques and principles, each software solution is unique and requires. Or at least that's the argument.
To answer your question. I don't think such a book or resource exists. Maybe if or when software development stabilises we can formalise the craft. Until then it's very difficult to provide any hard empirical evidence.
Once the first draft is finished, I can look back on what could be done better and I improve it. Sometimes it requires a rewrite, sometimes it doesn't.
If I was confident that the thing I'm building can be done with a no-code solution, I'll try it out. But often the things I'm building certainly won't have a good no-code solution.
Learn what's available, learn how others have built similar software, and then just try to build that thing!