The same goes for programming languages and engineering problems. I train my team to identify multiple possible solutions to a problem then identify pros and cons and then pick the solution that optimizes for the most important goal. There is rarely a "right" solution.