HACKER Q&A
📣 anonymous___

How do you craft software exactly?


I'm curious to know if you're interested in creating something unique, like a personal project, freelance work, or even architectural designs.

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.


  👤 drpixie Accepted Answer ✓
> How do you craft software

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 :)


👤 GianFabien
I'm sure that the process of crafting is very personal. Perhaps everybody does it in their unique style.

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.


👤 greazy
>Essentially, I believe that finding the best solutions with the current technologies available is an engineering process in itself.

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.


👤 FinalDestiny
Personally, I find myself accepting that the first draft will always have its flaws. Even after all these years it can be hard for me to see these flaws until the first draft is done.

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!