How to be a great programmer | John Carmack and Lex Fridman - https://www.youtube.com/watch?v=xzPuGf89vpI
Given that you are once again one of the greatest programmers ever, what do you think makes a good programmer maybe a good modern programmer? So I just gave a long rant lecture at Meta to the TPM organization and my biggest point was everything that we're doing really should flow from user value. All the good things that we're doing. It's like we, we're not technical people. It's like you shouldn't be taking pride just in the specific thing. Like Code Golf is the sort of thing, it's a fun puzzle game, but that really should not be a major motivator for you. It's like we're solving problems for people or we're providing entertainment to people. We're doing something of value to people that's displacing something else in their life. So we want to be providing a net value over what they could be doing, but instead they're choosing to use our products. And that's where, I mean, it sounds trite or corny, but I fundamentally do think that's how you make the world a better place. If you have given more value to people than it took you and your team to create, then the world's a better place. People have, they've gone from something of lesser value, chosen to use your product, and their life feels better for that. And if you've produced that economically, that's a really good thing. On the other hand, if you spent ridiculous amounts of money, you've just kind of shoveled a lot of cash into a wood chipper there, and you should maybe, you know, not feel so good about what you're doing. So being proud about like a specific architecture or specific technology or a specific code sequence that you've done, it's great to get a little smile, like a tiny little dopamine hit for that. But the top level metric should be that you're building things of value. Now you can get into the argument about how you, you know, what is user value? How do you actually quantify that? And there can be big arguments about that, but it's easy to be able to say, okay, this pissed off user there is not getting value from what you're doing. This user over there with the big smile on their face, I am the moment of delight when something happened. There's a value that's happened there. I mean, if you, you have to at least accept that there is a concept of user value, even if you have trouble exactly quantifying it, you can usually make relative arguments about it. Well, this was better than this. We've improved things. So being a servant to the user is your job. When you're a developer you want to be producing something that other people are going to find valuable and if you are technically inclined then finding the right levers to be able to pull to be able to make a design that's going to produce the most value for the least amount of effort. And it always has to be kind of divide. There's a ratio there where you. It's a problem at the big tech companies, whether it's Meta, Google, Apple, Microsoft, Amazon, companies that have almost infinite money, I mean I know their CFO will complain that it's not infinite money but from most developers standpoints it really does feel like it. And it's almost counterintuitive that if you're working hard as a developer on something, there's always this thought if only I had more resources, more people, more ram, more megahertz, I then my product will be better. And that sense that at certain points it's certainly true that if you are really hamstrung by this, removing an obstacle will make a better product, make more value. But if you're not making your core design decisions in this fiercely competitive way where you're saying feature A or feature B, you can't just say let's do both because then you're not making a value judgment about them. You're just saying, well they both seem good. I don't want to necessarily have to pick out what which one is better or how much better and tell Team B that sorry, we're not going to do this because A is more important. But that notion of always having to really critically value what you're doing, your time, the resources you expend, even the opportunity cost of doing something else, that's super important. Well, let me ask you about the big debates that you're mentioning of how to measure value. Is it possible to measure it kind of numerically or can you do the sort of. Jony I've the designer route of imagining sort of somebody using a thing and imagining a smile on their face, imagining the experience of love and joy that you have when you use the thing that's from a design perspective or if you're building more like a lower level thing for like Linux, you imagine a device developer that might come across this and use it and become happy and better off because of it. So where do you land on those things? Is it measurable? So I imagine like Meta and Google will probably try to measure the thing. They'll try to. It's like you try to optimize engagement or something, let's measure engagement. And then I think there is a kind of, I mean, I admire the designer ethic of like think of a future that's immeasurable and you try to make somebody in that future that's different from today happy. So I do usually favor, if you can get any kind of a metric that's good, by all means, listen to the data. But you can go too far there where we've had problems where it's like, hey, we had a performance regression because our fancy new telemetry system is doing a bazillion file writes to kind of archive this stuff because we needed to collect information to determine if we were doing, if our plans were good. So, so when information is available, you should never ignore it. I mean from actual users using the thing, human beings using the thing, large number of human beings and you get to see sort of. So there's the zero to one problem of when you're doing something really new, you do kind of have to make a guess. But one of the points that I've been making at Meta is we have more than enough users now that anything somebody wants to try in VR or we have users that will be interested in that. You do not get to make a completely greenfield blue sky pitch and say, I'm going to do this because I think it might be interesting. I challenge everyone. There are going to be people, whether it's, you know, working in VR like on your desktop replacement, or communicating with people in different ways or playing the games. There are going to be probably millions of people. Or at least if you pick some tiny niche that we're not in right now, there's still going to be thousands of people out there that have the headsets that would be your target market. And I tell people, pay attention to them, don't invent fictional users. Don't, you know, make an Alice, Bob, Charlie that fits whatever matrix of tendencies that you want to break the market down to. Because it's a mistake to think about imaginary users when you've got real users that you could be working with. But on the other hand, there is value to having a kind of wholeness of vision for a product. And companies like Meta have, you know, they understand the trade offs where you can have a company like SpaceX or Apple in the Steve Jobs era, where you have a very powerful leading personality that, you know, that can micromanage at a very low level and can say, it's like, no, that handle needs to be different. Or that that icon needs to change the tint there. And they clearly get a lot of value out of it. They also burn through a lot of employees that have horror stories to tell working there afterwards. My position is that you're at your best when you've got a leader that is at their limit of what they can kind of comprehend of everything below them, and they can have an informed opinion about everything that's going on. And you take somebody, you've got to believe that somebody that has 30, 40 years of experience, you would hope that they've got wisdom that the just out of boot camp person contributing doesn't have. And that if they're like, well, that's wrong there, you probably shouldn't do it that way or even just, just don't do it that way, do it another way. So there's value there, but it can't go beyond a certain level. I mean, I have Steve Jobs stories of him saying things that are just wrong right in front of me about technical things because he was not operating at that level. But when it does work and you do get that kind of passionate leader that's thinking about the entire product and just really deeply cares about not letting anything slip through the cracks. I, I think that's got a lot of value. But the other side of that is the people saying that, well, we want to have these independent teams that are bubbling up the ideas because like it's, it's almost, it's anti capitalist or anti free market to say it's like, I want my grand, you know, my great leader to go ahead and dictate all these points there where clearly free markets bring up things that, you know, you don't expect. Like in VR, we, we saw a bunch of things like it didn't turn out at all the way the early people thought were going to be the key applications and things that would not have been approved by the dark cabal making the decisions about what gets into the store turn out to in some cases be extremely successful. So yeah, I definitely kind of wanted to be. There was a point where I did make a pitch. It's like, hey, make me VR dictator and I'll go in and get shit done. And that's just, it's not in the culture at Meta and they understand the trade offs and that's just not the way, that's not the company that they want, the team that they want to do. Sam.
How to be a great programmer | John Carmack and Lex Fridman - https://www.youtube.com/watch?v=xzPuGf89vpI
당신이 다시 한 번 역대 최고의 프로그래머 중 한 명이라고 하는데 좋은 프로그래머, 아마도 좋은 현대 프로그래머를 만드는 것이 무엇이라고 생각하세요? 그래서 저는 Meta에서 TPM 조직을 대상으로 긴 강연을 했는데 제가 강조한 가장 큰 포인트는 우리가 하는 모든 것이 정말로 사용자 가치에서 나와야 한다는 것입니다. 우리가 하는 모든 좋은 일들 말이죠. 우리는 기술자들입니다. 특정한 것에만 자부심을 가져서는 안 됩니다. 코드 골프 같은 것은 재미있는 퍼즐 게임이지만, 정말로 주요한 동기가 되어서는 안 됩니다. 우리는 사람들의 문제를 해결하거나 사람들에게 즐거움을 제공하고 있습니다. 사람들의 삶에서 다른 것을 대체하는 가치 있는 일을 하고 있는 것입니다. 그래서 우리는 그들이 할 수 있는 다른 것들보다 더 나은 가치를 제공하고 싶지만, 대신 그들은 우리 제품을 사용하기로 선택합니다. 그리고 거기서, 진부하거나 뻔하게 들릴 수 있지만, 근본적으로 그것이 세상을 더 나은 곳으로 만드는 방법이라고 생각합니다. 당신과 당신의 팀이 만드는 데 들인 것보다 더 많은 가치를 사람들에게 주었다면, 그러면 세상이 더 나은 곳이 됩니다. 사람들은 더 적은 가치의 것에서 벗어나 당신의 제품을 사용하기로 선택했고, 그들의 삶이 그로 인해 더 나아졌다고 느낍니다. 그리고 당신이 그것을 경제적으로 생산했다면, 그것은 정말 좋은 일입니다. 반면에, 당신이 터무니없현금을 나무 분쇄기에 넣는 것과 같으니, 당신이 하고 있는 일에 대해 좋게 생각하지 않았으면 좋겠습니다. 그러니까 특정 아키텍처나 특정 기술이나 당신이 작성한 특정 코드 시퀀스에 대해 자랑스러워하는 것은, 작은 미소를 짓고 작은 도파민을 얻는 것은 좋습니다. 하지만 최상위 지표는 당신이 가치 있는 것들을 만들고 있다는 것이어야 합니다. 이제 어떻게 사용자 가치가 무엇인지, 그것을 실제로 어떻게 정량화할 것인지에 대한 논쟁에 빠질 수 있습니다. 그것에 대해 큰 논쟁이 있을 수 있지만, 화난 사용자가 당신이 하는 일로부터 가치를 얻지 못하고 있다고 말하기는 쉽습니다. 저기 있는 얼굴에 큰 미소를 짓고 있는 사용자는, 무언가 일어났을 때 기쁨의 순간을 느끼고 있습니다. 거기에 가치가 발생한 것입니다. 즉, 사용자 가치라는 개념이 있다는 것을 최소한 인정해야 합니다. 정확히 정량화하기 어렵더라도, 보통 상대적인 논증을 할 수 있습니다. 이것이 저것보다 낫다고 말이죠. 우리는 것들을 개선했습니다. 그러니까 사용자의 종이 되는 것이 당신의 일입니다. 개발자가 되면 다른 사람들이 가치 있다고 생각할 것을 만들고 싶어하고 기술적 성향이 있다면 올바른 레버를 찾아서 최소한의 노력으로 최대 가치를 생산할 수 있는 디자인을 만들 수 있어야 합니다. 그리고 항상 나누어야 하는 비율이 있습니다. 메타, 구글, 애플과 같은 대형 기술 회사들의마이크로소프트, 아마존, 거의 무한한 자금을 가진 회사들이죠. CFO는 무한한 돈이 아니라고 불평하겠지만 대부분의 개발자 관점에서는 정말 그렇게 느껴집니다. 그리고 개발자로서 열심히 일할 때, 항상 이런 생각이 듭니다. 만약 내게 더 많은 자원, 더 많은 사람, 더 많은 램, 더 많은 메가헤르츠가 있다면 내 제품이 더 좋아질 것이라는 생각이죠. 그리고 특정 지점에서는 확실히 사실입니다. 정말로 이것 때문에 제약을 받고 있다면 장애물을 제거하는 것이 더 나은 제품을 만들고 더 많은 가치를 창출할 것입니다. 하지만 핵심 설계 결정을 치열하게 경쟁적인 방식으로 내리지 않는다면 기능 A와 기능 B 중에서 선택해야 할 때, 그냥 둘 다 하자고 할 수는 없습니다. 왜냐하면 그러면 그것들에 대한 가치 판단을 내리지 않는 것이거든요. 그냥 둘 다 좋아 보인다고 하는 거죠. 어느 것이 더 나은지 얼마나 더 나은지를 반드시 골라내고 싶지 않아서 팀 B에게 미안하지만 A가 더 중요하기 때문에 이건 하지 않을 거라고 말하기 싫은 거죠. 하지만 당신이 하는 일, 시간, 소비하는 자원, 심지어 다른 일을 할 기회비용까지도 항상 정말 비판적으로 평가해야 한다는 개념은 매우 중요합니다. 음, 당신이 언급한 가치를 측정하는 방법에 대한 큰 논쟁에 대해 물어보겠습니다. 그것을 수치적으로 측정하는 것이 가능할까요? 아니면 조니 아이브 같은 디자누군가가 무언가를 사용하는 모습을 상상하는 방식으로, 그들의 얼굴에 미소가 지어지는 모습을 상상하고, 당신이 그 물건을 사용할 때 느끼는 사랑과 기쁨의 경험을 상상하는 것입니다. 디자인 관점에서 보면, 또는 리눅스용과 같은 더 낮은 수준의 것을 만든다면, 이를 발견하고 사용해서 행복해질 장치 개발자를 상상하게 됩니다. 그것 때문에 더 나아질 수 있도록 말이죠. 그래서 이런 것들에 대해 어떻게 생각하세요? 측정 가능한 것일까요? 메타나 구글 같은 곳들은 아마 측정하려고 할 것 같습니다. 그들은 시도할 거예요. 참여도나 뭔가를 최적화하려 하죠. 참여도를 측정하자고 말이죠. 그리고 측정할 수 없는 미래를 생각하는 디자이너 윤리학이 있다고 생각합니다. 오늘과는 다른 미래에서 누군가를 행복하게 만들려고 노력하는 것 말이죠. 그래서 저는 보통, 좋은 지표를 얻을 수 있다면 무엇이든 좋으니 데이터에 귀 기울이는 것을 선호합니다. 하지만 거기서 너무 멀리 갈 수도 있어서 문제가 있었습니다. 새로운 고급 원격 측정 시스템이 이런 것들을 보관하기 위해 수많은 파일 쓰기를 하느라 성능 저하가 생겼던 것처럼 우리 계획이 좋은지 판단하기 위한 정보를 수집해야 했기 때문입니다. 그래서 정보가 있을 때는 절대 무시해서는 안 됩니다. 실제 사용자들이 그것을 사용하는, 인간들이 그것을 사용하는, 많은 수의 인간들이 사용하고 당신이어느 정도는 그렇죠. 정말로 새로운 일을 할 때 제로 투 원 문제가 있어서 추측을 해야 하는 경우가 있습니다. 하지만 제가 메타에서 계속 말하고 있는 요점 중 하나는 이제 우리에게는 누군가가 VR에서 시도하고 싶어하는 모든 것에 대해 충분한 사용자가 있다는 것입니다. 관심을 가질 사용자들이 있다는 것입니다. 완전히 백지상태에서 청사진 같은 제안을 하며 흥미로울 것 같아서 이걸 하겠다고 말할 수는 없습니다. 모든 사람에게 도전합니다. VR에서 작업하는 사람들이 있을 것입니다. 데스크톱 대체품처럼 말이죠. 또는 다른 방식으로 사람들과 소통하거나 게임을 하는 방식으로요. 아마 수백만 명의 사람들이 있을 것입니다. 또는 우리가 지금 다루지 않는 작은 틈새 시장을 선택한다고 해도, 여전히 수천 명의 사람들이 헤드셋을 가지고 있어서 당신의 타겟 마켓이 될 것입니다. 그리고 사람들에게 말합니다. 그들에게 주의를 기울이고, 가상의 사용자를 만들어내지 마세요. 시장을 세분화하고 싶은 성향의 매트릭스에 맞는 Alice, Bob, Charlie를 만들지 마세요. 함께 일할 수 있는 실제 사용자들이 있는데 가상의 사용자를 생각하는 것은 실수입니다. 하지만 반면에 제품에 대한 전체적인 비전을 갖는 것에는 가치가 있습니다. 그리고 메타 같은 회사들은 SpaceX나 스티브 잡스 시대의 애플처럼 매우 강력한 트레이드오프를 이해합니다.아주 세밀한 수준까지 관리할 수 있고, 이런 식으로 말할 수 있는 주도적인 성격의 리더 말이에요. "아니야, 저 손잡이는 달라야 해." 또는 "저 아이콘은 색조를 바꿔야 해." 그리고 그들은 분명히 거기서 많은 가치를 얻어냅니다. 하지만 그곳에서 일한 후 끔찍한 이야기들을 들려줄 많은 직원들을 혹사시키기도 하죠. 제 입장은 리더가 자신의 아래 있는 모든 것을 이해할 수 있는 한계에 있을 때 최고의 성과를 낸다는 것입니다. 그리고 그들이 진행되는 모든 일에 대해 정보에 입각한 의견을 가질 수 있어야 합니다. 그리고 30년, 40년의 경험을 가진 사람이라면, 그들이 이제 막 신병훈련소를 나온 기여자가 갖지 못한 지혜를 가지고 있기를 바라야 합니다. 그리고 그들이 "저기가 틀렸어, 그렇게 하면 안 돼" 또는 심지어 그냥 "그렇게 하지 말고 다른 방식으로 해"라고 말한다면. 그래서 거기에는 가치가 있습니다. 하지만 일정 수준을 넘어설 수는 없죠. 제 말은, 저는 스티브 잡스가 제 바로 앞에서 기술적인 것들에 대해 틀린 말을 하는 이야기들을 가지고 있습니다. 왜냐하면 그는 그 수준에서 운영되지 않았거든요. 하지만 그것이 효과가 있고 전체 제품에 대해 생각하고 그냥 정말 깊이 신경 쓰는 그런 열정적인 리더를 얻을 때, 아무것도 틈새로 빠져나가게 하지 않는다면. 저는 그것이 많은 가치가 있다고 생각합니다. 하지만 그것의 다른 면은 사람들이 말하는 것입니다. "우리는거의 반자본주의적이거나 자유시장에 반대하는 것 같습니다 위대한 리더가 나서서 모든 부분을 지시하겠다는 것은, 자유시장이 명백히 예상치 못한 것들을 만들어내는데 말이죠 VR에서도 우리는 많은 것들을 보았습니다만 초기에 사람들이 생각했던 핵심 애플리케이션과는 전혀 다르게 나타났고 스토어에 무엇이 들어갈지 결정하는 암흑 카발에 의해 승인되지 않았을 것들이 경우에 따라서는 극도로 성공적인 결과를 보여주었습니다 네, 저는 확실히 그렇게 되고 싶었습니다. 제가 제안을 했던 시점이 있었죠 "저를 VR 독재자로 만들어 주시면 들어가서 일을 해내겠습니다"라고 말이죠 하지만 그것은 메타의 문화에 맞지 않고 그들은 트레이드오프를 이해하고 있으며, 그런 방식이 아닙니다 그들이 원하는 회사도, 팀도 아닙니다 샘.