An industrius mechanical engineer is designing a machine and is faced with the problem of attaching a component to another component. What does he do? Well he quickly solves the problem, by selecting several bolts which would hold the two components together… just as he had thousands of times before…
See the engineer could have looked at the components and determined the material compositions and what chemicals could be used to bond them. They could have also looked at literally millions of novel methods to attach two things together… but the engineer didn’t. The engineer values their time and chose the best solution that he knew at that time.
In software engineering, I find many people (including myself) tend to get carried away searching for the best possible solution to a problem. With the vast ocean of information known as the internet, it’s hard to keep on track. What Javascript framework is best? What design patterns will work the best? What platform? What database will solve this problem? … All these questions require research, effort and weighing up of trade-offs… when you should probably just reach for the bolt first.