3 ms·
I am often surprised by how much foundational knowledge is unknown, even when extensively used at work. I can't really speak for game programming, though I imag
by karmakaze 3y ago
I am often surprised by how much foundational knowledge is unknown, even when extensively used at work. I can't really speak for game programming, though I imagine the prevalence of game engines has a lot to do with that. In regular SaaS back end work, knowing how your SQL database works is pretty key. Ruby/Rails devs are now familiar with N+1 queries and how to fix them. It's common for the same devs to not know how indexes work and why adding/removing a WHERE condition or changing an ORDER BY can have such drastic effects.
Since the video didn't get into details of examples of what constitutes 'deep knowledge' (or I missed it), I'll describe it as lacking an accurate mental model. That's what I struggled with first learning git, once I had a mental model that was close to how it actually worked, every new command I learned fit into that seamlessly. The part the video does talk about is cargo-cult behavior, which is very much how the building and adjusting of a mental model is avoided--it's just building a memory bank of problem X, incantation Y. These folk will be the first to be replaced by LLMs. Build your mental models and adjust them!
- Denzel 3y agoWhy is it surprising that beings with finite time capacity are unable to learn information that’s expanding at a daily rate greater than their capacity? https://xkcd.com/1053/ https://xkcd.com/1053/ is relevant. The world would do well by adopting a more positive perspective towards people who don’t know what we expect them to. Because I’m sure, they probably know something I don’t… that they expect me to know. And that’s how we all progress.
- sn9 3y agoThe fundamentals really aren't expanding that quickly though. I think focusing on mastering the fundamentals in depth would pay off for any software engineer, with benefits that compound every decade of your career after putting in that upfront time cost and a fairly minimal maintenance cost.
- Denzel 3y agoThat supremely depends upon what you define as “fundamental” and in what context. :) Do some ideas have higher leverage than other ideas: certainly. Is it easy to tell a priori which ideas those are: not entirely. Consider log-structured merge trees (LSMs) were invented in 1996; Amazon S3 was released in 2006. Some might consider these fundamental ideas that have existed for 28 and 18 years, respectively. Have you mastered these ideas enough to understand how the cost structure of S3 enables you to implement a really economical distributed LSM at extremely low cost because S3 doesn’t charge you for bandwidth usage?
- karmakaze 3y agoI would say focus on what's fundamental and pragmatic to each (e.g. immediately relevant). All the recent stuff actually isn't that, unless you're the one doing the research or implementing them. I think LSMs are great and I'd gladly use a db that uses them but I don't need to know how they work, only their properties when selecting a db. If I'm using a relational DB though I'd damn-well better know how indexes work.
- sn9 3y agoFor sure, but I think even if you didn't consider those particular examples to be a part of the fundamentals, if you had a solid command of basic algorithms and data structures (e.g., including your basic trees, including B-trees) and some basic math, you could easily pick up LSMs and figure out how to exploit the S3 cost structure as needed. The point of the fundamentals as commonly construed is to allow you to quickly pick up novel concepts as needed as they're almost always a slight extension of the fundamentals.