Foundational knowledge is worth a thousand tools

Should you learn how to program your own mutilthreaded server before starting to set up your first Google Ads campaign? Surely no. Does understanding how the HTTP protocol and Session management work will help you become better at managing your digital campaigns? I am pretty sure that yes. Because learning about it will give you the foundational knowledge that makes understanding complex abstractions later on easier (like third-party cookies role in performance measurement, DSP, ...) Starting from the abstractions obstructs your vision of the reality, obfuscating the bare mechanisms at play underneath. It constrains your creativity to the limits of the tool.

This is not to say that I am against abstractions. We moved away from programming with punched cards for a reason and abstractions, be it in programming, physics or whatever the field allow us to go further, faster. There's elegance and satisfaction when coming up with ones that fully address the problem into a clear, optimal solution. But, to me, what foundational knowledge gives you is a set of primitives, the building blocks that will support your understanding over time. It gives you the ability to escape the inextricable mess that agglutinated abstractions can trap you into from time to time. I am convinced that you will become a better cook by learning how to select, cut and pair vegetables properly rather than by repeating the same dish from a dozen different recipes (even though taking inspiration from others also fuels creativity).

The twist here is how to define how far one should go down the conceptual scale? It's not uncommon, when learning about a new concept, to get embarked in a whirlpool of anecdotical details. Taking back the example I gave on mastering HTTP protocol, should you limit yourself to simply understanding the wikipedia article? Move a layer down and implement a toy server yourself with a framework? With the standard library? Manipulating raw sockets? Designing and implementing your own custom protocol over UDP? It can goes on like this forever (not really actually but still deep enough to make you gaze at the abyss with some angst). It's hard to give a generic answer, my take on it is to just dig deeper. The scariest it looks at first, the most rewarding it becomes when you finally feel that you've mastered it. Knowledge, especially foundational one is a conquest, not a todo list. My french teacher used to quote Kierkegaard (from Fear and Trembling) "It is not the path that is difficult, it is the difficult which is the path" (translation from french - mine) which fully encapsulates for me the drive for acquiring hard, solid, foundational primitives.

It seems obvious that mastering the basics is a must, in every discipline. But, talking about a field that I know, I often meet people working in the digital marketing space that are not comfortable with the simple primitives I have mentioned above. It can be as simple as the definition of a cookie. Answers mostly start with "eeerrr" and usually end up with "that thing to track people on the web". Yet, those people manipulate abstractions built on that concept on a daily basis, as part of their job, when setting up tracking pixels, working with logged in user data, etc... This seems to change though, with e-learning and programming bootcamps. I am mixed on the latter, as I have met brilliant hackers coming out of such institutions but also people who only did it only so they can have the right to bully their developers with their freshly new acquired "expertise". This last aspect is particularly depressing, because it simply showcase the failure of those people to grasp the greatest gift of building up such a knowledge foundation for yourself: humility.

HN link with insightful comments