Live data from Hacker News

John Carmack: Career Advice

twitter.com

141–150 of 178 posts

Re: John Carmack: Career Advice

#142

Earlier 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…

> I know I can't learn everything, but yet it feels like there's so much I really _do_ need to know to be a competent developer.

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

#143
post #106

Here 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?

Re: John Carmack: Career Advice

#144
Generally I think advice from people who are far outliers in success is probably useless for normal to above average folks. It's like asking Lebron James how to succeed at basketball. Well first you need to be born a genetic freak with inhuman hand eye coordination and grow up to be 6'9" tall.

Re: John Carmack: Career Advice

#145

Earlier 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…

> 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.

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

#146
post #106

Here 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?

Yes? Why wouldn't people talk about hash tables at conferences?

https://www.youtube.com/watch?v=aXj_DsIx1xs

https://www.youtube.com/watch?v=ncHmEUmJZf4

https://www.youtube.com/watch?v=M2fKMP47slQ

https://www.youtube.com/watch?v=JZE3_0qvrMg

Re: John Carmack: Career Advice

#147
post #74

Earlier 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".

That depends on what kind of a career you are working towards.

Re: John Carmack: Career Advice

#148
post #74

Earlier 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".

Fluency 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.

Re: John Carmack: Career Advice

#149
post #20
post #8

Can 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…

Heh, I was the "git guy" for a project, and it mostly made me want to try the alternatives like fossil and pijul...

Re: John Carmack: Career Advice

#150
post #95

David 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…

Novak also has to deal with hostile crowds a lot more, who are in denial that he’s on track to surpass Roger and Rafa. He’s possibly under-appreciated because he doesn’t have the flair of the other two, but rather a robotically consistent, precise, and relatively low risk style.
Post reply on HN