4 ms·
Tools change, fundamentals don't. I disagree that you should modify what you should learn in order to start contributing as fast as possible to a team. I think
by hvasilev 6y ago
Tools change, fundamentals don't. I disagree that you should modify what you should learn in order to start contributing as fast as possible to a team. I think that the advice that he gave was a bad one.
- kranner 6y agoThe problem is that far fewer people get hired to work on the fundamentals than to operate the current industry-standard tools. Also many of the jobs that require fundamental skills seem to require steep academic credentials (e.g. a PhD from a big name university) that are sometimes more difficult to acquire than knowledge of the fundamentals itself.
- tmotwu 6y agoI think people misunderstand about the advantages of understanding fundamentals. Yes, very few are inventing new tools, protocols or reimplementing known data structures or hash functions. But the point of mastering the fundamentals is to transform the way your brain thinks when it approaches all sorts of computing problems. It's a framework that allows you to deeply think about the correctness and speed of what you are trying to build, backed by tens of years of research.
- kranner 6y agoOf course fundamentals are invaluable. But a stable career is equally if not more important to most people, I think.
- redisman 6y agoUnfortunately the most optimal thing to get your career started is not deep study of fundamentals but "grinding leetcode".
- Thrymr 6y agoThat depends on what kind of a career you are working towards.
- username90 6y agoFluency designing algorithms is a significant part of fundamentals though, if you can't do leetcode problems then you aren't fluent with algorithms. Practicing them doesn't necessarily make you fluent, but being fluent means you can do them. Edit: Since we are talking about Carmack here you probably know he is among other things famous for designing custom algorithms for the games he made. So when he talks about deep understanding it includes deep understanding of algorithms, how they work and how to make new ones. If you got that down well then leetcode isn't hard at all.
- nmfisher 6y agoI don't think Carmack has ever been "hired" for a job since he was a teenager. So you're right, he's talking about "this makes you desirable in my eyes", not "practical employability through the lens of HR".
- TempestSA 6y agoThe only constant is change, which is why you always need to modify what you are learning and keep learning and growing. I've seen far too many aspiring developers being held back because they stubbornly held on to fundamentals. Companies don't care about "global variables" or technical debt, they have to make a profit, look after employees, survive pandemics, maintain ISO accreditation etc.
- antupis 6y agoThing is that when you master that tool deeply you also get fundamentals. Lets use deep learning example when you master something like pytorch deeply you also understand fundamentals like how automatic differentiation works etc.
- wegs 6y agoI think his point was that good tools are built with deep fundamentals. * If you've mastered git commands, you haven't followed Carmack's advice. * If you've used git as a domain to understand key-value stores, Merkle trees, hash functions, and network theory, you have followed Carmack's advice. Or another example: * If you've mastered using a gaming library to move characters around and memorized APIs, you haven't followed Carmack's advice * If you've mastered a game library to understand 3d transformation matrices, GPGU, and simulations of physics, you have. A tool can point you to an aligned, coherent set of fundamentals which also work together to make a package useful for employment.