The answer to what should that process be? I'd look to the SWEBOK[0] for an introduction to the state of the art.
As for the question at stake here... let me use the words of someone much smarter than myself:
> Simplicity is a great virtue but it requires hard work to achieve it and education to appreciate it. And to make matters worse: complexity sells better.
> Dijkstra (1984) On the nature of Computing Science (EWD896)
If you don't appreciate the true difficulty of programming you're bound to create problems and spend most of the rest of your time debugging them later on. If your chief motivation is to sell a software product or service powered by software then it behooves you to create complexity. It seems more impressive when you can't explain why some component or feature doesn't work in a single sentence. You just want to control that complexity enough so that you can maintain the illusion of order.
If you want to achieve simplicity you have to work at it. It's hard and doesn't come for free. You really have to think. There's no way around that.
[0] https://www.computer.org/web/swebok/index;jsessionid=306e197...