I like to think of the essential/accidental complexity split. The true way to solve essential complexity in a business settings is to talk with stakeholders.
Tools, libraries and platforms are accidental complexities. If you have already learned how to use them, you can avoid the pitfalls and go straight to the solution, which is why the common advice is to use boring technologies, as the solutions are widely documented and there are a lot of case studies.
If it's something new, then you can learn as you go by starting small and refactor as you're gaining more confidence. Copy-pasta or code generation is usually bad in that case. You don't know enough to judge the long-term costs.
Code is tech debt. When people talk about software engineering, it's to make sure that this debt doesn't outweigh the benefits of using the software.
Tools, libraries and platforms are accidental complexities. If you have already learned how to use them, you can avoid the pitfalls and go straight to the solution, which is why the common advice is to use boring technologies, as the solutions are widely documented and there are a lot of case studies.
If it's something new, then you can learn as you go by starting small and refactor as you're gaining more confidence. Copy-pasta or code generation is usually bad in that case. You don't know enough to judge the long-term costs.
Code is tech debt. When people talk about software engineering, it's to make sure that this debt doesn't outweigh the benefits of using the software.