3 ms·
A lot of negative comments here, so I'm going to throw out some positivity/praise. I do think there is value in putting a name to the process of analyzing what
by ragnese 5y ago
A lot of negative comments here, so I'm going to throw out some positivity/praise.
I do think there is value in putting a name to the process of analyzing what assumptions, mental models, schemata, etc are more fundamental than others.
I don't generally approve of the hero worship of economically successful individuals like Musk et al, or trying to futilely guess at "the" cause of their success. But, that doesn't mean that Mr. Musk didn't have a point when he explained that his undergrad degree in physics encouraged him to look at the "everyone knows XYZ is best/possible/impossible" truisms and figure out what conditions led to that conclusion and whether those conditions actually apply to the specific situation he cares about.
The same thing happens in programming. How many times have you, or someone you know, tried to translate a "best practice" from one programming language or framework to another one only to realize that best practices are context-dependent? If that's ever happened to you, you would've benefited from "first principles thinking". WHY is that best practice recommended? What problems is it trying to help you avoid? Is that problem likely to occur in your new programming language? Can you even apply the best practice in the new language? If you can, will it still actually prevent the problem it was designed to prevent?
Whether or not the chef/cook analogy is accurate, I don't think the main takeaway should be that chefs are "better" than cooks as people. I think the point should be that sometimes "cook"-ing is fine, but if you want to become an expert at something, you need to go beyond following "recipes" and figure out how it all works under the hood.