John Carmack's path is highly unusual. I highly regard the person but would not take on his experience as career advice.
John Carmack: Career Advice
141–150 of 178 posts
Re: John Carmack: Career Advice
#142Earlier quoted context omitted.
Since you mentioned diminishing returns, stress, and time cost, it sounds like you want to balance practicality with interest. Being frank, don't do it. I'm a software engineer and I have had incredibly talented coworkers, some of whom are the type that everyone goes to for help, who barely know how to use git without a GUI, if at all. If you want to spend a whole winter break + semester (which is a very valuable amo…
This is a very good question and I'm going to think about it more. During this past semester, I started keeping a Trello list of potential projects/readings I could work on to consolidate things, but it's still hard to pick from. The Git internals thing I mentioned was one thing in that list. Since I'm interested in open source software and the communities that form around projects, another idea I had is developing a…
There really isn't anyone on the planet who is truly a "full stack developer" and competent from the front-end all the way down to the OS and bare metal. No one.
Most developers stick to a particular layer, and are only familiar with adjacent layers to the extent of being able to have arguments with those developers. A 5x-ish developer is competent in those adjacent layers as well. A 10x developer either has mastery of their chosen layer, adds additional competency layers, adds competencies on the connecting tech between chosen layers (ie. not just front-end + backend, but networking too), has relevant domain competencies, or some combination.
So, just pick an entry point, learn as much of it as you want, check out whatever is adjacent, follow your interests, and periodically evaluate whether you need/want to change course or dig deeper into technologies, tools, domains, etc. wherever you happen to be. Even if you end up wandering quite far from where you started, the experience and knowledge you gain on the way isn't likely to be "wasted", unless it is mastery of some in-house tech or tool that literally no other organization uses.
Re: John Carmack: Career Advice
#143Here are some ways to learn deeply and be relevant: 1. Pick a data structure (such as a hash table or LSM-Tree) then read all the literature there is to read, every single paper that's great, following the best conferences year after year, and implement a 10x faster or more scalable version for the std lib of your favorite language. 2. Pick a fault model (such as storage faults, network faults, cryptography faults) t…
There are conferences for hash tables?
Re: John Carmack: Career Advice
#144Re: John Carmack: Career Advice
#145Earlier quoted context omitted.
This is an interesting perspective, from a technical view it seems like the difference between writing library and debugging a system. Programming a library referencing an RFC seems kind, the rules are already there. Debugging a performance issue in a large distributed system is unkind, you need a lot of existing knowledge and ideas to know where to start.
I don't know, I think debugging a perf issue in a large distributed system still falls under kind work to me, assuming you actually have a way to tell when it's fixed. Yes, you need a lot of knowledge, but the rules and outcomes are still clear. Compared to writing a novel or painting, it's very clear when you've reached success and it's hard to argue that you've been successful. IMO the "unkind" work that a typical…
The same goes for poker, you know when you won a hand. However winning a hand doesn't mean you learned something, similarly successfully debugging a large performance issue doesn't mean you learned something either. The learning we actually care about in software engineers isn't kind at all.
Re: John Carmack: Career Advice
#146Here are some ways to learn deeply and be relevant: 1. Pick a data structure (such as a hash table or LSM-Tree) then read all the literature there is to read, every single paper that's great, following the best conferences year after year, and implement a 10x faster or more scalable version for the std lib of your favorite language. 2. Pick a fault model (such as storage faults, network faults, cryptography faults) t…
>following the best conferences There are conferences for hash tables?
https://www.youtube.com/watch?v=aXj_DsIx1xs
https://www.youtube.com/watch?v=ncHmEUmJZf4
Re: John Carmack: Career Advice
#147Earlier quoted context omitted.
I 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…
Unfortunately the most optimal thing to get your career started is not deep study of fundamentals but "grinding leetcode".
Re: John Carmack: Career Advice
#148Earlier quoted context omitted.
I 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…
Unfortunately the most optimal thing to get your career started is not deep study of fundamentals but "grinding leetcode".
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.
Re: John Carmack: Career Advice
#149Can anyone elaborate on what Carmack is suggesting here? To specialise in some tool early in your career? Or something else? I don't quite get it. (Or at least I don't get why it would be such a good idea.) Carmack is usually great to listen to, by the way; check out some of his interviews or talks if you haven't before.
I think his argument is fairly simple: 1. Learning (fundamental) stuff deeply is the way to become great. 2. But knowing how stuff works fundamentally at an abstract level (e.g. being able to write your own toy OS) is not directly economically useful (and/or very time consuming to get to that stage). So it won't get you a job. 3. So for starters learn just one thing that people actually use (say git) deeply at a conc…
Re: John Carmack: Career Advice
#150David Epstein's Range has a lot to say about this topic. Carmack's idea of 'deep' work [0] is environmentally dependent. It works for him and for the places he has been at. But it is not a universal rule for learning in all environments. Epstein uses Tiger Woods and Roger Federer as his headline case, but goes into many other forms of learning. Woods' golf is a kind learning environment ; the rules are clear, the fee…
> Federer's tennis is an unkind learning environment; the rules aren't as clear, the feedback isn't as quick, and the skills are more murky. A lot of tennis is the mind-game aspect and in elite tennis, you don't get the same person very often. The Inner Game of Tennis [0] for folks interested in learning more about this. [0] https://www.amazon.com/Inner-Game-Tennis-Classic-Performance... PS Novak's probably more clut…