Ask HN: Where do you draw the line of over-engineering?
Hello everyone, I am starting something new from July and was doing homework as usual to figure out what stack I would start out with.
I am going to build a marketplace for shipment of things. Demand/supply discovery/matching (lots of variables) plays a big role. We want to make it really cheap for very small businesses to use us.
The obvious question that came to mind: should I use technologies that I know? That would be Python/PostgreSQL/React/Redux/RESTful. On the other hand introducing GraphQL seems logical to me, but it is outside the comfort-zone of REST. Or say using non-Python stack for demand/supply messaging.
So even small changes might seem over-engineering if I have a learn about them, but in the long run they might be well suited to the problem. If I was experienced in something else (Golang/Elixir/GraphQL...) I would pick that for my stack. So personal preference plays a huge role in what we call "over-engineering". Where do you draw the line?
Thanks for your thoughts
Get the thing running...technology can evolve, but only if there is a product. Use the tech stack you know, make a prototype and collect feedback. Don't hassle on some new technology you might even don't need to get the thing running.
We want to make it really cheap for very small businesses to use us. Random advice from the internet.
To me, that's a place where the business is over-engineered. "We want very small businesses to use us," is the right amount of engineering and "we want to make it cheap for us to run" is also sound engineering. A well engineered business has lots of customers who pay substantially more money for the products and services than it costs to provide them. Nothing else really matters. Even REST or Python.
Good luck.