I saw the "procedural vs OOP" debate today, and it's an overrated discussion, especially for beginners
The real issue is whether your code stays understandable after the project stops being small. If you need 10 files, 5 abstractions, and a pile of patterns just to move data from a request to a database, that is not good design. That is "decoration".
- A lot of people learn OOP as if it is the default serious way to program. It is surely not. It's just one way to organize code.
Sometimes it helps, often it creates useless structure, especially when people copy Java-style habits into places where they do not belong.
- Same, "just write functions" style can also become sloppy if there is no separation between business logic, input handling, storage, and side effects.
So the answer is not "everything should be OOP" and not "everything should be procedural." The answer is that structure should serve clarity.
If you are building backend code, especially in a language that rewards simplicity like Go, the best way is
- plain code first, abstraction later.
- Keep handlers thin.
- Keep logic in clear units.
- Keep database code separate.
- Add methods and interfaces only when they solve an actual problem like testing, replacement, or repeated behavior.
- Do not build a system around imaginary future needs.
- Most bad code comes from trying to look scalable before earning it.
So we should stop worrying about paradigm branding and start worrying about readability, boundaries, and change cost. "OOP vs procedural" is usually a fake hard question.
The useful question is this: when this code gets bigger, will it still make sense without a lecture? If yes then you are probably doing it right.