BIBLIOGRAPHY

마이클 폴슨. 2025. “ADHD 특집(?) ThePrimeagen: Lex Fridman Podcast #461.” 성인 ADHD와 함께 하는 삶 > 시즌3: 텍스트 힙스터. March 26, 2025. https://living-with-adhd.tistory.com/262.

History

서브스택

지난 렉스 팟케스트에 ADHD 키워드가 딱 보였다. 프로그래머라고 하는데 누군지 모르기에 일단 스킵. 그러다가 스크립트를 좀 읽어보았다. ADHD 관련 이야기를 뭐라고 하는가 궁금해서 였다.

그래서 간략히 느낀 바를 ADHD 소식통에 남겼다. (마이클 폴슨 2025)

ADHD 특집 같네요. 길기 때문에 일단 ADHD 부분만 봤어요. 처음 나오는 이야기가 성숙이더군요. 맞아요. 맞아요. 그 뒤에 이야기 나오는데 아. 장단점을 인식하고 여러 도움을 받으면서 잘 하는 그 일에 몰두하는 것. 큰 욕심 내지 않고 가벼운 마음으로 그 일을 하는 것. 가볍게 가볍게. 언제 더 듣고 이 분의 길을 좀 봐야 겠네요. 텍스트 에디터 나오네요. 손가락이 알아서 움직이게 하는 것. 생각 없이 할 수 있는 자유와 그 안에서 창조의 힘. 조금 더 이 사람을 알고 올게요.

근데 조금 더 듣다보니. 아니 이럴 수가!

저는 모니터 한개 쓰는 사람 입니다.

힣도 한 개 쓰는 사람입니다. (2022년부터)

#집중력: 듀얼 모니터가 필요한가

ADHD로서 ThePrimeagen의 자기 인식과 해결해 나가는 과정이 힣과 거의 동기화 된다. 다를 수 없겠지. 뭐.

뒤에 이 친구가 NeoVIM을 사용하며 텍스트 에디터 찬가를 부르는 부분은 그냥 Emacs로 replacement 한 다음에 힣이라고 앞에 바꿔버리면 될 것 같다. 이 친구는 개발자로서 코딩을 알리는 역할을 하고 있다.

그렇다면 NeoVIM이 더 가벼운 선택일 것이다.

힣은 코알라다. 코딩알려달라!? 힣의 텍스트 편집에 코딩인 부분이다. 일단 텍스트를 남기는 것. 이맥스에 집착할 것도 없지만. 할 줄아는게 이것 뿐이기도 하고… 실제 좋기도하고…

힣이 말하면 좀 약하다고? 스크립트 보면 렉스프리드만의 이맥스 사랑을 알 수 있다.

오! 렉스형님! 이맥스 지킴이여! 사랑 합니다.

ThePrimeagen: Programming, AI, ADHD, Productivity, Addiction, and God | Lex Fridman Podcast #461

https://lexfridman.com/theprimeagen-transcript/

티스토리: ADHD 특집(?) ThePrimeagen: Programming, AI, ADHD, Productivity, Addiction, and God

(마이클 폴슨 2025)

  • ADHD 특집 같네요. 길기 때문에 일단 ADHD 부분만 봤어요. 처음 나오는 이야기가 성숙이더군요. 맞아요. 맞아요. 그 뒤에 이야기 나오는데 아. 장단점을 인식하고 여러 도움을 받으면서 잘 하는 그 일에 몰두하는 것. 큰 욕심 내지 않고 가벼운 마음으로 그 일을 하는 것. 가볍게 가볍게. 언제 더 듣고 이 분의 길을 좀 봐야 겠네요. 텍스트 에디터 나오네요. 손가락이 알아서 움직이게 하는 것. 생각 없이 할 수 있는 자유와 그 안에서 창조의 힘. 조금 더 이 사람을 알고 올게요.-----Programming,~AI,ADHD,Productivity,Addiction,andGod|LexFridmanPodcast\#461LexFridman(00:00:00) 다음은 온라인에서 ThePri..

  • 2025

  • #티스토리

#한글 #번역 #전문 Programming, AI, ADHD, Productivity, Addiction, and God #461

한글 번역

Introduction

Lex Fridman (00:00:00) 다음은 온라인에서 ThePrimeagen으로 더 잘 알려진 마이클 폴슨과의 대담입니다. 그는 초보자이든 수십 년 동안 소프트웨어 엔지니어링 분야에서 고군분투해온 노련한 개발자이든 상관없이 수백만 명의 사람들에게 소프트웨어로 무언가를 만드는 재미를 선사하고 영감을 준 프로그래머입니다. 간단히 말해, ThePrimeagen은 전설적인 프로그래머이자 영감을 주는 롤러코스터 같은 인생 스토리를 가진 위대한 인간입니다. 렉스 프리드먼 팟캐스트입니다. 팟캐스트를 후원하려면 설명에서 스폰서를 확인해 주세요. 그리고 이제, 친애하는 친구 여러분, 더프리미젠입니다.

프로그래밍에 대한 사랑

Lex Fridman (00:00:42) 프로그래밍에서 가장 좋아하는 것은 무엇인가요? 프로그래밍을 할 때 어떤 점에서 기쁨을 느끼시나요?

ThePrimeagen (00:00:46) 프로그래밍에서 처음으로 사랑을 느꼈거나 그 기쁨이나 설렘을 느낀 건 언제인지 말씀드릴 수 있을 것 같습니다.

ThePrimeagen (00:00:52) 대학 시절이었죠. 두 번째 수업인 데이터 구조 수업이었는데, 레이 밥콕을 가르치던 선생님이 링크된 목록에 대해 이야기하고 있었어요. 제가 다녔던 몬태나 주립대에서는 자바를 배워야 했기 때문에 교수님이 링크드 리스트에 대해 설명하면서 코드를 보여주셨어요. 코드에는 추상 클래스 노드인지 뭔지 기억이 안 나는데 그게 뭐였는지 모르겠어요. 그리고 비공개 멤버가 있었는데 그 비공개 멤버는 노드 유형이었고 전에는 본 적이 없었습니다. 노드라는 클래스는 그 자체로 멤버가 있는 클래스입니다. 그리고 저는 처음으로 “오, 세상에. 끝이 없구나. 반복할 방법이 없구나. 이것은 10개의 항목으로 이루어진 집합이 아닙니다. 이건 무한한 아이템의 집합이다.”라고 생각했습니다. 그 순간 제 머릿속이 폭발하듯 ‘표현할 수 있는 것이 엄청나구나’라는 생각이 들었어요. 기억이 어떻게 생겼는지 알 것 같아요. 이게 우주를 뛰어다니는 게 보여요.”

(00:01:47) 그때까지만 해도 “좋아요, 10개 항목의 목록이 있습니다.”라고만 생각했었기 때문에 너무 놀랐던 기억이 납니다. 20개 항목의 목록이 있습니다.” 그렇죠? 매우 딱딱하고 작았고, 제가 만든 물건들은 정말 작고 사소한 것들이었는데 갑자기 그 순간에 무엇이든 만들 수 있을 것 같았어요. 정말 놀라웠어요. 수업 시간에 얼마나 오래 앉아 있었는지도 기억나지 않지만 이 개념에 완전히 충격을 받았던 기억이 납니다. 소프트웨어 엔지니어링 수업에서 데코레이터 패턴에 대해 이야기할 때, 재귀적인 방식으로 오브젝트를 계속 구성할 수 있는 데코레이터 패턴에 대해 이야기할 때와 똑같은 경험을 했어요. 실제로 그렇게 하는 것이 좋은 생각이라고 생각하지는 않지만, 그런 것을 보면서 문제를 해결할 수 있는 이상하고 독특한 방법이 정말 많다는 것을 깨달았고, 머릿속에 떠오르는 모든 것을 그냥 만들 수 있다는 것을 깨달았습니다. 그리고 무엇이든 가능하다는 가능성에 너무 흥분했던 기억이 납니다.

Lex Fridman (00:02:41) 네, 링크된 목록에 대해 철학적으로 생각해 봅시다. 꽤 심오합니다. 모르는 분들을 위해 설명하자면, 링크된 목록의 노드는 자신이 속한 세계에 대해 아무것도 모릅니다. 연결된 대상, 즉 이웃에 대해서만 알고 있을 뿐입니다. 어쩌면 이것은 상징적인 것일지도 모릅니다. 우리 모두에 대한 은유일 수도 있습니다. 지구상에는 수십억 명의 인간이 존재하지만 우리는 자신이 속한 지역의 작은 네트워크에 대해서만 알고 있습니다.

Lex Fridman (00:03:05) 그리고 그것은 좀 아름답습니다. 이 간단한 데이터 구조로 임의로 큰 시스템을 구성할 수 있고, 그 시스템은 마치 메모리를 관통하는 뿌리와 같다는 것을 깨닫게 됩니다. 물론 거기에는 메모리에 쓰레기를 덤프하고 메모리 누수를 일으킬 수 있는 모든 프로그래밍 언어가 있고, 따라서 해제되지 않은 메모리가 어디에 있는지 알아내려고 할 때 무한한 고통을 유발할 수 있습니다. 저에게는 아마도… 그렇게 표현하는 것이 정말 아름답습니다. 연결된 목록은 정말 아름답습니다. 재귀 함수를 작성한다는 것이 무엇을 의미하는지 마침내 머릿속을 정리했을 때 재귀도 저에게는 아름다웠습니다.

ThePrimeagen (00:03:49) 어떤 일이었나요? 어떤 교훈을 얻었나요? 제 생각에는 우리 모두… 아마 간단한 인수분해를 해보셨을 겁니다. 별로 와 닿지 않아요. 어떤 점이 마음에 와 닿았나요?

ThePrimeagen (00:04:05) 내 첫 번째가 기억나요. 어떻게 첫 번째를 기억하지 못하시나요? 마법 같았어요

ThePrimeagen (00:04:11) 자신은 Lisp 사용자이시잖아요. 재귀에 꽤 익숙하실 겁니다.

Lex Fridman (00:04:14) 네, 괄호로 둘러싸인 바다만 기억나요. 아마 고등학교 때… 자바나 C++였던 것 같아요. 와, 어떻게 기억이 안 나죠? 분명 C++였을 거예요. 그리고 대학에서는 일반적인 소프트웨어 엔지니어링 수업은 Java였지만, 변절자, 쿨한 애들은 모두 Lisp를 사용했죠. 그 당시의 인공지능, 그 당시의 ‘인공지능’이 바로 리스프였죠. 체스 엔진을 만들고 싶으면 Lisp를 사용하죠. 그래서 제가 프로그래밍과 정말 사랑에 빠진 순간은 아마도 오델로 프로그램과 체스 엔진, 게임을 하는 모든 종류의 엔진을 작성하고 저것과 대결하면 저것은 저를 이겼을 때였을 것입니다. 내가 만든 무언가에 의해 파괴되는 기쁨. 그리고 인생의 게임이기도 하죠. 셀룰러 오토마타 그때 저는…

(00:05:19) 저는 모든 종류의 프로그래밍 언어를 구축했습니다. 프로그래밍 언어보다는 제가 만든 시스템에 더 관심이 많았죠. 그리고 그것은 저를 무한한 기쁨으로 가득 채웠습니다… 이제 연결된 목록 상황과 유사하게 각 개별 셀이 이웃에 대해서만 알고 매우 간단한 규칙으로 작동하는 시스템을 만들었습니다. 하지만 이 시스템을 전체로 보고 시간이 지남에 따라 진화하도록 허용하면 무한한 복잡성을 만들 수 있습니다. 그래서 저는 셀룰러 오토마타로 만들어낼 수 있는 아름다운 복잡성을 바라보는 순간이 정말 많았습니다. 확실히 무한한 기쁨으로 가득 찼죠. 하지만 네, 제 기억에는 괄호만 남았어요. 그래서 첫 번째 기억은 괄호의 바다에 빠져버렸죠.

ThePrimeagen (00:06:11) 오, 이런. 우선, 제 첫 번째 경험은 Java로 되어 있어서 좀 더 딱딱하고 기업적인 경험이었습니다.

Lex Fridman (00:06:20) 그래요. 차갑고, 무의미하고…

ThePrimeagen (00:06:23) 그러나… 맞아요. 저는 연구실에 있었는데, 그때는 모두가 CentOS를 사용하고 있었어요… 또는 Cent OS라고 부르든 뭐든 말이죠. 저는 항상 CentOS, 새로운 메이커라고 불렀습니다.

ThePrimeagen (00:06:34) 저는 이 차갑고 딱딱한 환경에서 Microsoft 키보드로 자바로 프로그래밍을 하고 있습니다. 그리고 저는 프로그래밍을 좋아해서 링크된 목록 이후에 재귀를 이해하지 못해서 절망의 기억이 아직도 남아 있습니다. 그래서 대학 서점에 가서 책을 하나 샀는데, 데이텔과 데이텔의 ‘자바 배우기’라는 책에 재귀라는 섹션이 있어서 책을 펼쳐서 읽기 시작했는데 도무지 이해가 되지 않았어요. 그리고 저는 이쪽으로 빠져들었습니다.

ThePrimeagen (00:07:02) “어쩌면 저는 프로그래머가 아닐지도 모릅니다. 도대체 재귀가 무슨 뜻인지 알아낼 수 있는 사람들로 구성된 이 모임에 들어갈 만큼 자격이 없는 걸지도 모르죠.” 그리고 데이텔과 데이텔의 정확한 문구는 “모든 젊은 신진 개발자는 이 재귀 프로그램을 해결한다”였습니다. 그리고 그거 아세요? 저는 지금까지도 하노이의 탑을 풀 수 있을지 모르겠습니다. 정말 어려운 재귀 문제였거든요. 저는 그냥 앉아서 “맙소사, 난 못 풀겠어”라고 생각했죠. 그리고 8시간, 10시간 동안 연구실에 앉아 이런 일을 하면서 걱정을 많이 했어요. 재수강 주간이었고 실험실 과제를 해야 했어요. “도저히 할 수 없을 것 같다.” 정말 걱정했던 기억이 납니다. 그리고 나서…

(00:07:47) 항상 제 큰 고민은 “좋아, 계승을 해보자”였기 때문이죠. 그냥 for 루프를 사용하면 어떨까요? “그럼 피보나치 수열은 어때요?” 왜 for 루프를 사용하지 않나요? 이해가 안 되네요. 재귀의 목적은 무엇인가요? 아직 잘 모르겠어요. 정말 강력하네요. 왜요? 루프는 정말 복잡해 보이네요. 그래서 도저히 이해할 수 없었어요. 그러던 어느 날 실험실에서 ‘파일에서 읽어야 하는 2D 배열을 줄게요. 이것이 시작 위치의 모습입니다. 이것이 시작 위치의 모습이고 이것이 끝 위치의 모습입니다. 이것이 벽의 모습입니다. 미로를 통과할 수 있는 길을 찾아주세요.” 그래서 저는 그냥 앉아서 “좋아, 그럼 그냥 올라가서 방문 그리드를 만들면 되겠네, 이제 더 이상 이 장소들을 방문하지 않아도 되겠어”라고 생각했습니다. 그러다 갑자기 ‘딸깍’ 소리가 나기 시작했습니다. “잠깐만요. 미로를 잘 모르지만 위, 오른쪽, 아래, 왼쪽으로 이동하고 그 광장에 갈 때마다 다시 돌아오면 방문하지 않고 영원히 갈 수 있겠구나.”라는 생각이 들었습니다.

(00:08:38) 그 순간 깨달은 것은 “정말 이해했다”는 것이었습니다. 지금까지 재귀를 이해해왔지만 실제로 재귀를 사용하는 것이 합당한 문제를 겪어본 적이 없었어요. 재귀를 잘 사용하지 않는 리스트 트래버스 같은 문제만 가지고 제 이해도를 측정하고 있었다는 것이 저의 큰 실수였습니다. 그래서 저는 그 자유로움이… 오, 이런… 재귀. 제 인생에서 정말 멋진 순간이었어요.

Lex Fridman (00:09:01) 공정하게 말하자면, 재귀를 이해하려면 믿음의 도약이 필요하다고 말하는 사람들이 있고, 순응적이고 독단적인 자바 강사들은 이것이 중요하다고 말할 것이기 때문입니다. 하지만 이것은 세상을 바라보는 다른 방식이며, 세상을 바라보는 강력한 방식이라는 믿음의 도약이 필요합니다. 사실, 이제야 처음 기억이 나는 것 같습니다.

Lex Fridman (00:09:40) [00:09:42]에 게임 중 하나를 처음 검색했던 것 같습니다. 아마도 오델로 같은 것, 그리고 재귀를 구현하는 것일 겁니다. 상태 공간을 통해 궤적을 검색하고 이를 재귀적으로 수행할 수 있다는 것을 이해하셨나요? 정말 놀라웠어요.

Lex Fridman (00:10:02) 예, 그냥 숫자가 날아다니는 거죠. 마치 뷰티풀 마인드 같았어요. 그리고 그때 음모론도 발견했어요. 진실을 봤어요. 네, 맞아요 그래서 무슨 얘기 중이었죠? 프로그래밍을 하면서 가장 힘들었던 점은 무엇인가요? 초창기 프로그래밍과 관련하여 깊고 심오한 고통을 겪었던 기억이 있나요?

프로그래밍에서 가장 어려운 부분

ThePrimeagen (00:10:27) 제게 가장 기억에 남는 것은 두 가지 경험 중 하나라고 말하고 싶어요. 첫 번째 경험은 스케줄리시티라는 곳에 갔을 때였는데… 장소 이름을 말하면 안 되나요 [00:10:43]

ThePrimeagen (00:10:44) 이 시점에서 아직 운영되고 있는지는 잘 모르겠지만…>에 있습니다.

Lex Fridman (00:10:47) 이름이 좀 웃겼어요. 죄송합니다.

ThePrimeagen (00:10:48) 오, 스케줄시티? 네. 사실 이름이 너무 엉망이라서 유료 Google 광고 용어를 보면 목록의 맨 위에 있는 것을 확인할 수 있을 정도로 철자가 엉망인데, 아무도 Schedulicity라는 단어의 철자를 몰랐기 때문에 Google이 이를 최적화하는 것은 정말 웃긴 일입니다. 하지만 다시 본론으로 돌아가겠습니다.

(00:11:09) 프로그래밍에서 가장 괴로운 점은, 사실 프로그래밍의 가장 나쁜 점이라고 생각한 것은 모든 것을 알고 있을 때입니다. 그래서 이 직장에 있을 때는 매일 출근할 때마다 놀랄 일도 없고 질문할 일도 없었어요. 물론 코드 베이스를 이해하지 못했으니 당연한 일이죠. 코드 베이스에 대한 모든 것을 이해하지 못했죠. 하지만 제가 들어가서 데이터베이스에서 일종의 객체를 생성할 거라는 건 알고 있었죠. 데이터베이스에서 그 객체를 가져와서 매핑하고 웹 페이지에 표시할 생각이었죠. 창의성도 없고, 아무것도 없습니다. 거의 공장 라인에 가까운 작업이었죠. 저에게는 매우 어려운 순간이었습니다.

(00:11:46) 나는 프로그래밍에 대해 모든 것을 알고 있었기 때문에 프로그래밍을 즐기지 않았어요. 그날 제가 무엇을 해야 할지 이미 정확히 알고 있었거든요. 넘어야 할 장애물도 모두 알고 있었죠. 알려지지 않은 미지의 영역은 없었습니다. 그저 항상 알고 있었을 뿐이었죠. 프로그래밍에서 가장 어려운 부분은 이미 해결책을 알고 있는데 얼마나 빨리 타이핑해서 머리에서 손으로 옮길 수 있느냐의 문제일 때입니다.

Lex Fridman (00:12:10) 불확실성, 도전의 부재가 고통이었다고요?

Lex Fridman (00:12:15) 그것은 꽤 심오한 일입니다, 프라임.

ThePrimeagen (00:12:18) 나는 단지 외모가 좋은 것만이 아닙니다. 그걸 알아주셨으면 좋겠어요.

Lex Fridman (00:12:21) 낮은 막대입니다. 자신의 정체성은 무엇인가요? 일반적인 질문이 재미있어요

프로그래밍 유형

Lex Fridman (00:12:30) 오케이. 모든 종류의 프로그래밍에 대해 스트리밍하시는데 어떤 종류의 프로그래머이신가요? 풀스택 개발자, 웹 프로그래밍을 하시나요? 그리고 다양한 종류의 프로그래밍을 모두 나열한 다음 자신의 정체성 측면에서 자신을 배치할 수 있을까요? 성 정체성도요

ThePrimeagen (00:12:49) 예, 거기에 다 넣을 수 있습니다.

ThePrimeagen (00:12:52) 플러스, 분명히 이 둘은 매우 밀접하게 연결되어 있습니다.

Lex Fridman (00:12:55) 나는 당신이 특정 언어에 성적 흥분을 느끼는 경계에 있는 것을 보았습니다. OCaml에 정말 흥분했거나…

ThePrimeagen (00:13:01) OCaml. 가자. 고마워요 딜런 멀로이 [들리지 않음 00:13:08]

Lex Fridman (00:13:09) 예상하지 못했습니다. 일이 순식간에 커졌죠. 어쨌든, 어떤 신분이신가요?

ThePrimeagen (00:13:13) 오케이, 먼저 이전 질문이나 그 중간 질문인 다양한 원형에 대해 먼저 해보겠습니다. 정말 흥미로운 질문이라고 생각하는데요, 트위터를 처음 사용하거나 처음 접하는 분들은 웹 프로그래밍만 있고 게임 프로그래밍 같은 다른 것들도 있을 거라고 생각할 수 있지만, 자바스크립트와 웹에서 게임 프로그래밍을 할 수 있을 거라고 생각할 수도 있죠. 요즘 많은 사람들에게 가장 인기 있는 프로그래밍 형태가 무엇이냐고 묻는다면 아마 웹이라고 답할 것입니다. 가장 많은 리포지토리를 담고 있는 것이 무엇이냐고 묻는다면 아마도 90% 또는 엄청난 숫자의 리포지토리가 웹 기반이라고 말할 것입니다. 하지만 현실은 임베디드 로봇의 세계 전체가 웹 기반이라는 것입니다.

(00:13:56) ML 측면에 대해 잘 알고 계실 겁니다. 네트워킹, 성능, 운영 체제, 컴파일러만 있으면 되죠. 이처럼 다양한 유형의 프로그래밍 분야에는 엄청난 양의 변형이 존재합니다. 그래서 우리는 종종 프로그래밍을 웹이나 매우 협소한 관점에서 이야기하는데, 이는 무엇보다도 트위터의 사회적 구성일 뿐 전체 프로그래밍 세계를 대표한다고 생각하지 않습니다. 그리고 많은 프로그래밍이 정말, 정말 재미있다고 생각합니다. 정말 멋진 것들이 많아요. 자신만의 언어를 만드는 것은 정말 재미있는 경험입니다. 모든 프로그래머가 한 번쯤은 해봐야 인생의 작동 방식에 대해 완전히 다른 관점을 가질 수 있습니다.

(00:14:36) 하지만 저는 항상 제 자신을 도구 엔지니어로 생각했습니다. 그래서 제가 일할 당시에는 보통 UI부터 시작해서 “좋아요, 이걸 위한 라이브러리가 필요해요.”라고 말하곤 했죠. 그러면 제가 라이브러리를 작성하는 사람이 되곤 했죠. 그래서 2012년, 2013년에 저는 iPad처럼 작동하는 웹용 UI 라이브러리를 작성하고 있었는데, 핀치하고 확대할 수 있지만 여전히 웹 페이지였습니다. 당시에는 그런 기능이 없었으니까요. 캔버스였고 모든 행렬 연산과 그 밖의 모든 작업을 수행해야 했습니다.

ThePrimeagen (00:15:05) 아이패드에 있는 것처럼 느껴졌지만 실제로는 아이패드가 아니었습니다. 그건 그렇고 이건 iPad 2였으니 아주 오래 전 일이죠. 그래서 매번 일을 할 때마다 “좋아요, 라이브러리를 만들어야 해요. 빌드 시스템 작업 좀 해줄 수 있어요?”라고 물었죠. 그 당시에는 그런트도, 걸프도, 그런 것들이 없었기 때문에 직접 자바스크립트 빌드 시스템을 만들어야 했죠. 그래서 저는 항상 개발자가 성공할 수 있는 도구를 구축하는 입장에 서게 되었죠. 그리고 저는 항상 그 분야를 정말 좋아했습니다. 넷플릭스에 입사해 10년을 근무하면서 10년의 대부분을 개발자들이 업무에 성공할 수 있는 도구를 만드는 데 보냈다고 할 수 있습니다.

(00:15:45) 그래서 저는 항상 그 측면을 정말 좋아했습니다. 주주와 프로그램을 사용하는 사람들이 프로그래밍을 이해하고 “이봐요, 이게 필요해요”라고 말할 것이기 때문입니다. 그리고 일반적으로 그들이 필요로 하는 것은 실제로 원하는 것이죠. 반면에 사람들은 무언가를 원하지만 실제로 필요한 것과 실제로 원하는 것은 종종 이상하게 분리되어 있습니다. 마치 헨리 포드가 “나는 더 빠른 말을 원해”라고 말했을 때 “아니, 당신이 실제로 원하는 것은 자동차야”라고 대답한 것과 같습니다. 따라서 소비자는 실제로 그것을 알아내려고 노력하는 게임을 해야 하는 반면, 개발자는 “나는 당신이 내가 무엇을 하는지 알고 있습니다. 당신이 원하는 게 뭔지 알아요. 함께 해결책을 찾아봅시다.”라고 말하죠.

Lex Fridman (00:16:20) 실제로 프로그래밍 전반에 대한 큰 그림을 볼 수 있는 좋은 기회입니다. 그래서 저는 인터페이스에서 시작해서 핀치나 이런 것부터 시작해서 사이드 퀘스트 툴링, 생산성과 효율성을 높이는 방법, 이런 모든 것들을 포함하여 이를 실현하는 데 필요한 모든 것을 파악하는 아이디어가 마음에 듭니다. 모든 것을요. 정말 멋지네요

Lex Fridman (00:16:43) 오케이, 그럼 그게 풀 스택이겠네요? 풀 스택의 일반적인 정의에 따르면…

Lex Fridman (00:16:50) 결과 인터페이스가 어떻게 보일지 큰 그림을 보지 않고 맨 아래부터 시작하여 특정 종류의 특정 사항을 최적화하려고 하는 시스템과 비교합니다..

Lex Fridman (00:17:02) 웹 프로그래밍을 하는 많은 사람들은 사물이 어떻게 보이는지 프론트엔드에서 벗어나지 못합니다. 그들은 항상 어둠 속, 지하실의 어두운 곳에서 백엔드를 구현할 누군가가 있을 것이라고 가정합니다.”

ThePrimeagen (00:17:17) 저기 길포일이 백엔드 작업을 하고 있을 것입니다.

ThePrimeagen (00:17:19) 예, 저는 제너럴리스트라고 부르고 싶어요, 단지 몇 가지 아이디어를 제공하기 위해서죠. 한때 넷플릭스에서 웹소켓 연결을 구축한 적이 있습니다. 그래서 TV에서 WebSocket이 작동하는 방식은 제가 방금 작성한 코드입니다. 그래서 프레이밍을 만들었고, 그 전에는 메모리로 무언가를 만들었고, 그 전에는 도구의 UI를 만들었습니다. 그렇죠? 저는 그냥 할 수 있어요. 해야 할 일만 알려주면 그 일을 하면 되죠. 저는 한 가지 일을 아주 잘하려고 노력하지 않아요. 세계 최고의 고용주인 쿠버네티스 엔지니어가 되고 싶지는 않지만, 쿠버네티스를 배워야 한다면 가서 배우고 몇 가지 배포 방법을 익힌 다음 다음 단계로 넘어갈 수 있기를 바랍니다.

Lex Fridman (00:17:58) 레딧에 제가 여러분과 대화하고 있다는 사실을 올렸는데 멋진 질문이 많이 올라왔어요. 누군가 DevOps에 대해 물어봐야 한다고 언급했습니다. 데브옵스가 무엇인지 설명해 주시겠어요? 프로그래머들의 특수 작전인가요, 아니면 개발자들의 SEAL 팀 6인가요? 데브옵스란 무엇인가요? 정의해 주시겠어요… 데브옵스 엔지니어인가요?

ThePrimeagen (00:18:14) 사람들은 계속 데브옵스가 진짜가 아니라고 말합니다. 실제로는 플랫폼 엔지니어, 클라우드 엔지니어, 인프라 엔지니어를 원하죠. 저는 가장 쉬운 방법으로, 기본적인 명명법만 따진다면 데브옵스는 서비스를 출시하고 그 모든 것이 사라지지 않도록 하는 사람들이라고 생각하곤 합니다. 그렇죠? 대규모로 무언가를 운영할 수 있는 모든 중추적인 역할을 합니다.

(00:18:37) 사실 생각해 보면, 워드프레스 등을 사용하는 PHP를 사용하는 사람들이 엄마 아빠 웹사이트만 만든다면 무언가를 구축한 후 Linode, DigitalOcean, 어떤 회사에 넘길 것입니다. 복잡한 빌드, 배포, 이런 모든 것이 필요하지 않습니다. 그저 간단한 웹사이트만 있으면 상품을 판매할 수 있습니다. 그래서 그런 건 필요 없습니다. 그래서 제가 생각하는 데브옵스는 확장해야 할 필요가 있을 때 고용하는 사람입니다.

Lex Fridman (00:19:04) 예, 그 사람들은 정말 대단한 사람들입니다.

Lex Fridman (00:19:07) 구글에서 근무하면서 느낀 점은, 멋진 머신러닝 전문가들도 있지만 기본적으로 인프라를 운영하며 문제가 발생하지 않도록 하는 사람들은 마법사 같고 필수적인 존재라는 것이었습니다.

ThePrimeagen (00:19:23) 매우 놀라운 직종입니다. 물론 제가 매우 광범위한 용어를 사용하고 있긴 하지만… 사이트가 다운되지 않도록 하는 것도 SRE라고 말할 수 있겠죠? 사이트 신뢰성 엔지니어 어쨌든, 구글에서 폭격기 재킷을 입는 사람들이죠. 그래서 데브옵스라고 하면 사람들은 이 범주에 속하는 용어에 매우 집착하는 것 같아요. “사실 인프라 엔지니어가 아니라 사이트 안정성 엔지니어를 언급하고 있군요.”라고 말하죠. “네, 알겠습니다.” 하지만 일반적으로 데브옵스라고 하면 서버와 서버의 수명 주기, 안정성을 관리하는 사람을 떠올리게 됩니다. 데브옵스가 있습니다. 진짜인가요? 잘 모르겠습니다.

ThePrimeagen (00:19:59) 버셀이 DevOps를 죽였나요?

Lex Fridman (00:20:04) 그래요. 와, 거의 기자가 되셨네요. 헤드라인이네요. 처음으로 돌아가 보겠습니다.

Life story

Lex Fridman (00:20:11) Baby Prime. 넷플릭스를 언급하셨군요.

ThePrimeagen (00:20:15) 오, 그런데 저는 넷플릭스에서 일했어요.

Lex Fridman (00:20:17) 더프라임에이젠이 누군지 모르는 사람들을 위해 그는 거의 모든 문장에서 그가 매우 성공적이었고 넷플릭스에서 일했다는 사실을 언급합니다.

ThePrimeagen (00:20:29) 정답입니다. 거의 네오빔을 언급하는 것만큼이나…

Lex Fridman (00:20:33) 오, 잘됐네요. 네오빔에 대해 더 자세히 알려주세요. 아뇨, 그러지 마세요. 그래서, 아기 프라임. 처음에요. 당신은 정말 대단한 삶을 살아왔고, 많은 사람들에게 영감을 주는 것 같아요. 마약 중독, 상실 등 고통스러운 저점을 많이 겪으셨고, 말씀하신 것처럼 성공적인 프로그래머가 되어 수많은 사람이 프로그래밍에 입문하고 인생에서 성공할 수 있도록 영감을 주는 사람이 되셨어요. 그래서 아마도… 처음부터 인생 여정 전체를 정리해 주셨으면 좋겠어요.

ThePrimeagen (00:21:11) 그래서 이 모든 여정을 시작하려면 제가 4~5살 때쯤부터 시작하는 것이 가장 좋을 것 같아요. 그때 처음으로 포르노를 접했고, 제 인생의 대부분을 포르노에 노출된 채로 살아왔거든요. 그래서 아주 어렸을 때부터 스무 살이 될 때까지 매일 포르노에 대해 생각하지 않은 날이 없었던 것 같아요. 그 어린 나이에도 매일 그랬어요. 그래서 아주 어린 나이부터 포르노는 저를 괴롭히는 정신적, 시간적, 생각적 소모적인 일이었습니다.

(00:21:47) 제가 일곱 살 때 아버지가 돌아가셨어요. 정말 힘든 시기였어요. 중국에 갔을 때가 아직도 생각나는데, 그때 우리에게 주어진 몇 가지 규칙이 있었는데, 그 중 하나가 “하나님 얘기는 하지 말고, 할 때는 ‘아빠’라는 단어로 대신해라”였어요. 그래서 저는 “알았어요, 아빠!”라고 대답했죠. 17년인가 아주 오랜만에 그런 말을 한 거였어요. 그 말을 하는 게 너무 이상했어요. 그리고 저는 “아, 제 평생 들어본 말 중에 가장 이상한 말이었어요.”라고 생각했죠. 기분이 너무 이상했어요.

ThePrimeagen (00:22:24) 자, 되감기 좀 해보겠습니다. 나이가 들면서 컴퓨터를 잘 다루고 포르노에 접속하는 것은 물론 인터넷에서 비디오 게임도 잘 했죠. 재미있는 사이드 퀘스트 이야기입니다. 그 남자의 이름은 트위치에서 ‘로드 톡’이었던 것 같아요. 이름은 잘 기억나지 않지만 그레이일, G-R-A-A-L, 그레이알 온라인이라는 게임을 만들었어요. 어렸을 때 젤다와 비슷했지만 레벨 에디터가 있고 C언어가 사용되었다는 점만 다를 뿐, 저는 이 기호를 보고 그 의미를 알아내어 게임에서 무언가를 만들 수 있는 프로그래밍 방법을 배웠습니다. 그게 제가 프로그래밍에 입문한 계기입니다. 트위치 이름이 뭐였든 그 친구에게 고마워요. 그래도 계속하세요.

(00:23:08) 나이가 들면서 저는 사회성이 매우 떨어졌어요. 저는 그다지 사교적인 사람이 아니었어요. 고등학교는 잔인하고 놀림도 많이 받았고, 정말 고등학교 때 즐거운 시간을 보냈다고 말하기는 어렵습니다. 확실히 제자리에서 벗어나거나 상쇄되거나 어쩌면 잘못 배치되었다고 느꼈죠. 어떤 표현이 맞는지 모르겠네요. 그래서 당연히 그 당시에는 항상 인정받고 싶고, 어울리고 싶고, 그런 모든 것을 원했어요. 한 가지 이야기를 잊고 있었어요. 아버지가 돌아가신 후 형이 마약에 손을 대기 시작했고, 그와 함께 저를 마리화나에 노출시켰기 때문에 8살 때 한동안 마리화나를 피우다가 11살이나 12살까지 잠시 쉬었다가 조금 더 나이가 들면서 다시 많이 피웠지만…

(00:23:55) 그래서 저는 꽤 어릴 때 이런 노출을 많이 했어요. 16세, 15세부터 18세까지 술을 많이 마셨죠. 고등학교를 졸업할 때, 아니 고등학교를 졸업할 때 저는 정말 슬펐어요. 모든 일이 너무 슬펐고 자살을 시도했지만 분명히 잘못된 시도였고 지금도 여전히 여기 있습니다. 저는 그 부분에 대해 매우 행복합니다. 아무것도 하지 않고 병원에 가지 않은 것이 다행이고요. 수술이 끝나고 병원에서 나오던 순간이 아직도 기억나는데, 그 순간 무언가 깨진 것 같았어요. 휠 오브 타임이라는 책을 읽어보신 적이 있나요? 14,000페이지 정도 되는 책인데, 12,000페이지쯤에 랜드가 주인공인 소녀를 일부러 죽여야 해요. 그리고 그 순간 랜드는 하드 랜드처럼 변해버립니다. [00:24:46] 랜드, ‘휠 오브 타임’을 아는 사람이라면 이 모든 것을 이해할 수 있을 겁니다. 모르는 분들에게는 매우 혼란스러우시겠지만 이해합니다. 아마존 영화 쇼가 아니라 휠 오브 타임이 아닙니다.

(00:24:57) 이제 다시 그 얘기를 해보자면, 그때는 마치 제 안에 뭔가 깨진 것 같았고 더는 신경 쓰지 않게 되었어요. 그래서 모든 사회적 어색함, 말하자면 모든 것이 저와 함께 사라졌지만 다른 모든 것도 사라졌습니다. 그래서 저는 여러 가지 약을 사용하기 시작했어요. LSD, 버섯, 필로폰. 마약도 잔뜩 하고, 그런 것도 잔뜩 하고, 대학에 가서도 계속 잔뜩 했어요. 몇 년 동안 산을 너무 많이 복용해서 대비가 높은 물체 옆을 지나갈 때마다 눈가에 작은 얼룩이 생겼어요. 그래서 제 인생 전체가 잘못된 결정으로 점철된 시기였어요.

(00:25:39) 그리고 제가 19살쯤 되던 어느 날 저녁, 아주 극적이고 실제적인 하나님의 임재를 느꼈어요. 그리고 면도날 위에서 프로도처럼 어느 쪽이든 가면 떨어질 것 같고, 인생을 바꿔야 한다는 선택의 기로에 서게 되었죠. 이제 선택을 해야 합니다. 그렇게 할 건가요, 말 건가요? 그래서 저는 “그래, 내 인생을 바꾸고 싶어. 이 경험이 마음에 들지 않아요. 지금 사는 게 싫어요. 저는 여전히 매우 슬프고 절망적입니다. 여전히 그런 감정들이 느껴져요. 그냥 다른 사람인 척하고 있을 뿐이에요.” 그리고 그날 밤 그냥 잠들었습니다. 제 삶에는 아무 변화가 없었습니다. 모든 것이 여전히 그대로였죠. 다음 날 깨어난 저는 같은 사람이 되어서 “아, 정말 이상하고 이상한 경험이다”라고 생각했습니다.

(00:26:29) 그리고 저는 그냥 하루 일과를 보냈어요. 그러다 그날 저녁에 포르노를 보다가 갑자기 의식적으로… 깊고 깊은 수치심을 느꼈던 게 기억나요. 그리고 저는 생각했죠, “난 평생 수치심을 느껴본 적이 없어요. 지금 무슨 일이 일어나고 있는지 모르겠어요.” 그러다 갑자기 대마초를 피우면서 깊은 수치심을 느꼈어요. 그리고 누군가에게 상처를 주거나 잘못을 했을 때 갑자기… 그날 저녁부터 의식이 깨어나는 것 같았어요. 그게 제 재능이라고 할 수 있죠. 그땐 선택의 여지가 없었어요 어떤 이유에서든 저는 한 순간에 변해버렸기 때문에 제 삶을 바꿔야만 했어요.

(00:27:05) 그래서 그때부터 실제로 학교에서 노력하기 시작했어요. 저는 항상 고등학교 때 2.14를 받았다고 농담하곤 합니다. 선생님이 저에게 최악의 학생이라는 쪽지를 직접 써주셨어요. 뭐 그런 거요. 저는 정말 훌륭한 학생이 아니었어요. 그런데 그 순간 ‘이제 인생이 바뀌었구나’라는 생각이 들었고, 공부를 열심히 해서 좋은 학생이 되려고 노력하기 시작했어요. 그런데 그게 정말 어렵더라고요. 전 정말 못했어요. 여전히 C를 받았어요. 미적분학에 가서 미적분학을 낙제하고는 “세상에, 예전에는 수학을 잘했는데 지금은 바보가 되어서 낙제하는구나”라고 생각했죠. 그래서 저는 제 자신과 모든 것에 의문을 품고 수학 학습 센터에서 몇 시간 동안 공부했고, 이 여정을 시작한 지 1년 반이 되던 어느 날, 무언가 깨달음을 얻었고, 최악의 사람이었던 저는 바로 최고가 되었습니다.

(00:27:58) 그 이후에는 무슨 일이 있었는지 모르겠어요. 갑자기 제가 수학을 제일 잘하게 되었어요. 컴퓨터 과학 수업에 들어가기 시작했어요. 정말 모든 걸 다 갖추게 되었죠. 노력한 지 몇 년 만에 모든 것이 갑자기 쉬워졌어요. 몇 주에 걸쳐서 그렇게 되었는지 아니면 언제부터 쉬워지기 시작했는지는 모르겠지만 처음에는 엄청난 난이도가 전제되어 있었어요. 그리고 그 후 몇 년이 지나고 나서 일이 쉬워지기 시작했을 때 제가 배움의 과정을 정말 원하고 좋아하기 시작했어요.

(00:28:27) 저는 그저 무언가를 하고 싶다는 생각에 의욕이 넘쳤고, 더 쉬워질 거라고 생각하지 않았는데 갑자기 쉬워지기 시작했고, 정말 좋았어요. 그때부터 제 인생의 가장 큰 부분이 바뀌기 시작한 것 같아요. 포르노를 볼 때마다 너무 수치스러웠고 정말 그만두고 싶었기 때문에 다시는 포르노를 보고 싶지 않았어요. 그리고 그것은 끊기 가장 어려운 중독이었습니다. 담배도 정말 끊기 힘든 중독이었고 충격적으로 끊기 힘든 중독이었지만 포르노는 그중에서도 최악이었어요. 그러다가 22살쯤에 드디어 모든 종류의 중독에서 벗어났고, 그 후 1년 동안 그 모든 중독에 빠져서 일했는데, 아마 21살과 4분의 3 정도, 그 범위 어딘가에서 모든 중독 부분을 끊었는지 잘 모르겠지만… 적어도 겉으로 드러나는 중독은 끊은 것 같아요. 그러다 6개월 후, 1년 후 어느 순간 아름다운 아내를 만났어요. 모든 게 점점 제자리를 찾기 시작했죠. 저는 점점 더 일을 좋아했어요. 저는 프로그래밍을 좋아했습니다. 하루에 12시간씩 프로그래밍을 시작했죠. 그러다 영화 ‘소셜 네트워크’를 보고 나서 “내가 스타트업을 해야겠다”는 생각이 들었죠. 그래서 그날 밤 첫 번째 스타트업을 시작했고, PHP로 시작했어요.

ThePrimeagen (00:29:41) PHP, 네, 5.2나 뭐 그런 거였어요. 좋았어요. 정말 좋았죠. 저는 정말 의욕이 넘쳐서 24시간, 36시간 연속으로 프로그래밍을 하기도 했고, 어떤 때는 쉬지 않고 프로그래밍만 하기도 했어요. 아내가 저에게 조금 질렸던 것 같아요. 아내는 “학교에 데려다줄래요?”라고 묻곤 했죠. 그러면 저는 “안 돼요, 프로그래밍 중이에요”라고 대답하곤 했죠. 저는 그다지 좋은 사람이 아니었어요… 사물을 잘 생각하지 못했죠.

ThePrimeagen (00:30:05) 나는 그냥 너무 빠져서 쉬지 않고 했고, 그렇게 해서 내가 된 거죠, 그게 말이 되는 이야기라면요.

Hardship

Lex Fridman (00:30:13) 고통의 일부와 승리의 일부를 역설계해 봅시다. 때때로 쉽게 들리기도 합니다. 7살 때로 돌아가서 더 잘 이해하도록 노력해 봅시다. 아버지를 잃고 거기서 겪은 고통에 대해 어떻게 생각하세요? 어떻게 생각하시나요? 그것이 당신에게 어떤 영향을 미쳤나요? 당시 어떤 기억이 있나요?

ThePrimeagen (00:30:33) 제가 가장 잘 표현할 수 있는 것은 아빠가 무엇인지 몰랐다는 것입니다. 저는 어렸기 때문에 억누를 수도 있고 오래 기억할 수 있는 능력도 없었어요. 대부분의 사람들이 어렸을 때 많은 것을 기억하지 못한다는 것을 알고 있기 때문에 저도 잘 모르겠습니다. 저는 아마도 아버지를 잃을 수 있는 가장 좋은 나이에 아버지를 잃었을 거예요. 아시죠? 11살이나 12살에 아버지를 잃는다면 정말 끔찍한 나이죠. 제 오빠도 그랬고 마약 중독에 빠져서 헤어 나오지 못했어요. 그래서 저는 그저 막연하고 그리운 마음이 더 커졌어요. 그냥 아빠가 있었으면 좋겠어요.

Lex Fridman (00:31:10) 그것이 당신의 진화, 당신의 삶에 어떤 영향을 주었나요? 그 갈망이 있었나요?

ThePrimeagen (00:31:16) 그래서 사회적으로 인정받고 싶다는 생각 때문에 그렇게 나빴던 거죠, 그렇죠? 저는 인정이 필요했어요. 많은 사람들이 그런 인정이나 사랑받는 모습을 원하는데 저는 그런 게 없었어요. 그래서 다른 모든 것에서 그것을 찾았던 것 같아요, 그렇죠? 제 행동을 정신분석학적으로 분석한다면요. 그 당시에는 적극적으로 그런 생각을 한 건 아니지만, 어쨌든 저는 항상 제가 느끼는 무언가를 채워줄 무언가를 원했어요.

High school

Lex Fridman (00:31:44) 이 이야기를 듣는 많은 사람들이 고등학교 시절의 경험에 공감할 것이라고 생각합니다. 아웃사이더가 되고, 따돌림을 당하고, 집에서 여러 가지 복잡한 일들을 겪었죠. 그들에게 어떤 조언을 해주고 싶으신가요?

ThePrimeagen (00:31:58) 고등학교의 최악의 점은 또래 친구들에게 둘러싸여 영원할 것만 같은 느낌이 든다는 것입니다.

ThePrimeagen (00:32:05) 당신의 주변에 있는 사람들이 평생 함께할 사람이라고 생각하지 않으시죠. 적어도 저는 그렇게 생각했어요. 그리고 몇 년이 지나고 나서야 그들이 내 인생에서 가장 영향력이 적은 사람들이 될 것이라는 사실을 깨달았습니다.

ThePrimeagen (00:32:21) 특히 지금 그 상황이라면 생각만 해도 매우 충격적인 일입니다.

ThePrimeagen (00:32:27) 그렇죠? 지금은 그것들이 여러분의 모든 경험이자 현실의 전부입니다. 그러다 어느 날 모든 것이 멈추고 진짜 삶이 시작됩니다.

ThePrimeagen (00:32:37) 그것은 정말 충격적인 일이고, 만약 제가 그렇게 말할 수 있었다면 아마 저는 완전히 다른 사람이 되었을 것입니다.

Lex Fridman (00:32:42) 정말 아름답게 표현되네요. 마치 시험 삼아 하는 것 같아요. 비디오 게임을 시작할 때 작은 튜토리얼이 있는 거 아시죠? 그게 바로 그거예요.

Lex Fridman (00:32:51) 그리고 사실 그것은 실제 삶이 시작되고 그 이후에 더 많은 결과가 있기 때문에 똥을 시도하고 위험을 감수하는 기회가 되어야 합니다.

Lex Fridman (00:33:00) 그 이후 더 많은 결과가 있는 곳에서 진짜 삶이 시작될 것이기 때문입니다.

Lex Fridman (00:33:03) 여자가 맘에 들면 데이트 신청하세요. 해보세요, 해보세요. 괴롭힘을 당하면 그 남자에게 맞받아치세요. 시도해 보세요.

ThePrimeagen (00:33:11) 나는 다른 사람을 때리는 것을 용납하지 않을 것입니다.

Lex Fridman (00:33:13) 그럴게요. 주짓수를 배워서 그를 쓰러뜨리는 법을 배워야죠. 그러면 당신을 거절했던 여자가 “흠, 저 남자에게 한 번 더 기회를 줘야겠어”라고 생각하게 될 거예요. 나쁜 놈이 되세요. 여러 가지를 시도해 볼 수 있는 기회입니다. 이것은 엉덩이를 걷어차기 위한 매우 동기 부여적인 연설입니다.

ThePrimeagen (00:33:31) 맞습니다. 특히 여학생들의 고등학교 경험은 어떨지 모르겠지만, 남자로서 고등학교에서 신체적으로 요구되는 것이 많다는 것은 분명 사실입니다. 적어도 제가 자란 곳에서는 신체적 측정이 많았어요. 모든 고등학교가 그렇지는 않겠지만, 남학생으로만 가득 찬 고등학교라면 아마 사실일 거예요.

(00:33:51) 그래서 그런 일을 하는 것, BJJ에 가는 것, 이런 활동을 하는 것이 도움이 될 것 같아요. 누군가를 때려눕히지 않더라도 자신에 대해 어느 정도 자신감을 갖는 것만으로도 매우 가치 있는 일이니까요. 하지만 지금이 인생에서 아주 짧고 작은 순간이라는 것을 기억하는 것만으로도 큰 도움이 됩니다.

Lex Fridman (00:34:12) 제 말은, 표현 방식이 정확히 맞다는 뜻입니다. 그런 느낌입니다. 이 사람들이 평생을 함께할 사람들이고, 이 세상이 전부라는 느낌이죠. 그래서 누군가 나를 괴롭히거나 이 고등학교의 서열과 지위 서열에서 낮은 곳으로 떨어진다면, 그것은 곧 세상의 지위 서열에서 낮은 곳으로 떨어지고 평생을 망하게 된다는 것을 의미합니다.

(00:34:39) 그리고 그것은 엄청난 무게를 지니고 있습니다. 고등학생이 되는 것이 얼마나 어려운지, 심리적으로 얼마나 어려운지, 어떤 사람들이 우울증에 시달리고 자살 직전까지 간다는 것이 실제로 얼마나 말이 되는지, 부모님들이나 사회에서 종종 과소평가하는 것 같아요. 매우, 매우 어렵습니다.

ThePrimeagen (00:35:01) 예, 공평한 것 같아요… 사람들은 항상 “내 시절에는” 어쩌고 저쩌고 하죠. 제가 어렸을 때는 사람들에게 자격이 있었다는 점에서 지금은 그 어느 때보다 정말 힘든 시기라고 생각해요. 즉, 이 사람은 쿨한 사람이고, 이 사람은 쿨하지 않은 사람이라는 뜻입니다.

(00:35:15) 오늘, 사람들의 숫자가 정량화되었습니다. 나를 팔로우하는 사람은 32,514명이고, 나를 팔로우하는 사람은 12명입니다. 사람들은 시각적으로… 어떤 플랫폼에서든 여러분의 정확한 사회적 가치를 확인할 수 있습니다. 그리고 그것은 훨씬 더 어려워져야 합니다.

(00:35:31) 그것에 너무 많은 무게가 실려서, 자신이 얼마나 쿨하지 못한지 정확한 숫자가 있기 때문에 아마 훨씬 더 기분 나쁜, 훨씬 더 저주받은 기분이 들 것 같아요.

Lex Fridman (00:35:45) 그래요. 도전 과제입니다. 소셜 미디어와 고등학교 시절의 소셜 서클이 자신을 쿨하지 않다고 생각한다고 해서 실제로는 자신이 쿨할 수도 있다는 것을 기억하는 것이 과제, 퀘스트입니다. 그리고 그 쿨함을 찾아서 키우고 발전시켜서 실제 인생이 시작되면 모든 실린더를 발사하고 나올 수 있도록 해야 합니다.

Lex Fridman (00:36:16) 고등학교는 멋진 사람을 뽑아내는 데 정말 서툴다고 생각해요. 어떤 시스템이든, 어떤 서열이 형성되든, 기본적인 계급이 존재하죠. 아주 일반적인 것만 잘하죠. 그렇게 해서 올라가는 거죠.

ThePrimeagen (00:36:33) 부모님이 비싼 차를 사주셨어요.

ThePrimeagen (00:36:38) 탐욕스러운 검색입니다. 제대로 된 검색이 없어서 그냥 로컬 옵티마만 치고 있네요.

Lex Fridman (00:36:42) 하지만… 그 탐욕스러운 검색의 목적 함수조차도 고등학교 게임에서 승리한 사람들이 훨씬 더 흥미롭고 아름다운 인생 게임에서 승리하는 사람들이 아닌 경우가 많은 정말 거지 같은 함수에 불과하죠. 그러니 멋진 일을 해보세요.

(00:37:01) 고교에서 이상한 애들은 성공할 거예요. 아마도 괴롭힘을 당하고 심리적으로 더 괴로워하며 자신의 마음을 탐구하고 인간으로서 무엇을 의미하는지 더 많이 생각하게 되기 때문일 것입니다.

(00:37:16) 고교에서 이기면 도전하지 않고, 자기 성찰하지 않고, 아무것도 시도하지 않기 때문이죠. 그러니 자신을 망치지 않는 한 어느 정도는 괴로워할 수 있습니다. 포르노 중독은 많은 사람들의 공감을 불러일으킬 수 있는 또 다른 강력한 중독입니다. 그리고 그것이 극복하기 가장 어려운 중독 중 하나라고 말씀하신 것도 흥미롭습니다.

Porn addiction

ThePrimeagen (00:37:43) 이렇게 말하자면, 일부 중독은 훨씬 더 사회적으로 보이는데 포르노는 그중 하나가 아니므로 매우 힘들어집니다. 친구 중 누구도 당신을 응원해주지 않을 것입니다. 트위터에 가서 “나 포르노 끊었어”라고 말하면 친구들은 “너한텐 잘됐지만 모든 사람이 다 그런 건 아니잖아…”라는 반응을 보일 거예요.

(00:37:57) 마약에 대해 그런 주장을 하는 사람은 없겠죠? “모든 사람이 마약을 끊어야 하는 건 아니잖아요, 알았어요”라고 말하는 사람은 아무도 없을 겁니다. 사실 마약은 훌륭한 산업이고 마약을 생산하는 사람들도 좋은 사람이잖아요?“라고 말하진 않겠죠? 아무도 그런 주장을 하지 않을 것입니다.

(00:38:08) 반면, 포르노는 모든 것을 다 하고 친구들은 내가 바보라고 생각하거나 뭐 그런 식으로 생각하죠. 마치… 그런 식으로 훨씬 더 어려운 일입니다. 그래서 받아들여지는 느낌이에요.

Lex Fridman (00:38:21) 그리고 개인적으로 연습하고 참여하며 세상으로부터 숨길 수 있는 중독도 있다고 생각합니다. 오랜 기간 동안 세상으로부터 숨기기가 더 어려운 중독도 있습니다.

(00:38:31) 그리고 포르노 중독은 수년 동안 지속되다가 심해질 수 있는 중독일 수도 있습니다. 그건 아마 심각한 문제일 겁니다. 포르노는 너무 쉽게 접할 수 있고 중독에 빠지기 쉽기 때문에 인터넷이 생기기 전에 자라서 정말 다행입니다. 포르노가 당신의 삶에 어떤 영향을 미쳤는지 말씀해 주시겠어요? 부정적인 점과 이를 극복하는 방법에 대해서도 말씀해 주시겠어요?

ThePrimeagen (00:38:56) 영향에 대해 말씀드리자면, 여성을 바라보는 시선이 길고 망가진다는 것입니다. 제가 할 수 있는 것처럼… 다시 말하지만, 남성의 관점에서만 말하지만 포르노는 가장 기본적인 것은 자신의 욕망이나 자신의 욕구를 위해 다른 사람을 이용한다는 것입니다. 그것은 깊이 필요한 것이 아닙니다. 포르노는 필요하지 않아요. 포르노는 순전히 욕구 또는 욕망에 기반한 활동으로, 어떤 단어로 표현하든 상관없습니다.

(00:39:28) 그리고 그것은 순전히 객관화 활동입니다. 자신의 즐거움을 위해 다른 사람을 전시하는 것이죠. 그래서 당신은 이것을 가지고 다니는 것 같아요. 고등학교 때 사귀었던 여성이나 고등학교와 대학 졸업 후 사귀었던 여성들을 목적을 위한 수단으로 생각했던 것 같아요. 그리고 포르노는 제가 다른 사람에게 원하는 가치를 부여하지 않았다는 관점을 크게 바꾼 것 같아요. 포르노는 일반적으로 인간의 가치를 떨어뜨린다는 것이 제 관점입니다. 그리고 그것은 사람들을 상품으로 만듭니다. 저는 사람이 상품이라고 생각하지 않아요. 모든 사람은 가치가 있다고 생각해요.

(00:40:02) 그래서 그 동안 저에게 포르노의 큰 효과는 소비주의나 물질주의가 광적으로 변한 것일 수도 있고, 질문하거나 논쟁할 수도 있습니다. 그리고 말씀하신 것처럼 포르노를 보고 나서 점심을 먹으러 나갈 수 있기 때문에 그만두기가 매우 어렵습니다.

(00:40:21) 아무도 모를 겁니다. 아무도 알 수 없습니다. 매우 사적인 세션이며 매우 짧은 시간이 될 수 있습니다. 꼭 시간이 오래 걸릴 필요는 없죠… 산을 먹고 점심 먹으러 갈 수는 없잖아요, 그렇죠? 하루 전체가 완전히 다른 하루가 될 거예요. 그래서 매우 빠르고, 쉽고, 접근하기 쉽습니다.

(00:40:38) 그리고 성적인 이미지를 보거나 노출된 후 일정 기간 동안 남성이 더 나쁜 결정을 내리는 것과 같은 모든 과학과 통계가 분명히 존재하죠. 도파민이 계속 더 많이 필요해지는 것과 같은 도파민 효과도 있습니다. 그렇기 때문에 사람들은 일반적으로 포르노를 5분만 보고 끝내지 않습니다. 인터넷에서 항상 하는 백 탭 농담 같은 것이 있습니다. 도파민 주기가 끊임없이 반복되기 때문입니다.

(00:41:01) 그리고 그런 말들은 모두 좋은 말이죠. 통계와 과학, 그리고 그 모든 것들이 어떤 사람들에게는 정말 훌륭한 주장이라고 생각합니다. 하지만 저에게는 정말 좋은 일인가라는 질문으로 귀결됩니다. 사람을 그렇게 모독하거나 무시하는 방식으로 평가하는 것이 정말 우리가 원하는 것일까요? 저는 정말 영혼에 좋지 않다고 생각해요. 모든 통계에서 그것이 당신에게 좋다고 말하더라도 저는 여전히 그것이 나쁘다고 말합니다.

Lex Fridman (00:41:29) 그렇습니다. 장기적인 큰 그림, 일반적으로 인간관계에 미치는 심리적 영향을 살펴봐야 합니다. 그게 제, 포르노보다 더 일반적으로, 인용하지 않은 “일종의 마노 스피어”에 대한 제 문제는 많은 여성과자는 것이 훌륭하고 훌륭하다고 생각한다는 것입니다. 하지만 문제는 포르노와 마찬가지로 인생의 주요 목표를 섹스로 삼는다는 것은 가장 멋진 것 중 하나인 친밀감을 평가절하하는 것입니다. 깊은 우정도 그렇고, 연애도 마찬가지입니다.

(00:42:06) 나는 포르노가 가장 순수하고 어두운 형태로 그렇게 한다고 생각하는데, 중요한 것은 섹스이지 다른 사람과의 깊은 연결이 아니라는 것입니다. 그리고 다시 고등학교와 마노스피어로 돌아가서, 섹스가 지위와 자신감 등에 도움이 되는 객관적인 기능이라면…

(00:42:28) 이 모든 것이 훌륭하다고 생각합니다. 다시 말하지만 중독이 될 수 있습니다. 하지만 많은 사람들에게 더 멋진 것은 연인과의 깊은 우정이나 깊은 친밀감입니다. 그것도 정말 대단한 일이고 둘 다 훌륭합니다.

ThePrimeagen (00:42:45) 저는 객관적으로… 의미 없는 성관계를 가진 사람이 15년을 함께한 저와 제 아내보다 더 나은, 또는 더 의미 있는 삶을 산다는 것은 존재하지 않는 우주도 존재할 수도 없고, 있을 수도 없는 주장이라고 말하고 싶어요.

(00:42:58) 우리에게는 매우… 어떤 상황에서도 의지할 수 있는 아내가 있습니다. 반면에 다른 삶을 산다면… 기분이 좋을 수는 있겠지만 아무런 의미가 없어요. 실제적인 가치는 없어요.

Lex Fridman (00:43:10) 정확히 맞습니다. 저는 섹스가 젊은 남성의 자신감에 엄청난 긍정적인 영향을 미칠 수 있다고 생각합니다. 많은 데이터를 수집할 수 있는 성 파트너가 있다는 것만으로도 이성에 대해 너무 긴장하지 않아도 되고, 인간관계에 대해 너무 긴장하지 않아도 되는 등 자유로워질 수 있다고 생각합니다.

(00:43:34) 그리하여 세상을 더 명확하게 볼 수 있고 실제로 깊은 친밀감을 나눌 수 있는 파트너를 찾을 수 있게 될 것입니다. 때로는 사회적으로 만들어진 성관계의 가치에 대한 긴장감 때문에 판단력이 흐려질 수 있습니다.

(00:43:54) 그리고 그냥 섹스를 많이 해서 그걸 풀면, 당신이 말한 것처럼 섹스가 중요한 게 아니라 내가 그 더미에 넣어야 하는, 연애 파트너가 아니라 우정, 깊은 우정을 포함한 올바른 사람을 찾는 것이 중요하다는 것을 분명히 알 수 있을 겁니다..

ThePrimeagen (00:44:14) 우리 사회가 섹스에 많은 비중을 두고 있는 것은 맞다고 생각합니다. 그리고 그것은 역사의 어느 시점에서든 모든 남성 그룹에서 사실이라고 확신합니다. 실제로 어느 시점에서도 멈춘 적이 없는 매우 흔한 농담이라고 확신합니다. 그래서 그런 농담이 존재한다고 확신하지만… 그리고 그 농담에는 아마도 진실이 있을 거예요… 누구였죠? 짐 캐리요 “모든 사람이 부자가 되어 돈으로 모든 문제를 해결할 수 없다는 걸 깨달았으면 좋겠어요.” 사회에서 매우 중요하다고 말하는 것이 사실은 중요한 부분이 아니라는 것을 깨닫는 것이죠. 그것은 매우 중요한 …

(00:44:45) 관계가 건강하다는 것은 좋은 신호입니다. 만약 저와 아내가 몇 달 동안 섹스를 전혀 하지 않는다면 뭔가 잘못되었다는 뜻이고, 이는 우리가 더 이상 같은 비행기를 타지 않는다는 뜻이죠. 하지만 그것은 또한 좋은 식별자가 아닙니다. 섹스를 많이 한다고 해서 좋은 관계를 유지하고 있다는 뜻은 아닙니다.

(00:45:03) 그래서 그것은 독특한… 여기서 올바른 용어는 잊었지만 문제를 바라보는 독특한 방식입니다. 그리고 우리 사회는 그것을 너무 강조합니다. 그래서 포르노를 끊기 힘들었던 것일 수도 있지만, 제 생각에는 도파민 효과 때문인 것 같아요.

(00:45:21) 하지만 저에게 가장 중요한 부분이자 진정한 보람을 느끼는 것은… 아내와 단둘이 있다는 것입니다. 다른 여자는 쳐다보지도 않으려고 필사적으로 노력합니다. 마크 저커버그가 백악관에서 그런 모습을 보이다 들키지 않기를 바랄 뿐입니다.

(00:45:37) 나는 포르노를 보지 않습니다. 제 아내는 저를 전적으로 신뢰하기 때문에 어떤 식으로든 저에게 의문을 제기할 상황은 없을 거라고 믿습니다. 신뢰가 그만큼 크기 때문에 훨씬 더 깊은 관계가 형성된다고 생각합니다. 관계의 깊이는 아마도 서로에 대한 신뢰와 비례한다고 생각합니다. 신뢰가 없는 상태에서 깊은 관계를 맺는 것은 매우 어렵습니다.

Lex Fridman (00:45:59) 그래요. 그리고 신뢰의 전제 조건, 어쩌면 신뢰의 구성 요소는 다른 사람과 함께 취약해질 수 있는 취약성일 수도 있습니다. 그리고 그 취약성이 보답될 때 정말 강한 신뢰가 형성되고 그것은 아름다운 일입니다. 네.

(00:46:20) 개인적으로는… 제 입장을 생각하면, 세상에 취약한 모습을 보이는 것이 훨씬 더 어렵고 그것 때문에 상처받고 싶어 하는 사람들이 많지만 어쨌든 취약해지는 것은 가치 있는 일이라고 생각해요.”

ThePrimeagen (00:46:36) 어떤 면에서는 항상 그만한 가치가 있습니다. 위험은 어떤 의미에서 항상 그만한 가치가 있습니다. 분명히 모든 사람은 자신의 행동을 통해 걸러내야 할 다른 삶을 가지고 있겠죠? 예를 들어, 소셜 팔로워 등이 없는 사람은 위험 보상 프로필이 단지 로컬 영향력일 수 있고, 이는 그 사람에게 피해를 주거나 해가 될 수 있습니다.”

(00:46:54) 제 개인적인 생각으로는 제 인생에서 가장 영향력 있고 변화된 것은 분명 아내를 찾은 것이기 때문에 항상 위험을 감수할 만한 가치가 있습니다. 두 번째로는 하나님과의 하룻밤이 다른 모든 것을 이끌어낸 가장 영향력 있는 일이라고 주장하고 싶지만, 아내가 그 다음으로 영향력 있는 일이라고 생각합니다. 지금은 제 몸과 집안일을 스스로 치우고 있어요. 변화된 사람. 저는 변화된 사람이 되었습니다.

Lex Fridman (00:47:17) 하나님을 발견한 그 순간을 역설계해볼 수 있을까요? 19살에 무슨 일이 있었나요? 고통에서 벗어나기 위해, 중독에서 벗어나기 위해, 또는 그 여정의 시작을 위해 큰 도약을 한 것처럼 느껴지거든요. 그때 무슨 일이 있었다고 생각하세요?

ThePrimeagen (00:47:37) 저는 그냥… 제가 넘지 못할 선이 없다고 느꼈던 것 같아요. 모든 것이 괜찮았고 그냥… 갑자기 그 순간에 제가 어떤 깊은 두려움과 제가 가고 있는 길에 대한 이해가 있었던 것 같아요. 정말 이 길을 가고 싶은 건가요?

(00:47:58) 그리고 그 경로의 결과가 어떻게 될지 모르겠어요. 저는 이해하지 못하는 것에 대해 추측하지 않는 편이에요. 다만 그 순간 제게 선택권이 있었고 더 이상 원하지 않는 선택을 했다는 것만 알 뿐입니다. 그렇죠?

(00:48:13) 이 모든 것이 섞여 있어서 마치 제 가치가 없는 것처럼 느껴졌어요. 저는 제 모든 의미나 가치를 섹스나 섹스하는 것으로 포장했고, 방금 이야기한 모든 것들, 모든 것들이 제 가치의 전부였어요. 그리고 그것은 당신의 가치를 갖기에 정말 끔찍한 곳입니다.

(00:48:28) 그리고 모든 것이 한 지점에 이르렀어요. 요일은 말할 수 없고, 밤이었고 몬태나 주립대학교의 사우스 헤지스에 있었다는 것 외에는 아무것도 말할 수 없습니다. 밥캣츠 파이팅, 그게… 네, 축구 경기 때 하는 사인이죠. 걱정하지 마세요 그날 밤은 다른 날과 다를 바 없이 특별했으니까요 다만 제가 선택할 수 있는 기회가 있었다는 게 특별했던 것뿐이에요.

Lex Fridman (00:48:58) 아마도 그런 사람들에게 줄 수 있는 조언이 있다면… 지금 포르노 중독으로 어려움을 겪고 있는 젊은이들이 무수히 많을 거예요. 그들에게 어떤 조언을 해줄 수 있나요? 어떻게 극복할 수 있을까요?

ThePrimeagen (00:49:15) 이를 극복하기 위해 저는 미래의 아내에게 무언가를 빼앗기고 있다는 사실을 깨달아야 했습니다. 어떤 사람들은 “여자 친구가 생기면 그만두면 되지”라고 말하죠. 하지만 저는 “아니, 당신은 문제를 멈춘 적이 없으니까요.”라고 말하죠. 사람을 바꾼다고 문제가 멈추지 않거든요. 그래서 저는 여자 친구도 없었고, 모든 것을 잃었습니다. 저는 제가 미래의 아내에게서 무언가를 빼앗고 있다는 사실을 깨달았을 뿐입니다. 그 당시에는 지금의 아내를 알지도 못했죠. 그녀는 사진에 없었어요. 그 당시 그녀가 몬태나 주립대학교에 있었는지도 잘 모르겠어요.

(00:49:43) 그래서 그게 바로… 그 깨달음은 머리에서 가슴까지, 우주에서 가장 먼 거리라는 말이 있듯이 가슴으로 전달된 것 같습니다. 드디어 깨달았어요. 그리고 바로 그때부터 모든 것이 바뀌었어요.

(00:49:59) 무엇이 당신을 변화시키는 데 도움이 될지, 그런 것들을 말할 수 있는 능력은… 은총이 있는 건 아닌 것 같아요, 그렇죠? 누군가 당신에게 약을 제공 할 수 있다면… 누가이 문구를 말했는지 잊었지만, 그는 매우 우울한 사람이었고 자살로 어려움을 겪고 있었고이 회고록에 이것에 대해 쓰는 정말 흥미로운 문구가 있습니다.

(00:50:18) 그리고 그는 의사들을 찾아갔고 의사들은 “여기 항우울제가 있으니 도움이 될 겁니다.”라고 말하죠. 그리고 그는 이렇게 말합니다. “문제는 과학자들이 제 뇌를 만져서 스스로 행복해질 수 있다고 말했는데, 그게 다였습니다. 과학자들이 손을 뻗어 몇 가지를 설정하면 행복해질 수 있다고요.”라고 말합니다. 그는 “저에게는 들판에 나가서 약을 먹고 비를 볼 수 있는 것과 비슷했습니다. 밖을 내다보면 비가 내리고, 은빛으로 쏟아지고, 아름답지만 실제로는 비가 내리지 않아 모든 작물이 죽어버리는 것과 같았죠. 저는 스스로 행복해지는 방법을 찾아야 했습니다.”

(00:50:48) 저에게 포르노를 본 이유는 불행했기 때문인 것 같아요. 저는 의미를 찾으려고 노력했어요. 무언가에서 가치를 찾으려고 했죠. 궁극적인 만족감을 줄 수 있는 무언가를 찾으려고 했죠. 그런데 아무리 노력해도, 아무리 그럴 거라고 생각해도 포르노에는 그런 만족감을 줄 수 있는 탈출구가 없어요. 그것이 바로 중독성이 있는 이유입니다. 그래서 저는 왜 하면 안 되는지, 어떻게 하면 중독에서 벗어날 수 있는지를 깨달았을 때 비로소 중독에서 벗어날 수 있었습니다.

Lex Fridman (00:51:20) 정말 훌륭하게 설명하신 것 같아요. 지금 하고 있는 이 일이 미래의 아내와 미래의 아내를 찾는 데 방해가 된다는 것은 더 넓게 보면 번영과 아름다운 삶으로 가는 길이라는 것을 알고 계셨군요

(00:51:43) 저는 우리가 하는 많은 선택이 어떤 미래로 가는 문을 열지 못하게 막고 있다고 생각해요. 고등학교 때 이야기한 것처럼 인생에는 진정으로 행복할 수 있는 수많은 궤적이 있고, 그 길을 따라갈 수 있는 방식으로 인생을 구성해야 한다고 상상하는 것이 정말 좋은 방법이라고 생각합니다. 그리고 그 길로 가는 것을 방해하는 수많은 중독과 수많은 선택이 있습니다.

(00:52:12) 그래서 멋진 삶을 살게 될 것이라고 믿고 그 길을 걷는 데 방해가 되는 것들을 삶에서 제거해 보세요, 본질적으로 그렇게 한 것이 바로 당신이 한 일입니다. 포르노를 버리면 그 반대편에 더 나은 삶이 기다리고 있다는 믿음을 갖는 것이 바로 도약입니다.

ThePrimeagen (00:52:32) 예. 얼마나 걸릴지, 더 나은 삶이 될지는 확실히 말할 수 없죠. 하지만 저는 아내를 있는 그대로의 모습으로 소중히 여기지 못했기 때문에 먼저 그런 단계를 밟지 않고는 지금과 같은 관계를 유지할 수 없었을 거예요. 저는 현재 제가 바라보는 색인이나 렌즈를 통해 아내를 평가했을 것입니다.

Lex Fridman (00:52:58) 물어볼 게 있어요. 그래서 전 마약을 해본 적이 없어요. 전 마약을 해본 적이 없습니다.

ThePrimeagen (00:53:03) 그나저나 멋진 세그먼트였습니다.

Lex Fridman (00:53:05) 오, 이런. 솔직히 제가 이 인터뷰에 왜 이러고 있는지 모르겠어요. 하지만 네, 마약과 LSD… 아야와스카를 했어요. 환각제도 여러 번 했어요. 이 주제에 대해 트위터와 기술 커뮤니티에서 일반적으로 아야와스카에 대해 부정적으로 말하는 사람들과 긍정적으로 말하는 사람들이 많다는 점을 말씀드리고 싶어요. 주사위를 던져보면 알 수 있는 일이라고 생각합니다.

(00:53:34) 나는 놀라운 경험을 했지만 다른 사람에게 추천하고 싶지 않아요. 위험하고 심각한 위험입니다. 주사위를 굴려서 악마를 만나서 나를 파괴할 수도 있고, 악마를 만나서 악마를 놓아줄 수도 있습니다. 아니면 저와 같은 경험을 할 수도 있는데, 저는 악마가 없는 것 같네요. 지하실 어딘가에 있을 거라고 확신하지만 약에 취해 만난 적은 없어요.

(00:53:58) 나는 항상 정말 행복합니다. 술에 취하면 행복해요. 아야와스카에서는 정말 행복하고 사랑으로 가득 차 있어요. 악마가 어디 있는지 모르겠지만 그게 제 생화학이죠, 그게 뭐든 간에…

(00:54:10) 또 어떤 사람들에게는 한 번의 여행이 굉장할 수 있고 다음 여행은 삶을 완전히 파괴하고 망칠 수도 있습니다. 그러니 피하는 게 좋다는 조언이 무슨 뜻인지 모르겠지만, 우리 모두는 죽고 사는…

(00:54:25) 나는 모험에 기대는 경향이 있지만 마약은… 뇌의 생화학을 건드리면 정말 자신을 괴롭히는 방식으로 파괴할 수 있어요. 그래서 저는 일반적으로 미친놈이 아니라면 마약은 아예 피하라고 권하고 싶어요. 헌터 S. 톰슨

Lex Fridman (00:54:54) 안녕하세요. 마약이 어떤 건가요?

ThePrimeagen (00:54:57) 좋은 소개입니다. 적어도 환각제에 관해서는 경험하게 될 것에는 큰 차이가 있다는 점에서 매우 정확합니다. 그리고 보장도 없습니다… 제품을 구매한다고해서 좋은 시간을 보낼 수 있다는 의미는 아닙니다. 많은…

(00:55:14) 개인적으로 저는 영적인 영역을 믿는다고 생각하죠? 저는 악마와 천사가 존재한다고 믿습니다. 신이 존재한다고 믿어요. 그리고 그 모든 영역은 마치… 그것이 당신을 열어주는 것이 무엇인지 모르겠지만 훨씬 더 다른 경험입니다. 어떤 사람들은 “아, 그냥 뇌에 화학물질이 잔뜩 들어 있는 거겠지. 모두 뒤섞여 있죠. LSD는 모든 경로를 통해 뇌로 들어가서 모든 것이 뒤섞여 버리죠.”라고 말합니다.

(00:55:37) “그래, 경험은 심오하구나.”라는 생각이 들었죠. 정말 기괴하고, 멋지고, 끔찍하고… 모든 경험을 다 해봤어요. 저는 개인적으로 항상 같은 말을 합니다. 제가 한 선택은 절대 되돌릴 수 없다는 거죠. 그 모든 경험이 없었다면 지금의 제가 있을 수 있었을지 모르니까요.

(00:55:58) 하지만 그런 경험이 없다면, 제가 팀에 있거나 적어도 부분적으로 팀에 있다면 그런 경험이 필요하지 않다고 생각해요. 좋은 결정을 내리거나 사람들이 가치가 있다는 것을 깨닫기 위해 그런 일을 겪을 필요는 없잖아요, 그렇죠? 그럴 필요는 없어요.

(00:56:16) 마약이란 어떤 것일까요? 코카인을 해본 적이 있다면 코카인은 15분간의 댄스 파티로 시작하죠. 그냥… 너무 강렬해요. 정말 대단해요 그리고 나서 5시간 정도는 그냥 흔들리는 느낌으로 이어지죠? 어떻게 설명해야 할지 모르겠어요 메스도 비슷하지만, 댄스 파티나 다른 파티를 많이 하지 않고 12시간 동안 그 부분만 했어요.

ThePrimeagen (00:56:41) 스케이트보드도 많이 타고, 밤새도록 뛰어다니며 놀았어요.

Lex Fridman (00:56:46) 즐거운 느낌이라고 할까요, 아니면 삶의 외로움에서 벗어나는 탈출구라고 할까요? 실제 순간에 기분 좋은 느낌인가요, 아니면 부정적인 느낌인가요? 결과가 아니라 그 순간이 중요하죠

ThePrimeagen (00:57:01) 그래서 이것은 매우 흥미로운 영역인데, 보편적으로는 그렇게 말할 수 없습니다. 흔히 마약 중독자에는 두 가지 그룹이 있습니다. 오피오이드를 좋아하는 사람들과 각성제를 좋아하는 사람들이 있습니다. 마약 중독자 중 두 가지를 모두 하는 사람은 거의 없습니다. 그들은 정말 자신의 편을 찾아서 하는 것 같아요.

(00:57:25) 마약은 누구나 즐길 수 있는 것일까요? 보시다시피 사람들이 마약 중독을 경험하는 방식과 마찬가지로 절대적으로 그렇지는 않습니다. 하지만 저에게는 정말… ADHD의 특성과 관련이 있는 것 같아요… 에너지가 넘치고 항상 그 순간에 집중하는 스타일이거든요. 그래서 마치 그 순간에 있는 것 같지만 “아, 내가 그 순간에 있구나!” 하는 거죠. 모든 것이 너무 강렬하죠!

(00:57:48) 그 순간에 정말 머물고 싶을 뿐입니다. 그래서 그런 순간을 끊임없이 경험하는 것이죠. 그래서 좋았나요? 글쎄요, 어떤 사람들은… 제 아내는 항상 이런 말을 하죠, 긴장하거나… 잊어버렸어요, 어떤 상황의 불안은 스릴과 같은 것일 수도 있다는 걸요. 정확한 방법을 잊어버렸어요 제가 이걸 망쳐서 아내가 엄청 실망했을 거예요.

(00:58:10) 하지만 두 경험을 아주 다른 시각으로 인식할 수 있는 것 같기도 하죠. 어떤 사람들은 군중 앞에 서면 스릴을 느낍니다. 어떤 사람들은 군중 앞에 서면 일생 최악의 경험이라고 생각하죠. 그들은 말 그대로 차라리 죽고 싶다는 생각을 하기도 하는데, 이는 일어나서 연설하는 것보다 더 미친 짓입니다.

(00:58:25) 그래서 저에게 마약은 스릴 넘치는 측면도 있었지만, 동시에 제가 원하는 것을, 제가 찾고 있던 것을 얻지 못했어요. 제가 원하는 것을 얻기 위해 마약을 사용하긴 했지만, 결코 제가 원하는 것을 얻지 못했습니다.

Lex Fridman (00:58:43) 그래요. 저에게는 정말 멋진 경험이었습니다. 추천하지 않습니다. 하지만 슈룸처럼

ThePrimeagen (00:58:50) “그런데 무슨 일을 하든 불법적인 행위를 하지 마세요”라고 말해야 한다는 것이 YouTube 정책입니다.”

ThePrimeagen (00:58:54) 하지만 좋은 경험이었지만, 무슨 짓을 하든 하지 마세요.

Lex Fridman (00:58:57) 더프라임에이전씨, 전 마스터가 없습니다. 유튜브 같은 것도 없고요. 제가 하고 싶은 말은 다 할게요. 전 그냥…

Lex Fridman (00:59:10) … 일종의… 아니요, 솔직히 저는 유튜브나 그 누구도 신경 쓰지 않습니다. 다만 제가 긍정적인 경험을 했다고 해서 이 이야기를 듣는 젊은이들이 그 경험을 해봐야겠다고 생각하지 않기를 바라기 때문에 말 한마디를 조심할 뿐입니다. 그런 경험이 없어도 인생은 멋지다는 것이 훨씬 더 강력한 메시지라고 생각해요. 그것이 바로 제가 알코올에 대해 확실히 실험하는 부분입니다.

(00:59:34) 저는 내성적인 성격입니다. 저는 세상이 두렵습니다. 사회적 상호작용은 저를 불안으로 가득 채웁니다. 술이 가끔 도움이 되긴 하지만 솔직히 술 때문이 아니라 상대방이 저와 대화하는 동안 무언가를 해야 하기 때문이라고 생각해요. 그냥 음료수를 마시면 되잖아요. “그래요. 음-흠.” 사교적인 것이 있습니다. 맥주를 마시면… “그래. 네 네, 재밌어요 그리고 제 생각에는…

(01:00:02) 저에게는… 액체가 실제로 술처럼 보이면, 술이… 위스키나 맥주처럼 보이면, 우리가 즐기고 있다는 신호를 보내는 것과 같은 역할을 하거든요. 그래서 우리는 사교를 하고 있는 거죠? 우린 미쳐가고 있죠 그리고 그 말은…

(01:00:24) 실제로 알코올이 필요하지는 않습니다. 알코올 성분이 없어도 미쳐버릴 수 있지만, 술을 손에 들고 있을 때 일어나는 일종의 사회적 신호가 있습니다. 그래서 저는 술을 마시지 않고 가짜로 술을 마시는 상황을 연출하는 모임에 가기도 했어요. 그래서 저는…

(01:00:47) 그렇지만 전 세계를 여행하다 보면 보드카 한 병을 마실 수 있을 때가 있습니다. 이는 제 업무에 매우 필수적인 요소이지만, 성공적인 사회적 상호작용의 필수 요소이자 행복을 가져다주는 문화적 경험과도 같습니다.

(01:01:05) 그래서 술을 마시지 않고… 재미도 있고 술도 안 마실 수 있다고 생각해요. 그래서 이 모든 것이… 마약이 제 삶에 좋은 영향을 미쳤다고 말하는 것이 너무 조심스러운 이유는 대부분의 사람들에게, 아니, 대다수의 사람들에게 장기적으로 부정적인 영향을 미칠 것이라고 생각하기 때문입니다. 그래서 둘 중 하나를 선택해야 한다면 마약과 술만 안 하면 언젠가 미국 어린이 대통령이 될 수 있다고 생각해요. 그리고 저는… 오, 이런…

ThePrimeagen (01:01:43) … 그의 가장 재미있는 대사…

ThePrimeagen (01:01:45) “내가 술 마시면 날 싫어할 거야”라는 대사가 제일 웃겼어요. 저는 그 대사가 정말 마음에 들어요… 끝도 없이 간지러워요. “세상에, 정말 재밌는 대사네요.”라고 생각하죠.

Lex Fridman (01:01:52) 자각과 유머는 훌륭하지만 그래요.

ThePrimeagen (01:01:55) 하지만 저는 당신 팀에 있습니다. 제가 마약을 했던 이유도 모두 일종의 도피처였어요. 저는 그것이 마치… 제가 그것을 넣을 수 있는 원형이나 상자 또는 거기서 나올 수 없는 무언가를 느끼려는 추구와 같다고 확신합니다.

(01:02:09) 일에서 의미를 찾으려는 것과 같습니다. 자신이 하는 일에서 만족감을 찾을 수 있습니다. 그것은 매우 좋은 일입니다. 자신이 만든 결과물에서 만족감을 찾고 행복할 수 있습니다. 경험에 감격할 수는 있지만 목적을 찾을 수는 없을 것 같습니다. 특정 직업에 종사하는 사람들은 그럴 수도 있겠죠.

(01:02:26) 이 그림은 분명히 매우 넓은 범위의 획으로 그려져 있습니다. 예를 들어 응급 구조대원이 누군가의 생명을 구한다면 그 모든 경험에 목적이 있을 수 있겠죠? 그래서 제가 모든 것을 말하는 것은 아니지만, 프로그래밍을 하는 대부분의 프로그래머는 단순히 목적을 찾을 수 없습니다…

(01:02:39) 약도 마찬가지로, 원하는 것을 찾을 수는 없지만 매우 큰 산만함을 유발합니다. 그리고 어느 순간 그 산만함은 큰 대가를 치르게 됩니다. 파우스트 박사님이 그 막대한 비용에 대해 가장 잘 아실 것 같지만, 한 가지 거래를 다른 거래로 바꾸다 보면 어느 순간 청구서가 날아오고 그 청구서는 매우 큰 금액이 될 수 있습니다.”

Perseverance

Lex Fridman (01:03:00) 또 하나 정말 고무적인 순간이라고 생각되는 것은 예비 미적분학에서 낙제했다는 것입니다. 학교에서 정말 고생하셨죠. 학교가 정말 힘들다는 것을 깨닫고 결국에는 인내심을 가지고 그 어려움의 벽을 뚫을 수 있었죠. 어떤 일이 있었는지, 그리고 어려움을 겪고 있는 사람들에게 어떤 조언을 해줄 수 있나요?

ThePrimeagen (01:03:25) 예. 좀 더 명확하게 그림으로 그려보자면, 아주 빠른 속도로 미적분학을 수강하고 낙제했다는 것이죠. 미적분학을 다시 듣고 낙제하고, 다시 미적분학을 듣고 C를 받아 세 번을 들었습니다. 그리고 여름에 미적분학을 수강해서 미적분 1을 들었어요. 마지막에 기말고사… 기말고사는 두 시간짜리 시험이었어요. 30분 만에 끝냈는데 그게 전교에서 가장 높은 점수였어요. 그리고 미적분과 Diffy Q에서 모두 최고 점수를 받았습니다.

(01:03:54) 400명 중 유일하게 Diffy Q 결승에 올랐어요. 그리고 제가 최고 성적을 받았어요. 그래서 저는… 정말 잘하게 됐어요. 그래서 어떻게든 정말 나빴던 상태에서 정말 좋아졌어요. 그리고 제가 한 유일한 일은 제가 이겨야만 했다는 것입니다. 선택의 여지가 없었죠. “아, 이거 정말 멋질 거야.” 이런 식이 아니었죠. “이걸 못하면 졸업도 못 하고, 내 과제도 못 끝내겠다”는 식이었죠.

(01:04:16) 그래서 매일 일어나면 몇 시간이든 수업에 갔어요. 수업이 끝나면 바로 수학 학습 센터로 가서 문제를 풀었습니다. 집에 돌아와서 책을 받았는데 뒤에 이상한 답이 적혀 있었어요. 그리고 완전히 이해할 때까지 문제를 몇 번이고 반복해서 풀었죠. 그러다 보니 어느새 저만 남게 되었죠…

(01:04:37) 단순 암기만 하고 시간표만 효과적으로 기억하는 능력은 있었지만 미적분은 모든 것이 머릿속에 박혀 있었어요. 역삼항 치환, 삼항 치환, 테일러와 마클라우린 급수를 하는 것까지요. 이 모든 것을 반복하고 또 반복했죠. 결국에는 쉬워졌죠. 아주 쉬워졌죠. 그냥 그 안에 다 집어넣어야 했어요.

(01:04:57) 수업에 거의 나오지 않으면서도 A를 받는다는 이야기를 듣는데, 저는 그런 사람이 아니었습니다. 저는 항상 앉아서 모든 것을 읽어야 하는 사람이고 추상적인 개념은 잘 이해하지 못합니다. 저는 추상적인 것을 구체적으로 설명하는 것이 아니라 추상적인 것을 구체적으로 설명하는 것을 좋아합니다. 이론적으로 이야기한 다음 적용하는 데는 아주 서툴죠. 하지만 말 그대로 한 번만 할 수 있다면 추상적으로 들어가는 것은 정말 쉽습니다.

(01:05:20) 그래서 저에게는 그냥… 시간을 대신할 수 있는 것은 없습니다. 그래서 제가 조언을 드리자면 안장에 앉아서 시간을 보내야 한다는 것입니다. 시간이 지나면 조금씩 나아질 겁니다. 처음에는 정말 힘들죠. 패배감도 들고, 실력이 부족해서 재미도 없죠.

(01:05:40) 그러나 어느 순간에는 충분히 오래 할 수 있다면 나쁘지 않고 괜찮아지기 시작할 것입니다. 그리고 어느 순간에는 잘하게 될 수도 있습니다. 그리고 무언가를 잘하게 되면 정말 대단한 기분이 듭니다.

(01:05:50) 탐험 같은 것이 있습니다. 악기를 연주해본 적이 있다면 악기를 제대로 연주하기 위해 해야 하는 사소한 것들에 대해 생각할 필요가 없습니다. 그리고 그 공간을 어떻게 탐험할 수 있을지 생각하기 시작합니다.

ThePrimeagen (01:06:00) …제대로 재생하면 그 공간을 어떻게 탐색할지 생각하기 시작합니다. 완전히 다른 문제인 셈이죠. 프로그래밍도 마찬가지입니다. 프로그래밍도 같은 종류의 느낌을 가지고 있습니다. 마치 그 장벽을 넘으면 집안일이 아니라 마법처럼 느껴지는 것과 같습니다.

Lex Fridman (01:06:15) 그렇습니다. 그 장벽을 넘으면 왠지 다른 일들이 더 쉬워집니다. 하지만 진정으로 성공적인 삶을 원한다면 다음 장벽을 찾아야 합니다. 네, 전 항상 그랬어요. 모든 것이 정말 힘들었죠

ThePrimeagen (01:06:27) 예, 공짜 점심을 먹어본 적이 없습니다. 모든 것이 고통스럽고 힘들었어요.

Lex Fridman (01:06:35) 이 주제에 대해 열심히 일하지 말고 더 똑똑하게 일하라는 말은 싫어하는 표현이라고 누군가가 말한 것 같아요. Reddit의 누군가가 저에게 이렇게 말했습니다.

ThePrimeagen (01:06:47) 예, 그냥 싫은 게 아닙니다. 그 문구가 정말 싫어요.

Lex Fridman (01:06:49) 오케이. 증오에 대해 말씀해 주세요. 기분이 어떠세요?

ThePrimeagen (01:06:54) 제가 그 말을 싫어하는 이유는 거기에 숨겨진 제안, 즉 무엇이 더 현명한지 이미 알고 있으니 그냥 그렇게 하라는 일종의 암시가 있기 때문입니다. 사실 모든 것이 쉬워야 합니다. 그렇게 열심히 노력할 필요가 없습니다. 빠르고, 쉽고, 뻔한 경로를 따라가기만 하면 됩니다. 제가 해본 어떤 일에서도 그런 경험은 한 번도 해본 적이 없는 것 같아요. 사실 모든 것이 정말 어렵고 대부분의 경우 제가 무엇을 하고 있는지조차 모르기 때문에 똑똑한 것이 무엇인지조차 모릅니다. 그래서 저에게 스마트하게 일하는 방법을 배울 수 있는 유일한 방법은 아주 열심히 일하고 지름길이 없다는 것을 아는 것입니다. 그리고 마침내 스마트한 것이 무엇인지 알게 되면, 스마트하게 일하고 열심히 일하면 훨씬 더 나은 결과를 얻을 수 있습니다.

Lex Fridman (01:07:39) 저는 거기에는 깊은 뜻이 있다고 생각합니다.

ThePrimeagen (01:07:42) 우리 사회에는 나를 미치게 하는 이런 문구가 많이 있습니다.

Lex Fridman (01:07:45) 그러나 그건… 죄송하지만, 그건 저도 정말 귀찮아서 그냥 넘어갈 수 있다면 정말 받아들일 수 있습니다. 그래서 하나는 정말 좋은 말씀이신데, 일이 쉬워야 하고 쉬운 길을 보지 못하면 실패자라는 가정이 있습니다. 그것은 일종의 암시적인 것입니다.

ThePrimeagen (01:08:02) 똑바로 일해, 왜 그렇게 많은 시간을 투자해?

Lex Fridman (01:08:05) 그래서 힘들어하는 많은 사람들이 제가 그것을 보지 못해서 자신이 실패자라고 느끼게 되죠. 그리고 나서 그들이 할 수 있는 선택은 그냥 게으름을 피우면 심오한 진실이 어떻게든 저에게 다가올 것입니다. 그리고 네, 저는 극도로 노력하지 않고도 현명한 방법을 찾아내는 훌륭한 엔지니어를 만난 적이 없고 앞으로도 만나지 못할 것 같아요. 그런 위대한 엔지니어들의 짜증스러운 점은 그들이 효율적이고 스마트한 방법을 찾아내서 지금 경험하고 있는 모든 기쁨을 기억하기 때문에 힘든 일을 잊어버린다는 것입니다. 그들은 잊어버립니다. 그래서 그들은 조언을 할 때 그냥 쉬운 방법대로 하라는 어리석은 조언을 합니다.

(01:08:53) 그리고 여기 쉬운 방법이 있습니다. 하지만 시간을 투자해야 합니다. 악기는 기타와 피아노가 좋은 예입니다. 저는 몇 천 시간을 투자했는지 모르겠습니다. 주짓수에 대해서도 설명하다 보면 주짓수에서 긴장을 푸는 사람처럼 들리기도 하죠. 그런데 그냥 긴장을 푸는 것은 피아노와 같은 육체적 노력에 정말 멋진 일입니다. 하지만 손을 이완하는 방법, 마음과 몸을 이완하는 방법, 신체의 생체 역학을 이용해 정확한 지렛대와 타이밍을 적용하는 방법 등을 배우려면 수천 시간의 학습이 필요합니다. 긴장을 푸는 방법을 배우는 것만으로도 정말 많은 노력이 필요합니다. 주짓수에서는 울면서 집으로 돌아가는 버스를 탈 때까지 수개월 동안 엉덩이를 계속 맞아야 합니다.

(01:09:55) 당신의 자존심은 완전히 산산이 부서지고 파괴됩니다. 그러다가 그날 밤 늦게 또는 다음 날 아침에 작은 요소를 알아냅니다. 그리고 우울증에서 통찰력이라는 꽃을 피우는 작은 식물이 자랍니다. 그리고 그 통찰력을 바탕으로 다음 달과 다음 해에 또다시 열심히 일하게 되죠. 그리고 계속 성장하고 성장하고 또 성장합니다. 그러다 보면 주짓수나 유도가 얼마나 단순한지, 피아노나 기타가 얼마나 아름다운지 발견하게 되죠. 심오한 진리나 기술의 숙달은 마침내 도달했을 때 단순하게 느껴지지만, 대부분의 사람들에게 그 길은 어려운 길이 될 것입니다.

ThePrimeagen (01:10:46) 문구를 부록으로 넣어야 할 것 같아요, 열심히 일하고 똑똑해지세요라는 문구를 넣어야 할 것 같아요.

Lex Fridman (01:10:54) 예, 동의합니다. 그래, 그건 접선 중의 접선이었어요.

ThePrimeagen (01:10:57) 내가 정말 싫어하는 문화적 표현을 하나 더 말해도 될까요?

ThePrimeagen (01:11:01) 여정이 목적지보다 낫다. 누구나 들어봤을 법한 말입니다. 1초만 시간을 내어 이 말이 무엇을 의미하는지 생각해 보세요. 지금부터 영원히 더 나쁜 곳을 향해 가고 있다는 뜻입니다. 말 그대로 그런 의미입니다. 여정을 즐기고, 목적지를 축하하고, 그렇게 되어야 하지만 그렇지 않습니다. 사람들은 어디에서나 이런 말을 합니다. 논리적 한계가 없는 매우 얄팍한 문구들입니다. 여정이 왜 목적지보다 더 중요할까요? C.S. 루이스의 말을 인용하자면 ‘아니, 이건 정말 끔찍하다’라고 말할 수도 있을 것 같습니다. 사실 여정은 목적지보다 낫지 않습니다.

Lex Fridman (01:11:43) 동기부여 포스터가 마음에 들어요. 진전, 아무데도 가지 않더라도 앞으로 나아가는 것이 뒤로 물러나는 것보다 낫습니다. 많은…

ThePrimeagen (01:11:54) 몇 년 동안 캘리포니아에 있는 것이 너무 고통스럽습니다.

Lex Fridman (01:12:00) 긍정, 오늘 안 되더라도 내일 다시 시도할 테니 걱정하지 마세요. 정말 멋진 포스터가 많네요

ThePrimeagen (01:12:12) Hey. 안녕하세요, 더프라임에이젠입니다. 이번 팟캐스트에서 깜빡 잊고 있었던 한 가지는 제 인생에서 엄마가 얼마나 큰 역할을 했는지에 대한 이야기입니다. 아버지가 돌아가신 후 어머니는 하루에 18시간씩 일하셨어요. 어머니는 정말 우리 집이 먹고 살 수 있게 해주셨어요. 저는 항상 어머니를 존경했고 항상 대단하다고 생각했어요. 그리고 제가 다시 일을 시작하기로 결심했을 때, 어머니를 자랑스럽게 해드리고 싶었기 때문에 어머니는 제가 계속 일할 수 있는 내적 영감의 원천이 되어주셨어요. 그리고 지난 몇 년 동안 정말 열심히 노력해 온 그녀에게 제가 정말 감사하다는 것을 알려주고 싶었어요. 그래서 감사하다는 말을 전하고 싶었어요. 사랑해요, 엄마.

Netflix

Lex Fridman (01:12:55) 모르는 분들을 위해 설명하자면, 넷플릭스에서 일하셨죠.

Lex Fridman (01:13:00) 그런데, 그런데요. 자, 앞서 말씀드린 어려움, 투쟁, 중독 등을 거쳐 어떻게 이 멋진 엔지니어링 회사에서 일하며 멋진 작품을 만드는 자리에 오르게 되었나요? 넷플릭스의 이야기를 들려주세요.

ThePrimeagen (01:13:21) 네, 제가 앞서 말씀드린 것처럼 스타트업을 하고 싶어서 1년, 2년, 2년 반 동안 스타트업을 만들었습니다. PHP, jQuery, 모두가 좋아하는 언어가 모두 모여 있습니다. jQuery로 수학 문제도 풀 수 있죠. 그래서 저는 쉬지 않고 그 일에 몰두했죠. 이것이 바로 스택 오버플로의 절정입니다. 저는 스택 오버플로에서 ‘무엇이 더 피타고라스적인가’ 같은 정말 바보 같은 질문을 했어요. 그리고 나서 많은 표를 받고 업보를 훔치려고 하는 등 재미있는 일들을 많이 했죠. 좋은 시간이었죠. 저는 숨 쉬는 것에 너무 빠져서 숨을 들이쉬고 내쉬고 매일 하루 종일 그렇게 했어요. 그래서 마치 스타트업을 쉬지 않고 만드는 것과 같습니다. 결국 그 스타트업은 실패했고 저는 진짜 직장을 구해야 했습니다.

Lex Fridman (01:14:06) 시작 시각을 말씀해 주시겠습니까?

ThePrimeagen (01:14:08) 과거를 생각하면 정말 황당합니다. 그 내용을 말씀드리기 전에 제 아버지에 대해 한 가지 간단히 말씀드리고 싶습니다. 90년대 초반인 91년, 92년에 아버지는 장거리 통화권을 선구매할 수 있는 일종의 전화 카드 회사를 설립하셨어요. 90년대를 기억하신다면 97년, 98년, 99년, 10-10-220년쯤에 장거리 통화권을 선구매할 수 있는 회사들이 많이 생겨났고 굉장히 큰 규모를 자랑했죠. 그래서 아버지는 6년이나 일찍 그 개념을 받아들이셨고 결국 창업은 실패했습니다. 하지만 아버지는 특히 통신 분야에서 정말 큰 인기를 끌 수 있는 무언가를 일찍 발견하셨죠.

(01:14:51) 저는 성장해서 스타트업을 할 때 문자 메시지 마케팅을 하는 스타트업을 했어요. 2010년이었는데, 그때는 다양한 딜에 대한 정보를 문자로 받아볼 수 있었죠. 물론 10년이 지난 지금도 문자는 끊이지 않고 문자 메시지 마케팅은 대세입니다. 저 역시 아버지가 텔레마케팅 분야에서 스타트업을 운영하셨던 것처럼 반세기 정도 일찍 이 분야에 뛰어들었습니다.

Lex Fridman (01:15:15) 자신은 거의 항상 시대를 앞서가는, 일종의 선구자라고 해도 과언이 아닌가요?

ThePrimeagen (01:15:20) 아니요, 사실 저는 시대를 앞서간 것이 아닙니다. 어떤 사람들은 제가 운이 나빴다고 말하기도 하죠. 하지만 제가 그 일을 할 당시에는 휴대폰의 80 %가 멍청한 전화기였던 것 같습니다. 대부분의 사람들이 플립폰을 가지고 있었죠. 제가 가서 비아 텍스트를 판매했을 때 그 특정 제품의 이름이 무엇이었는지입니다. 비아 텍스트라는 짧은 코드도 있었기 때문에 6자리라는 꽤 영리한 코드였죠. 제가 나가서 팔았을 때 그 당시에는 플립폰만 가지고 있었어요. 스마트폰은 많은 사람들이 사용할 수 없었기 때문에 저는 스마트폰도 가지고 있지 않았어요. 생각해보면 정말 대단한 시절이었죠.

(01:15:56) 그런 다음에는 당연히 진짜 직장을 구해야 했죠. 몬태나 주 보즈먼의 캠퍼스 바로 옆 아파트에 살고 있었어요. 그리고 우리 아래층에 사는 남자는 마약을 어느 정도 했나 봐요. 그는 우리를 죽이겠다고 여러 번 협박하고 소리를 지르며 항상 이성을 잃었죠. 아주 제정신이 아닌, 화난 아랫집 남자를 우리는 그렇게 불렀죠. 한번은 아내가 더블 A 배터리를 떨어뜨린 적이 있어요. B 배터리나 D 배터리를 말하는 게 아니에요. 그냥 더블 A 건전지를 떨어뜨리고 바닥에 엎드리면서 “죽여버릴 거야”라고 말하는 거죠. 정말 미친 듯이 정신이 나간 행동이었죠. 그래서 전 진짜 직장을 구해야 했고 우린 그곳을 떠나야 했어요. 새로운 삶을 시작하려고 했죠.

(01:16:34) 그래서 작은 회사에서 일했는데 [01:16:38] 거기서 지루하다고 얘기한 적이 있어요. 웹파일링이라는 곳으로 옮겼는데 그곳에서 엄청난 시간을 일했어요. 그 시간 동안 저는 여전히 스타트업을 알아내기 위해 노력하고 있습니다. 친구의 생일 메시지를 미리 작성해두면 자동으로 페이스북을 통해 전송해주는 서비스를 만들었어요. 저희는 이를 Greet Feed라고 불렀습니다. 꽤 영리했죠. 그럼에도 불구하고 제가 이런 이야기를 하는 이유는 제가 하던 모든 일이 탐색하고, 만들고, 일을 마무리하고, 일하고, 회사 생활을 배우고, 회사 생활에서 소통하는 방법을 배우고, 직장에서 성공하고, 우리가 다루는 여러 기술에 대해 배우는 것이었기 때문입니다.

(01:17:13) 그날, 특히 2013년의 큰 기술 중 하나는 RXJS였는데, 기억하시겠지만 C#에서 JavaScript로 이식된 링크인 RxJS가 바로 그것입니다.

Lex Fridman (01:17:25) 모르는 분들을 위해 설명하자면, C-sharp와 가장 가까운 이웃은 무엇일까요? Java입니다. Is Java-

ThePrimeagen (01:17:30) 그들은 분명히 한때 자바를 가져다가 찢어 버렸지만 지금은 너무 역동적이고 흥미로운 언어여서 실용적인 것과 실용적이지 않은 것의 경계가 정말 멋진 것 같습니다. 다만 저는 주름진 바지를 입고 Microsoft 집에서 프로그래밍을 하는 것은 별로 좋아하지 않아요.

ThePrimeagen (01:17:54) 어쨌든 웹파일링은 제가 모든 행렬 작업을 하고 시스템을 구축해야 하는 곳이었어요. 게다가 주당 60시간을 일해야 했기 때문에 정말 힘들었어요. 일과 삶의 균형이 잘 맞지 않았죠. 정말 힘든 일이었죠. 최첨단 기술을 익히고 세상을 이해하는 데 정말 열심히 노력한 덕분에 우리가 만들고 있는 UI를 위해 매우 복잡한 상태 머신을 구축해야 했기 때문에 매우 당당하게 이야기할 수 있었습니다. 그래서 제가 링크드인 등을 시작했을 때, 이 모든 기술을 접해봤고 이런 기술이나 Microsoft를 접해봤다는 일종의 서류상의 흔적이 있었기 때문에 필연적으로 이런저런 일을 할 수 있었죠. 젠장, 렉스

ThePrimeagen (01:18:36) 플리츠 팬츠가 손을 내밀었습니다. 아니, 넷플릭스에서 연락이 와서 “이봐요, RxJS를 해보셨군요. 저희도 많이 하거든요. 저희와 인터뷰하고 싶으세요?”라고 말했어요. 저는 항상 손으로 직접 쓴 인터뷰 초대는 절대 거절해서는 안 된다고 들었습니다. 봇이 등장하기 훨씬 전의 일이고 심지어 봇도 봇이라는 것을 알아볼 수 있었으니까요. 넷플릭스의 매니저였던 제프 와그너는 최초의 매니저였습니다. 그는 정말 멋진 메모를 써서 “이봐요, 이런 일들을 많이 하고 있군요. 자바스크립트에 대한 도움이 정말 필요해요. 인터뷰에 와주셨으면 좋겠어요. 관심이 있으시다면 저희도 RxJS를 많이 사용하고 있으니까요.” 그래서 저는 알았다고 대답하고 면접을 보러 가겠다고 했습니다. 그런데 면접이 진행되었고 면접 도중에 아내에게 전화를 걸었는데, 저는 패배감에 완전히 무너져 버렸습니다.

(01:19:28) 그리고 그녀는 이 말을 기억할지 모르겠지만 저는 “이제 우리는 결정을 내려야 합니다. 정말 캘리포니아로 이사할 건가요, 말 건가요?”라고 물었죠. 그 당시에는 이미 직장이 있다는 것을 알고 있었기 때문입니다. 저는 그냥 공원에서 그들을 밀어내고 있었어요. 저는 그 일을 아주 잘 해내고 있었죠. 그래서 저는 넷플릭스에 취직할 거라는 사실을 확실히 알았죠. 사람들이 면접을 볼 때 항상 겁을 먹는다는 게 있어요. 저는 운 좋게도 이런 상황을 피할 수 있었어요. 저는 시험에 대한 불안감도 없고, 이런 상황에 처했을 때 제가 이미 알고 있는 것을 보여주는 것이 유일한 목표이기 때문에 그런 불안감을 느끼지 않아요. 그래서 저는 지난 5년 동안 일주일에 80시간씩 이 상황을 준비해 왔어요. 그래서 그냥 들어가서 제가 아는 것을 보여줄 뿐입니다.

(01:20:08) 2013년 초기 자바스크립트 시절의 넷플릭스에 딱 맞는 시간대였죠. 그래서 정말 멋지고 완벽하게 맞아떨어졌죠. 그곳에 고용되었습니다.

Lex Fridman (01:20:19) 저희는 넷플릭스와 함께 캘리포니아에 있습니다. 여기는 샌프란시스코입니다.

ThePrimeagen (01:20:22) 로스 가토스. 샌프란시스코, 오클랜드, 산호세, 로스 가토스는 산호세에서 조금 남쪽에 있는 도시로, 같은 거대 인접 도시입니다.

Lex Fridman (01:20:39) 옐로스톤은 몬태나주, 옐로스톤에 있는 쇼입니다. 케빈 코스트너가 말을 타는 게 기본인가요? 말을 타고 캠퍼스까지 오셨나요?

ThePrimeagen (01:20:48) 아니요, 하지만 저는 그런 고정관념을 좋아합니다. 사실 완전히 공정하게 말하자면, 15살 때 저는 22구경 권총으로 차창 밖으로 고퍼를 쏘며 지금은 매우 붐비는 인구 밀집 지역을 운전하고 다녔어요. 몬태나는 지금과는 전혀 다른 곳이었어요. 그리고 몬태나에는 여전히 시골 지역이 많고 옛날의 모습을 간직한 곳이 많아요. 그래서 몬태나에서 원하는 것은 무엇이든 얻을 수 있습니다. 문화적인 면에서는 캘리포니아와 몬타나의 차이를 가장 잘 설명할 수 있는 방법은 잘 모르겠습니다. 기대치가 다를 뿐이죠. 제가 캘리포니아에 대해 정말 감사할 수 있는 한 가지는 적어도 캘리포니아라고 하면 실리콘 밸리를 말하는 것입니다. 왜냐하면 분명히 LA와 실리콘 밸리는 매우 다른 태도, 매우 다른 사고방식을 가지고 있기 때문입니다. 서로를 비교할 수는 없습니다.

(01:21:38) 밸리에 대해 정말 긍정적으로 말할 수 있는 한 가지는 모든 사람들이 무언가를 구축하거나 창조하려는 아이디어로 운영되고 있으며 매우 흥미로운 에너지가 있다는 점입니다. 누군가를 만나면 그 사람이 스타트업을 하고 있고 그 스타트업을 위해 일하고 있습니다. 정말 신나는 일이죠. 물론 부정적인 측면도 많이 있고, 우리 모두는 상업화되는 삶이 그렇게 좋지는 않았다는 데 동의할 수 있습니다. 하지만 모두가 무언가를 만들어내는 것에 흥분하고 있다는 경험은 정말 멋진 경험입니다.

Lex Fridman (01:22:06) 예, 정말 멋지죠. 흥분과 에너지가 넘치네요.

Lex Fridman (01:22:11) 나는 옐로스톤 같은 자연 속에서 펼쳐지는 쇼에 대한 낭만적인 동경을 가지고 있어요. 정말 아름다워요. 저는 말 타는 걸 좋아해요. 누군가는 레딧이 당신에 대한 지혜로 가득 차 있다고도 했어요. 일부는 가짜 뉴스일 수도 있지만 말과 이런 종류의 것에 관한 것이죠. 말을 좋아하고 말 타기를 좋아하시나요?

ThePrimeagen (01:22:28) 우리는 말을 타고… 이웃집은 훨씬 더 언덕이 많은 땅이었는데 말 한 마리가 다리를 다쳐서 내려놓아야 했어요. 그래서 우리는 “이봐요, 우리는 훨씬 더 평평한 땅에 있어요. 우리 부지에서 말을 키우세요.”라고 말했죠. 그래서 저희는 말들이 우리…

Lex Fridman (01:22:44) 젖소 젖 짜는 것은 어떨까요? 누군가 소와 젖소에 대해 질문했습니다.

ThePrimeagen (01:22:50) 그래서 저는 열린 소만 먹었죠. 모르는 분들을 위해 설명하자면, 소는 암소를 의미하고, 오픈은 소를 임신시키려고 시도했다는 뜻입니다. 소는 첫 번째 시도에서 임신하지 못했습니다. 그래서 그들은 그 유전자를 호출하고 그 유전자를 제거하고 있습니다. 이제 임신한 소는 1년 동안 목초지로 나가서 맛있는 티본 스테이크와 다양한 재료로 만들어질 것입니다. 그래서 저희는 우리 부지에 열린 소를 키우게 됩니다. 그래서 열린 젖소의 젖을 짜는 일은 없습니다.

ThePrimeagen (01:23:16) 젖을 짜는 소가 아닌데 젖을 짜려고 하면 매우 화를 낼 겁니다. 그 젖소를 임신시켜야 합니다. 그리고 일단 임신을 시키면 젖을 계속 짜는 상태로 만들어야 하죠. 그냥 소가 풀을 먹고 있고 제가 소를 만질 필요가 없었던 우리가 했던 일보다 조금 더 복잡합니다.

ThePrimeagen (01:23:36) 레딧은 나에 대한 지혜를 얻을 수 있는 좋은 곳이 아닙니다. 그들은 당신에게 가장 미친 답변을 줄 것입니다.

Lex Fridman (01:23:41) 레딧으로 다시 돌아올 겁니다, 친구. 네, 넷플릭스에 뛰어들었군요. 어땠나요?

ThePrimeagen (01:23:52) 이것에 대해 이야기하면 사람들은 마치 송곳니 회사에 들어가서 큰 도약을 하는 것처럼 사소하게 생각하곤 합니다. 그리고 2013년에는 굉장히 위험하게 들렸죠. 제 아내는 임신 36주였어요. 우리는 아무도 모르는 곳으로 여행을 떠나야 했어요. 첫 아이를 곧 낳을 예정이었죠. 의사도 없었어요. 아기를 갖는 것이 어떤 것인지 모른다면 의사와의 관계를 원하게 되죠. 거기에는 모든 게 다 있죠. 그래서 정말 힘들고 좋은 경험이었습니다. 그래서 저는 넷플릭스의 문화가… 이 시기에는 넷플릭스가 여전히 오래된 X세대의 느낌을 가지고 있었습니다. 넷플릭스의 문화는 빨리 뽑고 빨리 해고하는 것이었습니다. “이봐요, 우리 회사 운영 방식은 이렇습니다. 기준을 충족하지 못하면 쫓아내버린다”는 식이었죠.

(01:24:39) 그래서 저는 아무도 모르는 곳으로 가는 것이 더 안전한 곳을 떠나, 막 아기를 낳으려는 아내를 둔 모든 사람을 해고하는 대담한 주장을 하는 직장으로 가는 것이나 마찬가지입니다. 그리고 저는 몬태나 출신이고 모든 몬태나 사람들은 캘리포니아에 대한 선천적 혐오감을 가지고 태어납니다. 그래서 이런 모든 것들이 흘러들어와서 ‘와, 이건 정말 강렬한 경험이다’라는 생각이 들었어요. 확실히 힘들었죠. 그냥 ‘아, 내가 지금 팡에서 일하고 있구나’라고 생각하며 쉽게 끝낼 수 있는 일이 아니었죠. 모든 걸 극복해야 했죠. 아이를 갖는 것은 매우 어려웠어요. 첫 아이는 정말 힘들었어요. 주변에 도움을 줄 가족이 없다는 것은 저보다 아내에게 훨씬 더 큰 타격을 주었죠.

Groovy

Lex Fridman (01:25:23) 기술 학습 곡선은 어땠나요? 격자무늬 바지를 입고 차려입고 나타나셨나요?

Lex Fridman (01:25:30) 스택에 대해 무엇을 배워야 했나요? 넷플릭스는 엄청난 인프라를 갖추고 있기 때문이죠. 엄청난 양의 데이터를 전송해야 하거든요. 저는 넷플릭스뿐만 아니라 유튜브도 놀랐습니다. 엄청난 양의 비트를 전송해야 하는 이 회사들은 엄청난 양의 비트를 제공합니다.

ThePrimeagen (01:25:55) Netflix가 가장 쉽습니다. 모든 회사 중에서 넷플릭스가… 조회 시간에서 YouTube를 이겼다고 말할 수도 있지만, 그럴지는 잘 모르겠지만 그냥 넷플릭스의 조회 시간이 YouTube보다 5배 더 많다고 가정해 봅시다. 그것이 무엇이든, 넷플릭스는 다른 모든 회사보다 근본적으로 쉬운 문제를 가지고 있습니다. 다시 본론으로 돌아가 보겠습니다. 먼저 스택에 대해 말씀드리고, 왜 스택이 근본적으로 더 쉬운 문제를 가지고 있는지 말씀드리겠습니다. 처음 입사했을 때 회사에서 제게 플레이스테이션 3를 줬어요. 제 상사가 “가서 코드 좀 배워와. 며칠 후에 다시 돌아와서 배운 것을 말해줘. 그리고 나서 고쳐야 할 버그를 알려주겠다.”라고 말했죠.

Lex Fridman (01:26:27) 플레이스테이션 3, 무슨 말씀이세요?

ThePrimeagen (01:26:30) 저는 TV 팀에 있었어요. 플레이스테이션을 연결하고 플레이스테이션 3에서 프로그램을 실행하고 텔레비전 기기에서 넷플릭스를 작동하는 방법을 알아내야 했죠.

Lex Fridman (01:26:38) 오, 다른 종류의 기기를 가지고 계시군요. 플레이스테이션 3는 왜 다른 기기와 다른가요-

ThePrimeagen (01:26:43) 지금 2013년이죠. 그게 당신이 가진 것입니다.

Lex Fridman (01:26:44) TV에 연결할 수 있는 기기가 있나요? 네, 좋아요.

ThePrimeagen (01:26:46) 네, 새로운 애플리케이션인 다윈 앱은 말할 것도 없고 넷플릭스가 있는 TV는 많지 않았습니다. 따라서 그해 초에 VIZIO를 구입했다면 이전 버전이 제공될 것입니다. 플러스 UI라고 합니다. 이전 버전을 사용하게 됩니다. 그래서 최신 버전을 사용하는 사람은 많지 않았습니다. 저희는 더 이상 플러스를 지원하지 않았고, 플러스에서 적극적으로 개발하지 않고 다윈에서만 작업했습니다. 그래서 저는 전체 스택, 백엔드 또는 미들엔드, 실제 백엔드와 프론트엔드 사이의 중간 계층이 Groovy로 작성되어 있다는 것을 배워야 했습니다. 그리고 제가 돌아다니면서 느낀 것은 Jenkins에 익숙하지 않다면 Groovy를 접해본 적이 없다는 것입니다. 하지만 Groovy는 JVM 언어입니다. 매우 흥미로운 언어인데, 넷플릭스에서 이 언어가 어떻게 사용되기 시작했는지는 다음과 같습니다.

Lex Fridman (01:27:30) 오, Apache입니다. Apache Groovy는 2007년에 출시된 Java 가상 머신에서 실행되는 강력한 객체 지향 프로그래밍 언어입니다. 정적 및 동적 타이핑 기능을 모두 결합한 다목적 언어로 발전했습니다.

ThePrimeagen (01:27:43) 그래요, AI가 거짓말을 하고 있군요. 그루비는 강력하고 훌륭한 언어가 아닙니다. 그 문장은 실제보다 훨씬 더 멋지게 보이게 합니다. 그루비를 접해본 사람 100명 중 한 명은 “그래, 그루비는 대단해”라고 말할 것입니다. 나머지 99명은 “저런 언어는 절대 만지면 안 돼”라고 말할 겁니다. 그래서 제가 그곳에 도착했을 때 넷플릭스의 40여 명의 엔지니어 중 누구도 그루비가 어떻게 작동하는지 전혀 몰랐어요. 어떻게든 사람들이 이 스크립트를 해킹해서 거기에 넣으면 작동했습니다. 그리고 이것은 그루비 RX 포트가 있기 전의 일이었습니다. 저희는 WX라는 자체 버전을 만들었습니다. 악몽 같았어요. 관찰할 수 있는 모든 것들이 있었죠. 한 번은 사람들이 저에게 “그래요, RX를 사용하면 정말 쉬워요. 해야 할 일을 말하기만 하면 되죠. 매핑이 되고 쾅, 쾅, 모든 것이 실행됩니다.” 라고 말했죠. 저는 “와우, 정말요?”라고 생각했죠.

(01:28:33) 그래서 저는 그냥 잠자는 것을 보고 다음 작업을 하고 싶었기 때문에 관찰 가능한.sleep 1처럼 갔을 뿐입니다. 그리고 스레드가 스스로 잠들면 어떤 스레드도 깨울 수 없다는 것이 밝혀졌습니다. 그리고 스테이징을 10번 정도 실행해서 모든 스테이징을 꺼버렸어요. 응답하지 않아요. 오, 응답하지 않습니다. 이제 다시 돌아오지도 않아요. 모두를 위해 모든 스테이징을 망쳤어요. 사실 멀티 스레드가 아닌 것으로 판명되어 모든 인스턴스를 잠궜기 때문에 오후 내내 개발자가 작업을 할 수 없었습니다. 우리가 들었던 모든 가정은 거짓이었습니다. 아무도 자신이 무엇을 하고 있는지 전혀 몰랐죠. 정말 정신없는 시기였죠. 그래서 저는 디버깅을 프린트 오프하는 데 능숙했기 때문에 자연스럽게 그쪽으로 끌렸을 뿐입니다. 저는 그런 일을 잘하거든요.

(01:29:12) 그래서 저는 ‘그래, 여기서 해결해 보자’고 생각했습니다. 이렇게 하겠습니다. 그래서 TV 프런트엔드에서 데이터 구조를 LoLoMo, 즉 영화 목록 목록에서 영화 추천 개체 목록인 LoLoRoMo로 다시 작성했습니다. 왜 그렇게 해야 할까요? 생각해 보세요. 하나는 브루스 윌리스가 좋아서 브루스 윌리스 라이브 프리 다이 하드, 브루스 윌리스가 있는 목록이 두 개 있습니다. 다른 하나는 힘든 일을 하는 터프한 남자를 원하기 때문에 가 있습니다. 그 당시에는 왜 그런 영화를 원하는지 증거를 보여줄 수 있는 방법이 한 가지밖에 없었습니다. 그래서 “아, 다른 영화를 좋아하셔서요”라고 말할 수 없었어요. 그 영화에 가서도 똑같은 말을 할 테니까요. 그래서 추천 정보로 동영상을 꾸밀 수 있는 한 단계의 간접적인 방법을 추가해야 했습니다.

Lex Fridman (01:29:52) 오케이. 추천의 공간과 영화의 공간으로 직접 추상화할 수 있습니다.

ThePrimeagen (01:29:56) 예. 그러면 분명히 같은 동영상을 보여주는 모든 동영상에 동일하게 적용될 것이기 때문에 동영상에 걸 수 없습니다.

ThePrimeagen (01:30:02) 이 모든 작업을 Groovy로 작성했고 그냥 해냈어요-.

ThePrimeagen (01:30:06) 그리고 사람들은 “이걸 어떻게 그루비로 작성했죠?”라고 물었습니다. 그래서 저는 “하루 동안 언어 레퍼런스를 읽은 다음 프로그래밍했습니다.”라고 대답했죠. 무슨 뜻이죠? 아주 급진적인 언어였다고 할까요? 그래서 저는 그저 이런 것들을 아는 사람이 되었고, 회사에서는 점점 더 많은 일을 제게 주었습니다. 그래서 저는 남들이 하지 않는 일을 기꺼이 하는 사람으로서 탁월함을 발휘할 수 있었습니다.

Printf() debugging

Lex Fridman (01:30:28) 예. 실제로 프린트 오프 디버깅에 대해 설명해 주세요. 시스템에 들어가면 세상에는 이런 시스템이 많이 있습니다. Elon이 트위터를 인수했을 때 트위터는 이런 식이었는데, 오래된 정크 코드 베이스가 엉망진창이 되어 있어서 기본적으로 프린트 오프 디버깅을 해야 했죠. 코드 베이스로 들어가서 도대체 뭐가 뭔지 알아내는 과정은 어떻게 되나요? 어떻게 작동할까요? 결함은 무엇인가요? 가정은 무엇인가요? 과거에 다른 엔지니어들이 몇 달, 몇 년에 걸쳐 엉망으로 만든 것을 리버스 엔지니어링해야 하고, 개선하기 위해 이 모든 것이 어떻게 작동하는지 파악해야 합니다.

ThePrimeagen (01:31:06) 학교 다닐 때 처음으로 얻은 부업 중 하나가 정부를 위해 로봇을 만드는 일이어서 항상 인쇄 디버깅에 능숙했습니다. 그래서 일주일에 몇 시간씩 계약직으로 이 일을 하곤 했죠. 제 상사였던 헌터 로이드는 훌륭한 교수였는데, 그는 “여기 컴퓨터와 로봇을 여기에 연결하고 이렇게 하면 됩니다. 코드를 실행하는 방법은 이렇습니다. 플래시 드라이버와 이더넷 드라이버를 작성할 수 있나요? 유성 팬케이크 모터를 작성할 수 있나요? 여기 설명서가 몇 개 있는데 제가 놓친 게 있어요. 알아서 해봐요, 금방 올게요.” 그게 제게는 정부 업무였습니다. 그래서 저는 ‘알았어요, 이 모든 것을 알아내겠습니다. 그리고 모든 것을 알아냈고 실제로 기계에서 무언가를 얻을 수있는 유일한 방법은 인쇄하는 것이 었습니다. 그래서 문제를 해결하려면 인쇄를 정말 잘해야만 했죠. 그래서 많은 문제를 해결하면서 디버깅을 인쇄해서 해결할 수 있는 기술을 익히게 된 것 같아요.

(01:31:56) 분명히 저는 게임 개발자가 아니므로 아마 다른 세상을 사용해야 할 것입니다… John Carmack이 여기에 나와서 디버거가 얼마나 훌륭한지, 다른 세상에 대해 이야기한 것 같아요. 넷플릭스에 있을 때는 AWS 어딘가에 존재하는 머신에 로그인하지 않았거든요. 심지어 로그인하는 방법도 몰랐죠. 심지어 로그인할 수 있는 자격 증명이 있는지도 잘 모르겠어요. 어딘가에서 한 번 실행되면 무슨 일이 일어났는지, 왜 그런 일이 일어나는지 알아내야 합니다. 그래서 저는 마치… 제가 훈련받은 대로 이렇게 될 것 같아요. 저는 프린트 오프 디버깅 챔피언입니다. 그래서 이런 일들을 정말 빠르게 처리하고 왜 이런 일이 발생하는지 알아낼 수 있는 것 같아요.

Lex Fridman (01:32:26) 당신은 특별한 사람입니다. 어떤 코드 베이스에 들어가서 어떤 상황에서도 디버깅을 할 수 있다는 것은 대단한 기술이라고 생각합니다. 어두운 방에 들어가서 그 방이 어떤 곳인지 파악하기 위해 방을 둘러보고 있다는 뜻입니다.

ThePrimeagen (01:32:40) 코드가 있어서 무슨 일이 일어나고 있는지 어느 정도 청사진을 그릴 수 있는 것 같네요. 서비스 등에 대해서는 잘 모르지만 무엇이 잘못되었는지 금방 짐작할 수 있습니다.

Lex Fridman (01:32:48) 오른쪽. 하지만 인쇄물을 통해 직관을 확인하고, 직관을 테스트하고, 점점 더 많은 정보를 쌓을 수 있습니다. 그런 다음 시스템을 망가뜨리는 에지 케이스가 무엇인지, 그렇지 않은 에지 케이스가 무엇인지 더 큰 그림을 축적하기 시작합니다. 많은 엔지니어들이 이런 상황에 직면하면 겁을 먹습니다. 그 지점에서 그들은 무너집니다. 코드 기반에 들어올 수 있다는 것은 정말 대단한 일이라고 생각하는데, 일반적으로 처음부터 시작하는 사람은 극소수에 불과합니다. 사실 이것은 웹 개발의 근본적인 문제이며, 일반적으로 웹 개발자들은 ‘무슨 일이 일어나고 있는지 모르겠다. 저는 처음부터 직접 작성하려고 합니다. 이 코드 베이스에는 이미 많은 지혜와 해결된 문제가 있기 때문에 언어의 공간, 문제의 공간에서 실제로 인쇄 오프 디버깅을 수행하는 것과는 대조적입니다.

(01:33:50) 모든 것을 버리고 처음부터 다시 시작하는 것보다 앞서간 선조들의 실수와 과거의 지혜를 이해하고 그 위에 구축하는 것이 훨씬 더 중요한 스킬셋이 될 수 있습니다. 이것은 분명히 자바스크립트 프레임워크에서 많이 볼 수 있고 매일 매일 승리하는 것입니다.

ThePrimeagen (01:34:12) 다른 개발자를 바라보는 저의 관점이 가장 크게 형성된 것 같은 아주 멋진 이야기가 있습니다. 어떤 개발자가 있었는데, 그는 항상 제가 생각하기에 정말 기괴하고 이상한 방식으로 글을 썼는데, 이것이 바로 팔코와 관련이 있었습니다. 넷플릭스를 위한 데이터 가져오기 라이브러리를 모바일에서 실행해야 했죠. 그래서 저는 Objective-C로 작성해야 했습니다. 텔레비전에서도 실행되어야 하고 웹에서도 실행되어야 했죠. 그래서 모든 기기에서 실행되어야 했습니다. 저와 다른 한 명이 이 작업을 담당했습니다. 그리고 이미 가지고 있는 정보, 보류 중인 요청, 새로운 데이터의 중복성을 제거해야 하는 요청 측면도 담당했습니다.

(01:34:45) 그래서 저는 누군가가 요청하는 내용을 바탕으로 모든 것을 파악한 다음 우리가 가지고 있지 않은 것만 최적으로 요청해야 했습니다. 그는 정말 엉뚱한 방식으로 글을 썼고 저는 생각했습니다. 이 사람은 정말… 정말 멍청한 사람입니다. 그래서 다 지우고 다시 쓰기 시작했는데 이게 훨씬 더 멋지네요. 너무 좋아 보이네요 오, 저기 엣지 케이스가 하나 있네요. 왜 이런 식으로 썼는지 알 것 같네요. 그래도 큰 문제는 아니에요. 나머지 코드는 정말 훌륭하거든요. 마지막에는 거의 한 줄 한 줄 그가 이미 작성한 것을 그대로 재현한 것 같았어요. 제 스타일과 약간 다르긴 하지만 똑같은 코드를 작성했습니다. 제가 바보 같았죠.

(01:35:20) 이 상황에서는 이미 해결된 문제였기 때문에 제가 멍청한 사람입니다. 저는 그가 한 일을 배우는 데 시간을 할애하지 않았을 뿐입니다. 대신 전체를 다시 작성하여 그가 한 일을 다시 배웠습니다.

Lex Fridman (01:35:29) 저는 그것이 사람들이 배워야 할 매우 중요한 기술이라고 생각합니다. 제 자신도 마찬가지입니다. 예를 들어 코드 베이스를 마주할 때 저 자신도 끊임없이 노력합니다. 하지만 이것은 일반적으로 삶에서도 적용되는데, 누군가 어떤 일을 하기 위해 많은 노력을 기울였다면 엄청난 시간을 투자하여 그들이 무엇을 했는지, 왜 그렇게 했는지 알아내는 데 정말 능숙해져야 합니다. 디버깅을 많이 인쇄하여 그들이 무엇을 했는지 이해해야 합니다. 처음부터 다시 시작하는 것보다 훨씬 더 효율적으로 문제를 심층적으로 이해할 수 있는 방법입니다. 처음부터 다시 시작하고 싶은 유혹이 끊임없이 있지만, 처음부터 시작하는 것은 재미있기 때문입니다. 퍼즐을 풀고 그런 모든 것들을 얻을 수 있습니다. 하지만 그것은 옳은 일이 아닙니다. 일반적으로 고통은 옳은 일이며, 대부분의 사람들은 다른 사람의 코드 기반을 이해하는 것이 고통스럽습니다.

ThePrimeagen (01:36:21) 개념을 이해하고 싶다면 처음부터 시작하는 것을 적극 권장합니다. HTTP 서버가 어떻게 작동하는지 모르겠다면 TCP 소켓을 만들고 HTTP를 구문 분석하는 방법을 배우세요. 매우 쉬워질 것이고, 이것이 제가 요청을 받을 때마다 텍스트를 기다려야 하는 이유입니다. 이제 텍스트가 어떤 이유로든 없는 이유를 알겠네요. 알겠어요. 이제 이해가 되네요. 따라서 단순히 무언가를 파싱하는 것만으로도 새로운 관점을 얻을 수 있습니다.

Falcor

Lex Fridman (01:36:50) 알았어요. 다시 Reddit의 지혜로 돌아가 보겠습니다. 넷플릭스에는 프로그래밍 아크에 대한 밈과 전설이 있는 것 같네요. 말씀하신 팔코르 시스템, 누군지 모르겠지만 티제이였던 것 같은데 이름이 어떻게 발음되나요?

ThePrimeagen (01:37:06) TJ가 그의 이름이 될 수 있지만 우리는 티제이 또는 텔레스코픽 존슨이라고 부릅니다.

Lex Fridman (01:37:10) 오, 와, 이름이 너무 많네요. 디도스, 분산 서비스 거부 공격, 단순화된 버전의 디도스 공격이군요. 그건 전설이죠. 그러니까 기본적으로 시스템을 어떻게든 망가뜨렸군요.

ThePrimeagen (01:37:28) 기꺼이 그러고 싶어요. 팔코라는 회사가 있는데, 제가 다른 사람보다 먼저 버그를 발견하고 보안팀에 신고했는데 정말 심각했어요. 실제로 반발성 그리즐리 공격이라는 자체 이름도 생겼고, 어떻게 하는지에 대한 예시도 나와 있습니다. 사실상 이 버그의 의미는 메모리와 CPU를 모두 대상으로 하는 요청이 있고 이를 파괴한다는 것입니다. 여기까지입니다. 넷플릭스가 어떻게… 다음은 실제로 작성된 기사입니다. 저는 언급되지 않았는데, 제가 이 문제를 발견하고 모든 사람에게 얼마나 나쁜지 알린 사람이라는 점을 고려하면 약간 속상합니다.

(01:38:01) 어쨌든, 수정할 권리가 있었거나 첫 번째 수정이 있었습니다. 그래프QL에서도 이와 비슷한 작업을 할 수 있다고 생각합니다. 같은 종류의 위험이 있습니다. 프레임워크에서 원하는 만큼의 데이터를 요청하는 모든 종류의 RPC는 이러한 종류의 공격에 취약합니다. 따라서 Falcor를 사용하면 배열을 제공하면 됩니다. 이 배열을 경로라고 하며, 이것이 바로 데이터의 경로입니다. 하지만 때로는 영화, 행 0, 목록 0, 행 0 열 0 제목을 쓰고 싶지 않을 때가 있습니다. 행 0 열 0 설명을 원합니다. 이 모든 것을 다 적고 싶지는 않을 것입니다.

(01:38:42) 이 대신 행 010, 열 010, 제목 및 설명을 원한다고 말할 수 있습니다. 따라서 매우 간결하고 멋진 형식으로 작성하면 모든 데이터를 얻을 수 있습니다. 서버로 전송됩니다. 서버가 이 모든 것을 채워서 사용자에게 제공합니다. 아, 젠장, 목록 3개에 동영상이 3개밖에 없네요. 그래서 제가 시도하면 어떻게 되나요?

ThePrimeagen (01:39:00) 셋째, 동영상이 3개만 들어 있었습니다. 그렇다면 데이터를 다시 요청하려고 하면 어떻게 되나요? 데이터를 요청했는데 아무것도 없다는 것을 시스템에 알릴 수 있는 방법이 필요합니다. 이를 박스형 값이라고 부르면 됩니다. 유형, 무언가, 값, 아무것도 없다는 식이 될 것입니다. 이미 요청했지만 아무것도 없습니다. 센티널 값, 박스형 값이라고 할 수 있습니다. 그리고 구체화라는 특별한 플래그 위드 패스가 있습니다. 즉, 사용자가 경로를 요청하면 실수로 아무것도 지우지 않도록 경로를 채워 넣는다는 뜻입니다. 그리고 맨 마지막에 ‘오케이, 요청이 이미 이루어졌고 아무것도 없습니다’라는 메시지가 표시됩니다. 그렇다면 행 0번부터 10,000번까지, 열 10,000번부터 10,000번까지, 항목 하나 더, 그리고 속성 전체를 요청한 다음 구체화하도록 요청하면 어떻게 될까요?

(01:39:49) 자, 이제 JVM에서 수십억 개의 개체를 만들려고 하는데 컴퓨터는 어떻게 되나요? 실행이 중지됩니다. 그리고 나서 JSON으로 만들려고 하면… 쇼핑몰을 만들 수 있다고 해도 JSON 직렬화를 요청하면 안 됩니다. 불가능하죠. 그래서 이 공격 벡터는 단순한 와일드 루프만으로도 넷플릭스를 아주 오랫동안 다운시키고 멈추게 할 수 있었습니다. 한 번의 요청으로 AWS의 컴퓨터 한 대가 다운될 수 있기 때문입니다. 즉, 모든 것을 꺼버릴 수 있다는 뜻입니다. 이게 웹사이트에 있었다고요? TV와 모바일에서도 마찬가지였습니다. 정말 심각한 일이었습니다. 더 심각한 문제는 수년 동안 운영 중이었기 때문에 롤백조차 할 수 없었다는 점입니다. “젠장, 그냥 2주 전으로 롤백해서 앞으로 수정하면서 알아보자”라는 식의 대응은 없었습니다. 아니요, 2011년으로 롤백할 수 있는 것과 마찬가지입니다. 우리가 선택할 수 있는 것은 2011년뿐입니다. 그래서 우리는 앞으로 나아갈 방법을 찾아야 했습니다. 누군가 이 문제를 발견했다면 얼마나 많은 문제가 발생했을지 상상만 해도 끔찍했죠.

Lex Fridman (01:40:55) 동영상을 제공하는 인프라가 종료될 것입니다.

ThePrimeagen (01:41:00) 예, UI에서 어떤 작업도 수행할 수 없습니다. 놀랍게도 동영상을 스트리밍할 수는 있지만 스트리밍할 동영상으로 이동할 수는 없습니다. 모든 동작이 완전히 종료되기 때문입니다. 따라서 한 대의 컴퓨터가 한꺼번에 많은 요청을 보내 시스템을 압도할 필요가 없었기 때문에 디도스가 아니었습니다. 50대의 컴퓨터가 수백만 건의 요청을 처리하는 경우 전체 UI를 종료하는 데 50건의 요청만 있으면 됩니다.

Lex Fridman (01:41:23) 기본적으로 모든 소프트웨어 시스템에서 DoS나 DDoS를 할 수 있지 않을까요 모든 공격 요소를 모두 차단하는 것처럼 방어하는 것은 정말 어려운 일입니다. 충분히 복잡한 소프트웨어 시스템이라면 압도할 수 있는 방법은 너무나도 많을 것입니다.

ThePrimeagen (01:41:42) 예, 이것이 바로 사람들이 CloudFlare를 사용하는 이유입니다. 웹사이트가 있고 외부에 강력한 보디가드가 있는 것과 같다는 HH의 말이 가장 잘 맞는 것 같아요. 그래서 CloudFlare에는 다양한 유틸리티가 내장되어 있습니다. 사람들이 인터넷에 연결되는 모든 블루투스 장치를 싫어하는 이유는 바로 이러한 장치를 사용하여 다른 사이트를 DoS 또는 디도스 공격하는 공격 벡터로 변질되기 때문입니다. 따라서 정교한 기술이 필요하지 않고 요청만 많이 들어오면 웹사이트를 다운시킬 수 있습니다. 그렇기 때문에 이러한 전선에서는 이러한 문제를 발견하는 데 매우 능숙합니다.

(01:42:13) 그러나 DoS는 요청이 많은 리소스를 사용하여 압도적일 필요는 없기 때문에 조금 다릅니다. 단순히 서비스 거부 공격이 발생했다는 의미일 뿐입니다. 그 중 하나는 CloudFlare가 실제로 자체적으로 수행하여 스스로를 종료하는 RegEx 공격이 존재할 수 있으며, 올바른 RegEx가 주어지면 누군가 특정 RegEx를 실행하고 있다는 것을 알고 있다면 실제로 최대로 나쁜 입력을 제공하여 슈퍼 처리로 전환하는 RegEx 확장 공격이 있습니다. 하나의 요청을 처리하는 데 10초가 걸리는데 수백 개의 요청만 하면 전체 서비스를 중단시킬 수 있습니다. 1조 건의 요청을 처리하기 위해 거대한 기계가 필요한 것은 아닙니다. 서비스를 완전히 파괴하는 데는 아주 적은 양만 있으면 됩니다. 그래서… 웹은 올바르게 처리하기가 매우 어려운 곳입니다.

Lex Fridman (01:42:59) 이것은 매우 흥미롭습니다. 또한 좋은 사람과 나쁜 사람에 비해 매우 유능한, 뭐랄까, 블랙 햇 해커가 얼마나 많은지 궁금합니다. 악당은 몇 명이고 평균은 얼마인지… 끊임없이 공격을 시도하는 악당 측의 기술 세트 분포는 어떻게 되나요?

ThePrimeagen (01:43:23) 아마 정말 단순한 스크립트 키티가 엄청 많을 거라고 생각해요, 그렇죠? 그냥 일을 하려는 사람들만 있을 거예요. 그리고 컴퓨터가 아닌 고전적인 방법으로 해킹을 시도하는 엄청난 양의 소셜 엔지니어링이 있습니다. 케빈 미트닉의 책에 이런 예가 나오는데, 누군가에게 전화를 걸어 “샬린, 감사 중인데 핀 번호가 오래된 것 같습니다. 아직도 2323인가요?” 그러면 “아니요, 4747이에요.”라고 대답하죠. “아, 고마워요, 샤론” 이렇게 말하죠. 쾅! 방금 해킹한 거죠? 그렇죠? 고전적인 사람들은 잘못된 정보를 바로잡는 것을 좋아합니다.

(01:43:57) 이것은 표준과 같습니다. 그래서 사람들이 해킹하는 방법은 다양합니다. 그래서 저는 정말 훌륭한 화이트 햇 해커도 있고 정말 훌륭한 블랙 햇 해커도 있다고 가정합니다. 하지만 취약점 공간, 하프, 문제는 취약점을 발견하고도 다른 사람에게 알리지 않으면 화이트 햇 해커도 여전히 동일한 취약점을 발견해야 한다는 것입니다. 그래서 어떤 의미에서는 블랙 햇 해킹이 근본적으로 더 쉬운 일을 하거나 적어도 훨씬 더 오랜 기간 동안 이점을 누릴 수 있는 일을 한다고 생각합니다. 하나는 누가 시스템을 망가뜨리는지 알아내는 과정입니다. 다른 하나는 시스템을 무너뜨리는 방법을 알아내는 것입니다. 그리고 대부분의 소프트웨어는 이쑤시개와 풀로 서로 붙어 있는 것처럼 보이며 모든 조각에는 많은 위험이 있습니다.

Lex Fridman (01:44:40) 그리고 사회 공학적 측면도 실제 공격 벡터입니다. 저는 이것이 장기적으로 전 세계에서 가장 큰 피해를 입힐 공격 벡터라고 생각합니다. 특히 AI 툴이 점점 더 쉽게 대규모로 사람들을 설득할 수 있게 되면서 할머니에게 이메일을 보내는 것과 같은 일이 더 쉬워질 것입니다. 인간의 심리 등을 이용한 공격은 정말 심각한 공격 벡터라고 생각합니다. 저에게 접근하는 여자가 있을 때마다 일종의 사회 공학 프로젝트, 공격 벡터, 정보 기관의 소행이라고 생각해요. 사실, 저는 꽤 확신합니다.

Lex Fridman (01:45:14) 뷰티풀 마인드? 네, 위층에 화이트보드가 있어서 모든 사람의 궤적과 이동 경로를 계산하죠

ThePrimeagen (01:45:20) 공격 벡터, 특히 AI의 시대에는 공격 벡터가 잘못되지 않았습니다. 우리가 점점 더 많은 AI를 통합하면서 많은 사람들이 이야기하지 않는 한 가지는 즉각적인 인젝션은 방어 방법이 명확하지 않기 때문에 방어하기가 매우 어렵다는 것입니다. 결국 단어 계산기는 단어를 만들어냅니다. 적절한 단어 계산기 입력을 알아낼 수 있다면, 단어 계산기는 그 한계를 벗어나서 해서는 안 되는 일을 하기 시작할 수도 있습니다. 그리고 미래의 단어도 있습니다.

(01:45:49) 제품에는 생각지도 못한 것에 취약할 수 있는 모든 것들이 있습니다. 프로그래밍하는 동안 엣지 케이스를 잊어버리는 것도 한 가지 예입니다. 이제 사람들이 시스템에 액세스할 수 있는 무언가를 만들면 어떤 일을 할 수 있을지 생각해 봐야 합니다. 맞아요. 그리고 추론할 방법이 없습니다. 그 추론은 Reddit과 다른 단어들을 읽고 어떻게 조합하는지에 대한 추론에서 나왔습니다. 이것은 매우… 앞으로 일어날 거대한 공간입니다. 그래서 저는 개인적으로 아직 너무 많은 권한을 부여하지 말아야 한다고 생각합니다. 앞으로 어떤 공격이 일어날지 모르기 때문입니다.

Breaking production

Lex Fridman (01:46:21) 예, 소프트웨어 시스템에 더 많은 권한을 부여할수록 더 많은 피해를 입힐 수 있습니다. 확실히 그렇습니다. 하지만 더 멋진 일을 할 수 있다는 것은 우리 모두가 인류 문명으로서 함께 손잡고 걸어가야 할 칼날과도 같습니다. 우리는 번영할 것인가, 아니면 스스로를 파괴할 것인가? 물음표입니다. Reddit의 선량한 사람들이 프로덕션을 중단한 시점에 대해 질문해 달라고 요청했습니다. 팔코와 관련이 있나요? 프로덕션을 중단하셨나요? 가짜 뉴스인가요?

ThePrimeagen (01:46:48) 저는 프로덕션을 여러 번 중단한 적이 있습니다. 정말 많은 바보 같은 이유로 프로덕션을 중단한 적이 있습니다. 한 번은 PHP와 PHP에서 정적 때문에 프로덕션을 중단한 적이 있습니다. 정적이란 PHP의 수명 동안 정적이라는 뜻이고, PHP는 모든 요청의 수명이었죠? 그래서 PHP가 비효율적이었던 이유는 모든 요청이 자체 인스턴스였기 때문에 정적 메모리가 수명을 다했기 때문이었죠. 저는 그 점을 이해하지 못했어요. 그래서 요청이 지속되는 동안만 필요하기 때문에 정적으로 만든 객체가 몇 개 있었습니다. 그런데 그게 평생이 아니었죠. 잘못된 데이터가 사방에 널려 있었죠. 다른 나라에서 왔다는 사람들이 나타나서 모든 것이 잘못되었다고 말했는데, 저는 그냥 “어이쿠”하고 말았죠.

(01:47:25) 방금 그것으로 완전히 수수께끼를 만들었습니다. 그래서 한 번은 그렇게 했어요. 또 한 번은 홈페이지에서 레이디 가가의 영상이 나오기를 기다리면서 카운트다운이 내려가는 것을 보고 있는데 0이 되면 광고판이 멈춰서 작동이 안 되는 문제를 해결한 적이 있습니다. 새로고침을 하면 다시 작동했습니다. 하지만 공개, 즉 큰 공개를 망쳤기 때문에 제 상사가 정말 화를 냈고 할리우드의 다른 사람들도 화를 냈어요. 마치 ‘내 잘못이야. 미안해요, 제프 와그너, 다시 한번요.” 하는 식이었죠. 그 장면이 기억나요. 그 일이 특히 기억에 남습니다. 한번은 광고판에서 내 목록에 추가를 누르면 실수로 무한 루프로 프로그래밍해서 웹페이지 전체가 멈추는 버그를 만든 적이 있었어요.

Lex Fridman (01:48:12) 이런 버그 중 일부는 직접 시작하기 전에는 발견하기 어렵습니다-.

ThePrimeagen (01:48:14) 돌아보면 정말 쉬운 것 같습니다.

ThePrimeagen (01:48:18) 실제로 그 당시에는 수동으로 모든 과정을 거쳐야 하는 QA가 있었죠. 그래서 수동 QA 담당자도 이 부분을 놓쳤기 때문에 그다지 기분이 나쁘지 않았어요. 우리 모두 놓쳤죠. 하지만 정말 간단했어요. 버튼을 누르기만 하면 되니까요. 웹 사이트가 완전히 멈췄어요.

Lex Fridman (01:48:33) 값을 보유하고 있는 전역 변수로 코드를 오염시키는 것은 SPHP를 사용하면 다른 사람이 값을 할당할 수 있기 때문에 발견하기 까다로운 문제입니다..

ThePrimeagen (01:48:47) 그래요, 모든 곳에서 데이터 경쟁이 벌어지고 있죠. 그리고 저는 이해가 되지 않았어요… 제 머릿속에는 “아, 이게 인생이구나”라는 생각이 정적으로 맴돌았죠. 그 당시에는 PHP 세계에 너무 빠져있었기 때문에 돌이켜보면 너무나 당연한 결정을 내린 것이죠. 하지만 당시에는 힘들었습니다.

Pieter Levels

Lex Fridman (01:49:04) 그래서 일반적으로 프로덕션으로 푸시하면서 Peter 레벨과 이에 대해 이야기를 나눴습니다. 그는 대부분 개인 개발자로 활동하고 있지만 웹 사이트에서 종종 수십만 명이 아닌 수천 명이 사용한다고 말했습니다. 그는 종종 프로덕션에 출시하고 프로덕션에 푸시하기 때문에 테스트 없이 푸시해서 수정하는 것과 같습니다. 일반적으로 이러한 접근 방식의 장단점은 무엇이라고 생각하시나요? 어떻게 생각하시나요?

ThePrimeagen (01:49:31) 조직이 작을수록 훨씬 쉬워지는 것은 분명한 사실입니다. 그 의견에 이의를 제기할 사람은 아무도 없을 것입니다. 혼자서 하나의 프로젝트를 진행하는 경우, 혼자만 일하기 때문에 프로덕션으로 직접 추진하는 것이 훨씬 더 쉬울 것입니다. 모든 것을 잘 알고 있고 문제가 발생하면 바로 발견할 수 있으니까요. 그래서 저는 그게 이해가 되죠. 저는 그의 운영 방식이 그가 하는 일에 완벽하다고 생각합니다. 그가 하는 일을 마이크로소프트나 넷플릭스, 구글로 옮기면 많은 사람이 제작에 몰두해야 하기 때문에 재앙이 될 것이 분명하니까요. 그래서 저는 개인적으로 이 방식을 좋아합니다. 구축 중인 애플리케이션의 복잡성과 추진 중인 내용, 그리고 얼마나 많은 사람이 작업하고 있는지를 모두 고려해야 한다고 생각합니다.

(01:50:15) 이 모든 것이 어떻게 그렇게 할 수 있는지에 대한 설명이라고 생각합니다. 모든 애플리케이션이 똑같이 만들어지는 것은 아니니까요. 제가 만들던 애플리케이션은 확대/축소와 스크롤을 통해 모든 것을 볼 수 있었습니다. 매우 심도 있는 무거운 로직 앱이었고, 웹 사이트에서 일어나는 일과 상관없이 대부분의 코드가 라이브러리 코드였습니다. 앱을 출시하기 전에 좋은 테스트 스위트와 실행할 항목이 없으면 훨씬 더 어려워집니다. 왜냐하면 그 공을 쥐어짜면 여러 영역에서 다른 것들이 튀어나오기 때문입니다. 시각적 요소가 많은 작업을 할 때 시각적 요소가 많으면 이 한 영역의 시각적 요소에만 영향을 미치고 테스트만 하면 끝나는 것과 비교하면 훨씬 더 어려운 문제입니다.

(01:50:57) 그러나, 아시다시피… 커플링과 모든 것에 따라 달라지죠. 그래서 저는 그의 접근 방식을 좋아합니다. 저는 그런 식으로 운영하는 사람을 정말 존경합니다. 왜냐하면 그것은 훌륭한 방법이라고 생각하기 때문입니다. 왜냐하면 그것은 기술 트위터가 가지고있는이 모든 값 비싼 서비스를 모두 사용해야하고,이 모든 것을 사용해야한다는 개념을 깨뜨리기 때문에 너무 좋습니다.”최신 버전의 React를 사용하지 않으면 최신 버전을 사용하지 않으면 스타트 업으로서 성공할 수 없습니다. 불가능합니다.” “아니, 아니, 그건 소프트웨어가 아니야.”라고 말하는 것과 같습니다. 대부분의 소프트웨어는 새로운 것이 아닙니다. 대부분의 소프트웨어는 누군가가 유지보수해야 하는 오래된 구식 소프트웨어이며, 실제로는 정말 정말 훌륭하고 정말 어려운 문제가 많습니다. 하지만 다르게 생각하면 정말 멋진 소프트웨어이기도 합니다.

Lex Fridman (01:51:38) 웹 개발 측면에서 그의 기술 스택을 모르는 사람들을 위해 설명하자면 PHP, jQuery 및 SQL입니다..

ThePrimeagen (01:51:45) 예, 모두 훌륭합니다. 최신 웹에서는 문서 쿼리 선택기와 광고 이벤트 리스너 클릭이 전부인 상황에서 여전히 jQuery를 사용한다는 사실에 놀랐을 뿐이죠? 이미 필요한 모든 것을 갖추고 있습니다. 과거에 jQuery를 사용했던 이유는 버튼 클릭을 추가하는 것이 어려웠기 때문입니다. IE7, IE8, IE9를 다뤄야 했죠. 어려운 차이점이죠. 반면 지금은 너무 쉽습니다. 그마저도 놀라울 정도입니다.

Lex Fridman (01:52:13) 그것은 확실히 절충안입니다. 저는 여전히 똑같은 스택, PHP, jQuery 및 다양한 버전의 SQL을 사용합니다. 하지만 문제는 작업을 매우 빠르게 완료할 수 있고 성능에 큰 타격을 주지 않기 때문에 계속 jQuery를 사용한다는 것입니다. 그렇다면 왜 다른 것으로 바꿀까요? 하지만 앞으로 살펴보고 배우면 좋을 것 같습니다.

ThePrimeagen (01:52:39) 모든 도구가 모든 문제를 해결하는 데 탁월한 것은 아닙니다. 그래서 여러분이 진짜 문제라고 생각하는 것은 여러분이 매우 능숙하고 모든 기능을 알고 있는 도구 벨트를 가지고 있다는 상충 관계에 부딪힌다는 것입니다. 알려지지 않은 미지의 영역은 없지만 놀랄 만한 것은 없습니다. 여러분은 무엇을 만들고 있는지, 어떤 일을 하고 있는지 알고 있습니다. 이 과정을 거치면 문제를 해결할 수 있을 것입니다. 하지만 다른 언어나 다른 경험을 사용한다면 어떤 것들은 훨씬 더 쉽고 효율적인 방식으로 상태를 표현할 수 있다는 것을 알 수 있습니다. 그리고 어떤 경우에는 정말 효율적으로 문제를 해결할 수 있습니다. 따라서 시간을 들여 탐구하지 않으면 부분집합과 같은 특정 문제에서 두 배로 더 잘할 수 있는 무언가를 놓칠 수 있는 것과 같습니다. 그래서 저는 모든 문제를 살펴보는 것을 중요하게 생각합니다. 그래서 저는 한 가지에 집착하고 싶지 않아요. 사람들이 왜 그렇게 하는지 알아요. 효율성을 위해서죠.

넷플릭스, 트위치, 유튜브 인프라

Lex Fridman (01:53:34) 넷플릭스 플랫폼의 인프라, 더 일반적으로 말하면 넷플릭스, 트위치, 유튜브의 인프라로 돌아가 봅시다. 이 서비스 중 하나를 사용할 때마다 저는 이 서비스를 제공하는 데 필요한 인프라에 놀라움을 금치 못합니다. 넷플릭스는 크리에이터가 직접 콘텐츠를 업로드할 수 있는 반면, YouTube와 Twitch는 매우 독특합니다. 따라서 소비 측면에서는 YouTube의 하루 조회수가 1,000억 회를 넘고 시청 시간이 10억 시간을 넘습니다. 하지만 크리에이터 측면에서는 매일 100만 시간의 동영상이 업로드됩니다. 백만 시간이라고요. 이 두 가지를 모두 서비스해야 하고 모든 것을 제공해야 한다는 것은 저에게는 정말 놀라운 일이죠. 이러한 종류의 인프라를 제공하기 위해 무엇이 필요한지 직관적으로 말씀해 주시겠어요?

ThePrimeagen (01:54:25) 저에게 매우 복잡하고 엔지니어링 시간을 상상할 수 없는 것은 그 상황에서 어떻게 엣지를 만들 수 있느냐는 것입니다. 엣지라는 표현에 익숙하지 않은 분들을 위해 설명하자면, 엣지는 데이터를 전송하는 곳입니다. 엣지는 데이터가 있는 곳이기 때문에 가능한 한 고객과 가까운 곳에 있어야 합니다. 그리고 고객과 기업 간의 커뮤니케이션은 아주 작은 단위로 이루어집니다. 당연히 빛의 속도, 홉의 양, 원격으로 호출해야 하는 서비스의 양이 늘어납니다.

(01:54:54) 모두 합쳐지면 시스템에 비효율성이 더해집니다. 따라서 YouTube 같은 경우 데이터를 가능한 한 빨리 제공하고자 하지만 데이터는 계속 바뀌고 관련성은 항목의 새로움과 거의 직접적으로 연관되어 있습니다. 그렇다면 이러한 데이터를 어떻게 캐싱할 수 있을까요? 어떻게 할 수 있을까요? 제가 상상조차 할 수 없을 정도로 엄청난 캐싱 네트워크를 가지고 있는 게 분명합니다. 저한테는 정말 인상적인 일이에요. 얼마나 많은 데이터로 얼마나 다양한 해상도에서 백만 조회 시간을 기록했나요? 백만 조회 시간이란 무엇인가요? 1080p, 720p, 1440p와 함께 4K 백만 뷰 시간인가요? 엄청난 숫자입니다.

Lex Fridman (01:55:33) 사실, 당신이 말한 것은 훌륭합니다. YouTube는 종종 새로운 것을 모든 사람에게 보여주는 것이 매우 중요합니다. 따라서 캐싱이나 사소한 종류의 캐싱에 의존할 수 없습니다.

Lex Fridman (01:55:48) 가능한 한 빨리 새로운 것을 전달해야 합니다. 네, 놀랍죠. 따라서 전체 시스템, 즉 YouTube를 시청하는 개별 사용자를 파악하는 추천 시스템이 새로운 기능을 통합하는 동시에 사용자가 잠재적으로 관심을 가질 수 있는 엄청난 양의 동영상을 캐싱해야 합니다. 그리고 YouTube 등의 경우 해당 광고에 통합해야 합니다.

ThePrimeagen (01:56:19) 이것의 적중률을 생각해야 하기 때문에 정말 어려운 문제입니다. 이제 문제는 실제로 공간으로 귀결되기 때문에 실제로 공간이 실제 문제가됩니다. “좋아요, 무엇을 캐시하고 어디에 캐시할까요?”를 위해 수백 페타바이트의 공간을 확보해야 합니다. 기가바이트나 메가바이트 단위가 아니라 이름도 모르는 바이트 단위로 생각해야 할 것 같습니다. 그래서 제가 넷플릭스라고 말한 것입니다. 넷플릭스는 캐싱과 관련하여 훨씬 더 쉬운 작업을 수행합니다. 넷플릭스는 OCA라는 것을 통해 어떤 동영상을 공개하는지, 특정 지역에서 어떤 동영상이 인기 있는지 알고 있습니다. 매우 제한된 범위입니다. 갑자기 “어머나, 조회 시간이 백만 시간을 돌파했네요.”라는 말을 듣지는 않을 것입니다. 우리는 그런 문제를 걱정할 필요조차 없습니다. “기묘한 이야기 시즌 5가 곧 출시될 예정이니 전 세계 모든 OCA에서 기묘한 이야기 시즌 5를 선캐시할 거야.”라는 식이죠. 따라서 YouTube와 같은 플랫폼과는 다른 의사결정을 할 수 있는 셈이죠. 그리고 Twitch는 훨씬 더 거친데, 이제 실제로 비디오를 수집하고 모든 비디오에 대해 정확히 동시에 모든 비디오를 내보내야 하고, 어떤 형식과 비트 전송률로든 그 비디오를 시스템에서 더 효율적인 것으로 변환해야 하기 때문입니다. 정말 대단한 일이니 Twitch 엔지니어링 팀에 경의를 표합니다.

Lex Fridman (01:57:44) 그리고 여기 어떤 멍청이가 나와서 YouTube 기능에 대해 트윗을 하고 있습니다. 들어보세요…

ThePrimeagen (01:57:53) 요청하신 기능이 틀린 것은 아닙니다.

Lex Fridman (01:57:56) 통합되거나 전체 코드 베이스에 영향을 주지 않아야 하는 기능의 빠른 반복 및 추가를 어떻게 허용할 수 있는지에 대한 엔지니어링 문제라고 생각해요. 따라서 코드 베이스의 가장자리에서 코드의 모체를 참조하지 않고도 특정 기능을 개선할 수 있습니다.”

ThePrimeagen (01:58:19) 팀 규모가 크다는 거죠? 이것이 근본적인 문제입니다. YouTube 규모를 살펴보면 데이터 웨어하우징을 담당하는 팀/조직이 있습니다. 전송을 담당하는 팀/조직이 있고요. 중간 계층과 같은 팀 슬래시 조직이 있는데, 이 조직은 이러한 곳과 대화할 수 있는 작은 마이크로 표면과 같은 역할을 합니다. 그리고 이 프론트엔드 엔진이 있습니다. 따라서 작은 기능을 만들려면 미들 팀, 백엔드 팀, 이 모든 것을 갖춰야 합니다. 간단한 예로 넷플릭스를 들 수 있습니다. 디스토피아 영화 블랙 미러를 잘 아시나요?

ThePrimeagen (01:58:51) 오케이. 시즌 1, 에피소드 1. 시즌 1, 에피소드를 아시나요? 블랙 미러를 시청하는 사람이라면 누구나 이 에피소드를 알고 있을 겁니다.

Lex Fridman (01:58:57) 오케이, 그래요. 뭔지 기억이 안 나요

ThePrimeagen (01:58:58) 내 표현을 용서해 주세요. 돼지새끼 에피소드라고 합니다.

ThePrimeagen (01:59:02) 이 에피소드를 보셨다면 이 에피소드를 알 수 있을 겁니다. 넷플릭스가 이 작품을 채택했을 때 제가 한 방에 끌려 들어갔는데, 부사장, 제품 디자이너, 부사장이 나와서 ‘블랙 미러 시즌 3를 곧 출시할 예정이에요, 그 당시에는요’라고 말했어요. 에피소드 1, 시즌 1이 사람들이 가장 먼저 보지 않아야 합니다. 그러니 시즌 순서를 바꾸자고요. 이를 위해 20명의 엔지니어를 모아야 했어요. 대기업의 문제점은 결국 모든 작은 일들이 자체 팀이 되어야 한다는 것입니다. 그래서 아무리 작은 기능이라도 작은 기능이라는 것은 없습니다.

Lex Fridman (01:59:42) 시즌을 선택하는 드롭다운의 순서를 뒤집는 것은 여러 부사장 및 엔지니어들과 회의하는 것이죠. 정말 흥미롭네요.

Lex Fridman (01:59:50) 이를 가속화할 수 있는 방법이 있을 것입니다. 물론 회사의 자연스러운 확장과 성장에 따른 관료주의가 그 속도를 늦추는 것은 사실입니다. 하지만 Elon이 일하는 모습을 많이 봐왔기 때문에 그의 팀은 회사가 성장해도 여전히 매우 빠른 속도를 유지할 수 있습니다. 특히 돼지 새끼 에피소드의 경우, 그렇게 하기 위한 과정이 있을 겁니다. 우선순위 목록에서 어디에 있는지 모르겠지만 그런 중요한 일이라면 빨리 처리할 수 있어야 합니다. 글쎄요. 어떻게 하면 그렇게 할 수 있을까요?

ThePrimeagen (02:00:25) 우리가 어떻게 했는지 먼저 말씀드릴 수 있습니다. 기억하세요… 넷플릭스 같은 곳에서는… 그 당시에는 덱스터라는 제품이라고 불렸던 것 같아요. 기억이 안 나요. 할리우드와 고도로 통합된 실제 영화 메타데이터 웨어하우스가 있는데, 그 쪽에서 모든 것을 관리할 수 있습니다. 그래서 저는 “이봐요, 이런 일이 자주 발생할 테니 반전이 필요한 항목을 표시할 수 있는 기능이 필요합니다.”라고 말했죠. 그리고 그렇게 했습니다. 우리는 꽤 많은 화제성 있는 쇼를 만났는데, 모두 반전이 필요한 것들이었습니다. 그래서 “에피소드 번호와 시즌 번호를 뒤집을 수 있어야 합니다. 시즌이나 에피소드 번호를 숨길 수 있어야 합니다.”라고 말했죠.

(02:00:58) 첼시 핸들러 쇼의 경우 일일 쇼와 같아서 에피소드 번호가 필요 없고 최신 에피소드만 있으면 되는 것과 마찬가지입니다. 그래서 이런 문제가 존재합니다. 그래서 ‘저기 UI를 개선하고 데이터를 저장할 수 있어야 한다’는 식이죠. 그런 다음 실제로 비디오 데이터를 가져와서 서비스 계층에 제공할 수 있는 사람들을 찾아갈 수 있어야 합니다. 그들과 이야기를 나누고 새로운 방법과 이를 위한 모든 것을 제공할 수 있어야 한다고 설득해야 합니다. 그런 다음 메소드를 작성해 내려받을 수 있어야 하고, UI로 이동해 액세스할 수 있도록 만들어야 합니다. 이제 웹사이트 담당자, 모바일 담당자, TV 담당자를 모두 만나야 합니다.”

ThePrimeagen (02:01:32) 그래서 이 일이 눈덩이처럼 불어나는 것을 볼 수 있습니다. 넷플릭스가 잘한 가장 큰 이유는 제가 고위급 인사들을 만나고 나서 제가 선장이 되었기 때문입니다. “이제 내가 주장이야.” 그래서 모든 팀에 가서 “매니저님, 엔지니어가 필요해요. 블랙 미러가 출시될 예정이니 몇 달 안에 이 일을 끝내야 합니다.”라고 말했죠. 그러면 매니저는 “알았어요, 여기요”라고 말하곤 했죠. “지도 팀, 이 작업을 위해 로모에서 데이터를 가져올 수 있도록 도와줄 사람이 필요합니다.” 그래서 “좋아요, 이 엔지니어링 작업을 맡으세요.”라고 말하곤 했습니다.

(02:01:59) 저는 BMS 팀에 가서 “좋아요, 이 엔지니어가 필요해요.”라고 말했죠. 빌보드 팀에도 가서 “이 엔지니어가 필요합니다.”라고 말하죠. 작은 데이터 조각을 얻기 위해 모든 작은 곳을 찾아다녔죠. 그리고 제가 캡틴이 되어서 “이 작업은 네가 하고, 이 작업은 네가 하고, 이 작업은 내가 하고, 이 작업은 네가 하고, 이 작업은 내가 한다. 가자.” 그게 먹힌 것 같아요. 그리고 대기업치고는 꽤 빠르게 진행할 수 있었습니다. 20명의 엔지니어가 필요한 간단한 작업을 3주 만에 완료할 수 있었으니까요. 하지만 여전히… 많은 사람이 이동하는 것에 비하면 놀라운 속도라고 생각했습니다.

Lex Fridman (02:02:29) 대리점의 자유가 있기 때문에 그렇게 할 수 있습니다. 배의 선장이라고 하셨죠? 정말 강력한 말입니다. 대기업의 경우 이는 위험합니다. 망칠 수 있으니까요. 법적으로 업계에 미치는 영향이나 모든 계약에 대한 더 큰 맥락을 보지 못할 수도 있습니다. 따라서 위험은 위험이지만 계속 감수해야 하는 위험입니다. 그리고 문제가 생기면 수습하고 법적으로 비용을 지불하든 뭐든 해야 합니다. 하지만 장기적으로는 더 나은 제품을 계속 만들고, 업계가 나아가는 방향으로 진화하고, 업계가 나아가는 방향에 앞서 끊임없이 혁신하기 때문에 그 위험은 보상이 됩니다. 그렇죠.

ThePrimeagen (02:03:08) 그리고 한 가지 중요한 것은 제품도 좋아지겠지만 고용하는 사람, 곁에 두는 사람이 성숙함을 보여주기 때문에 더 좋아진다는 점이라고 생각합니다. 그들은 단지… 당신이 그들에게 무언가를 주면 그들은 군대를 결집하고 무언가를 만들 수 있습니다. 이들은 고용하기에 매우 훌륭한 그룹입니다. 따라서 단순히 코딩만 잘하는 것이 아니라 코딩도 잘하고 설명도 잘하고 설득도 잘하는 훌륭한 엔지니어를 자연스럽게 선발할 수 있습니다. 그리고 빠르게 움직일 수 있는 매우 간결한 청중을 만들어야 합니다.

Lex Fridman (02:03:40) 그리고 훌륭한 엔지니어에게 “좋아, 다음 수요일에 부사장들과 회의 일정을 잡자…”라는 식으로 기다려야 하는 것은 정말 힘든 일이라고 생각합니다. 그건 그들의 영혼을 파괴합니다. 그들은 더 이상 기여하고 싶지 않거나 회사를 떠나거나, 아니면 금수저를 물고 좋은 집을 사서 가족에게 집중할 뿐입니다.

ThePrimeagen (02:04:04) 예. 저 밑에서는 죽을 것 같아요… 솔직히 저한테 사형선고 같은 건 노력할 이유도 없고 아무것도 할 이유가 없는 곳입니다. 그냥 들어가서 하루 종일 좀비처럼 지내다가… 그렇게 살고 싶지 않아요. 뭔가 해보려고 노력하는 기분을 느끼고 싶어요.

Lex Fridman (02:04:22) 또 하나 말씀드리고 싶은 것은 넷플릭스가 해결해야 하는 과제가 얼마나 대단한지 훌륭하게 설명해 주셨어요. YouTube의 메타데이터는 사용자가 동영상을 업로드할 수 있고 자동으로 업로드하고 이런 모든 것을 자동으로 변경할 수 있는 API가 있기 때문입니다. 앞서 언급했듯이 이러한 모든 것이 공격 벡터가 됩니다. 이는 엔지니어링 측면에서 심각하게 고려해야 할 사항입니다. 그리고 법률적인 측면에서는 여러 가지 방식으로 문제가 발생할 수 있습니다. 따라서 모든 것을 고려해야 하는데, 이는 매우 흥미로운 일입니다.

ThePrimeagen (02:04:59) 법적인 측면은 분명하지만… 누군가 내가 소유하거나 보유할 수 없는 이미지를 업로드할 것이라고 처음에는 생각하지 못했을 것입니다. 하지만 그런 일이 일어날 수 있다는 것을 보장합니다. 그럼 아이들도 있잖아요? 아동용 콘텐츠라고 표시했을 때 테일러 스위프트 동영상에 포르노를 몰래 넣는 경우가 얼마나 많았나요? 몇 년 전만 해도 테일러 스위프트가 나오는 영상이 있었어요. 테일러 스위프트인 줄 알았는데 그게 뭔지는 잊어버렸어요. 그런데 이런 모의 동영상이 올라오면 ‘펑’하고 터지곤 했죠. 정말 끔찍한 문제인데 그게 문제가 되지 않아서 정말 다행이죠. 알아내려고 노력해야죠.

더프라임에이젠의 탄생 스토리

Lex Fridman (02:05:32) 그래요, YouTube와 Twitch, Netflix는 대단한 일을 하고 있죠. 결국 미친 사람인 당신은 넷플릭스를 떠나 늑대 무리가 되어 새로운 여정을 시작하기로 결정하고 스트리밍을 시작했습니다. 무슨 일이 있었나요? 무슨 사연이었나요?

ThePrimeagen (02:05:52) 그래서 저는 거의 7년 동안 스트리밍을 해왔어요. 사실 넷플릭스에서 시작했어요. 제 스트리밍 경력을 시작하게 해준 엑스트라 라이프(Extra Life)라는 자선 단체에 감사드리며, 사실상 스트리밍만 하고 모금한 금액은 소아암 어린이 연구에 기부됩니다. 그들은 오버헤드를 받지 않고 웹 사이트와 모든 것을 위해 자체적으로 기부금을 모금한다는 점에서 훌륭한 자선 단체입니다. 그래서 매우 훌륭하고 간단한 자선 단체입니다. 그들이 한 일을 정말 좋아합니다. 저는 지금 사우스다코타에 살고 있지만 실제로 기부금이 전달되는 병원을 직접 선택할 수 있어서 정말 멋졌어요. 그래서 A에서 B로 직접 영향을 미칠 수 있으니 정말 멋진 단체입니다. 그리고 제 친구인 가이 시리노는 제가 나이스 트라이 가이라고 부르는데, 제가 평생 만난 엔지니어 중 가장 위대한 엔지니어였을 거예요.

(02:06:37) 그리고 그는 이렇게 말했죠, “야, 이리 와봐. 우리 모두 이걸 해보자고요.” 그래서 저는 포트나이트를 플레이했습니다. 그러기 전에 먼저 스트리밍하는 법을 배워야겠다고 생각했죠. 구독을 받을 수 있도록 제휴를 맺어야겠다고 생각했죠. 그리고 누군가 제게 정기구독을 해주면 그 대가를 지불할 생각이었죠. 그래서 2018년 6월쯤부터 스트리밍을 시작했고, 포트나이트를 스트리밍하기 시작했어요. 결국 가입을 하게 되고, 평생 게임을 하게 되죠. 결국 정말 즐기게 됐죠. “이거 정말 재밌다”라고 생각하게 되죠. 그때부터 포트나이트를 플레이하고 있죠. 그 당시 저는 포트나이트 스트리머였고, 포트나이트를 정말 즐기기 시작했죠. 계속 하다가 언젠가 프로그램을 만들어야겠다고 결심했어요. 저는 빔을 정말 좋아하고 빔에 능숙하다고 생각하는데, 사람들은 프로그래밍을 멋지다고 생각할 수도 있죠. 그 당시에는 프로그래밍 섹션이 없었거든요.

(02:07:22) 그리고 저는 해냈어요. 30명 정도가 참석했는데, 그 당시에는 엄청난 숫자인 것 같았어요. 그래서 저는 “세상에, 30명이나 되는 사람들이 제 방송을 보고 있구나”라고 생각했죠. 그래서 계속해서 계속 진행했고 계속 늘어났고 계속 성장했습니다. 그리고 해마다 그렇게 했죠. 일하고 집에 돌아와 아이들과 저녁을 먹고 그 시간 동안 반지의 제왕과 호빗을 읽어주고 30분 동안 책을 읽어준 다음 내려놓았죠. 그리고 일주일에 3일 밤에는 새벽 2시까지 프로그래밍을 하거나 새벽 2시까지 비디오 게임을 하면서 스트리밍을 하고 부업으로 이런저런 일을 했어요. 그렇게 오랫동안 그렇게 하다가 결국에는 계속 잘 풀려서 유튜브 동영상을 만들기 시작했습니다. 그리고 점점 더 좋아지기 시작했어요. 그리고 작년 4월까지는 정말 길고 긴 시간이었습니다.

(02:08:08) 저는 스트리머 어워드에 가서 프로그래밍 부문과 Pirate SoftwareOne을 발표하게 되었어요. 정말 멋졌어요. 정말 멋진 시간이었어요. 그 때 제게 도전 코인을 주며 “그냥 해봐요. 그냥 풀타임으로 하세요.” 그래서 저는 그냥 앉아있었고 제 아내가 그걸 증명해줄 수 있었죠. 감정적으로 혼란스러웠고 넷플릭스는 매우 안전한 선택이었기 때문에 정말 끔찍했습니다. 둘 다 매우 재미있었어요. 도전적이기도 했죠. 함께 일한 많은 사람들이 마음에 들었고 전반적으로 정말 좋은 일이었습니다. 정말 훌륭한 상사가 있었고 정말 감사했습니다. 지금도 가끔 문자를 주고받는데 정말 좋은 분이세요. 그래서 이 모든 것을 확실하지 않은 것을 위해 떠나는 것과 같습니다. 현실은 스트리밍과 이런 모든 것들이 사람들이 하루는 나를 좋아했다가 다음날 나를 싫어할 수도 있다는 것입니다. 대중에게 공개되는 데에는 이런 모든 것들이 필요하죠.

(02:09:04) 그리고 넷플릭스라는 든든한 지원군이 있었기 때문에 다음 날 대중이 저를 싫어하면 ‘듀스, 난 끝났어’라고 말할 수 있었죠. 이제는 상관없어요. 이제 저는 이 일을 직업으로 삼을 거니까요. 그래서 이 모든 과정을 겪으면서 엄청난 혼란을 겪었습니다. 결국 저는 이걸 만들어야겠다고 생각했어요. 넷플릭스에 합류하기로 처음 결정했을 때 공감이 갔어요. 저는 나이가 들었어요. 색다른 일을 할 수 있는 기회가 많지 않죠. 그런 기회는 계속 줄어들죠. 나이가 들면 이 일이 제가 할 수 있는 마지막 미친 짓일지도 몰라요. 그냥 해보자고요. 그래서 4월에 풀타임으로 일하기 시작했고 뒤돌아보지 않았어요. 풀타임으로 이 일을 시작한 지 아직 1년도 안 됐어요. 그리고 정말 재미있었어요. 그리고 가장 중요한 것은 사람들이 정말 즐겁게 시청하고 참여하는 방송에서 이런 것들을 정말 탐구하고 할 수 있다는 것입니다. 훌륭하고, 힘들고, 재미있고, 놀랍고, 어려운 경험이었습니다.

Lex Fridman (02:10:02) 정말 고무적인 도약입니다. 말씀해주신 것처럼 여러 가지 이유로 정말 어려운 일이지만, 외로움도 꽤나 외로운 일이라고 생각해요

Lex Fridman (02:10:15) 저와 카메라, 관객과 그 기복이 있을 뿐이죠. 그리고 팀이라는 건 존재하지 않습니다.

ThePrimeagen (02:10:21) 한 가지 운이 좋았던 건, 제 에디터인 플립이 플립을 외쳤다는 점입니다.

ThePrimeagen (02:10:26) 그는 내가 “소리쳐, 플립”이라고 하면 그에게 큰 의미가 될 거라고 했어요

Lex Fridman (02:10:28) 사랑해요, 플립. 우리 모두 사랑해요.

ThePrimeagen (02:10:31) 오, 이런. 그의 말대로 그는 아무것도 가진 게 없었습니다. 그는 정말 힘들게 자랐어요. 인생의 힘든 결정들이 그의 인생에 많이 들어왔고 그는 거기서 다시 기어 나오고 있습니다. 그러더니 제가 풀타임으로 편집해줄게요. 그래서 저는 “좋아요, 50 대 50으로 제가 유튜브에 올리는 수익은 모두 당신이 가져가세요. 같이 해보자고 했죠.” 그리고 몇 년 동안 그렇게 해서 한 달에 거의 0달러를 벌었습니다. 그래서 정말 놀라운 도약이었고 이제 우리는 함께 일하게 되었습니다. 그래서 저는 팀이라는 측면이 정말 좋다고 생각합니다. 하지만 넷플릭스에서는 사람들이 만들어가는 것에 대해 들을 수 있고, 팀도 없고, 제품이나 주기도 없고, 제가 만족시켜야 하는 매니저도 없으니까요. 그냥… 매우 외롭습니다. 그리고 많은 사람들이 실제로 얼마나 외로운지 깨닫지 못하는 것 같아요.

Lex Fridman (02:11:19) 그래요. 그러니 그 외로움과, 제 경우에는 얼마나 많은 사람들이 당신을 공격하는지 모르겠습니다.

ThePrimeagen (02:11:24) 충격적으로 공격률이 낮은 것 같아요.

Lex Fridman (02:11:28) 예, 사람들은 일반적으로… 가끔은 재미있는 놀림 같은 것도 있지만 대부분은 정말… 당신은 세상에 많은 사랑을 주고 많은 사람들에게 영감을 주죠, 심지어 조롱할 때도 그렇죠, 맞아요. 하지만 그 외로움과 강렬한 공격을 동시에 감당하는 건 정말 힘들어요. 힘들 수 있어요. 심리적으로도 정말 힘든 여정이죠. 소프트웨어 엔지니어링 측면에서도 코드를 공유하거나 코드에 대해 이야기할 수 있는 팀과 함께 일하는 것이 그리우시나요?

Lex Fridman (02:12:00) 코드 또는 협업 측면에 대해 이야기합니다.

ThePrimeagen (02:12:05) 예, 여러 가지가 있죠. 첫째, 렉스, 우린 당신을 사랑하니 이런 일로 실망하지 마세요.

Lex Fridman (02:12:12) 감사합니다. 고마워요. 저도 사랑합니다.

ThePrimeagen (02:12:15) Thank you. 이봐요, 작은 유대감의 순간이 계속되고 있네요. 하지만 한 가지 정말 그리운 건…

Lex Fridman (02:12:20) 성적인 의미는 아니며, 분명히 말씀드립니다.

Lex Fridman (02:12:23) 불편해집니다. 그래요. 아무튼, 팀.

ThePrimeagen (02:12:27) 제가 정말 그리워하는 건, 다른 사람들이 어떻게 문제를 해결하는지를 보면서 많은 사람들이 가진 원초적인 창의력이 정말 놀랍고 ‘와, 이런 식으로 하면 안 될 텐데’라는 생각이 들 때가 있다는 것입니다. 미쳤죠? 와, 정말 멋지네요. 그런 다음 내부적으로 이 작업을 처리하면서 ‘아, 이제 내 도구 벨트에 새로운 작은 도구가 생겼구나’라고 생각하게 되죠. 프로그래밍을 처음 시작하고 나이가 어릴 때는 멘토를 찾기가 정말 어렵거든요. 몇 년의 경력을 가진 사람은 저보다 조금 더 나은 것이 아니라 무한히 더 나은 사람이 될 것입니다. 얼마나 더 나은 사람들이 있는지 미친 듯이 느껴집니다. 그래서 멘토를 구하고 사람들에게서 배워야 합니다. 그리고 실력이 향상되면 그 가능성은 점점 줄어듭니다. 그래서 제가 정말 그리워하는 것은 강제로 함께 문제를 해결하는 것입니다.

Lex Fridman (02:13:19) 다른 사람에게서 지혜를 채굴하는 기술도 있다고 생각해요. 저는 보통 후배나 젊은 사람들에게도 다가가려고 노력합니다. 적어도 저에게는 그들이 세상에서 가장 똑똑한 사람이고 저보다 훨씬 더 똑똑하다고 가정하는 것이 정신적으로도 도움이 되거든요. 그래서 저는 그들이 하는 모든 말을 잠재적 지혜로 받아들이고, 거기서 잠재적 지혜를 찾는 데 도움이 됩니다. 나이가 들면 ‘그래, 그래, 그래’라고 판단하기가 너무 쉬워지거든요. 저도 겪어봤어요. 그런 기분이 들었던 기억이 나요. 그렇게 생각했던 기억이 나요. 그건 잘못된 생각이에요. 하지만 나는 내가 뭘 하고 있는지 모르겠고 상대방은 현자라고 가정해 보세요. 그런 상호작용을 통해 많은 것을 배울 수 있다고 생각해요. 그리고 제가 가장 좋아하는 상호작용은 서로가 그렇게 생각할 때입니다. 그래서 저는 그것이 훌륭한 협업과 상호작용을 위한 촉매제라고 생각합니다.

ThePrimeagen (02:14:19) 또 모든 것이 훨씬 더 좋게 느껴집니다. 전투적이고 부정적인 사람과 함께 일하는 것은 정말 역겨워요. 지금 당장 최선의 방법을 찾기 위해 노력하는 것이라면 전투적인 태도도 괜찮지만, 부정적인 사람이라서 모든 것이 특정 방식으로만 이루어져야 하고, 특정 방식이 아니면 세상이 끝날 것 같아서 전투적인 태도를 보이는 것은 괜찮습니다. 그리고 그것은 실제로 저에게 정말 어려운 일입니다.

Lex Fridman (02:14:43) 더프라임에이전이라는 이름의 유래는 무엇인가요?

ThePrimeagen (02:14:47) 더프라임에이전 이름 유래는 투록이라는 비디오 게임을 잘 아시나요? 닌텐도 64입니다. 투록에는 투록 1과 투록 2가 있었죠. 투록 2는 엄청나게 어려운 게임이었어요. 1인칭 슈팅 게임에서는 체력이 일정량밖에 주어지지 않았고, 플레이어는 체력을 찾아서 체력을 채워야 했습니다. 그리고 효과적으로 죽지 않고 게임 전체를 이겨야 했죠. 그게 바로 첫 번째 버전입니다. 투록 1과 투록 2가 바로 그것입니다.

Lex Fridman (02:15:16) Turok은 공룡, 액션, 공상 과학 요소를 특징으로 하는 유명한 1인칭 슈팅 비디오 게임 시리즈입니다. 이 프랜차이즈는 1997년 처음 출시된 이후 크게 발전해 왔습니다.

ThePrimeagen (02:15:27) 자, 여기 있습니다. 1998년, 바로 저기서 보실 수 있습니다.

Lex Fridman (02:15:30) Turok II, 악의 씨앗은 1998년에 더 큰 레벨, 더 어려운 퍼즐, 더 치명적인 적을 특징으로 하는 후속작으로 출시되었습니다.

ThePrimeagen (02:15:37) 눈에 띄는 어려움은 아주, 아주, 아주 어려웠다는 것입니다. 그래서 제가 받았을 때는 일반적인 회색 닌텐도 64가 아닌 검은색 카트리지에 담겨 있었어요. 멋진 게임이었죠. 그리고 저는 그것을 받아서 넣고 플레이했고, 매일 10시간씩 한 달 동안 계속 플레이했습니다. 그리고 이겼죠. 정말 놀랍고 멋진 경험이었어요. 그리고 투록 2의 마지막 리더는 프리아젠이라고 불립니다. 제가 어렸을 때, 초등학교 5학년 때 악당의 이름을 딴 정말 멋진 이름이죠. 그래서 아까 말씀드린 그레이 온라인 같은 인터넷 게임에서 오랫동안 이름이 더프라임에이젠이었어요. 정말 멋졌죠. 그러다 성인이 되고 나니 이제야 성인이 된 것 같았어요. 제 이름은 마이클 폴슨 언더스코어입니다. 그렇게 오랫동안 인터넷에서 활동한 것이 바로 그것이었어요. 2017년, 2018년쯤이었던 것으로 기억합니다.

(02:16:36) 저는 기술 업계가 얼마나 나빠졌는지 기억합니다. 매우 가식적인 곳, 수많은 거시기 측정, 모든 것이 최악이었죠. 켄 휠러는 서클 게임을 하다가 취소당했죠. 가보지 않은 사람들에게는 설명하기 어렵지만 최악의 장소였어요. 테크는 정말 재미없었어요. 정말 끔찍했어요. 모든 것이 연구이기 때문에 학문적이지 않았어요. 마치 우리가 가장 정교한 것을 만들고 있는데, 이것은 똑똑한 사람들을 위한 것이고 다른 사람들은 모두 멍청한 사람들인 것 같았어요. 걱정하지 마세요. 저희가 여러분을 위해 디자인할 테니까요. 완벽한 아키텍처를 만드는 방법을 보여드리겠습니다. 너무 화가 나서 트위터 아이디를 바꾸고 비디오 게임 이름으로 돌아갔던 기억이 납니다. 재미있었으면 좋겠다고 생각했죠.

(02:17:24) 이걸 멈추고 싶어요. 그래서 제가 기술 스트리밍을 시작했을 때 제 목표는 아무도 포함되지 않는 기술 사고방식을 파괴하는 것이었습니다. 모두들 자신이 똑똑한 사람이라고 생각하고 초보자를 위해 디자인하죠. 저는 사람들이 창의력을 발휘하고 흥미를 느끼며 실제로 무언가를 만들 수 있는 곳이 바로 기술 분야가 되길 바랐습니다. 그리고 초보자라면 멍청하게 바보 같은 질문을 해도 괜찮습니다. 멍청함에서 배우세요. 아무도 여러분이 똑똑하기를 기대하지 않습니다. 원하는 것을 골라보세요. 실제로 무언가를 하고 재미있게 즐기면서 기발한 아이디어를 만들어 보세요. 오, 당신은 바퀴를 재발명하고, 바퀴를 재발명하고, 당신이 무엇을 하고 있는지 이해하고, 정말 잘 배우고, 상호 작용하고, 그런 것들을 할 것입니다. 기존과는 너무 달랐어요. 그리고 이름도… 아놀드 슈왈제네거가 처음 연기를 시작했을 때 사람들이 싫어했던 이름에 대해 이야기합니다.

(02:18:14) 그가 말했듯이, 당신은 이상한 목소리와 이상한 몸을 가지고 있고, 당신의 이름은 발음할 수 없습니다. 아무도 슈나이츠인피니첼에 가지 않을 거고, 아무도 그걸 기억하지 못할 거라고요. 하지만 지금은 이름이 강해요. 저도 제 이름이 아놀드만큼 멋지지도 않고, 아놀드만큼 유명하지도 않고, 터프하거나 잘생기거나 성공한 것도 아니지만 항상 그와 비슷한 느낌을 받아왔어요. 하지만 그럼에도 불구하고 그 이름은 제 안에 있는 반문화 운동을 상징하는 이름이었으며, 저는 그저 그런 것을 싫어하고 그것을 물리치고 싶었습니다. 그래서 그렇게 된 거죠. 이제 사람들은 제 이름이 너무 이상해서 저를 잘 기억해요. 그래서 어떤 이유에서인지 그 자체로 고유한 것이 되었어요. 그래서 지금은 절대 바꾸지 않을 것이고, 그 당시에는 기계에 대한 분노의 순간이었기 때문에 절대 바꾸지 않을 것입니다.

Lex Fridman (02:19:01) 예, 기계에 대한 분노와 그 분노가 재미있다는 상징으로 마음에 듭니다.

ThePrimeagen (02:19:07) 예. 사람들이 다시 창의적이고 재미있게 놀았으면 좋겠어요. 괜찮아요

Lex Fridman (02:19:11) 콧수염은 어때요? 멋진 콧수염이죠. 대단한 수염이죠. 나름의 인생이 있죠. 유래가 있는 건가요, 아니면 어느 순간 서로를 발견한 건가요? 아니면 여러분의 삶과 같은 투쟁의 어둠 속에서 나온 건가요, 아니면 어디서 유래된 건가요?

ThePrimeagen (02:19:29) 원래의 수염은 무버먼트가 되기 전에는 노쉐이브 11월이었어요. 예전에는 11월이 노쉐이브였어요. 그리고 11월 노쉐이브 이후에는 이 모든 털이 자랐죠. 그래서 자연스럽게 어떻게 해야 할까요? 하루 동안 콧수염을 기르는 거죠. 그래서 오랫동안 면도를 안 한 걸 잊고 있다가 콧수염이 엄청나게 자라기 시작하면 ‘아, 이거 재밌네’라고 생각하곤 했죠. 콧수염이 나겠네. 어느 날 스트리밍을 하다가 면도를 하지 않고 그냥 놔두었는데 수염이 자라기 시작하더니 콧수염이 생겼어요. 제가 콧수염을 기르자 사람들은 ‘그래, 이제 콧수염을 기를 때가 됐어’라고 말했죠. 저는 그냥 ‘그래, 이건 라이프스타일의 결정이구나’라고 생각했죠.

(02:20:07) 이것은 재미있는 시간입니다. 그래서 갑자기 콧수염을 기르는 게 너무 신났어요. 수염을 깎고 나서 ‘아, 좋아’라고 생각했죠. 하지만 한편으로는 콧수염을 기르는 것에서 나오는 이상한 에너지가 있는 것 같았어요. 그래서 돌아갈 거예요. 아내에게 용서해달라고 말했죠. 아내는 콧수염을 오래 기르기로 한 제 결정에 대해 별로 달가워하지 않았지만, 저는 다시 기르기로 결심했고 그게 옳은 일이었죠. 콧수염은 항상 제 에너지의 원천이었거든요. 콧수염은 항상 제 안에 있었죠. 다만 나중에야 비로소 눈에 띄게 된 것뿐이었죠.

Lex Fridman (02:20:40) 예, 우리는 성공적인 관계의 요소 중 하나가 희생이고 아내가 콧수염을 기르는 희생을 감수하겠다는 이야기를 오프라인에서 나누고 있습니다.

ThePrimeagen (02:20:48) 저는 분명히 없는 것을 희생할 의향이 없었습니다.

프로그래밍 언어 학습

Lex Fridman (02:20:53) 스트리밍할 때 여러 프로그래밍 언어를 시도하는 놀라운 일을 하셨죠. Rust와 같은 특정 프로그래밍 언어를 사용하다가 새로운 언어를 선택하기도 하고, 끊임없이 실험을 하기도 합니다. 그래서 한 가지 질문은 학습에 관한 질문입니다. 새로운 프로그래밍 언어를 배우기 위한 접근 방식은 무엇이며, 새로운 프로그래밍 언어를 배우기 시작할 때 어떤 조언을 해주고 싶으신가요?

ThePrimeagen (02:21:26) 그래서 저는 이 학습 과정을 거치면서 여러 가지 다양한 방법을 시도해 보았고, 여러 가지를 시도했습니다. 분명히 성공한 방법은 그냥 무언가를 만들기 시작하는 것입니다. 특히 프로그래밍 방법을 이미 알고 있다면 키보드 위에 손을 올려놓기만 하면 됩니다. 이제 지그를 사용하려고 합니다. 주요 기능을 어떻게 하면 프로그램을 실행할 수 있을까요? 이제 빌드하는 방법을 알았어요. 이제 if 문은 어떻게 하나요? 어떻게 생겼나요? 이제 나만의 함수는 어떻게 선언하나요? 모듈은 어떻게 하죠? 최종 결과물에 도달하고 무언가를 구축하기 위해 구글을 검색하면 됩니다. 반복적이고 암기적인 학습이 가장 좋은 방법이라고 생각하기 때문에 이 방법은 아주 좋은 방법입니다. 여러 번 반복해서 익히면 분명 많은 것을 만들어낼 수 있습니다. 저는 초기에 익숙해지는 것을 좋아합니다.

(02:22:12) 그러나 그렇게 하면 함정에 빠질 수도 있다는 것을 알게 됩니다. 여러분은 일종의 구글이 되어 이전의 모든 경험을 바탕으로 해당 언어로 문제를 해결하려고 합니다. 그래서 그 언어를 특별하게 만드는 요소를 갖지 못하게 되죠. 다른 모든 언어가 특별하게 만드는 요소만 가지고 있는 거죠. 그래서 결국 그 언어를 효과적으로 사용하지는 못하지만 어느 정도 배우고 어느 정도 능숙해질 수는 있습니다. 그래서 제가 최근에 하고 있는 두 번째 접근 방식은 고스티의 창시자인 미첼 하시모토의 영감을 받아 언어 참고자료를 읽는 것부터 시작하자는 것입니다. 그래서 요즘은 해당 언어에 대한 설명서 전체를 정독하고 있습니다. 지그처럼 저도 거의 다 읽었어요. 8~10시간 정도 앉아서 읽다가 컴퓨터를 꺼내서 실제 문서에서 몇 가지를 연습하면 모든 것을 배울 수 있습니다.

(02:23:01) 그러면 다시 빌드를 시작할 때 여기 뭔가 있다는 것을 알았으니 다시 읽어보자고 기억할 수 있을 거예요, 이제 내 뇌 어딘가에 색인화되어 있으니 기억할 수 있을 테니까요. 그래서 저는 옳고 그른 방법이 없다고 생각합니다. 결국 올바른 방법은 결국 무언가를 만들어야 한다는 것이죠. 그냥 읽어서는 안 됩니다. 키보드 위에 손을 올려놓고 무언가를 만들어야 합니다. 그렇게 하고 나면 무엇이 고통스러운지, 무엇이 위대한지를 발견할 수 있습니다. 그리고 언어가 제공하는 폭이 넓지 않다면 단순히 서툴기만 하면 고통스러울 수 있습니다.

Lex Fridman (02:23:30) 이 글을 정확히 어디서 읽고 계신가요-

ThePrimeagen (02:23:38) 그래서 모든 기능을 위에서부터 아래로 살펴보는 거죠?

ThePrimeagen (02:23:39) 설명하는 방식마다 모두 다르죠. 지그는 적당한 크기라고 생각하지만 단순히 단어를 읽는 데 그치지 않습니다. 각 개념도 내면화해야 합니다. 그래서 시간이 오래 걸립니다. 그래서 저는 느린 독자입니다.

Lex Fridman (02:23:51) 그래서 AI 용어로 배경 모델처럼 빌드하고 있는 것이군요. 아마 for 루프를 수행하는 방법을 잊어버렸기 때문에 읽은 후 바로 빌드를 시작할 수는 없을 것 같습니다. 세부적인 내용은 잊어버리게 되죠. 디자인 선택, 사용 가능한 기능 세트, 강점과 약점, 그런 모든 것을 구축하는 것이죠. 그런 다음 구축을 시작합니다. 정말 흥미롭네요. 아마 처음 시작하는 주니어 개발자에게는 추천하고 싶지 않은 방법일 겁니다.

ThePrimeagen (02:24:24) if 문이 무엇인지 모른다면 그건 좋은 학습 방법이 아닙니다. 제가 보기에 가장 좋은 학습 방법은 키보드를 직접 만지며 아주 간단한 것부터 차근차근 복잡하게 만드는 것입니다. 클래스와 메서드, 인스턴스, 청사진, 즉 클래스 대 함수, 모듈, 그 모든 것을 이해해야 하기 때문입니다. 배우는 데 시간이 걸립니다. 따라서 완전히 다른 스타일의 학습이 필요합니다.

Lex Fridman (02:24:46) 저에게는 지금 당장 학습하는 것이 큰 도움이 되는데 이미 많은 경험을 가지고 있기 때문에 궁금합니다. 처음부터 다시 시작하는 것이 좋은 생각인지 궁금합니다. 하지만 기본적으로 AI를 사용하여 코드를 생성하고 여러 가지 부분을 가지고 놀면서 무엇을 하는지 알아내는 것은 정말 좋은 아이디어라고 생각합니다. 학습 과정의 일부로 AI를 사용하는 것과 같은 측면에 대해 말씀해 주시겠어요?

ThePrimeagen (02:25:15) 이것은 제가 희망적인 입장과 파멸적인 입장을 동시에 가지고 있으며, Google이나 스택 오버플로도 마찬가지입니다. 어떤 의미에서 더 민주적으로 만들어주고 있다는 점에서는 모두 같은 입장입니다. 저는 제 목소리로, 제 말로 가장 개인적인 방식으로 질문을 할 수 있고, 그 질문이 답을 만들어내고 저를 안내하는 데 도움이 될 수 있습니다. 이제 오류와 틀림에 관계없이 궁극적으로 학습 도구로 사용하고 자신의 목소리로 답을 공식화하고 읽을 수 있다는 것만으로도 매우 강력하다고 생각합니다. 그리고 정말 대단하다고 생각해요. 하지만 정말 어려울 것 같은 부분은 우리 사회가 더 이상 기억하는 것을 중요하게 생각하지 않는다는 점입니다. 인터넷이 생겨난 이후로는 그냥 찾아볼 수 있죠. 그냥 찾아보면 되죠. 시간표를 외울 필요가 없죠.

(02:26:12) 계산기를 사용할 수 있습니다. 그냥 다 할 수 있습니다. 방금 전 비행기에 앉아서 누군가가 휴대폰으로 세상에서 가장 간단한 덧셈과 뺄셈을 10번이나 하는 것을 본 기억이 납니다. 왜 그냥… 여러분은 이미 알고 있어야 하고, 이런 것들을 할 수 있어야 하죠. 그리고 우리가 뇌의 부담을 덜어준다는 걸 깨달았죠? 오, 이런 것들은 내가 찾아볼 수 있으니 굳이 알 필요가 없죠. 어떤 의미에서는 나쁘지 않은 대답이죠. 저도 이해할 수 있어요. 인공지능이 모든 것을 다 기억할 필요는 없지만, 학습된 무력감이 생겨서 새로운 오류가 발생한다는 사실도 깨닫게 되죠. 인공지능에게 물어볼게요.

(02:26:46) AI가 ‘이 대사를 고쳐야겠다’고 합니다. 저는 대사를 수정합니다. 실제로는 아무것도 배우지 못했죠. 그냥 무언가를 얻고 넘어가기 위한 빠른 수단으로 사용한 것이죠. 그래서 속도를 위해 지식을 희생하는 것은 어떤 면에서는 좋은 일이지만… 엔지니어링에서는 항상 이러한 절충안을 만들어야 합니다. 때로는 지식을 희생하면서까지 빠르게 움직여야 할 때도 있고, 저도 전적으로 찬성하지만, 어느 정도는 잘할 수 있지만 독특하고 맞춤형이거나 약간의 추가 작업이 필요한 일은 매우 어려워지는 무능한 프로그래머 세대가 탄생할까 봐 걱정됩니다. 후배들이 영원히 후배로 남는 틈새가 생길 수도 있습니다.

(02:27:26) 그리고 저는 그런 모습을 보고 싶지 않아요. 저는 사람들이 성장하는 것을 보고 싶어요. 사람들이 실제로 이 일을 장인 정신으로 받아들일 수 있는 것을 보고 싶어요. 그래서 제 희망이자 걱정인 것은 인공지능이 이 두 가지를 모두 할 수 있다는 것입니다. 원하는 질문은 무엇이든 할 수 있고 정확한 답을 얻기 위해 책에 의존할 필요가 없다면 말입니다. 책에서 틀린 답을 제시하고 이해하지 못하면 ‘미안하지만 이게 뭔지 배울 수 없다’는 것과 마찬가지죠. 저 역시 재귀를 이해할 수 있는 올바른 문제를 풀 때까지 너무 많은 시간을 허비했습니다. AI가 올바른 문제를 제시하고 훨씬 더 잘 안내해 주었기 때문에 훨씬 더 빨리 해결할 수 있었을 것이라고 상상할 수 있습니다. 하지만 만약 제가 재귀를 직접 배우지 않고 항상 인공지능이 해결해 주었다면 어떻게 되었을까요?

Lex Fridman (02:28:03) 그래서 제가 AI에게 특정 작업을 수행하기 위한 코드를 생성해 달라고 요청하면 실제로 많은 경우 AI가 생성하는 코드가 대부분 맞을 수 있지만 근본적으로 그렇지 않은 경우도 몇 퍼센트 정도는 있을 수 있죠. 이 둘의 차이를 인식하려면 많은 경험이 필요하다고 생각합니다. 아니, 아니, 아니, 아니, 지금 제공하는 솔루션과는 다른 새로운 즉시 사용 가능한 솔루션이 필요하다는 것을 아는 기술을 배우려면 그런 경험이 필요하다고 생각합니다. 요점을 놓치고 계십니다. 그게 바로 기술인데 어떻게 배울 수 있을까요? 처음부터 구축함으로써 배울 수 있습니다. 따라서 둘 다 정말 필요할 것입니다.

(02:28:44) 하지만 프로그래밍을 배우는 첫 단계로 함수를 생성하고 루프와 그런 종류의 것들을 생성 한 다음 다른 줄을 망치고 수정하여 프로그램의 동작을 조정하고 프로그램의 동작이 조정되거나 버그가 생성되는 방식에서 언어의 구문, 언어의 동작, 그런 모든 종류의 것들을 배우는 것이 매우 좋다고 생각합니다. 그래서 저는 이것이 매우 강력한 학습 방법이라고 생각합니다. 하지만 예, 처음부터 작성하는 것도 필요합니다.

ThePrimeagen (02:29:17) 어느 시점에서는 훈련 바퀴를 벗어야 합니다. 왜냐하면 여러분이 실제로 발견하고 있는 것은 코드 읽기와 쓰기 사이의 차이점이라고 생각하기 때문입니다. 저는 많은 언어를 아주 잘 읽을 수 있습니다. 무슨 일이 일어나고 있는지 알 수 있습니다. 이해는 할 수 있지만 작성은 잘하지 못하죠. C++에 대해서는 많은 것을 이해할 수 있고 읽을 수 있지만 오랫동안 해보지 않아서 그렇지 않습니다. 세미콜론과 콜론이 어디에 있는지, 공개와 비공개는 어떻게 해야 하는지, 명명 규칙은 어떻게 해야 하는지 기억이 나지 않아요. 이런 모든 것들이 한꺼번에 합쳐지면 ‘아, 나는 글을 읽을 수는 있지만 정말 못 쓰는구나’라는 생각이 들죠. 그래서 이 둘 사이에는 기술 격차가 존재합니다.

2025년 최고의 프로그래밍 언어

Lex Fridman (02:29:56) 알았어요. 다양한 언어에 대해 이야기해 보겠습니다. 최고의 프로그래밍 언어가 무엇이냐는 유치하고 우스꽝스러운 질문을 해볼까요? 모든 사람이 배워야 할 최고의 프로그래밍 언어는 무엇일까요? 상위 5가지로 가보겠습니다. 스택 오버플로 개발자 설문조사를 가져올게요… 마음에 들지 않나요?

ThePrimeagen (02:30:21) 당신은 데이터 전문가이기 때문에 기억해야 할 것이 있습니다. 편향과 데이터에 대해 잘 알고 계시죠. 스택 오버플로는 자연스럽게 어떤 것에 편향되어 있나요?

Lex Fridman (02:30:28) 전문 개발자, 주니어 개발자, 서로 다른 조각을 가지고 있습니다. 좋아요, 편견은 무엇인가요?

ThePrimeagen (02:30:36) 누가 스택 오버플로 설문조사를 작성하는 사람인가요? 스택 오버플로에 참여하는 사람입니다. 스택 오버플로에는 누가 참여하나요? 대부분 아주 새로운 사람들이며, 질문에 답하는 것을 좋아하는 사람입니다. 그래서 저는 스택 오버플로가 데이터를 얻기에 좋은 곳인지 잘 모르겠습니다. 매우 편향된 데이터 집합일 수도 있거든요.

ThePrimeagen (02:30:55) 이것이 스택 오버플로를 사용하는 사람이라는 뜻입니다.

Lex Fridman (02:30:58) 알겠습니다. 가장 인기 있는 기술입니다. 이쪽…

ThePrimeagen (02:31:02) JavaScript, HTML, Python, SQL.

Lex Fridman (02:31:05) SQL은 더 일반적인 종류의… 개별적인 종류의 SQL을 하는 것은 아닐 겁니다. 그건 그렇고, SQL과 SQL을 어떻게 발음하나요?

ThePrimeagen (02:31:19) 비명, 올바른 방법인 것 같아요.

ThePrimeagen (02:31:20) 청중을 모르기 때문에 SQL을 했어요. 그들이 진실을 감당할 수 있을지 모르겠습니다.

ThePrimeagen (02:31:27) 빛, 내 비명, 포스트그레스 비명.

Lex Fridman (02:31:31) 참, 아까 돼지새끼라는 말에서 왠지 모르게 기분이 좋았어요.

ThePrimeagen (02:31:34) [들리지 않음 02:31:36]입니다. 저게 진짜 대화였다는 게 믿겨지세요?

Lex Fridman (02:31:38) 예, 맞습니다. TypeScript, BAS, Java, C Sharp, C++, C-PHP.

ThePrimeagen (02:31:45) 대부분 예상하시는 세계와 일치하지만, 어셈블리, 왜 루비보다 어셈블리가 더 인기가 있을까요? 누가 어셈블리만 작성하나요… TLS 1.3을 개발하면서 가장 빠른 알고리즘이 되도록 암호화 알고리즘을 손으로 굴리는 사람 외에는 아무도 손으로 어셈블리를 작성하지 않죠…

Lex Fridman (02:32:02) 그래요. 어셈블리는 좀 이상하죠. 아마 학교에서도 운영 체제 과정이나 시스템 엔지니어링 같은 것을 위해 작성할 수도 있지만, 지금 학교에서도 작성할 수 있습니다. 더 이상 어셈블리를 쓰는지 모르겠어요. 어쨌든 그렇게 생각하지 않아요.

ThePrimeagen (02:32:18) 그리고 스위프트와 루비가 어셈블리보다 덜 인기가 있다는 것은 말도 안 되는 것 같네요. 하지만 그럼에도 불구하고 제 생각은 이해하지만, 상위 5개 언어에 대해서는 너무 많은 언어를 언급할 수 있기 때문에 너무 광범위할 것 같습니다. 무엇을 하고 싶은지에 따라 원형을 만들어야 할 것 같아요. 예를 들어 게임 개발을 하고 싶다면 C Sharp, C++가 좋은 선택이 될 수 있습니다. 아니면 자바스크립트로 캔버스 게임을 만드는 것도 괜찮을 것 같아요. 하지만 자바스크립트는 속도가 느려서 할 수 있는 일이 많지 않다는 한계가 있습니다. 그래서 기억해두면 좋은 점이 있습니다. 백엔드 작업을 할 예정이라면, 직업을 원한다면, 일자리를 찾고 있다면 C 샤프 슬래시 자바나 자바스크립트, 고가 좋은 선택이 될 것입니다. 임베디드를 하고 싶다면 C, C++ 같은 언어가 좋은 선택이 될 것입니다. 따라서 자신이 진정으로 원하는 것이 무엇인지 먼저 결정해야 한다고 생각합니다.

Lex Fridman (02:33:14) 프로그래밍에 관심이 있는 많은 분들과 이야기를 나눴는데요, 직업에 대한 고민은 할 수 있지만 기본적으로 어떤 언어를 먼저 배우는 것이 좋을지, 여러 언어 중 어떤 것을 탐구해야 하는지 궁금하다는 질문이 많았어요.

ThePrimeagen (02:33:28) 많은 사람을 화나게 할 말을 해도 될까요?

ThePrimeagen (02:33:30) 나는 아무것도 모르는 사람들이 가장 먼저 배워야 할 언어가 자바스크립트라고 생각합니다.

Lex Fridman (02:33:35) 그래요. 왜 사람들이 화를 낼까요?

ThePrimeagen (02:33:37) 아, 일단 사람들이 자바스크립트에 대해 좋은 말을 하면 안 되기 때문이죠.

Lex Fridman (02:33:41) 예, 보통 저게 밈이죠, 자바스크립트를 싫어한다는 거죠?

ThePrimeagen (02:33:44) 예. 네, 자바스크립트는 아름다운 언어이고 아주 좋은 점이 많은데, 그 중 하나는 아주 적은 노력으로 무엇이든 표현할 수 있다는 점입니다. 그래서 처음 접하는 사람도 상자를 그리고 상자를 움직일 수 있다는 것은 정말 대단한 일이라고 생각합니다. 대단하죠. 시각적으로 볼 수 있으니까요. 자바스크립트의 가장 큰 장점 중 하나는 바로 이런 작업을 할 수 있다는 점입니다. 이제 백엔드에 대해 배우고 싶어요. 지금 요청하고 싶어요

(02:34:08) 이 안에 간단한 백엔드를 작성할 수 있습니다. 이제 프로그래밍에 조금 익숙해지기 시작했습니다. 이걸 데이터베이스에 저장할 수 있습니다. 가져올 수 있습니다. 화면에 띄우고 애니메이션을 적용하고 캔버스에 올려서 2D나 3D로 렌더링할 수도 있습니다. 자바스크립트로 할 수 있는 일은 정말 다양합니다. 프로그래밍에 입문할 수 있는 좋은 방법입니다. 하지만 어느 순간 ‘이제 이 모든 것에 대해 더 자세히 배워야겠구나’라고 생각하게 되죠.

Lex Fridman (02:34:31) 예, 말씀하신 대로 게임을 만들 수 있고, 웹 개발을 위한 프론트엔드, 백엔드도 할 수 있습니다.

ThePrimeagen (02:34:37) 임베드도 할 수 있습니다. 웨스 보스가 룸바 같은 것을 만들어서 임베드용으로 선택하기에는 세상에서 최악의 언어인 자바스크립트와 리액트로 프로그래밍하는 것처럼 말이죠… 하지만 여전히 할 수 있습니다.

Python

Lex Fridman (02:34:51) 또 애플리케이션 측면에서 데이터나 머신러닝과 관련된 모든 것, 파이썬이 일종의 선두주자라고 언급했으니 대단합니다.

ThePrimeagen (02:35:01) 파이썬, CUDA, C++ 라이브러리 중 상당수가 C++ 내부에 숨겨져 있다고 가정하기 때문에 그 점에서 다이너마이트가 될 것 같네요.

Lex Fridman (02:35:11) 오케이, 그럼 자바스크립트입니다. 파이썬이라고 하겠습니다.

ThePrimeagen (02:35:14) Python도 훌륭합니다. 꽤 멀리 갈 수는 있지만 프런트엔드를 작성할 수는 없습니다. 프런트엔드를 좋아한다면 어떻게 해야 할까요? 정말 디자인만 하고 싶은데 그걸 몰랐다면 어떻게 될까요?

Lex Fridman (02:35:24) 그래, 괜찮아. 그래서, JavaScript.

ThePrimeagen (02:35:26) 하지만 Python은 JavaScript에서 ML 작업을 거의 쉽게 수행할 수 없기 때문에 좋은 선택입니다.

HTML & CSS

Lex Fridman (02:35:30) HTML과 CSS를 프로그래밍 언어로 계산하나요?

ThePrimeagen (02:35:33) 기술적인 정의가 있다고 생각합니다. CSS와 HTML의 특정 융합을 사용한다면 실제로는 튜링의 완전한 언어가 될 수 있습니다. 하지만 실용적인 목적에서는 그렇지 않습니다. HTML은 언어가 아닙니다. 저에게는 튜링 테스트가 좋은 테스트이긴 하지만, 학문적으로 접근하고 싶지 않은 사람들에게는 함수와 if 문을 쓸 수 없다면… 루프, if, 함수를 쓸 수 없다면 그게 좋은 프로그래밍 언어라고 생각하지 않아요.

Lex Fridman (02:36:03) 최신 HTML에는 많은 기능이 있습니다.

ThePrimeagen (02:36:05) 무엇보다 사양에 가깝죠. 저는 팝업을 지정합니다. 이런 종류의 접근성, 이런 종류의 모양을 갖도록 지정합니다. 이 조건에서는 이렇게 보이고, 이렇게 변형되고, 여기로 이동합니다.

Bash

Lex Fridman (02:36:21) 모르겠어요. 이 목록에 있는 인기 프로그래밍 언어가 마음에 들어요. 저는 JavaScript를 좋아합니다.

Lex Fridman (02:36:26) 오, 그래요. 저는 Bash를 많이 좋아해요. 그래요. 왜요?

ThePrimeagen (02:36:28) 오케이. Bash는 정말 좋아하나요? 배열이 필요할 때까지는 좋아요.

Lex Fridman (02:36:34) 오, 프로그래밍 언어로는 그냥 안 되지만 명령줄이 좋아요.

Lex Fridman (02:36:39) Bash를 좋아하시나요? 아니요, 아무도 Bash를 좋아하지 않습니다. 무슨 뜻이죠?

ThePrimeagen (02:36:39) 누군가 지금 너무 기분이 나쁘네요.

Lex Fridman (02:36:45) 자주 사용한다는 뜻인가요? 네. 배우는 게 좋죠? 좋습니다…

Lex Fridman (02:36:55) … 명령줄은 약간 초능력이므로 편안하게 사용할 수 있습니다. 제가 트위터에서 팔로우하는 FFMPEG.처럼요.

FFmpeg

Lex Fridman (02:37:05) 특정 트위터 계정이 합법적인 것만 있습니다. 그리고 FFMPEG은 명령줄에 추가할 수 있는 모든 종류의 매개변수가 있는데, 극소수의 마법사만 이해할 수 있는 암호 같은 언어 중 하나라고 생각해요. 하지만 일단 천천히 이해하기 시작하면, 그리고 저는 이제 막 숙달을 향한 여정의 시작 단계에 불과하지만, 매 단계마다 얻는 능력은 기하급수적으로 커지는 느낌입니다. FFMPEG은 정말 놀라운 라이브러리 시스템이라고 할 수 있죠? 이 모든 코덱, 모든 컨테이너, 미디어 코덱 세계의 모든 신비를 다뤄야 하기 때문에 그 뒤에 있는 사람들은 정말 뛰어난 마스터마인드임에 틀림없습니다. 그리고 그들은 압축을 이해하는데, 이는 또 다른 매우 매혹적인 기술적 문제 집합으로, FFMPEG만 해도 존재한다는 사실에 기쁨을 느낍니다. 하지만 이 기능을 제대로 활용하려면 Bash와 같은 명령줄에 익숙해져야 합니다. 그렇죠.

ThePrimeagen (02:38:12) 나는 FFMPEG이 우리 시대의 가장 중요한 라이브러리 중 하나라고 생각하는데, 트위터 계정은 너무 엉망진창입니다. FFMPEG이 마땅히 받아야 할 사랑을 받지 못한다고 생각하기 때문에 가장 놀라운 일입니다. 모든 애플리케이션, OBS, 아마도 후드 밑에는 FFMPEG이 숨어 있을 것입니다. 모든 애플리케이션, 후드 안의 FFMPEG, 하지만 그들은 마땅히 받아야 할 사랑을 받지 못합니다. 저는 그냥 좋아합니다. 정말 최고라고 생각합니다.

Lex Fridman (02:38:39) 예, JavaScript, HTML, CSS, Python, SQL, 즉 SQL Squeal은 프로그래밍 언어라고 말하고 싶네요. 엄청나게 정교한 프로그래밍 언어입니다. 네?

ThePrimeagen (02:38:52) SQL은 흥미롭습니다. 프로그래밍 언어로 분류할 수 있다고 생각합니다. 그렇긴 하죠. 대소문자가 있고 그것으로 무엇을 할 수 있는지 정말 놀랍습니다.

Lex Fridman (02:39:00) 함수는 할 수 있고, 그런 건 다 할 수 있죠. 안 해도 됩니다.

ThePrimeagen (02:39:02) 네, 저장 프로시저의 경우 그렇게 하면 인생이 지옥이 될 수 있습니다. 모든 상위 언어가 엄격한 정적 타입 언어가 아니라는 점을 말씀드리고 싶습니다. 그래서 타입스크립트조차도 마음에 들지 않습니다. 그래서 배우는 사람들에게는 훨씬 더 엄격한 언어를 사용하는 것이 좋습니다. Go, Rust, 심지어 C Sharp, C++ 같은 것 말이죠. 유형에 대한 관점을 바꿀 수 있는 모든 것이 정말 도움이 된다고 생각합니다. 가장 인기 있는 언어 목록에서 그다지 많은 사랑을 받지는 못하지만 매우 환상적인 언어라고 생각해요.

Lex Fridman (02:39:38) 좋아요, 제가 여러분의 머리에 총을 들이대면 상위 5개 언어를 나열해 보겠습니다. 초롱초롱한 눈망울의 20대가 가장 배우고 싶은 언어 5가지를 묻는다고 가정해 보겠습니다.

ThePrimeagen (02:39:51) 사람들이 배워야 한다고 생각하는 언어 5가지를 꼽으라면, 적어도 이런 식으로 다시 말하자면 몇 가지 언어를 말하겠고, 그 중 일부는 최소한 탐구해야 한다고 생각합니다. 저는 느슨한 언어를 탐구해야 한다고 생각하기 때문에 상자형 값인 다변량, 즉 내부에 다양한 유형이 있는 파이썬 슬래시 자바스크립트를 예로 들 수 있습니다.

Lex Fridman (02:40:12) 무엇이라고 하셨나요? 느슨한 언어?

ThePrimeagen (02:40:13) 루시구스 언어. 동적인 언어이기 때문에 그런 언어도 탐구해 보는 것도 정말 좋다고 생각합니다. 그래서 저는 파이썬이나 자바스크립트를 바로 거기에 넣을 겁니다. 루아도 그 범주에 넣을 수 있습니다. 저는 엄격한 언어를 탐구해야 한다고 생각하기 때문에 Rust, Go 같은 것을 할 것입니다. 둘 다 정말 훌륭하다고 생각해요.

ThePrimeagen (02:40:32) C++를 할 수 있습니다. C++에서 일부 유형 지우기를 수행할 수 있습니다. Go로도 할 수 있지만, 대부분의 경우 Go가 이 작업을 수행하기에 가장 좋은 언어입니다. 조금 거칠어질 수 있습니다. 새로운 C++는 멋져 보입니다. 모두가 새로운 C++가 훌륭하다고 계속 말하죠. 여러분이 원했던 모든 기능과 원하지 않았던 모든 기능을 갖추고 있습니다.

Lex Fridman (02:40:47) 예, 맞아요. 똑똑한 포인터, 멍청한 포인터, 모든 종류의 포인터가 있죠. 메모리 누수는 없습니다. 그건 문제가 되지 않습니다.

ThePrimeagen (02:40:55) 풋건, 페이스건, 부드러운 침대. 모든 게 다 있어요.

Lex Fridman (02:40:58) 메모리 누수를 좋아하지 않는다면 그런 종류의 기능도 있습니다. 훌륭합니다.

ThePrimeagen (02:41:02) 오케이. 이건 어때요? 제가 정말 배우고 싶은 언어, 적어도 호기심 은행에 있는 언어. 스위프트, 엘릭서, OCaml 세 가지 언어가 있고, 그다음에는 진저빌이 훌륭하니까 오딘도 넣을 거예요. 하지만 Elixir와 OCaml은 제 밑에 강력한 함수형 언어가 없습니다. 그게 저에게는 정말 부족한 부분입니다.

Lex Fridman (02:41:26) 예, 엘릭서나 오딘, OCaml에 대해 놀라운 이야기를 들었습니다. 아시다시피 저는 Lisp를 좋아하는 사람입니다.

ThePrimeagen (02:41:33) 리스프를 해본 적이 없습니다. Lisp도 그 범주에 속할 수도 있고, 그냥 클로저가 현재로서는 모두가 사용하라고 하는 것 같아요.

Lex Fridman (02:41:39) 리스프의 경우, 저는 리스프에 대해 부정적으로 말하고 싶지는 않지만 현대 커뮤니티, 커뮤니티가 어떤 모습인지가 중요하죠. 엘릭서, 오딘, OCaml을 중심으로 작지만 흥분된 커뮤니티가 있는 것 같아서 도움이 됩니다. 트위터에 ‘나 이거 해냈어’라는 글을 올릴 수 있으니까요. 사람들이 흥분하고 기분이 좋죠. 좋은 느낌이에요.

ThePrimeagen (02:42:01) 엘릭서에서 멋진 일을 하면 트위터에 글을 올리면 좋아요를 수천 개 받을 수 있는데, 이렇게 틈새 주제에 대한 게시물에 좋아요를 받는다는 것은 꽤 많은 수의 사람들이 있다는 뜻입니다. 프로그래밍은 이미 꽤 작은 주제입니다. 그런 다음 함수형 프로그램으로 넘어갑니다. 그것은 작은 주제에 작은 주제입니다.

Lex Fridman (02:42:17) 예, 그렇게 많이는 못 받아요. 이맥스에 대한 글을 올리면 귀뚜라미가 날아오고… 네오빔을 자랑스럽게 사용한다고 하면 ‘잘한다’는 분들이 많을 텐데…

Lex Fridman (02:42:29) 예, 그냥 과장된 것일 수도 있습니다.

ThePrimeagen (02:42:31) 다시 남북전쟁으로 돌아와, 렉스.

Lex Fridman (02:42:33) 예. 때로는 인기를 얻기 위해 Emacs라는 우수한 편집기를 희생하고 Neovim을 선택해야 할 때도 있습니다. 단지 인기를 위해 무결성과 가치, 품질을 희생하는 것이죠. 그것은 여러분의 선택입니다.

ThePrimeagen (02:42:45) 그렇습니다. 그 표현이 마음에 듭니다.

Lex Fridman (02:42:49) 알았어요. 어쨌든, 무슨 얘기 중이었죠? 일괄적으로 하는 방식이 마음에 드네요. 잘됐네요.

ThePrimeagen (02:42:53) 지금 제가 탐구하고 있는 사이드 허니는-

ThePrimeagen (02:42:57) 네, 사이드 허니입니다. 제 주력은 아니죠. 지금은 웹 앱을 구축할 때 Go를 가장 좋아합니다. 복잡한 로직이 많은 백엔드를 구축해야 한다면 Go가 정말 편리하거든요. 하지만 제가 필요한 모든 것을 표현할 수 있는 능력에 대해서는 정말 답답합니다. 목록, 이질적인 목록, 두 가지 유형이 포함된 목록이 있는 경우 Go는 사용하기가 정말 재미없습니다. 그래서 제가 탐구하고 있는 언어가 Jai나 J, 조나단 블로우가 말한 언어, 그리고 지그입니다. 두 언어 모두 강력한 힘을 가지고 있습니다. 둘 다 매우 흥미롭습니다. 확실히 풋 건을 가지고 있죠. 그들은 확실히 더 많은 것을 가지고 있으며 당신을 쉽게 받아들이지 않습니다. 지그는 정말 놀라운 언어인 것 같고 자이도 마찬가지예요. 둘 다 정말 멋져요.

Performance

Lex Fridman (02:43:42) 예. 실제로 데이브 플러머가 100개에 가까운 언어를 대상으로 속도 테스트를 한 것을 봤는데, Zig가 1위를 차지했습니다.

ThePrimeagen (02:43:51) 실수였어요. 실수라고 해서 Dave Plummer를 비하하는 것은 아닙니다. 그는 매우 재능 있는 엔지니어입니다. 테스트 중이던 Zig, C, C++, 그 모든 언어가 모두 LLVM 백엔드였으니까요. 그게 실제로 실행 가능한 부분으로 전환하는 것이죠. 속도에 차이가 있다면 어떤 언어에서 제대로 표현하지 못했다는 의미일 뿐입니다. 트위터에서 유행하고 있는 언어 공 테스트가 있습니다. 지그는 6위나 7위 정도였는데 어떤 언어인지 잊어버렸어요. 저는 이 예제를 가지고 놀면서 인자에 “별칭 없음”이라는 단어를 추가했는데, 이는 이 함수에 들어오는 메모리 조각에 전역 포인터가 없고 아무 것도 없으므로 컴파일러가 정말 멋진 최적화를 할 수 있다는 것을 의미합니다. 그리고 C 버전보다 더 빠르게 만들었습니다. 따라서 단지 올바르게 지정되지 않았다는 의미일 뿐입니다.

Lex Fridman (02:44:40) 그래요, 하지만 여전히 흥미진진하죠. 저에게는 Zig, Rust, C++ 간의 경쟁이 정말 흥미롭습니다. 일부는 속도 경쟁입니다. 또 하나는 성능 좋은 코드를 얼마나 쉽게 작성할 수 있느냐입니다.

ThePrimeagen (02:44:51) 한 말씀 드리죠. 그래서 저는 Zig가 C나 Rust에 비해 상대적으로 흥미롭다고 생각합니다. C는 궁극의 언어입니다. 무엇이든 할 수 있고, 전처리나 매크로가 있습니다. 꽤 많은 것을 할 수 있지만 정말 어려운 언어이기도 합니다.

ThePrimeagen (02:45:00) 매크로는 꽤 많은 것을 할 수 있지만 정말 어렵기도 하고 정말 간단해서 배울 수 있는 것도 있습니다. 그래서 매크로는 그 자체로 독특한 존재입니다. C를 정말 잘하게 되면 C는 마법의 언어이며 사람들은 C를 정말 잘하고 사람들은 C를 매우 높이 평가합니다. Rust는 매우 안전한 언어와 같습니다. C로 할 수 있는 일은 Rust로는 표현조차 할 수 없습니다. Rust는 밤에 여러분을 따뜻하게 지켜주는 안전한 사람이 될 것입니다. 정말 최고가 될 거예요.

(02:45:24) 하지만 그 중간 어딘가에 Zig가 있습니다. 지그에는 옵션이 있습니다. 옵션에 익숙하지 않다면 단순히 여기에 값이 있거나 없는 것을 의미하지만, 이를 사용하기 전에 먼저 확인해야 합니다. 따라서 널 포인터 역참조 세그폴트 문제를 방지할 수 있습니다. 그리고 이 기능은 C에서는 기본적으로 제공되지 않으므로 사용자가 직접 빌드해야 합니다. Rust에서는 유일한 옵션이지만, Zig는 “포인터가 있으면 널이 될 수 있다고 마케팅하지 않는 한 널로 표현할 수 없습니다.”라고 말합니다.

(02:45:48) 다른 유형의 포인터와 같은 방법으로 우회할 수 있는 방법이 있습니다. 하지만 대부분의 경우 지그는 대부분의 경우 안전을 제공합니다. 약간의 안전성은 있지만 C에 가깝기 때문에 안전한 코드와 안전하지 않은 코드를 표현할 수 있는 영역에서 원하는 모든 것을 제공합니다. 작성하기가 매우 쉽습니다. 매우 예쁘죠. 적어도 그 뒤에 숨은 아이디어는 매우 예쁩니다. 언어 자체는 심심하지만…

Lex Fridman (02:46:12) 와, 모든 것에 아름다움이 있네요, 프라임.

Rust

Lex Fridman (02:46:15) Rust로 프로그래밍을 많이 하셨군요. Rust의 어떤 점이 마음에 드시나요? 강점은 무엇인가요? 약점은 무엇인가요? 이미 언급하신 메모리 관리, 여러 언어가 해결해야 하는 메모리 관리의 어려움에 대해 말씀하실 수도 있겠지만, Rust의 어떤 점을 좋아하시나요?

ThePrimeagen (02:46:31) Rust에서 제가 좋아하는 점은 스택에 직접 연결된 메모리를 해제할 수 있다는 점입니다. 따라서 무언가를 만들 때마다 스택 변수가 있거나 힙에 대한 포인터, 포인터 및 길이 등 스택 메모리가 일정량 있습니다. 문자열이 스택에 모두 있는 것이 아니라 스택에 일부, 힙에 일부가 있기 때문에 스택에 일정량의 메모리가 있고 힙에 일부 메모리가 있습니다. 그리고 스택 변수가 범위를 벗어나 정리되면 힙에 있는 내용도 함께 정리됩니다. 따라서 ‘이런, 메모리를 비우는 것을 깜빡했네’라는 생각을 단순화할 수 있습니다. 그냥 알아서 해줍니다.

(02:47:07) 따라서 가비지 수집기가 아니며, 나중에 언젠가 처리할 것입니다. 직접 호출해야 하는 C와는 다르며 그 중간 어딘가에 있습니다. 이제 사람들이 사용하는 많은 전략, 아레나 등 C 부분을 훨씬 쉽게 만들어주는 모든 것이 있습니다. 언급하지 않았지만 훨씬 더 쉽게 만들 수 있습니다. 하지만 Rust는 이를 정말 멋지게 해냈고, 정말 멋진 아이디어 같아서 정말 마음에 듭니다. 두 번째로 Rust가 정말 좋은 점은 무언가의 가변성을 지정해야 한다는 점입니다. 따라서 변수를 생성한 다음 변형을 지정해야 합니다. 이것은 변수일 뿐만 아니라 변경 가능한 변수라고 말해야 합니다. 그래야 코드가 정말 읽기 쉽고 이해하기 쉬워집니다. 옆에 음소거라는 단어가 없는 변수는 변경할 수 없다는 사실을 알 수 있기 때문입니다. 여기에는 몇 가지 규칙이 있지만 일반적인 개념은 이해하실 수 있습니다.

Lex Fridman (02:47:57) 대부분의 프로그래밍 언어와 달리 변경될 것임을 명시적으로 명시해야 합니다..

Lex Fridman (02:48:03) 네, 맞아요. 정말 흥미롭네요. 제 말은 안전하다는 것, 안전하려고 노력하고 있다는 것, 그리고 그 안전이 한계를 만들 수도 있다는 것입니다. 인공지능 군주들에게 물어볼게요. Rust는 성능, 타입 안전, 동시성을 강조하는 매우 빠른 메모리 효율 시스템 프로그래밍 언어입니다. 이 언어는 가비지 컬렉터를 사용하지 않고 컴파일 시 객체 수명을 추적하는 고유한 “차용 검사기”를 사용하여 메모리 안전성을 강화하는 대신 말씀하신 것처럼 가비지 컬렉터를 사용하지 않습니다. 이를 통해 널 포인트나 역참조, 메모리 누수 등과 같은 일반적인 프로그래밍 오류를 방지할 수 있습니다. 네.

(02:48:43) 메타프로그래밍에 대해서도 말씀하셨죠. 메타프로그래밍을 위해 어떤 언어를 좋아하시나요? 저는 C++의 메타프로그래밍을 좋아하지만 굉장히 복잡하죠. 적어도 C++ 17 표준으로 프로그래밍할 때는 엉망진창이고, 특히 디버깅할 때는 더더욱 엉망이라고 생각합니다.

ThePrimeagen (02:49:00) 네, 저는 메타프로그래밍 초보자라고 할 수 있습니다. 저는 이제 겨우 몇 가지 문제를 해결했을 뿐입니다. 그래서 올해는 정말 그 끝이 어디까지 갈 수 있는지 보고 싶어요. 그래서 저는 이 문제에 대해 확고한 의견이 없습니다. 지그, 제가 지그에 대해 정말 좋아하는 점은 메타프로그래밍이 언어 그 자체라는 점입니다. 그래서 굳이 그럴 필요가 없고 대안이 없습니다. Rust에는 대안이 있습니다. 매크로를 만들 때는 매크로 구문을 사용해야 합니다. Zig에서는 그냥 프로그래밍을 하고 컴파일 시간만 지정하고 싶다면 컴파일 시간이라는 단어를 추가하기만 하면 됩니다.

(02:49:33) Zig에서 컴파일 타임에 소수 목록을 만들 수 있는데, 이는 흥미롭고 독특한 기능입니다. 컴파일 타임에 실행되는 코드를 작성한 다음 런타임에 그 결과를 활용할 수 있습니다. 정말 깔끔하죠? 저는 그렇게 생각합니다. 하지만 다시 말씀드리지만, 제가 매우 권위적으로 이야기할 수 있을 정도로 사용해 본 적은 없습니다.

Lex Fridman (02:49:55) 미정, 올해는 어떤 언어를 선택하시겠습니까?

ThePrimeagen (02:49:59) 저는 Go를 주축으로 삼고, 두 명의 사이드 허니인 Jai와 Zig를 계속 사용할 계획입니다. 저는 이 둘을 통해 ChatGPT 및 ElevenLabs와 대화하고 클라이언트로 물건을 보내고 웹 소켓으로 작업할 수 있는 서비스를 구축하려고 합니다. 그리고 이 영역에서 어떻게 작동하는지 확인하고 싶어요. 그리고 제가 언어를 잘못 사용하고 있을 수도 있는데, Jai는 웹용으로 설계되지 않았거든요. 방금 Twitch 채팅을 읽을 수 있는 기능을 작성했는데 버클리 소켓을 사용해야 했어요.

(02:50:29) 버클리 소켓에 익숙하지 않다면 예전 방식처럼 C에서 하는 방식이기 때문에 직접 연결을 만들어야 하는 수고로움을 겪게 됩니다. 직접 연결을 만들고, 소켓에서 읽은 다음 모든 IRC를 파싱해야 하죠? 처음부터 다시 구축해야 하죠. 이 서버에 대한 새로운 TCP 연결 같은 건 없잖아요. “소켓을 만들고 있습니다.”라고 생각해야 합니다. IPv4 계열과 TCP를 사용하게 될 것이고, 이제 주소를 가져와서 DNS로 주소를 조회하고 그 주소를 다시 가져와서 TCP에 연결해야 합니다. 따라서 여전히 훨씬 더 수동적입니다. 그 부분은 훨씬 더 원시적이지만 재미있어요.

Epic projects

Lex Fridman (02:51:03) 스트림에서 구축한 역대급 프로젝트 중 기억에 남는 것은 무엇인가요?

ThePrimeagen (02:51:08) 방해해서 죄송합니다. 그래서 지금 정말 흥분되네요.

ThePrimeagen (02:51:17) 제가 가장 좋아하는 프로젝트는 작년에 진행했던 프로젝트입니다. 누군가 둠 ASCII 포트를 만들었죠. 그래서 둠을 아스키로 플레이할 수 있게 되었죠. 즉, 터미널에서 둠을 플레이할 수 있게 된 거죠. 정말 재미있고 신나는 일이었죠. 그래서 저는 둠 아스키를 생성할 수 있는 바둑 프로그램을 만든 다음, 그 둠 아스키를 브라우저로 보내서 사람들이 브라우저에서 둠 아스키를 플레이할 수 있게 하고, 트위치 채팅을 통해 그 둠 아스키 인스턴스를 제어할 수 있도록 만들어서, 오랜 시간 동안의 움직임의 평균을 취하고 컨트롤러처럼 재생할 수 있게 만들었습니다. 그리고 트위치 채팅에 스팸을 보내서 레벨 1을 이겼습니다.

(02:51:55) 하지만 재미있는 부분은 재미있는 인코딩 기법을 많이 사용했다는 점입니다. 저는 쿼드 트리를 사용하여 코딩에서 실행 길이를 더 적게 사용할 수 있었습니다. 나만의 압축 알고리즘을 만들려고 노력했는데, ASCII를 많이 보내면 색상을 표현해야 하기 때문에 여전히 비용이 많이 들고 색상은 저렴하지 않기 때문입니다. 게다가 어떻게 생겼는지도 표현해야 하죠? ASCII는 어떻게 생겼나요?

(02:52:15) 많은 엔진에서 전송하는 ASCII의 모양이 실제로 픽셀의 광도에 비례하는 것처럼 압축에 사용할 수 있는 재미있는 기술이 있다는 것을 깨달았습니다. 따라서 흰색을 표현하려면 8을 사용하거나 파운드 기호를 사용하지만 검은색은 마침표나 쉼표, 막대 등 더 작은 것을 사용하고 싶을 것입니다. 그래서 많은 양의 데이터를 변환하는 다양한 압축 알고리즘을 개발했는데, 얼마나 걸리는지 잊어버릴 정도였죠. 수천 명의 사람들이 동시에 같은 이미지를 보고 모두 동시에 둠과 상호 작용할 수 있도록 하려면 기가바이트 단위로 전송해야 합니다. 어떻게 하면 가능한 한 작게 만들어서 모두 보낼 수 있을지 고민하면서 기가바이트에서 킬로바이트로 줄였습니다. 정말 재미있었어요. 정말 즐거운 시간이었어요.

Lex Fridman (02:53:00) 이것은 실제로 채팅에 있는 모든 사람들에게 보내는 것이죠. 그렇다면 그 파이프라인은 어디에 있으며, 채팅이 어떻게 Doom을 제어할 수 있을까요?

ThePrimeagen (02:53:09) Twitch 채팅. 네, 그래서 사람들이 W를 스팸으로 보내면 그 시간 동안 대다수의 사람들이 W를 말하면 150밀리초 동안 W를 누르고 있을 것입니다.

Lex Fridman (02:53:21) 좋습니다. 좋아요. 화면에서 현재 위치를 어떻게 입력하나요?

ThePrimeagen (02:53:26) 그래서 원래는 트위치를 통해 보내려고 했는데 트위치가 5초 정도 지연되기 때문에 모든 사람이 제 컴퓨터에서 웹사이트까지 볼 수 있도록 웹사이트로 전송했고 일반적인 지연 시간은 약 70밀리초 정도였습니다. 그래서 사람들은 그 짧은 시간 동안 무슨 일이 일어나고 있는지 대부분 볼 수 있었습니다. 정말 흥미진진했죠. 그래서 1,000명에서 1,400명 정도의 사람들이 W를 누르고 F를 눌러 발사하고 돌면서 좀비를 죽였습니다. 레벨 1의 맨 마지막에 있는 배럴을 폭파해서 임프를 죽였죠.

Lex Fridman (02:53:57) Twitch 채팅에서 W를 어떻게 얻나요? API가 있나요?

ThePrimeagen (02:54:03) 나는 IRC를 사용하고 있었기 때문에 약간의 TCP 소켓만 있으면 IRC를 파싱할 수 있습니다..

Lex Fridman (02:54:06) 오케이. 지연이 거의 없습니다. Okay.

ThePrimeagen (02:54:08) 예, 몇 백 밀리초라고 생각해요. 사람들이 종종 뒤집어졌다가 앞으로 가다가 문을 놓치고 다시 돌아가야 했기 때문에 실제로 조금 어려웠을 정도였어요…

ThePrimeagen (02:54:20) 멋졌어요. 인코딩을 많이 해본 적이 없어서 그런지 제가 가장 좋아하는 프로젝트였어요. 인코딩은 보통 어떤 일을 하나요? 좋아요, 뭔가를 내려 보내야 해요. 글쎄요, 그냥 압축하면 서버가 알아서 하겠죠. 서버가 알아서 하죠. 생각할 필요가 없죠. 그래서 제가 생각하는 대신 올바른 것을 보내려고 합니다.

Lex Fridman (02:54:37) 예, 압축에 대해 생각해야 합니다. 그래요. 여기까지입니다. 압축에 대해 많이 생각해야 하기 때문에 FFmpeg에 대한 애정이 더 커지는 것 같습니다.

ThePrimeagen (02:54:44) 최종적으로 FFmpeg와 그 놀라움에서 영감을 얻었습니다.

Lex Fridman (02:54:49) 일반 채팅 커뮤니티와만 이야기할 수 있나요? 스트리밍에서 가장 큰 비중을 차지하는 것은 실시간으로 소통하는 사람들입니다. 다양한 채팅 커뮤니티와 대화할 수 있나요? 우선 YouTube, Twitch, X 중 최고의 채팅 커뮤니티는 어디인가요?

ThePrimeagen (02:55:11) 기술적으로는 최악이라고 생각하지만 YouTube의 잘못은 아니기 때문에 이 부분에서 YouTube에 대해 안타까움을 느낍니다. 그 이유를 설명해 드리겠습니다.

Lex Fridman (02:55:19) 그런 다음 왜 틀렸는지 설명해 드리겠습니다. 하지만 계속하세요. YouTube는 훌륭합니다.

ThePrimeagen (02:55:22) 유튜브를 좋아하시겠지만 그 이유를 설명하자면, Twitch에서 다른 사람의 채널에 가면 밈이 유입되면 모든 Twitch 사용자가 밈에 반응하고 변형하는 인간 지네 문화가 형성되어 있기 때문이죠. 따라서 모든 채널에 동일한 문화가 존재합니다. 비슷한 이모티콘과 모든 것이 많아서 매우 긴밀하게 연결되어 있습니다. 그래서 제가 스트리밍을 할 때, 여러분들이 소다팝핀이나 유명 스트리머인 아스몽골드 같은 [02:55:56] 소프트웨어 스트리밍을 보면 볼 수 있는 똑같은 농담이 나옵니다. 똑같은 밈이 모두 똑같은 종류의 파이프를 통해 흐르고 있었죠. 그래서 매우 총체적인 종류의 커뮤니티입니다.

(02:56:04) 그래서 농담을 할 때마다 에테르에 담긴 농담을 하고 있는 셈이죠. 트위터도 마찬가지입니다. 기술 트위터에는 농담이 정해져 있어서 농담을 볼 수 있습니다. 트위터 채팅의 문제점은 현재 아무도 없다는 것입니다. 일반적으로 예를 들어, 저는 트위치에서 1,500명에서 3,000명, 유튜브에서 800명에서 2,000명, 트위터에서 50명 정도의 사람들이 있습니다. 따라서 그 차이는 엄청납니다.

(02:56:34) 하지만 트위터에는 끊임없이 흘러나오는 밈이 있는 곳에서 발전하고 있는 것과 같은 것이 있습니다. 그래서 연결성이 매우 높습니다. YouTube에는 그런 것이 없는 것 같습니다. 수많은 사람들이 다양한 이유로 유튜브를 방문합니다. 저는 배우기 위해 YouTube에 갑니다. 그래서 사람들이 들어와서 배우고 싶어 하죠. 그래서 그들은 밈 열차를 타는 것이 아니라 문화적 시대정신 열차를 타는 것이 아닙니다. “그런데 이 특정 사례에서 전환 문을 사용하면 되는데 왜 이 if 문을 사용하는 거죠?”라고 묻습니다. 그러면 여러분은 ‘내가 여기서 하려는 말은 그게 아닙니다.

Lex Fridman (02:57:02) 예, 밈 열차의 선장이 되고 싶거나 밈 열차에 탑승하고 싶으신가요.

ThePrimeagen (02:57:07) 네, 맞아요. 아니면 채팅에서 문화를 만들고 싶을 수도 있는데, 채팅이 트위치에 흐르는 시대정신의 일부가 될 수 있기 때문이죠. 그리고 X와 트위치 사이는 매우 밀접한 관련이 있습니다. 유튜브와는 전혀 어울리지 않는 느낌입니다. 그리고 유튜브는 특히 나쁜 일을 하고 있습니다. 어떤 사람들은 수영을 할 수 있기 때문에 좋은 일이라고 주장할 수도 있습니다. 수영은 실제로 현재 타임스탬프를 변경할 수 있기 때문이죠. 예를 들어 갑자기 미니밴을 타고 축구 경기장에 가는 장면을 찍을 수 있죠. 그러다가 20분 후에 지그에 대해 이야기하다가 누군가가 “저는 개인적으로 축구하러 갈 때 뭐든 이용합니다.”라고 말하죠. 그러면 여러분은 “무슨 얘기를 하는 거죠?”라고 묻겠죠. 이처럼 YouTube는 동영상 내에서의 위치에 따라 대화 내용이 달라지기 때문에 매우 단절된 대화가 이루어집니다. 스윔은 넷플릭스에서 나온 것인데, 스윔이라고 부르세요.

ThePrimeagen (02:57:56) 예, 사람들이 수영을 하라고 했어요.

Lex Fridman (02:58:00) 그래요. 그냥 지어낸 말이 아니군요. 고마워요. Wow.

ThePrimeagen (02:58:02) 예, 하지만 아마 지어낸 이야기일 테고 넷플릭스에서 10명만 말했을 테니 아무도 모르고 “그래, 맞다”라고 할 것입니다. 넷플릭스에서는 그런 일이 일어나지 않아요.”

Lex Fridman (02:58:11) 프로젝트로 돌아가서, 어떤 프로젝트가 진행 중이거나 일반적으로 진행 중인가요?

ThePrimeagen (02:58:14) 아니요, YouTube 채팅이 최고의 채팅인 이유에 대해 답해야 합니다.

Lex Fridman (02:58:18) 저를 납득시켜 주셨네요. 좋아요, 유튜브가 최고의 채팅인 이유죠. 글쎄요, 전 그냥 싫어하는 것 같아요. 기본적으로 제가 헛소리만 하는 것 같아요.

Lex Fridman (02:58:29) 그리고 저는 아마도 트위치가 재미있는 밈 문화이기 때문에 밖에서 촬영하고 있는 것일 겁니다. 그래서 밖에서 촬영해서 트위치 하우스에 달걀을 던지는 것도 재미있어요. 그리고는 잔디밭 의자에 앉아 작은 유튜브 커뮤니티와 수다를 떨고 있죠. 네, 맞아요. 트위치에는 진정한 커뮤니티가 형성될 수 있습니다. 하지만 저는 유튜브의 개방성이 더 마음에 들어요. 전 세계에 더 잘 개방되어 있죠. 더 쉽게 접근할 수 있고 공유하기 더 쉽죠. 그냥 더 잘 알려진 플랫폼일 뿐이죠.

Lex Fridman (02:59:14) 오픈 월드용. 평소 비디오 게임 스트리밍이나 그런 것을 보지 않는 사람들에게 보낼 수 있습니다.

ThePrimeagen (02:59:19) 예. Twitch 링크를 보내면 “저는 비디오 게임을 좋아하지 않아요”라고 하죠. 그러면 당신은 “사실 비디오 게임이 아니에요.”라고 답하죠. Twitch는 유튜브와는 다른 관점을 가지고 있기 때문에 Twitch를 언급할 때마다 이런 이야기가 나옵니다.

Lex Fridman (02:59:32) 조 로건의 팟캐스트에 출연했는데, 그가 “트위치가 여전히 존재하나요?” 같은 질문을 했던 것 같아요. 그래서 예를 든 거예요. 그러자 제이미가 “네, 네, 확실히 여전히 존재하죠. 계속 성장하고 있죠.”라고 대답했습니다. 그래서 네, 트위치 트위치 영역에 참여하지 않는 사람들도 많아요. 네, 전 그냥 헛소리하는 걸 좋아하거든요.

Lex Fridman (03:00:01) 하지만 모든 다른 플랫폼에서 액세스할 수 있도록 한 것은 멋지죠. 그리고 X에 대한 기대가 크지만 기능적으로는 아직 개선해야 할 점이 많아요.

ThePrimeagen (03:00:11) 왜 사람들은 X를 사용하나요? 일반적으로 텍스트 기반 인터랙션을 살펴보고 싶을 때 사용합니다. 따라서 사용자의 기대치가 바뀌어야 한다고 생각합니다. 그리고 시간이 좀 걸립니다. 사람들이 이를 받아들이기까지는 시간이 조금 걸릴 것입니다. 오디오 우선이라는 아이디어는 사람들이 오디오를 듣고 휴대폰을 멀리할 수 있는 훌륭한 첫걸음이라고 생각합니다. X가 성공하려면 많은 변화가 일어나야 합니다.

Lex Fridman (03:00:37) X에는 Reddit과 같은 놀라운 댓글 섹션이 있죠, 그렇죠? 그러니까…

ThePrimeagen (03:00:43) 놀랍다고 하셨죠. 그건 레딧이 아니에요. 댓글 섹션, 맞습니다.

Lex Fridman (03:00:46) 댓글, 네, 맞아요. 놀랍도록 역동적이고 생동감 넘치는… 네. 기술 플랫폼은 무엇인가요? 인터페이스와 기술이 담론을 어떻게 형성하나요? X는 Reddit과는 다른 스타일, Facebook과는 다른 스타일, Instagram과는 다른 스타일을 가지고 있기 때문에 매력적입니다. 흥미롭죠. 그리고 정렬 방식, 커뮤니티를 구축하는 것이 얼마나 쉬운지 등 모든 공통적인 부분이 기술적으로 다르죠? YouTube는 실제로 커뮤니티가 아니기 때문입니다. YouTube의 모든 동영상에는 고유한 미니 커뮤니티가 있습니다. 여러분은 모두 하나의 동영상에 대해 이야기하고 있습니다. 하지만 건너뛸 수는 없습니다.

ThePrimeagen (03:01:40) “안녕 빌, 안녕 조지”와 같은 멘트가 나오지 않습니다. 여러 동영상에서 발생하는 크로스토크가 없습니다.

Lex Fridman (03:01:44) 그래요. 하지만 커뮤니티는 굉장해요. 저는 커뮤니티를 좋아해요. 커뮤니티의 느낌이 정말 좋고, 그게 바로 트위치가 진정으로 제공하는 것 같아요

ThePrimeagen (03:01:52) 유튜브에도 이 기능이 있긴 합니다. 총체적인 커뮤니티가 있습니다. 동영상에 재미있는 댓글이 많이 달리고 좋아요를 많이 누르고 재미있는 담론이 일어나는 것을 보면 커뮤니티가 있는 것처럼 느껴지지만 특정 부분만 볼 수 있을 뿐입니다.

Lex Fridman (03:02:06) 생방송을 하는 YouTube에서는 더욱 그러할 것 같아요. 같은 사람들이 모두 나타나서 헛소리를 하고, 축하하고, 밈 열차가 도착합니다.

Lex Fridman (03:02:17) 오케이. 이제 프로그래머로서 어떤 프로젝트가 당신을 형성했나요? 스트리밍한 프로젝트든 오프라인 프로젝트든

ThePrimeagen (03:02:27) 제게는 한 가지 프로젝트를 꼽을 수 있을지 모르겠지만, 제가 생각하는 특정 지점, 여러분이 많이 배울 수 있다고 생각되는 곳을 꼽을 수 있습니다. 여러분이 작성하는 작은 프로그램은 1,000줄에서 5,000줄 사이의 코드인데, 저는 이를 아주 작은 프로젝트라고 생각합니다. 이를 더 큰 시스템 내의 모든 기능과 연관시킬 수도 있습니다. 웹사이트의 특정 기능은 수천 줄이 될 수도 있고, 몇만 줄이 될 수도 있습니다.

(03:02:51) 선택한 모든 사항이 합쳐지는 지점이 있습니다. 저는 보통 5~10,000줄 정도의 코드에서 그 지점을 찾습니다. 그 선택이 여러분에게 부담을 주기도 하고 자유를 주기도 합니다. 프로젝트나 코드 베이스의 작은 부분에서 그 지점에 도달할 때 가장 많은 것을 배운 것 같다는 생각이 드는 이유는 바로 그 지점에서 테스트할 수 있기 때문입니다. 그 지점에서 A, 소프트웨어 설계 방법에 대한 초기 직감적인 결정이 얼마나 좋았는지, B, 이제 돌아가서 어떻게 하면 더 효과적인 방식으로 이 전체에 걸쳐 테스트를 수행할 수 있을지 생각해야 합니다. 이것을 20,000줄의 코드로 어떻게 확장할 수 있을까요? 지금 가지고 있는 것으로 이 모든 것을 할 수 있을까요, 아니면 다시 생각해야 할까요?

(03:03:28) 그리고 저는 그것이 바로 최고의 배움이 일어나는 곳이라는 것을 알게 되었습니다. 그리고 그 숫자는 경험이 쌓일수록 더 커져야 한다고 생각합니다. 코드가 백만 줄인 프로젝트도 있지만 전체론적인 프로젝트는 아니니까요. 코드 베이스의 모든 부분은 특정 시기의 특정 프로그래밍 스타일에 따라 어느 정도 나이를 가지고 있습니다. 어떤 것은 더 기능적이고, 더 클래스 기반이며, C++의 프리프로세서 매크로라면 영혼을 도와주세요. 시간이 지남에 따라 다양한 종류를 발견할 수 있습니다.

(03:04:08) 그래서 저는 그것을 기능이나 작업 중인 일로 생각하려고 노력합니다. 보통 5,000줄 정도에서 제가 좋은 결정을 내렸나 나쁜 결정을 내렸나를 판단하게 되죠. 그리고 바로 그 단계에서 모든 학습이 이루어집니다. 2만 줄을 찍어도 화를 내지 않고 촬영할 수 있는 수준까지 끌어올리려고 노력 중입니다.

Asserts

Lex Fridman (03:04:27) 그래서 우선은 자신이 만든 부분을 즐기는 것이죠. 거기서 모든 파트가 함께 춤추는 것을 볼 수 있습니다. 디버깅을 할 때도 디버깅이 얼마나 쉬운지 선택이 구체화되는 것을 볼 수 있습니다. 과거에도 언급하셨겠지만 저는 모든 곳에 어설트를 넣는 것을 매우 좋아합니다.

ThePrimeagen (03:04:51) 아니, 당신 때문에 그러는 겁니다.

ThePrimeagen (03:04:54) 첫 번째와 같았어요. 계속하세요, 죄송합니다.

Lex Fridman (03:04:56) 정말요? 캐치 박스를 사용하든, 어설트를 사용하든, 테스트를 사용하든, 제게 있어 즐거움 중 하나는 시스템이 커질수록 얼마나 빨리 디버깅할 수 있는지를 통해 제 왕국에서 제 앞에 놓인 모든 어설트의 지뢰밭의 보상을 볼 수 있다는 점입니다. 그리고 무엇보다도 실제 버그로 발전하기 전에 오류를 발견하고 그 오류를 얼마나 빨리 해결할 수 있는지 확인할 수 있습니다. 그리고 그것은 저에게 기쁨을 가져다줍니다. 저에게 프로그래밍의 가장 큰 즐거움은 고장 나지 않고 올바르게 작동하며 대부분의 경우 올바르게 작동하는 강력한 시스템을 만드는 것입니다. 그리고 시스템을 스트레스 테스트하고 시스템에서 모든 것이 올바르게 작동한다는 모든 신호를 얻는 것은 저를 기쁨으로 채우고 시스템이 실제로 작동하는지 확인하는 일입니다. 5,000줄인지 10,000줄인지 모르겠지만 Java나 C++라면 수백만 줄의 코드가 될 수도 있습니다. 하지만 파이썬에서는 1만 줄의 코드라고 말씀드리고 싶네요. 그때부터 마법을 경험하게 되죠. 하지만 어쨌든

ThePrimeagen (03:06:11) 오케이, 존 카맥과 어설트에 대해 대화를 나눴군요.

ThePrimeagen (03:06:14) 프로그램에 표현되어서는 안 되는 상태가 있을 때 프로그램을 효과적으로 충돌시키는 어설트를 사방에 배치하는 아이디어에 대해 말씀하셨고 이러한 선택을 적극적으로 수행해 보셨죠. 그래서 전에는 그렇게 해본 적이 없습니다. 그리고 저는 이것이 오래된 기법이라는 것을 알고 있으며, 사람들이 이런 일을 했다는 것을 알기에는 제가 너무 어리거나 멍청한 게 분명합니다. 저는 자바에서 자랐기 때문에 이런 일을 겪어보지 못한 것 같아요.

(03:06:38) 그래서 저는 그것을 보고 어설션을 더 많이 사용하는 방법이 궁금했습니다. 그러던 중 조란이라는 사람을 만났어요. 그는 타이거비틀의 CEO이자 창시자입니다. 타이거비틀은 세계에서 가장 빠르고 훌륭한 금융 데이터베이스입니다. 수많은 금융 거래를 처리해야 하는 회사에서 탄생한 것이죠. 그리고 Zig로 작성되었으며 결정론적 시뮬레이션 테스트를 수행하고 NASA의 보증을 사용하여 정말 훌륭한 소프트웨어를 만듭니다. 따라서 U 크기를 사용하지 말고 모든 곳에서 예상되는 정확한 인풋 크기를 지정하세요. 이런 모든 종류의 작업은 매우 구체적입니다.

(03:07:10) 그 중 하나는 모든 함수에는 두 개의 어서트가 포함되어야 한다는 것입니다. 이런 일이 일어나야 하는 양수 공백이든, 이 포인터처럼 음수 공백이든 절대 널이 되어서는 안 됩니다. 절대 일어나서는 안 되는 일을 프로그래밍하고 있는 거죠. 보통은 그렇게 지정하지 않습니다. 그런 생각은 하지 않죠. 그래서 모든 함수에 이러한 어서트가 있고 이러한 어서트는 프로덕션과 테스트 모두에서 실행됩니다. 항상 켜져 있습니다.

(03:07:35) 그런 다음 결정론적 시뮬레이션 테스트를 수행하여 200년 동안 무작위 데이터만 가지고 시스템을 통과하는 완전한 슬로프를 실행하고 얼마나 멀리 가는지 확인합니다. 그리고 어설션이 발생하면 어설션의 원인이 된 입력이 여기에 있고, 마지막에 발생한 모든 작은 부분들이 여기에 있으며, 이제 어디에서 문제가 발생했는지 파악할 수 있습니다. 정말 멋졌어요. 그래서 존 카맥과 조란 사이에서 저는 정말… 그리고 NASA에도 한 마디 할게요. NASA도 동참할 수 있어요.

(03:08:04) 그래요, 해보고 싶다고 생각했죠. 그리고 실제로 시도해 보았습니다. 게임 개발 작업을 하기 위해 거대한 리버스 프록시를 만들었죠. 그리고는 무작정 실행에 옮겼죠. 그리고 모든 것을 결정론적으로 수행할 수 있는 전체 시뮬레이션 테스트 기능을 구축했습니다. 그래서 요청의 결과도 모두 특정 순서로 나왔습니다. 그리고 전에는 절대 발견하지 못했을 수많은 버그를 발견했습니다. 그리고 제가 만들고 있던 게임에도 해봤어요. 커서가 화면 밖으로 나가는 버그를 발견했는데, 테스트하지 않았기 때문에 이런저런 문제가 발생했죠. 정말 재미있었고 프로그래밍하기에 정말 좋은 방법이었어요.

Lex Fridman (03:08:33) 예, 시간이 지나면서 성장하는 스킬이라고 생각해요. 전제 조건과 모든 것이 사실이어야 한다는 것을 명시해야 할 뿐만 아니라 생각지도 못한 것들을 추가해야 하죠. 정말 이상한 상황도 예상해야 합니다. 특히 복잡한 함수나 복잡한 클래스에서 정말 이상한 것을 잡을 수 있는 어설트를 추가하면 골치 아픈 일이 많이 줄어들고 코드에 대해 배우는 데 도움이 될 것입니다.

(03:09:10) 조나단 블로우가 여러분과의 대화에서, 아니면 발표에서 했던 것 같은데, 프로젝트를 시작할 때 보통 어떻게 구현할지, 어떻게 작동할지 모른다고 말했던 것 같아요. 그래서 프로그래밍 언어를 원한다고 말한 것 같아요. C++에 대한 비판이었는지는 잘 모르겠지만, 그는 자신이 무엇을 하고 있는지, 어떻게 구현할지 모를 때 가능한 한 고통스럽지 않고 빠르게 알아낼 수 있는 프로그래밍 언어를 원했습니다.

(03:09:50) 프로그래밍의 근본적인 부분은 다음 작업이 무엇인지 잘 모르면서 무언가를 구축하는 것이라고 생각해요. 느슨한 설계일 수도 있고 엄격한 설계일 수도 있지만 실제로는 그렇지 않은 퍼즐을 풀고 있는 것이죠… 근본적인 의미에서 암실과도 같습니다. 모든 것을 알지 못하는 상태에서 어떤 이상한 일이 일어날지 예상해야 하죠. 완전한 안개, 전쟁의 안개죠. 거기서 어떤 종류의 문제가 발생할지 예상하고 그 위에 주장을 펼치는 것이 진정한 기술입니다.

(03:10:30) 그리고 정신적으로도 저에게는 “이 문제가 발생하면 반드시 해결해야 한다”는 매우 엄격한 주장을 하는 것으로 삶의 건물을 프로그래밍하는 정말 좋은 방법과도 같았어요. 그냥 외면해서는 안 됩니다.”라는 식으로요. 경고를 오류로 취급한다는 생각입니다. 코드가 경고 없이 컴파일되는지 확인하세요. 저에게는 큰 도약이었습니다. 경고가 너무 많아서 그다지 중요하지 않다고 생각했거든요. 아니, 아니, 아니, 경고가 없어야 합니다. 모든 문제를, 심지어 애매한 문제라도 진지하게 다루면 장기적으로 훨씬 더 작업하기 쉽고, 훨씬 더 재미있고, 훨씬 더 견고하고, 모든 종류의 이상한 상황에 탄력적으로 대응할 수 있는 코드가 만들어질 수 있기 때문입니다.

(03:11:21) 코딩에 접근하는 방식은 웹 프로그래밍 스타일보다는 NASA와 더 비슷할 수도 있습니다. 하지만 프로그래밍에서 가장 고통스러운 일 중 하나가 코드가 1만, 2만 줄을 넘어가면서 버그를 찾아야 할 때이기 때문에 개인적으로 프로그래밍을 훨씬 더 재미있게 만들었습니다. 그 버그를 찾는 데 몇 시간이 걸릴 수도 있고 며칠이 걸릴 수도 있으며 이는 고문과도 같습니다.

ThePrimeagen (03:11:50) 예. 시스템이 충분히 커지면 이러한 버그 중 일부는 매우 어렵습니다. 수백만 줄의 코드 베이스에서 작업하는 사람의 영혼을 축복해 주세요. 버그의 근본 원인을 파악하기 위해 며칠 동안 얼마나 많은 시간을 보냈는지 모릅니다. 심지어 수정조차도요. 왜 이런 일이 발생하는가? 정말 어려운 일이죠.

(03:12:09) 그래서 저는 그 점을 좋아합니다. 제가 단언을 좋아한다는 것은 제가 단언을 잘하지 못하기 때문이 아니라, 꾸준히 연습하지 않는 기술이라는 것을 알 수 있기 때문에 근육 기억과 같은 것이 아니라는 것을 의미합니다. 그래서 제가 정말 좋아하는 것 중 하나죠. ‘내가 어떻게 해야 할까’라는 생각은 전혀 하지 않았을 테니까요. 내가 틀렸다면 이걸 망쳐버릴 거고, 절대 틀릴 수 없으니 바로 여기서 망쳐버릴 거라고요. 하지만 그 대신에 “오, 사실 그 말이 딱 맞네요. 이걸 추락시켜야겠어. 내가 여기서 정말 큰 잘못을 했어요. 이게 왜 존재할까요?” 그리고는 “이걸로 모든 문제를 해결할 수 있겠어”라고 생각하게 되죠.

Lex Fridman (03:12:42) 예. 특히 프로덕션 환경에서라면 사용자가 이 충돌을 보게 될 것입니다. 멋진 블루스크린을 띄우는 것이 아니라 실제로 모든 것을 멈춰서 사용자가 크래시를 보는 횟수를 최소화해야 합니다. 그러면 이런 일이 절대 일어나지 않도록 인센티브를 제공할 수 있습니다. 실제로 그런 일이 일어나지 않도록 하기 위해 시간을 투자하게 될 것입니다.

ThePrimeagen (03:13:09) 그리고 좋은 점은 웹 등을 사용하면 언제든지 팝업창을 띄워 “이봐요, 일이 아주 아주 잘못되었거나 복구할 수 없습니다.”라고 말할 수 있다는 것입니다. 멋진 메시지를 표시한 다음 로그오프하여 확인할 수 있도록 한 다음 얼마나 자주 이 작업을 수행하는지 측정할 수 있습니다. 웹 프로젝트에는 항상 서버를 다운시킬 것인가와 같은 흥미로운 점이 있다는 것을 알고 있습니다. 잘못된 버전을 출시하여 모든 서버가 계속 다운된다면 약간의 도박이 될 수 있습니다. 이는 감수해야 할 고통입니다.

ADHD

Lex Fridman (03:13:36) 로봇과 같은 단일 시스템에 더 적합하다고 생각해요. ADHD로 고생하셨군요. 많은 사람들이 ADHD를 앓으면서도 생산성을 발휘하고 번창할 수 있다는 사실에 큰 영감을 받는다고 생각합니다. 어떻게 극복하셨나요?

ThePrimeagen (03:13:57) ADHD가 영향을 미치는 것에는 여러 가지가 있으므로 가장 쉬운 것부터 시작하겠습니다. 직접적으로 적용 가능한 것부터 부수적인 피해에 해당하는 것들부터 설명해드리겠습니다. 그래서 ADHD에 정말 도움이 된 한 가지는 성숙함입니다. 모든 사람에게 더 필요한 것이 바로 성숙함이라고 생각합니다. 앉아서 책을 읽으려고 할 때 너무 흔들리고 통제 불능이 되어서 도저히 감당할 수 없다는 뜻이죠. 한 페이지만 읽고 아무것도 읽지 않은 것처럼 느껴졌어요. “맙소사, 도저히 못 하겠어”라는 생각이 들었습니다. 그냥 듣다가 그만두고 “아니, 이 페이지를 다시 읽을 거야”라고 말해야 했어요. 대학 시절에는 이걸 제대로 해내야겠다고 억지로 억지로 18번이나 연속해서 읽었던 기억이 납니다.

(03:14:43) 그래서 어떤 일이 있어도 내가 할 일을 할 것이고 잘 해낼 것이고 어쩌면 훨씬 더 오래 걸릴지라도 괜찮다는 성숙의 측면이 있어요. 그게 중요한 게 아니에요. 제가 하고 있다는 것, 그게 중요한 거죠. 그래서 그것이 일반적으로 도움이 된다고 생각합니다. 그리고 ADHD, 아니 ADHD, 회복탄력성, 정서적 회복탄력성은 정말 도움이 되는 중요한 측면입니다. 그래서 그것이 저에게 정말 큰 도움이 되는 부분이라고 생각합니다.

(03:15:11) 아직도 분명히 어려움을 겪고 있는 것들이 있습니다. 제가 정말 잘 못하는 부분이 분명하고, 제가 잘 못하는 여러 가지를 생각하려고 노력하는 것뿐입니다. 제가 잘하는 것보다 못하는 것이 더 많아요. 그래서 프로그래밍은 분명히 집중력을 유지할 수 있게 해주는 무언가가 있고 그것은 저의 강점 같은 것입니다. 그래서 조금만 할 수 있는 것부터 시작해서 정서적 회복력을 통해 점점 더 많은 일을 할 수 있게 되었죠. 그래서 지금은 한 번에 10시간, 12시간, 15시간씩 할 수 있고 정말 좋아합니다. 그래서 이제는 일종의 기쁨이 되었죠. 악기를 연주하는 것과 같아요. 정말 빠져들었어요.

(03:15:51) 그러나 “이봐, 치과 예약하고 다른 모든 일을 하러 가거나 아이들이 일주일 내내 챙겨야 할 식사를 위해 이런 종류의 물건을 준비해야 해”라는 식으로 결론이 났다면 말이죠. 저는 원래 그런 일에 매우 서툴렀고 앞으로도 계속 그럴 것입니다. 그래서 제가 이렇게 잘할 수 있는 이유 중 하나는 제게 정말 잘해주는 아내가 있기 때문이라고 말해야 할 것 같습니다. 제 삶에서 많은 일들이 눈덩이처럼 불어나서 아무것도 할 수 없는 이상한 지경에 빠지게 만드는 많은 일들을 아내가 정리해 주었기 때문입니다. 그래서 아내는 저에게 정말 큰 도움이 되었습니다.

(03:16:30) 저 혼자서 ADHD를 이겨냈다고 주장하는 것은 어리석은 일이겠지만, 대신 제가 정말 잘할 수 있는 분야는 제가 아주 잘해왔고 분명히 훨씬 잘해야 할 분야는 아내가 많이 도와주었음을 알게 되었죠. 그래서 저는 일종의 속임수를 썼어요. 치트 코드, 즉 사랑하는 아내를 찾았을지도 모르죠. 하지만 그것이 정말 큰 도움이 되었습니다.

Lex Fridman (03:16:50) 흥미로운 말씀을 많이 해주셨어요. 저도 오디오북을 읽을 때 똑같은 일을 하는데 훨씬 더 잘하게 되었는데, 정신적으로 집중해서 한 페이지를 읽으면 그 페이지의 내용을 전혀 이해하지 못한다는 것이죠. 실제로 읽지 않았잖아요. 그래서 억지로 다시 읽거나 오디오북을 다시 들었는데, 지금은 훨씬 더 흔한 문제이고 정말 집중해야만 합니다. 저는 달리면서 오디오북을 자주 듣는데, 그냥 귀를 기울이기 너무 쉽거든요.

(03:17:26) 기술이죠. 오디오북을 듣는 것이 얼마나 큰 기술인지, 특히 달리면서 다른 감각을 입력할 때 얼마나 큰 기술인지 몰랐어요. 그래서 저는 단어 하나하나에 정말 집중해야 해요. 그렇지 않고 귀를 닫고 지난 30초 동안 들었던 내용을 기억하지 못하면 억지로 다시 들어야 합니다. 때로는 5번을 반복해서 듣기도 하는데, “이 지루한 걸 계속 반복해서 들어야 해. 줌인 같은 작은 기술을 익힐 때까지”라고 스스로에게 벌을 주는 것 같기도 합니다. 그리고는 ‘그래, 사람들이 있고, 사람들이 뭔가를 하고 있고, 자연이 있고, 그건 중요하지 않아…’라고 생각하죠.

Lex Fridman (03:18:00) 예, 사람들이 있고, 무언가를 하고 있고, 자연이 있고, 상관없어요. 주위에 방해 요소가 너무 많은데도 모든 단어에 귀를 기울이고 집중을 유지하려고 노력하죠. 네.

ThePrimeagen (03:18:10) 확실히 배운 기술이고 시간이 많이 걸리는 일이죠. 그리고 제가 “여기서부터 여기까지 할 수 있었다”고 말할 때는 5년 동안 매일 이 일을 해온 것을 말하는 것입니다. 하지만 그 결정의 좋은 점은 오늘 그 결정을 내릴 수 있다는 것입니다. 지금 당장 결정할 수 있어요. “이제부터는 다시는 그런 실수를 하지 않겠습니다. 50페이지를 읽겠다고 말하고, 앉아서 50페이지를 읽고, 주의가 산만해지면 마지막으로 기억하는 부분으로 돌아가서 다시 시작하겠습니다.”라고 말해야 합니다. 그렇게 결정할 수 있습니다. 이는 감정적이지 않은 성숙한 결정입니다. 그렇게 할 수 있지만, 처음 몇 년 동안은 그런 결정을 내리는 것이 정말 고통스러울 수 있습니다. 그러다가 점점 더 쉬워지고, 점점 더 쉬워지면 자신을 변화시키는 것이 자연스러워집니다.

Lex Fridman (03:18:53) 네, 맞아요. 모든 매체, 모든 플랫폼에서 새로운 기술을 습득하는 것과 같다고 생각합니다. 저 같은 경우 소셜 미디어를 사용하면서 플랫폼에서 너무 쉽게 스크롤을 하다 보면 결국 파멸에 이르는 것처럼요. 한 가지 해결책은 아예 보지 않는 것인데, 요즘 제가 주로 의지하는 방법이기도 하지만, 저는 그냥 확인하고, 읽고, 무언가를 느끼고, 배우고, 내려놓을 수 있어야 한다고 생각하는데, 눈을 흘기면서 더 이상 주의를 기울이지 않아서 내면이 죽어 있고 나중에 끔찍한 기분이 드는 것과는 대조적이라고 생각해요. 이해가 안 되네요.

ThePrimeagen (03:19:33) 그 후의 끔찍함은 정말 심각합니다. 저는 확실히… 스크롤하는 시간이 길어질수록 제가 더 불안한 사람이라는 것을 100% 알 수 있습니다.

ThePrimeagen (03:19:42) 그냥 느껴져요. 내 안의 무언가가… 빠져나오고 싶다는 말 외에는 어떻게 표현해야 할지 모르겠지만 그게 뭔지 잘 모르겠어요. 분노는 아니지만… 매우 불안한 느낌이에요.

Lex Fridman (03:19:52) 아침에 일어나서 기분이 좋아서 자연을 바라보고 태양을 바라볼 때 느끼는 느낌과는 정반대입니다. 새가 지저귀고 이런 것들이 있죠. 소셜 미디어를 스크롤하면 아무리 긍정적인 내용이라 할지라도 새가 지저귀는 것과 같은 느낌은 아닙니다. 인스타그램에서 지저귀는 새소리는 현실에서 지저귀는 새소리와는 다르거든요. 인스타그램에서 새소리를 들으면 머릿속에서 여러 종류의 악마가 싸우고 불안, 불안감 등 여러 가지가 생길 때까지 스와이프하기 시작하거든요. 혼돈과 현실의 새가 지저귀는 소리가 섞여 있는 거죠. 아름답네요. 하지만 오디오북에서도 마찬가지입니다. 명상에 대해 이야기하는 사람들은 아마도 무언가에 집중할 수 있다는 것, 즉 독서든 오디오북이든 존재든 차분하고 신중하게 무언가에 집중할 수 있다는 것이 명상이라는 것을 알고 있는 것 같아요. 숨소리에 집중하면 다른 모든 것을 조용히 하고 다른 모든 것을 집중에서 제거할 수 있습니다. 그렇죠. 그게 기술이에요. 그게 바로 기술입니다.

ThePrimeagen (03:21:05) 정말 멋지게 표현한 것을 들었는데, 미국에서는 일반적으로 자유를 원하는 대로 할 수 있는 자유로 오해하고 있다는 것이었습니다. 자유는 원하는 대로 할 수 있는 자유가 아니라 하고 싶은 대로 할 수 있는 자유라는 주장이었습니다. 그리고 실제로 하고 싶은 일을 하지 못하는 이유는 순간적으로 하고 싶다고 확신한 일에 갇혀서 하지 못하는 경우가 얼마나 많습니까? 그래서 “나는 자유를 원한다. 내 에너지를 조절할 수 있는 능력과 내가 하고 싶은 일을 할 수 있는 능력, 수많은 산만함 속에서 산만해지거나 파괴되지 않는 능력을 원합니다.”라고 말합니다. 우리 중 누군가는 더 나쁜 카드 패를 받고 누군가는 더 좋은 카드 패를 받지만, 기술 시대에 어려움을 겪지 않는 사람은 없다고 생각합니다.

Productivity

Lex Fridman (03:21:48) 그래요, 그게 바로 기술입니다. 프로그래밍에서 집중력을 발휘하는 기술이란 무엇이라고 할 수 있나요? 앉아서 어떤 문제에 어떻게 접근하는지에 대한 프로세스가 있나요? 프로젝트를 시작하고, 디자인을 생각하고, 진정한 집중력을 유지하는 방법은 정말 어려운 지적 노력이기 때문에 산만함뿐만 아니라 모든 다른 문제들이 있습니다.

ThePrimeagen (03:22:15) 지금이야 운이 좋지만 처음 시작할 때는 프로그래밍의 모든 부분이 기억에 남습니다. 찾아봐야 하고, 읽어야 하고, 사이드 퀘스트가 항상 있었죠. 모든 단계가 사이드 퀘스트였죠. 이걸 렌더링하려고 할 때 왜 화면이 깜빡이나요? 오, 이중 버퍼링에 대해 몰랐네요. 왜 이런 일이 발생하나요? 어떻게 화면에 글을 쓸 수 있나요? 어떻게 하면… 모든 것이 의문이었어요. 답보다 질문이 더 많았어요. 그래서 사이드 퀘스트에 대한 고민이 끊이지 않았고, 이는 저를 매우 지치게 만들었습니다. 하지만 악기를 아주 잘 배우면서 사이드 퀘스트가 많이 줄어들었어요. 제가 하고 싶은 일에 점점 더 집중할 수 있게 되었죠. 그리고 그게 정말 정말 유용하다는 것을 알게 되었죠. 그래서 제가 운이 좋았다고 말하는 것은 제 인생의 많은 시간을 이 순간을 위해 준비해왔기 때문에 이제 무언가를 할 기회가 생겼을 때 그냥 그 일을 할 수 있다는 뜻이죠.

(03:23:08) 비행기만 타면 몇 시간 동안 프로그래밍할 수 있는 것처럼 말이죠. 하나도 찾아볼 필요가 없죠. 아무것도 할 필요가 없죠. 코드를 테스트할 필요도 없죠. 비행기에서 1,000줄의 코드를 작성해도 98%는 제대로 작동할 것이라고 확신할 수 있습니다. 그 순간 제가 해결하고자 하는 문제를 해결하는 데 집중할 수 있기 때문에 매우 만족합니다. 그러면 제 두뇌의 100%를 문제 해결에 집중할 수 있죠. 제가 타이핑하는 법을 배우고 편집기를 잘 익혀서 동작에 대해 생각할 필요조차 없도록 하라고 권하는 이유도 같은 이유입니다… 그냥 아래만 내려다봐도 키가 어디에 있는지 이미 알고 있는 키보드를 보는 데 정신 처리 능력이 필요하기 때문이죠. 그렇죠. 이 시점에서 수천 시간 동안 타이핑을 해왔다면 키가 어디에 있는지 알고 있으므로 아래를 내려다보지 않으면 정말 빨리 배울 수 있습니다.

(03:23:51) 이런 식으로, “나는 그 모든 시간과 정신적 노력을 들여 그 내용을 찾아보지 않겠다”는 식의 생각과 같습니다. 그냥 외우면 되니까… 그냥 암기하면 되고, 그러면 빨리 갈 수 있겠지.”라고 생각하죠. 그리고 기분이 좋았죠. 이제 더 이상 질문이 없는 곳에서 무언가를 할 수 있게 되었으니까요. 이제 저는 이 매체에 저를 표현하는 것만으로도 정말 기분이 좋습니다.

Lex Fridman (03:24:15) “우, 어떻게…” 같은 호기심, 산만함 같은 것들이 여전히 당신을 끌어당기는 것이 있을 것입니다. 인터넷에 접속할 수 있을 때면 언제든…

ThePrimeagen (03:24:26) 트위터에서 큰 이슈가 되고 있습니다. 네.

Lex Fridman (03:24:28) … 편집기 최적화를 포함한 모든 것에 대해 호기심을 갖게 되겠지만, 언제든 개선할 수 있습니다. 사이드 퀘스트를 수행하는 대신 그냥 계속 진행해야 할 때 언제든지 더 나은 플러그인과 매크로를 찾아서 “아, 내가… 이 작은 문제점을 발견했으니 앞으로 5일 동안 에디터용 플러그인이나 뭐든 만들어서 그 문제점을 제거해 보자”라고 말할 수 있습니다.

ThePrimeagen (03:24:59) 그래서 저는 누군가 플러그인을 업데이트했는데 업데이트한 줄 몰랐고 이제 에디터에 심각한 오류가 생겨서 계속 진행해야 하는 것과 같은 일종의 대격변적인 일이 아니면 RC를 편집하지 않는다는 규칙이 있습니다. 하지만 저는 1년에 한 번은 제 RC, 네오빔 RC 등을 편집하는 규칙이 있습니다. 신경 쓰이는 부분이 있으면 적어두고 기억해두는 거죠. ‘그래, 저걸 바꿔야겠어’라고 생각하지만 다시는 돌아가지 않아요. 가끔씩 ‘아, 새 리맵은 이 명령어를 한 번에 수행할 수 있어야 하는데, 복사 붙여넣기, 이 작업을 수행하면 13초밖에 걸리지 않겠구나’라는 생각이 들면 그 규칙을 어기기도 하죠. 좋아요, 새 리맵이 생겼는데 이 상황에서는 완벽하게 작동하지만 플러그인 탐색을 하지는 않아요. 모든 문제를 해결하려고 노력하지는 않아요.

(03:25:39) 나는 완벽한 편집자를 원하지 않습니다. 왜냐하면 그것은 결코 멈추지 않을 추구이기 때문입니다. 그냥 “이건 좋은데, 좋은 브레이크포인트야, 다시는 안 할 거야”라고 생각하죠. 그래서 지난달에는 시스템을 시동하는 방법과 가능한 모든 것을 편집하는 데만 100시간을 보냈습니다. 이제 거의 순식간에 컴퓨터를 0에서 60까지 제가 정확히 원하는 방식으로, Neovim과 모든 것을 완벽하게 설정할 수 있습니다. 충분히 행복해서 다시는 그 시스템을 건드리지 않을 것입니다. 내년에 다시 만질지도 모르죠. 아니면 1년을 쉬어야 할지도 모르죠. 전 괜찮아요. 완벽하지 않아도 괜찮아요.

Programming setup

Lex Fridman (03:26:13) 자, 0에서 60까지 완벽한 설정에 대해 이야기해 봅시다. 완벽한 프로그래밍 설정, 키보드 운영 체제, 화면 수, 의자는 무엇인가요?

ThePrimeagen (03:26:29) 키보드, 제가 가장 좋아하는 키보드인 키네시스 어드밴티지를 사용하고 있군요. 제 경력을 구해줬죠. 아름다운 키보드네요. 특히 쿼티를 사용하는 경우 표준 키보드에서 기호를 누를 때 백스페이스, 엔터, 기호 등 계속 이 작업을 수행하기 때문에 오목한 부분과 엄지 손가락 클러스터가 매우 중요합니다. 이 작업을 계속 반복하다 보면 손목에 무리가 갈 수밖에 없습니다. 그리고 Ctrl과 Shift를 계속 누르고 있을 때도 마찬가지입니다. 그리고 그것은 당신을 엉망으로 만드는 것과 같으니 바로 여기와 같습니다. 훨씬 더 편하죠. 그래서 키보드가 가장 중요하다고 말하고 싶어요. 그거 하나 해보세요.

Lex Fridman (03:27:01) 키네시스 키보드를 모르는 분들이 가장 많이 경험하는 것이 바로 지금 말씀하신 것처럼 백스페이스가 일반 키보드에 비해 정말 누르기 쉽다는 점인 것 같아요. 백스페이스는 일반적으로 무언가를 삭제하는 것을 상징하고 실수를 상징합니다. 상징이 아니라 보통 실수를 의미합니다. 따라서 입력한 내용을 실수했을 뿐만 아니라 그 실수를 바로잡기 위해 육체적으로 고통스럽고 성가신 행동을 취해야 합니다. 우리 대부분은 실수를 많이 하기 때문에 키네시스를 사용하면 실수를 빠르고 쉽게 수정할 수 있습니다. 이것이 제가 키네시스를 사용하는 가장 큰 이유입니다. 다른 모든 것, 네, 매크로와 위치 지정, 말씀하신 오목한 부분 등 모든 것이 훌륭하지만 실수는 즐겁습니다.

ThePrimeagen (03:27:57) 예, 저도 그 팀에 속해 있기 때문에 그 점이 마음에 들어요. 그게 가장 중요한 것 중 하나라고 말하고 싶어요. 그 다음으로 제가 중요하게 생각하는 것은 모니터 한 대입니다. 저는 모니터를 하나만 사용하는 편입니다.

ThePrimeagen (03:28:10) 그래서 제가 프로그래밍을 할 때, 어떤 일을 할 때… 지금은 스트리밍을 할 때 가끔 컴퓨터가 다운되거나 다시 시작해야 하기 때문에 스트리밍을 실행하는 두 번째 컴퓨터가 분명히 있죠. 그래서 거기에 두 번째 화면이 있어서 물건을 올리지만, 대부분의 경우 스트리밍 중에도 스트리밍 채팅 채널로 물리적으로 전환해야만 읽을 수 있기 때문에 한 화면에서 작업하고 있다는 것을 알 수 있을 것입니다. 그래서 저는 스타크래프트에서 영감을 받아 ‘키 하나만 누르면 원하는 곳으로 이동한다’는 정신으로 탐색하는 스타일을 좋아합니다. 그래서 제 설정의 모든 것이 키 하나만 누르면 됩니다. 그래서 트위치 채팅으로 가고 싶을 때는 alt-two, 트위치 채팅을 누릅니다. 브라우저로 이동하고 싶을 때는 alt-one을 누르면 됩니다. 그게 제 브라우저입니다. Alt-3은 프로그래밍을 하러 가는 곳입니다. 이건 당연히 엄지 손가락입니다. 저기 가운데 큰 손가락을 내려치세요. Alt-6은 GNU 이미지 조작 프로그램인 김프이므로 그림을 그리고 싶으면 거기로 이동합니다.

(03:29:02) 예전에 Slack을 사용했을 때는 alt-five였어요. 추가 작업을 실행해야 하는 여분의 터미널이 있는 경우에는 알트 4가 됩니다. 모든 것이 단일 키에 완벽하게 매핑되어 있었죠. 그리고 Tmux를 사용할 때는 모든 터미널을 하나의 터미널로 통합할 수 있습니다. 그리고 이제 거기서 전환할 수 있습니다. 접두사 1은 Vim 에디터로 이동합니다. 어떤 프로젝트에 들어가든 항상 첫 번째 Tmux 탭이 열립니다. 잘 모르겠네요… 세션이라고 부르는데, Tmux에 익숙하지 않으시면 어떻게 설명해야 할지 모르겠네요. 탭입니다. 두 번째는 예비 터미널, 세 번째는 장기 실행 프로세스 터미널, 네 번째는 장기 실행 프로세스 터미널입니다. 그래서 모든 설정이 완료되었으므로 제가 가는 모든 프로젝트에서 자동으로 세션 1이 생성됩니다: Vim, 세션 2: 예비 터미널, 세션 3도 열리므로 모든 것이 바로 가동할 준비가 된 것과 같습니다.

(03:29:49) 모든 것이 제가 그렇게 하는 곳에 최적화되어 있습니다. 어떤 프로젝트로 이동하고 싶을 때 ctrl-F를 누르면 어떤 터미널에서든 운영 체제의 모든 폴더에 대한 흐릿한 찾기 목록이 나타나서 몇 번의 키 입력만으로 해당 폴더로 이동할 수 있습니다. 따라서 가능한 한 빨리 필요한 위치를 찾는 데 매우 유용합니다.

ThePrimeagen (03:30:07) 키보드를 통해. 그런 다음 Vim에서 Harpoon이라는 플러그인을 개발했는데, 버튼 하나를 누르면 파일 중 하나를 임시 버퍼처럼 고정할 수 있습니다. 프로젝트 파일도 잠재적으로 Emacs에서 이와 비슷하다고 생각합니다. Projectile이 제 세션화 스크립트에 더 가까운지 기억이 나지 않네요. 어쨌든 이제 저는 4개의 고정 파일을 가지고 있으며, 한 번의 키 입력으로 고정된 파일로 이동할 수 있습니다. 그래서 지금은 마치… 기능을 개발할 때마다 보통 주로 작업하는 파일이 세 개 정도 있거든요. 다른 파일은 애매하게 찾을 수 있지만 보통은 이 세 개의 파워 파일을 항상 중간에 교체합니다. 그래서 이제는 모든 것이 “브라우저로 이동하고 싶습니다.”라고 말하는 것과 같습니다. 한 번만 누르면 됩니다. “내 워크스테이션으로 이동하고 싶어요.” 한 번만 누르면 됩니다. “특정 폴더로 이동하고 싶어요, 폴더를 변경해야 해요.” 한 번만 누르면 됩니다.

(03:30:54) 두 개의 다른 프로젝트 사이에서 작업하는 경우가 있으므로 Tmux에서 접두사 L은 마지막 두 프로젝트 사이에서 대문자 L이 바뀝니다. 그래서 저는 대체 프로젝트가 있어서 거의 하나의 키로 프로젝트 사이를 전환할 수도 있습니다. 그래서 그냥 할 일만 하고 최적화하려고 노력하는 것과 같기 때문에 검색 피로는 찾아야 하는 곳에서 큰 실패라고 생각하기 때문에 그다지 많이 생각하지 않습니다. Mac을 사용하는 사람들이 이 작업을 수행한 다음 다른 모든 작업을 폭발시키는 것을 보면 불안해집니다. “왜 이렇게 눈알을 써서 원하는 것을 검색하는 거죠?”라는 생각이 들거든요. 다시는 그런 생각은 하지 마세요.

Lex Fridman (03:31:28) 이 시스템으로 살 수 있을지, 기분이 좋아져서 더 나은지 많이 고민하게 만드네요.

ThePrimeagen (03:31:33) 적어도 지적으로 기분이 나아졌습니다. 어떤 사람에게는 좋지 않을 수도 있습니다.

Lex Fridman (03:31:36) 프로그램이든, 작업 중인 파일의 수든, 한 번에 전환하는 창이나 작업의 수가 적든, 20분 간격이든, 그런 식으로 몇 가지 심오한 말씀이 있으셨어요. 이는 매우 심오한 진실입니다. 우리는 가끔 “검색할 수 있는 완전한 자유가 필요해”라고 생각하지만, 그렇지 않습니다. 보통은 아주 작은 부분만 작업하죠. 하지만 여행 중이 아니라면 항상 세 대의 모니터를 가지고 다니지만, 제가 가장 행복한 곳은 세 대의 모니터가 있는 곳입니다. 모든 모니터가 꼭 거기 있어야 할까요? 그래서 고개를 돌리고 있죠. 제가 가지고 있는 모니터는 세로형 모니터 두 대인데, 특정 종류의 콘텐츠에 더 적합합니다. 세로로 배치되어 있기 때문에 읽을 수 있습니다. 눈으로 빠르게 스캔할 수 있습니다.

ThePrimeagen (03:32:29) 흥미롭군요. 그래서 저는 그렇게 하지도 않아요. 심지어 너무 확대해서 27인치 모니터에서 한 번에 25줄 정도의 코드만 볼 수 있을 정도입니다.

Lex Fridman (03:32:37) 예, 그런 것 같아요… 눈이 점프만 잘해서 더 많이 보지 못하면 근본적으로 제약을 받는다고 생각해요. 당신은…

ThePrimeagen (03:32:52) 검색하지 않으시겠어요? 키 몇 번만 누르면 되지 않나요? Ctrl-U, ctrl-D, 반 페이지씩 위아래로 이동합니다.

Lex Fridman (03:32:58) 원숭이 시각 시스템은… 많은 정보를 로드하도록 설계되었기 때문에… 많은 정보를 로드하고 있습니다. 이 표, 이 표에 무엇이 있는지 조사해야 할 때마다 키 입력을 눌러야한다면 그 정보를 통합하는 기술을 개발할 수 있지만 정말… 이런 종이가 있고 내가 그것을보고 있으면 내 눈이 정보의 구조, 정보의 주제를로드 할 수있는 효과적인 것이 있습니다. 더 빨리 할 수 있다고 생각합니다. 모니터가 하나 더 필요하기 때문에 비용도 많이 들지만, 세로로 놓으면 세로로 보이는 부분이 있습니다. 코드는 한 번에 25줄씩 작성하는 코드이기 때문에 많은 것을 할 수 있다고 생각합니다.

(03:33:53) 기사나 문서에 시각적 정보가 있으면 더 빠르게 이동할 수 있습니다. 하지만 저는… 당신이 너무 설득력 있게 말씀하시면서 ‘내가 저게 필요하다고 스스로를 속이는 건가’라는 생각이 들었어요. 그냥 키보드 단축키로 모든 것을 통합하고 모니터 하나에 모든 것을 표시할 수 없을까?“라는 생각이 들었습니다. 저는 키보드로 모든 것을 자동화하면 정말 빠르게 움직일 수 있고 생각할 필요가 없기 때문에 키보드로 모든 것을 자동화하는 것을 적극 지지하기 때문에 시도해봐야 할 것 같습니다. 저는 음악 녹음이나 비디오 편집 등 창의적인 작업도 많이 하거든요. 어렵긴 하지만… 일부 프로그램은 여전히 매우 쉽게 만들어줍니다. Windows에서는 자동 핫키를 사용하면 꽤 많은 작업을 할 수 있지만 여전히 키보드로 할 수 있는 작업에는 제한이 있습니다. 그래서 마우스를 사용해야 하는 것은 정말 고통스럽지만, 정말 생각하게 만드는군요.

ThePrimeagen (03:34:54) 텍스트 하나, 읽기 하나도 근본적으로 더 많이 볼 수 있고 위아래로 볼 수 있고 그 두 가지를 볼 수 있다는 점에 동의한다고 생각합니다. 그리고 아마도 기사 나 그런 것들에서 여기 아래에 화면 전체를 차지하는 정말 큰 그래프와 텍스트가 있다면 그 모든 정보를 볼 수 있도록 축소하는 것이 매우 유익한 이유를 알 수 있지만 저에게는 한 평방 인치 정도 밖에 볼 수 없습니다. 실제로 제 눈은 거기에만 집중할 수 있습니다. 그래서 책을 읽을 때는 바로 여기에 집중합니다. 그런 다음 제가 생각하는 정보의 모양을 구조적으로 패턴화하려고 노력해야 합니다. 그런 다음 읽기 시작해야 합니다.

(03:35:24) 그래서 화면이 많아서 집중할 필요가 없을 정도로 눈이 편안해지는 것과 달리 실제로 어떤 이점이 있는지 정확히 모르겠습니다. 글자가 너무 커요. 저는 실제로 꽤 확대해서 프로그래밍을 하거든요. 프로그래밍을 할 때 이보다 더 큰 글씨가 있어서 너무 편해서 코드를 읽으려고 애쓸 필요도 없죠.

Lex Fridman (03:35:46) 하지만 키를 사용하여 공간을 탐색할 수 있다는 것을 알기 위해서는 뇌를 훈련시켜야 합니다..

Lex Fridman (03:35:56) 오, 아마도 네오빔과 관련이 있는 것 같네요. Okay.

ThePrimeagen (03:35:58) 알았어요. 그리고 네오빔은 분명히 다음 대세입니다. 저는 네오빔을 좋아합니다. 그 이유는 어떤 편집기가 최고인지에 대해 원하는 모든 주장을 할 수 있다고 생각하기 때문입니다. Vim 모션이 우월하지 않다는 주장은 할 수 없다고 생각합니다.

Lex Fridman (03:36:10) 이만 가보겠습니다. Vim 모션에 대해 설명해 주시겠어요? 이게 뭐죠? 네오빔… 빔은 구식 편집기입니다. Neovim-

ThePrimeagen (03:36:17) 구식 편집기에 대한 현대적인 해석입니다.

Lex Fridman (03:36:19) 예. ELI5란 무엇인가요? 네오빔과 함께 작업하려면 무엇이 필요한가요?

ThePrimeagen (03:36:29) 오, 알았어요. Vim 모션에 대해 말씀하시는 줄 알았는데요. “야, 자비스, 빔 모션에 대해 말해줘도 돼?”라는 밈이 있잖아요. 빔 모션밖에 없어서 다른 건 머릿속에 넣을 수 없으니까요. EL5라고 하니까 제가 5살인 것처럼 설명하는데, 제 머릿속에는 “좋아, E는 단어 끝으로 점프, L은 하나 더…”라는 생각이 들어요. 이봐, 난 너무 망가져서 글자를 들으면 “좋아, 빔 모션”이라고 생각해요. 네, Vim의 주요 작동 모드가 텍스트 조작 또는 편집이기 때문에 텍스트의 움직임을 설명하는 언어가 있다고 생각하시면 됩니다. 따라서 삭제, 잡아당기기, 붙여넣기, 복사 등 모든 종류의 동작, 즉 거의 모든 코드 작업에 최적화된 동작을 잘 고려한 동작 집합입니다.

(03:37:15) 삭제하고 싶은 코드가 세 줄 있다고 가정해 보겠습니다. VS Code를 사용 중이라면 작고 예쁜 마우스로 해당 코드를 강조 표시하고 백스페이스를 누릅니다. 멋지네요. 손이 키보드에서 떠났네요. 아주 간단합니다. 매우 초보자에게 친숙합니다. 그런데 저는 Vim을 엄청 싫어했기 때문에 이 글을 시작하기 전에 이 점을 알아두셨으면 합니다. 저는 아마도 Vim을 가장 싫어했을 겁니다. 사울과 사도 바울이 있었다면 저는 빔의 사울과 사도 바울과 같아서 그 격차가 얼마나 큰지 알 수 있습니다. 아니면 VS 코드 단축키가 뭔지는 모르겠지만 현재 진행 중인 줄을 삭제하기 위해 누를 수 있는 몇 가지 키가 있을 겁니다. 삭제, 삭제, 삭제, 그냥 그렇게 할 수 있습니다. Vim에서는 DAP로 가서 단락 주위를 삭제할 수 있습니다. 그 안에 있는 모든 연속된 코드를요. 삭제할 것이므로 D를 선택한 다음 원하는 모션인 AP를 단락 주변에서 선택할 수 있습니다. 또는 DF, 즉 내가 누르려는 다음 문자와 일치하는 다음 문자로 점프하고 싶을 수도 있습니다.

(03:38:07) 따라서 DF 여는 괄호는 커서부터 첫 번째 여는 괄호까지 모든 것을 삭제합니다. 따라서 이 작은 키 입력으로 모션을 설명할 수 있습니다. 포트나이트를 마스터하는 사람들을 보셨겠지만, Vim 모션을 마스터하는 것도 마찬가지입니다. 너무 능숙해지면 더 이상 개별 동작에 대해 생각하지 않고 “이 단락을 없애고, 여기로 점프하고, 이걸 강조하고, 이걸 당기고, 이렇게 해”라고 생각하면 매우 빠른 속도로 뛰어난 텍스트 편집이 가능해집니다. 그리고 언어를 정말 잘 알고 있고, 해결하고자 하는 문제를 정말 잘 알고 있다면 텍스트 편집과 코드 출력이 실제로 많은 병목 현상 중 하나가 되는 시점이 오게 됩니다.

(03:38:43) 사람들은 항상 “음, 대부분의 경우 저는…”라고 이야기합니다. 저는 대부분의 시간을 생각하는 게 아니라 프로그래밍을 하죠. 저는 제가 무엇을 하고 싶은지 알고 있고, 오랫동안 해왔기 때문에 가능한 한 빨리 가고 싶고, 일반적인 공간에 너무 익숙하기 때문에 큰 문제가됩니다. 타이핑을 충분히 빨리 할 수 없어서 텍스트 편집기에 입력해야 한다는 사실 때문에 얼마나 많은 병목 현상이 발생했는지 모릅니다. 그래서 저는 Vim 모션이 모든 면에서 우수하다고 생각합니다. 키보드의 홈 행에 손을 올려놓으면 매우 넓고 빠른 방식으로 텍스트를 조작할 수 있습니다.

Lex Fridman (03:39:14) 오, 이건 단순히 텍스트를 작성하는 것이 아니라 텍스트를 수정하는 것이군요. 주로 텍스트 수정에 관한 것입니다.

Lex Fridman (03:39:19) 이맥스를 포함한 대부분의 편집기, VS 코드 등 모든 편집기가 똑같은 일을 할 수 있다고 확신하지만 뭔가… 그런 것들을 발견하도록 장려하지 않을 뿐이지요. 많은 기술과 프로그래밍 언어가 많은 일을 할 수 있지만 커뮤니티나 언어의 스타일 또는 이와 유사한 무언가가 처음에 게으르지 않고 텍스트를 편집하는 빠른 방법, 이 특정 예에서는 키보드 사용 방법을 배우도록 장려하는 것과 같은 중요한 점입니다. 이는 기술이 사용되는 방식에 대한 매혹적인 현실입니다. 가능한 한 빨리 빠른 것을 찾아서 장기적으로 효율적이고 재미있게 사용할 수 있도록 격려하고 싶습니다.

ThePrimeagen (03:40:09) 예. 배당에 시간이 오래 걸리긴 하지만, 무엇보다도 제가 Vim이라고 말하지 않은 것을 주목하세요. “Vim을 사용하세요”가 아니라 “Vim 모션”이라고 말한 것입니다. 한 가지 예를 더 들어보겠습니다. 저는 열렬한 팬입니다. 어떤 변수가 포함된 줄이 있고, 문자열을 받는 함수를 호출하는 줄이 있다고 가정해 봅시다. 이 작업을 다시 수행해야 하므로 일반적으로 해당 줄을 복사하여 아래에 붙여넣고 문자열로 이동하여 문자열을 변경합니다. 일종의 구성을 호출한다고 가정하면 세 가지 다른 구성 문자열을 사용하여 세 번 호출해야 합니다. Vim에서는 shift-V를 눌러 전체 줄을 강조 표시한 다음 YY를 하는 사람도 있지만 저는 두 번 하는 것을 좋아하지 않아요. 한 손가락으로 두 번 하는 것보다 두 손가락으로 하는 것이 더 빠르기 때문에 저는 두 손가락으로 하는 것을 좋아합니다.

(03:40:53) 그렇게 빨리 누를 수 없기 때문에 저에게는 약간의 최적화일 뿐입니다. 어쨌든 저는 접근 방식이 매우 최적화되어 있으므로 줄을 잡아 당겨서 붙여넣습니다. 큰따옴표로 묶으면 처음 나오는 문자열 안의 모든 내용이 삭제됩니다. 그런 다음 문자열을 입력하고 이스케이프하고 저장할 수 있습니다. 그래서 최적화되어 있어서 그 사이를 아주 빠르게 이동할 수 있는 반면, 줄을 복사해서 붙여넣는 것은 같은 속도지만 문자열로 이동하고 현재 문자열에 있는 것을 삭제한 다음… Vim에서는 정말 빠른 동작이라서 항상 그렇게 합니다.

Lex Fridman (03:41:23) 백트랙, 정말 바보 같은 질문인데, CI, 글자를 입력하는 것과 글자를 사용하여 탐색 및 편집하는 것의 차이점은 무엇인가요? 두 모드 사이를 어떻게 전환하나요?

ThePrimeagen (03:41:34) 오케이, 삽입 모드는 텍스트만 입력하는 것이고 일반 모드는 커서를 움직이는 것을 의미합니다.

ThePrimeagen (03:41:42) 이스케이프. 이스케이프는 삽입 모드에서 일반 모드로 전환합니다. 삽입 모드로 들어가려면 현재 커서를 잡고 시작 부분으로 이동하려면 I를, 커서를 끝으로 이동하려면 A를, 줄의 끝으로 이동하려면 대문자 A를, 줄의 시작으로 이동하려면 대문자 I를, 아래에 새 줄을 넣은 다음 해당 언어에 맞는 곳에 커서를 놓으려면 O를, 현재 줄을 아래로 이동하고 새 줄을 넣으려면 Shift-O를 누르면 됩니다. 보시다시피, 많은…

Lex Fridman (03:42:04) 이스케이프를 많이 누르고 있군요.

ThePrimeagen (03:42:05) 예, 매핑했습니다. 저는 Ctrl-C를 사용합니다. Ctrl-C는 하나의 가장자리 케이스를 제외하고는 동일한 작업을 수행합니다. 사람들은 그걸 싫어하죠. 저는 IntelliJ를 사용했기 때문에 익숙해졌고 이스케이프 키를 누르는 것을 정말 싫어해서 그냥 이스케이프 키를 누르는 데 익숙해졌습니다.

Lex Fridman (03:42:17) 이탈을 매핑하는 데 Neovim을 사용한다면 필수적으로 해야 할 일인 것 같습니다.

Lex Fridman (03:42:24) 오, 네, 저도 매핑합니다. 멋지네요. I got you. I got you.

ThePrimeagen (03:42:27) 예, 그럼 정말 쉽게 누르기만 하면 쾅, 쾅, 쾅, 전혀 큰 문제가 되지 않죠. 하지만 네, 배우려는 의지가 있다면 감정이 우월하지만 배우려는 의지가 없다면 우월하지 않다고 생각합니다. 그냥 하지 말아야죠. 고통을 기꺼이 견딜 수 있다면 좋은 일입니다. 그렇지 않다면 실제로는 훨씬 더 나쁩니다. 100배는 더 나쁩니다.

Lex Fridman (03:42:45) 그래요, 통증을 좋아한다면 Neovim을 사용하세요. 완전히. 알겠습니다.

ThePrimeagen (03:42:45) 보십시오, 이제 이해하셨습니다.

Lex Fridman (03:42:51) 즐거움을 좋아한다면, Emacs를 사용하세요.

ThePrimeagen (03:42:53) 미안해요, 죄송하지만 Emacs에 좋은 텍스트 편집기가 있었나요? 훌륭한 운영체제인 건 알지만, 좋은 텍스트 편집기가 있는지 전혀 몰랐어요

Lex Fridman (03:43:00) 운영 시스템? 제 친구를 잘못 교육하신 것 같은데요. Reddit에서 요구한 것은 Emacs와 Neovim의 최소 30분 차이입니다. 그렇게 많은 말을 할 수 있을 정도로 실제로 이맥스를 사용해 보셨나요?

ThePrimeagen (03:43:16) 예, 맞아요. 둠 이맥, 스페이스맥, 일반 이맥.

Lex Fridman (03:43:19) 리스프도 모르시는데 정말 사용하셨나요?

ThePrimeagen (03:43:21) “좋아, 이렇게 구성하는 방법이 있구나…”라는 식으로 해킹을 해봤어요. 해킹을 통해 모든 것을 할 수 있습니다.

Lex Fridman (03:43:28) 그래서 네오빔을 마스터해서 깊이 있게 배우는 것을 추천하지만 이맥스는 판단하기 전에 그냥 사용해보는 것도 괜찮다고 생각합니다. 모두들…

Lex Fridman (03:43:39) 네, 아니, 네오빔이 뭐라고 썼는데요? 루아라고요?

ThePrimeagen (03:43:43) 그래, 루아가 구성 언어가 되겠지만… C로 작성되었지만 루아 4가 있습니다. 그리고 루아는 아주 단순한 언어일 뿐이죠. 누구나 Lua를 프로그래밍할 수 있습니다.

Lex Fridman (03:43:51) 사실 이유를 모르겠습니다만… 제가 이맥스를 선택한 것은 Lisp에 대한 사랑 때문이 아닐까 싶습니다. 그냥 한 길을 선택하면 그 길을 걷는다고 생각합니다. 그리고 두 커뮤니티 사이에 매우 활기차고 격렬한 싸움이 벌어지고 있기 때문에 다른 사람들이 모두 싸우고 있기 때문에 싸우기 시작합니다. 그러다 어느 날 말을 탄 늙은 전사가 되어 “이게 다 뭐였지?”라고 생각하게 됩니다. 제가 지금까지 네오빔을 사용해 보지 않았다는 사실이 정말 슬펐습니다. 학습 곡선이 있기 때문인 것 같아요. 많은 편집자에게는 학습 곡선이 있습니다.

Lex Fridman (03:44:34) 진짜로 배우려면요. 그리고 이것이 아마도 VS 코드나 서브블라임 또는 아톰에 대한 비판의 일부라고 생각하는데, 배우지 않고 그냥 대충 사용하기가 너무 쉽다는 것이죠. 그리고 편집의 예술, 과학, 절차를 진지하게 받아들이는 학습 곡선을 갖도록 하는 편집기를 사용하면 큰 이점이 있습니다. 너무 많은 시간을 할애하기 때문에 사용법을 배우는 것이 더 나을 수도 있습니다.

ThePrimeagen (03:45:05) 이 모든 말로 제가 말하고자 하는 것은 솔직히 그렇게 생각하지 않는다는 것입니다… 에디터가 프로그래머를 만드는 것은 분명 아니지만 에디터 사용법을 잘 모른다면 프로그래머로서의 인성에 대해 많은 것을 말해준다고 생각합니다. 평생을 프로그래밍에 전념하고 말 그대로 5만 시간 동안 한 가지 일에 몰두하면서도 편집기를 제대로 배우기 위해 시간을 할애하지 않는 사람은 뭔가 이상하죠. 이상하게 느껴지죠.

(03:45:37) 다른 세상에서는 사람들이 무언가를 만들거나 무언가를 할 수 있지만, 이런 것들이 어떻게 작동하는지 완전히 잊고 자신의 기술 한 부분에만 집중하는 것을 결코 볼 수 없었을 것입니다. 그래서 제게는 어떻게 사용하든 상관없고, 그저 사용법을 잘 알고 잘 사용하는 사람을 보고 싶어요. 문제가 발생하면 왜 문제가 발생했는지 설명한 다음 문제를 해결할 수 있습니다. 제게는 “이제 됐어요. 해냈군요. 이제 도구를 알았으니 그 도구로 정복해 나가세요.”라고 말하는 것과 같습니다.

Lex Fridman (03:46:04) 특히 많이 사용하는 도구의 경우…

ThePrimeagen (03:46:07) [들리지 않음 03:46:07].

Lex Fridman (03:46:06) 개발자든 뭐든 자신의 삶, 인생 전체를 살펴봐야 하는데, 어떤 일을 많이 하나요?

Lex Fridman (03:46:21) 다음과 같은 질문을 해 보세요: 어떻게 하면 이 일을 훨씬 더 잘할 수 있을까요? 매일 매일 몇 시간씩 이 일을 하는데, 회의의 경우 어떻게 하면 더 잘할 수 있을지, 아니면 아예 하지 않을지 고민하는 데 몇 시간을 할애했나요? 사람들은 놀랍게도 이 작업을 충분히 하지 않습니다. 주짓수 얘기로 돌아가서 주짓수나 무술을 하는 사람들이 많은데, 그들은 같은 방식으로 몇 번이고 반복해서 하고 엄청난 에너지를 투자합니다. 그리고 “어떻게 하면 더 빨리 향상할 수 있을까요?”와 같은 질문은 하지 않습니다. 주짓수나 모든 스포츠의 경우, 피아노나 기타를 연습할 때와 마찬가지로 종교적으로 많은 시간을 투자하고 실력이 향상되는 데서 많은 기쁨을 얻습니다. “어떻게 하면 더 잘할 수 있을까?”와 같은 메타적 질문을 던지는 데는 부족합니다. 편집자의 경우, 의외로 많은 사람들이 그렇게 하는 경우가 많습니다.

(03:47:20) 타이핑을 할 때 얼마나 많은 사람들이 그렇게 하는지 놀라울 정도입니다. 말씀하신 것처럼 쪼아대거나 내려다보고 있죠. 보지 않고 타이핑하는 것처럼 터치 타이핑을 배우면 삶의 질이 향상되는 것과 같습니다. 헤아릴 수 없을 정도로요. 우리 모두가 타이핑을 많이 하기 때문에 여러분은 삶에 많은 기쁨을 가져다주고 있습니다. 그나저나 제가 이맥스에서 매우 효율적이었던 이유는… 모든 농담은 제쳐두고, 제가 이맥스에서 누렸던 효율성을 네오빔에서 누릴 수 있는 여지가 더 많아져서 편집할 때 정말 빠르게 움직일 수 있게 된 것 같아요. 정말 즐거워요. 효율성뿐만 아니라 편집기를 정말 잘 다룰 수 있을 때 얻을 수 있는 자유로움이죠. 제가 VS Code를 선택한 이유는 향후 5년, 아니 향후 30년 안에 Neovim이나 Emacs가 따라잡을 수 없는 기능이 가속화될 것 같았기 때문입니다.

(03:48:29) 그리고 저는 이 키네시스 키보드와 모든 단축키, 프로그래밍 방법을 알고 있는 이 맥에서 너무 익숙해져서 새로운 편집기를 계속 배우고 전환하는 고통을 감수하고 싶었던 것 같았어요… 50년 후에는 네오빔이 여기 없을 것 같다는 생각이 들었습니다. 아마도 그럴지도 모르겠지만, 끊임없이 다른 기술을 배우고 싶다는 느낌이 들었습니다. 커서가 그 좋은 예입니다. 저는 현재 주로 Cursor를 사용하고 있습니다. VS 코드와 커서를 번갈아 사용하죠. 단축키부터 타이밍, 창 레이아웃, 언제, 어디서, 어떻게 AI를 사용할지 고민하는 것까지, 단순히 재미나 흥미를 위한 것이 아니라 실제 생산성 향상에 도움이 되는 AI를 사용하는 기술 자체가 진정한 기술이라고 생각해요.

(03:49:24) 기술이죠. 그리고 저는 Emacs를 계속 사용한다면 로컬의 최대한의 편안함에 갇혀 있을 것 같습니다. 네오빔도 마찬가지일 것 같아요. 진지하게 시도해봐야겠어요. 네오빔으로 설정할 수 있는 부조종사 같은 플러그인이 있을 거라고 확신합니다. 고려해 봐야겠어요. 하지만 커서는 코드를 생성하고 수동으로 코드를 편집하는 것뿐만 아니라 계속해서 코드를 다시 작성할 수 있는 등 IDE 측면에서 정말 흥미로운 기능을 많이 제공하고 있습니다. 탭, 탭, 탭, 탭, 커서를 움직이면서 코드의 일부를 수정하고 정말 멋지게 차이를 만들 수 있기 때문에 Copilot과의 싸움에서 커서가 이길지 VS 코드가 이길지는 모르겠습니다. 하지만 방금 설명하신 정말 효율적이고 즐거운 경험과는 근본적으로 다른 경험이라고 느껴지는 것이 바로 네오빔입니다. 물론 당장 인공지능이 등장하지는 않지만, 물론 가능합니다.

ThePrimeagen (03:50:30) 저는 커서가 정말 멋진 제품이라는 데 100% 동의합니다. 실제로 이 모든 기능을 통해 정말 깔끔한 점이 많다고 생각합니다. 그리고 저는 네오빔에서 바꿀 수 있습니다. 저는 네오빔을 좋아해서 네오빔을 사용하는 것이 아니라 제가 연주하는 악기를 좋아하기 때문에 네오빔을 사용합니다. 그래서 커서가 그런 요구를 충족시킬 수 있다면 저 역시 옮겨갈 수 있을 것 같았어요. 커서에 대한 집착 같은 건 없어요. 하지만 AI를 사용할 때마다 궁금한 건… 제 실력에 문제가 있는 것 같아요. 저는 AI를 사용할 때마다 기술적인 문제가 있는 것 같아요.

ThePrimeagen (03:51:00) AI를 사용하는 데 있어 기술적인 문제가 너무 많아서 아직 제가 정말 좋아하는 방식으로 사용하지 못하고 있는 것 같아요.

ThePrimeagen (03:51:08) 오, 앉을 공이네요. 앉을 공이라는 말을 깜빡했네요. 책상의 높이가 적당해야 합니다. 모니터는 하나. 눈은 화면의 3분의 2 정도 위쪽에 있어야 합니다. 고개를 돌리는 게 싫어요. 손은 권총 중립 자세를 선호합니다. 여기까지입니다.

Lex Fridman (03:51:25) 앉을 수 있는 공입니다. 요가 공.

ThePrimeagen (03:51:28) 기댈 곳이 있으면 이렇게 해서 자세를 유지하는 것만으로도 도움이 됩니다.

Lex Fridman (03:51:33) 몇 시간 동안 앉아서… 잠깐, 뭐 하는 거예요?

ThePrimeagen (03:51:37) 나는 공 위에 앉아서 튕깁니다.

Lex Fridman (03:51:46) 몇 시간 동안 프로그램을 하면서 요가볼 위에 앉아 있는 사람은 전 세계에서 당신뿐입니다. 알고 계시죠?

ThePrimeagen (03:51:52) 기분이 좋네요. 문제는 허리를 구부정하게 구부릴 때마다 불편함을 느낀다는 거예요. 그래서 “불편하다”고 생각하죠. 어깨가 엉망이 되어가고 있어요. 계속 구부정한 자세를 취하고 있어요. 마치…

Lex Fridman (03:52:10) 요가볼 위에서 몇 시간 동안 자세를 유지할 수 있다고요?

ThePrimeagen (03:52:12) 예. 그래서 그냥 그렇게 할 수 있어요. 그러다 제가 구부정한 자세를 취하면 ‘알았어, 안 돼요. 돌아가야겠어.”

Lex Fridman (03:52:18) 등 근육이 대단하신가요, 아니면 뭐죠?

ThePrimeagen (03:52:19) 아니요, 엄청난 등 근육이 있어야 하는 건 아닌 것 같아요…

ThePrimeagen (03:52:24) … 똑바로 서 있습니다. 네, 그건 아주 기본적인 인간의 기능이라고 생각해요. 저는 스스로를 강한 사람이라고 생각하지 않습니다.

Lex Fridman (03:52:29) 예. 인간의 기본 기능. 모르겠어요.

Lex Fridman (03:52:34) 오케이, 멋지네요. 한 화면으로. 네오빔. 어떤 운영 체제인가요?

ThePrimeagen (03:52:41) Linux, 그냥 좋은 창 관리자를 원해서요. 버튼 하나만 누르면 크롬이 뜹니다. 전 그냥 i3를 사용합니다. i3보다 더 나은 것을 사용할 수 있을 거라고 확신합니다. 사람들은 항상 모든 창 관리자가 정말 훌륭하다고 말하죠. 하지만 저는 전환하는 화면이 세 개뿐이라서 버튼 하나만 누르면 바로 이동할 수 있다면 어떤 것을 사용하든 상관없어요.

Lex Fridman (03:53:02) 예, 저도 반반이죠. 반은 리눅스, 나머지 반은 윈도우와 리눅스, 즉 WSL입니다. 그게 뭔가요? Linux용 Windows 하위 시스템입니다.

Lex Fridman (03:53:13) Wasel. 아뇨, 더 긍정적인 단어가 있을 거예요. 족제비는 그냥 소리만…

ThePrimeagen (03:53:19) 마이크로소프트의 골목에 딱 맞는 것 같습니다. 완벽해 보이네요.

Lex Fridman (03:53:24) 사람들은 종종 제가 누군가를 위해, 때로는 독재자를 위해 일한다는 비난을 합니다. 제가 누군가를 위한 하수인이라면 그것은 바로 Windows를 위한 것입니다. 그렇죠. 저는 매주 월급을…에서 받습니다.

ThePrimeagen (03:53:35) Dang. 빌 게이츠가 구입했습니다.

Lex Fridman (03:53:37) 이제는 더 이상 Microsoft가 아닙니다.

Lex Fridman (03:53:40) 개발자, 개발자, 개발하세요. 아뇨, 농담이에요. 맥을 써봐야 할 것 같아요. 해봐야죠. 주변에 아이폰을 가진 사람들이 많아요. 전 Android를 사용해요.

Lex Fridman (03:53:56) 침몰하는 배에서 길을 잃은 사람들. 좋아요, 잠시만 네오빔에 머물면서 친구인 티제이에게 사랑과 응원을 보내주세요.

ThePrimeagen (03:54:09) 그나저나 그는 스트리밍 중입니다.

Lex Fridman (03:54:10) 스트리머입니다. 그래서 구독했어요. 그리고 즐기고 있습니다. 제 충성심은 서서히 당신에서 그에게로 옮겨가고 있습니다. 외모, 지능, 기술 등 모든 면에서 훨씬 더 뛰어난 사람이에요. 아뇨, 그 사람이…

ThePrimeagen (03:54:29) 당신이 그의 하루를 만들어주고 있다는 것을 알고 있습니다.

Lex Fridman (03:54:32) 알겠습니다. 그는 네오빔이 마음에 들지 않는 일을 할 필요가 없기 때문에 좋아한다고 말했습니다. 그것은 당신이 설명한 자동화 프로세스가 어떤 방식을 자동화하고, 고통스러운 일, 그 절차에 바로 가기를 할당하는 것에 대해 설명하는 좋은 방법입니다. 이에 동의하시는지 궁금합니다.

ThePrimeagen (03:55:00) 전적으로 동의합니다. 네오빔의 사용법, 사람들이 왜 네오빔을 사용해야 하는지, 어떻게 하면 잘 사용할 수 있는지 등 모든 면에서 매우 비슷한 사고방식을 가지고 있습니다. 그는 확실히 한 단계 더 나아간 것 같아요. 그는 자동화 등에 더 많은 시간을 할애합니다. 저는 완벽한 설정을 통해 큰 기쁨을 얻지는 못합니다. 하지만 배울 점이 많죠. 그는 자신이 하는 일을 아주 아주 잘합니다. 서른 살에 프로그래밍을 시작한 지 얼마 되지 않았고, 확실히 가장 재능 있는 개발자 중 한 명입니다. 누군가가 얼마나 똑똑할 수 있는지 보는 것은 매우 충격적입니다.

Lex Fridman (03:55:33) teej_dv에서 확인하시기 바랍니다. Teej.

ThePrimeagen (03:55:38) DV. 그의 성은 DeVries입니다. DeVries.

Lex Fridman (03:55:42) 오, 개발자가 아니군요. 좋아요, 멋지네요.

ThePrimeagen (03:55:42) 예, 네, 그냥 TJ입니다. 그냥 이름 철자가 재미있어서 그래요.

Lex Fridman (03:55:46) 알았어요, 티제이. 어떤 점이 마음에 드시나요?

ThePrimeagen (03:55:48) 와우. 이런 질문을 하라고 얼마를 줬나요?

Lex Fridman (03:55:53) 나는 그 많은 달러를 세지도 못합니다.

ThePrimeagen (03:55:59) 신뢰. 특히 ‘스트리밍’ YouTube 세계에서는 신뢰가 가장 중요한 요소입니다. 어떤 콘텐츠에 참여하고 싶어하는 사람들을 찾는 것은 매우 쉽습니다. 사람들은 무언가에 집착하는 경향이 있고, 정말 정말 믿을 수 있는 사람을 찾기가 매우 어렵습니다. 그래서 그는 제가 진정으로 신뢰할 수 있는 사람입니다. 그는 항상 진실을 말하죠. 그는 이런 종류의 노력에서 좋은 친구에게 필요한 모든 것을 갖추고 있습니다.

Lex Fridman (03:56:25) 좋은 친구로서, 그는 내게 뒷담화를 할 만한 질문을 던졌습니다.

ThePrimeagen (03:56:30) 오케이, 난 그 사람이 싫어요. 얼마나 그를 믿지 않는지 잊고 있었어요.

Lex Fridman (03:56:35) 하푼에 대해 언급하셨죠. 하푼 2로 전환하여 실제로 출시하고 개발하는 데 몇 년 또는 몇 십 년이 걸릴지 기본적으로 물어보라고 하셨어요. 하푼이 무엇인지, 그리고 단일 프로젝트를 끝내지 못할 것 같은 이유를 설명해 주시겠어요?

ThePrimeagen (03:56:58) 멋진 프레임 질문이었어요. 하푼 2는 실제로 완료되었습니다. 이것이 제가 한 일입니다: 필연적으로 받게 될 수천 개의 질문의 소용돌이를 피하기 위해 마스터 브랜치는 하푼 1로 유지하고 하푼 2는 하푼 2 브랜치로 유지했습니다. 이 글을 읽지 않은 사람들이 제가 지금 하푼 2를 사용한다고 오해한다면 그건 그들의 잘못입니다. 그게 다예요. 저는 오픈소스에 대한 수백 가지 질문에 답하는 것을 정말 좋아하지 않아요. 예전에는 오픈소스를 좋아했지만 팔코 시절에 제 영혼이 짓밟혔기 때문에 정말 적극적인 유지 관리자가 되는 것에 알레르기가 있는 것 같아요.

(03:57:33) 저만을 위해 모든 것을 구축합니다. 하푼은 말 그대로 저를 위해 만든 앱입니다. 파일에 가장 최적화된 탐색 기능을 찾기 위해 3개월 동안 고민한 끝에 이 프로그램을 만들었습니다. 하푼은 대체 파일에 대한 새로운 해석입니다. 대체 파일에 익숙하다면 일반적으로 모든 편집기에는 방금 작업한 파일로 돌아갈 수 있는 이 기능이 있습니다. 따라서 사실상 두 개의 파일을 앞뒤로 바꿔가며 사용할 수 있습니다. 아마 여러 번 사용해 보셨을 겁니다. 정말 빠른 탐색 방법입니다. 아주 좋은 기능입니다. 대체 파일이 3개 또는 4개가 필요한데, 하푼은 파일을 고정할 수 있는 기능만 있으면 됩니다. 그래서 버튼 하나만 누르면 파일로 이동하고, 다른 버튼 하나만 누르면 다른 파일로 이동하고, 또 다른 버튼 하나만 누르면 다른 파일로 이동합니다. 그래서 최대 4개까지 사용할 수 있습니다. 저는 네 개의 파워 손가락이 있었어요. 드보르작의 경우 저게 뭐죠? HTNS입니다. Ctrl H, T, N, S를 누르면 네 개의 파일 중 하나로 이동합니다. 그게 다예요. 그게 전부입니다.

(03:58:21) 기술적으로 함수를 추가하고 외부에서 실행할 수 있도록 만들 수 있습니다. 터미널을 열 수도 있고 서버로 요청을 보낼 수도 있습니다. 원하는 것은 무엇이든 할 수 있지만, 저는 주로 파일을 여는 용도로만 설계했습니다.

Lex Fridman (03:58:33) 언제부터 말씀하셨지만 어떤 키보드 레이아웃을 사용하시나요? 드보르작을 사용하시나요?

ThePrimeagen (03:58:36) 저는 드보르작을 사용하지만 커스텀 버전의 드보르작을 사용했습니다. 제가 이 프로그램을 사용한 이유는 2017년에 둘째 아이를 막 낳았는데 크리스마스에 팔에 통증이 너무 심해서 ‘세상에, 이게 내 경력이 끝나는 건가’라고 겁을 먹고 있었기 때문입니다. 프로그래밍은 이제 끝인가? 이게 다 끝인가?” 그래서 제가 겪고 있는 통증을 예방하기 위해 최적화된 나만의 키보드 레이아웃을 만들기로 결심하고 드보르작을 기본으로 삼아 대칭적이고 합리적인 방식으로 기호를 배치하여 열고, 닫고, 열고, 닫고, 열고, 닫고, 열고, 닫는 식으로 배치했습니다. 그리고 모두 여기에 있습니다. 실제로 숫자를 누르려면 Shift 키를 누르고 있어야 합니다. 실제로 제가 가장 먼저 누르는 것은 기호입니다. 그래서 노트북 키보드 레이아웃에 매우 최적화되어 있어서 노트북을 매우 효율적이고 멋지게 사용할 수 있습니다. 그래서 드보르작을 비롯한 모든 곡을 시작하게 되었죠. 당시에는 키네시스가 없었기 때문에 사실 추천하고 싶지 않아요. 당시에는 키네시스가 존재하는지도 몰랐어요. 그래서 2017년에도 키네시스를 발견했을 때 “아, 그래요.”라고 생각했죠.

Lex Fridman (03:59:37) 사람에게 키네시스를 추천하시겠습니까?

ThePrimeagen (03:59:40) 기술적으로 저는 Kinesis의 후원을 받고 있기 때문에 누군가가 저를 후원한다고 믿기 어려울 수 있습니다. 하지만 저는 스폰서십을 받기 전부터 이 제품을 사용했습니다. 제가 연락해서 “당신의 후원이 필요합니다”라고 말한 유일한 스폰서였어요. 어떻게든 당신을 이용할 거예요. 거절할 수도 있지만 정말 마음에 들어요.”라고 말했죠. 그리고 키네시스를 사용한 첫 3년 동안은 스폰서십으로 키네시스인 케니시를 무료로 제공해주었습니다.

Lex Fridman (04:00:04) Kenisi. 네, 전 항상 갈등해요. 정말 많이 떠나려고 했어요.

Lex Fridman (04:00:10) 하지만, 이걸 가지고 여행하는 황당한 상황이 발생했습니다.

Lex Fridman (04:00:17) 예. 저는 말 그대로 우크라이나의 전쟁 지역에 가서 키네시스 키보드와 노트북, 그리고 작은 물건 몇 개만 가지고 갑니다. 전쟁터에 가져가는 키네시스 키보드가 정말 부피의 30%에 불과할까요? 하지만-

Lex Fridman (04:00:39) 예. 정말 그렇게 많은 가치를 얻나요? 제게는 정신적 또는 심리적 가치인 것 같아요. 집처럼 느껴지거든요. 편안함도 있고요. 떠나고 싶어요

ThePrimeagen (04:00:50) 나는 이 경험이 너무 좋아요. 마치 물건과 관계를 맺는 것 같아요.

Lex Fridman (04:00:56) 그렇습니다. 하지만 그것이 독이 되는 관계인지 아닌지 알아내려고 노력 중입니다. 대부분 사랑이라고 생각해요. 사랑이라고 생각해요. 모든 관계가 그렇듯 밀고 당기는 복잡한 문제가 있긴 하지만…

ThePrimeagen (04:01:06) 멀수록 마음이 더 깊어진다는 말이 있듯이 때로는 키네시스 키보드가 집에 머물고 노트북 키보드가 있어야 마음이 더 커지고 그 관계가 더욱 깊어질 수 있을지도 모릅니다.

Lex Fridman (04:01:18) 님 말씀대로 벌써 그리워지네요, 모르겠어요. 모든 여행에 함께하고 있다고 생각합니다. 그래도 망하면… 키네시스가 회사 문을 닫을까 봐 걱정이 되더라고요. 도대체 비즈니스 모델이 뭐죠? 이 키보드를 누가 실제로 사용하나요? 하지만 여전히 건재한 것 같습니다.

ThePrimeagen (04:01:33) 예. 이 키보드는 누가 사용하나요? 키보드를 사용할 때 “어디든 가지고 다녀야 해요.” 누가 이 키보드를 사용하는지 궁금합니다.

Coffee

Lex Fridman (04:01:42) 예. 맞아요. 제가 처음 님의 팬이 되었을 때, 커피와 용어에 대해 이야기하는 것을 들었는데… 그런데 아직도 무슨 말인지 이해가 안 돼요. 실제로 사용해야 해요. 하지만 당신은 많은 일 중에서도 커피 회사를 운영합니다. 이거 냄새 정말 좋네요 이건 다크 모드, 다크 로스트, 전체 커피 원두입니다. 세그 원산지, 대시, 대시 위치가 있습니다. 브라질

ThePrimeagen (04:02:14) 예, 거기에 많은 것들이 있습니다.

Lex Fridman (04:02:16) 저기 있는 것들은 매우 신성한 것들입니다. 상점, 서버, 웹. SSH를 통해 합법적으로 커피를 주문할 수 있나요?

ThePrimeagen (04:02:25) 현재 커피를 받을 수 있는 유일한 방법은 SSH를 통해서만 가능합니다. 좋아요, 원산지, 원산지 이야기만 해도 될까요?

Lex Fridman (04:02:33) 예, 네, 맞아요. 네, 네, 명령줄 같은 걸 하려고 했어요. 요청하거나 대시 대시 도움말을 요청하는 명령이나…

ThePrimeagen (04:02:44) 오케이. TJ와 저는 다시 한 번 같은 티제이, 티제이 TV에 대해… 그건 그렇고, 데이비드 힐이 만든 아주 멋진 디자인입니다. 아주 훌륭해요. 기본적인 아이디어를 말씀드리죠. 1년 반쯤 전에 티지와 저는 “이봐, 이 사람들은 모두 팔로워가 있고 온라인에 존재하며 항상 무언가를 팔고 있어”라고 이야기했지만 저는 팔 물건이 없었습니다. 저는 상품을 팔고 싶지 않아요. 저는 상품을 판매하는 일을 즐겨본 적이 없어요. 그냥 제게는 그다지 재미가 없는 것 같아요.

ThePrimeagen (04:03:15) 데킬라를 마시고 싶지 않아요. 난 이런 걸 원해요

ThePrimeagen (04:03:19) 그리고 저는 정말 판매해도 기분이 나쁘지 않은 제품을 원합니다. 많은 사람들이 인터넷에 들어가서 “아, 이거 먹어봐, 이거 먹어봐”라며 수많은 제품을 권유하거든요. 그래서 제가 키네시스를 해본 이유는 제 인생에서 정말 나빴던 무언가를 가리킬 수 있고, 매우 무서웠지만 이제는 더 이상 나쁘지 않다는 것을 알 수 있기 때문입니다. 그래, 그거 말이 되네. 하지만 다른 모든 일들은 항상 저에게는 더 힘들었어요. 그래서 우리는 오랫동안 이야기를 나눴고, 네오빔을 좋아하기 때문에 “왜 네오빔에서 뭔가를 할 수 없었을까?”라고 생각했어요. 네오빔에서 주문하는 게 너무 우스워서 웃고 있죠.

(04:03:51) 그리고 어느 순간, “잠깐만요. 커피를 마시면 어떨까요? 모든 개발자는 커피를 좋아하잖아요. 커피 사업을 해보면 어떨까?”라고 생각했죠. 그래서 좋은 친구인 THDXR의 닥스라는 사람을 만났죠. 닥스, 네, 닥스. 세상에서 가장 건방진 사람이죠.

ThePrimeagen (04:04:14) 예, 그는 수염이 있어요. 그는 SST를합니다. 그는 많은 일을합니다. 아주, 아주 재능이 많죠. 데브옵스 엔지니어라고 부르죠. 그 이상이에요. 하지만 아주 재능 있는 사람이죠. 그와 아담닷데브라는 비건 채식주의자 친구도 있는데 정말 좋은 친구예요. 우리는 항상 그를 한국식 바비큐에 데려가죠. 아무것도 안 먹어요.

ThePrimeagen (04:04:34) 그리고 리즈는 터미널 커피 회사에서 매우 중요한 역할을 해왔습니다. 그녀가 없었다면 우리가 지금과 같은 일을 할 수 없었을 거라고 생각합니다. 그리고 디자이너인 데이비드 힐도 라라벨의 디자이너입니다. 그는 라라벨을 위해 디자인합니다. 아주 재능 있는 디자이너죠. 그래서 우리 모두 함께 모였죠. 우린 그냥 웃으면서 말도 안 되는 일을 어떻게 할 수 있을까? 그래서 생각해낸 게 바로 이거예요. 네, 바로 그거예요. 웹사이트를 열기만 하면 됩니다. 말 그대로 주문할 수 없습니다. 실제로 주문할 수 없습니다.

Lex Fridman (04:05:05) 이 웹사이트는 터미널처럼 생겼습니다. 아래 명령어를 사용하여 맛있는 원두커피를 주문하세요. SSH terminal.shop.

ThePrimeagen (04:05:14) 예. SSH로만 접속할 수 있습니다. 해당 명령을 복사하여 여기에 넣어야 합니다. 알려진 호스트에 대한 작은 터미널 상점을 추가하고 싶다면 그렇게 할 수 있습니다.

ThePrimeagen (04:05:24) Through Stripe. 그래서 모바일 결제 기능을 추가하여 단말기에 QR 코드를 표시하고 휴대폰으로 결제할 수 있도록 할 예정인데, 지금은 자격 증명을 입력하면 Stripe로 이동합니다.

ThePrimeagen (04:05:36) 예, SSH는 당연히 Secure Shell의 약자입니다. 타원형 양자 안전 알고리즘을 사용하여 데이터가 가로채지지 않도록 합니다.

Lex Fridman (04:05:45) 예, 하지만 그는 AI를 사용하나요?

ThePrimeagen (04:05:48) Dax가 AI를 사용한다고 확신합니다. 그-

Lex Fridman (04:05:55) AI를 사용하지 않는다면 이것이 기업일까요?

ThePrimeagen (04:05:59) 퓨전으로 구동되는 양자 AI가 있는 암호화폐 체인이 있어서 꽤 거칠어요. 어쨌든, 네, 저희는 방금 마이크 타이슨 시합에서 나온 말이 생각났어요. 말 그대로 그날 밤 마이크 타이슨이 기자에게 키스를 하고 옷도 안 입고 걸어 나갔어요. 누군가를 위해 광고를 찍었죠.

(04:06:17) 하지만 커피숍을 만들기로 한 다음 네오빔으로만 만들지 말고 SSH로 만들면 어떨까 하는 생각이 들었죠. 누구나 SSH를 가지고 있으니까요. VS 코드가 있잖아요. VS 코드를 실행합니다. VS 코드 내에서 커피를 주문할 수 있습니다. SSH에 액세스할 수 있는 작은 하단 단말기만 있으면 되니까요. 재미있죠. 그래서 우리는 정말..

ThePrimeagen (04:06:39) 우리는 그냥 사람들이 이걸 사서 팔아도 기분이 나빠지지 않는 수준과 세상을 만들고 싶었죠. 좋은 윤리적 커피입니다. 우리는 전체 공급망과 모든 것을 개발했습니다. 모든 것이 포장되어 있고 모두 부티크입니다. 꽤 고급스러운 커피예요. 정말 맛도 정말 좋아요.

(04:06:57) 이젠 다른 커피는 마시기 싫어요. 맛이 없어서 속이 상하거든요. 그래서 제가 제 물건에 빠진 것이 재밌어요. 저는 지금 제 커피를 아주 열심히 마시고 있어요. 방금 16봉지를 주문해서 가족들을 설득하려고 나눠줬어요. 하지만 스타트업에 영향을 미쳐 재앙을 초래할 수 있는 소프트웨어 제품을 팔지 않았고, 경력을 바꿀 수 있는 일을 하라고 설득하지 않았으며, 그냥 “여기 커피 좀 마셔요”라고 말했을 뿐입니다. 그리고 그것은 재미있는 경험이죠.

Lex Fridman (04:07:27) 예, 다 재미있어요. 유머가 정말 좋아요. 사람들은 terminal.shop.으로 가야 해요.

ThePrimeagen (04:07:32) SSH terminal.shop.

Lex Fridman (04:07:34) SSH가 무엇인지 모르는 사람들을 대상으로 이야기하고 있습니다. 그리고 거기에서 명령어를 읽은 다음 SSH를 사용하는 방법을 알아낼 수 있습니다… 일종의 문서죠?

ThePrimeagen (04:07:47) SSH를 사용할 수 없다면 커피 구매에 대해 걱정하지 않으셔도 됩니다. 그게 전부입니다…

ThePrimeagen (04:07:53) 배우실 수 있습니다. 활동적이고 컴퓨터를 좋아하는 사람이라면 터미널을 실행하고 해커가 된 기분을 느끼고 싶으시다면 도전해 보세요. 구독도 가능합니다.

Lex Fridman (04:07:59) 제가 보고 싶은 것은… 커서 대화에서 나온 생각인데, 앤트로포스 컴퓨터 사용이나 그런 식으로 인공지능 에이전트가 프로그래밍을 하면서 실제로 커피를 주문하는 행동을 취하면 좋겠다는 것입니다.

ThePrimeagen (04:08:17) 예, “커피 좀 주문해줘요”라고 말하면 실제로 주문이 실행됩니다. “다크 로스트 주세요.” 커피를 주문합니다. 실제로 주문의 전체 흐름으로 이어질 수 있습니다.

Lex Fridman (04:08:24) 예, 전체 흐름이 그렇죠. 하지만 더 좋은 점은 커피를 주문하지 않고 무언가를 해달라고 요청했고, 그 과정에서 사이드 퀘스트로서 커피를 주문했다는 점입니다. 바로 컴퓨터를 사용하는 것이죠. 구글에 가서 이미지를 검색하고 잠시 멈췄다가 다른 작업을 계속할 수 있다는 것을 과시했습니다. 어쨌든, 네, 정말 멋진 아이디어입니다. 마음에 들어요. 말이 나와서 말인데, 인공지능에 대해 이야기해 볼까요?

Programming with AI

Lex Fridman (04:08:50) 프로그래밍 소프트웨어 엔지니어링 경험 전반에서 AI의 역할에 대해 긍정과 부정의 입장을 모두 가지고 계셨습니다. 현재로서는 어떻게 생각하시나요? AI에 대한 일반적인 견해는 무엇인가요? 어떤 부분에 효과적이라고 생각하시나요? 그렇지 않은 분야는 무엇인가요?

ThePrimeagen (04:09:06) 제 일반적인 견해는 아주 간단한 것으로 요약할 수 있는데, 예측 가능한 일을 하는 경우 AI는 정말 좋은 기술이라는 것입니다. 예측할 수 없는 일을 할 때는 AI를 사용하는 것이 좋지 않습니다. 좀 더 최첨단 기술을 사용한다면 AI는 이를 사용하지 않거나 AI가 이를 잘 활용하지 못할 것입니다. 지그는 문서화가 덜 되어 있기 때문에 지그에 능숙하지 못합니다. TypeScript는 정말 훌륭합니다.

(04:09:39) 많은 사람들이 아직 준비하거나 생각하지 못한 흥미로운 일들이 AI를 통해 많이 생겨날 것이라고 생각합니다. TJ가 이 아이디어의 기원이지만, AI를 통해 많은 시장 조작이 이루어질 것이라고 생각합니다. 예를 들어 최고의 목공 도구를 조사하고 싶다고 가정해 보죠. 누군가 광고 지면을 구매할 겁니다. 누군가는 프리미엄 트레이닝 데이터를 구매할 것입니다. LLMs에서 가장 큰 부스트를 받는 것은 바로 이러한 사용자들입니다. 하지만 LLMs는 직접적으로 광고가 아니기 때문에 광고로 마케팅할 필요가 없으며, 단지 학습 데이터 자체에서 더 많은 프리미엄 스팟을 확보하고 약간의 추가 학습을 할 수 있습니다.

(04:10:21) 앞으로 다가올 AI에 대해 두려운 점이 많은 것 같습니다. 많은 부분이 사람들이 학습을 하지 않거나 생산성만 중요하게 여기는 트레이드오프를 하지 않는 데서 비롯됩니다. 그리고 저는 생산성만이 중요한 것은 아니라고 생각합니다. 복잡하고 어려운 무언가를 만들고 싶다면 생산성만이 전부는 아닙니다. 실제로 딥러닝을 하고 기본을 넘어서는 것을 추구해야 합니다.

(04:10:42) 그래서 저는 AI를 정말 멋진 것으로 생각합니다. 마치 마술처럼 느껴지죠. 제가 처음 사용했을 때 GitHub Copilot을 미리 사용해 본 기억이 납니다. 사실 Nat Friedman이 제가 GitHub에 요청하는 트위치 영상을 보고 직접 얼리 액세스를 보내주셨어요. 정말 멋졌어요. 그 전에는 아무것도 없었는데 이제 처음 사용하는 것이니 정말 놀라웠고, 만약 문을 정확하게 예측하는 것이 정말 신기했어요. 프로그래밍에 큰 변화를 가져올 거라고 생각했던 기억이 납니다.

(04:11:12) 그리고 사용할수록 그냥… 개인적으로 계속 버그가 생겼고 그 이유를 알 수 없었어요. 그리고 제가 깨달은 것은 제가 코파일럿을 잘하는 것이 아니라 자동파일럿을 훨씬 더 잘한다는 것이었습니다. 코드를 읽는 능력과 비판적으로 사고하고 코드를 작성하는 능력은 확실히 다른 차원의 기술입니다. 저는 코드를 작성할 때와 달리 코드를 읽을 때는 잘 생각하지 않아요. 그래서 그 부분에서 어려움을 겪었습니다.

ThePrimeagen (04:11:40) 네, 맞아요. 확실히 기술 문제입니다.

Lex Fridman (04:11:42) 스킬 문제. 모르는 분들을 위해 설명하자면, 이 경우 가끔 조롱의 의미로 사용되는 해시태그입니다. 조롱의 의미도 있지만 진지하게, 실력이 부족하다는 비판이 어떤 근본적인 진실에 근거한 비판이라는 의미도 있습니다. 맞아요. 제가 실제로 코파일럿 커서를 많이 사용하는 이유는 AI 편집 기술을 개발하여 점점 더 잘하는 방법을 배우기 위해서라고 생각합니다. 점점 더 잘할수록 AI를 더 잘 활용하기 시작한다고 생각하기 때문입니다. 지금은 약간 상용구 코드 같은 것이지만, 처음부터 새로운 디자인 결정이나 까다로운 디자인 결정을 할 수 있지만 AI를 사용하여 내용을 채운 다음 수정하는 기술을 배울 수 있습니다.

(04:12:43) 개인적으로는 그냥… AI로 프로그래밍하는 게 더 재미있어요. 코드를 많이 삭제해도 더 재미있어요. 덜 외롭죠. 제가 상상하는 페어 프로그래밍의 모습입니다. 한 번도 해본 적은 없지만 빈 것을 바라보고 있을 때 생기는 마찰이 없는 것 같아요. 빈 함수, 빈 클래스, 그냥 더 재미있고 덜 외롭습니다.

(04:13:19) 그리고 많은 쉬운 코딩 유형이 API와의 상호 작용, 스택 오버플로를 위해 일반적으로 찾아봐야 하는 기본적인 것들에 정말 도움이 된다고 생각해요. 정말 빠르거든요. 예를 들어 YouTube API와 상호 작용하는 것만 봐도 그렇죠. YouTube API 문서는 그다지 좋지 않습니다. 그냥 거기에 모든 것을 로드하고 API에 액세스하는 함수 세트와 모든 종류의 읽기 및 쓰기 작업을 생성하도록 요청하면 모든 것을 알아서 처리합니다. 하지만 읽어야 합니다. 모든 것을 읽고 확인해야 합니다.

(04:14:04) 그리고 작업을 잘못 해석한 부분을 파악하는 기술을 개발하기 시작합니다. 그 기술이 무엇인가요? 저도 모르겠어요. 인공지능이 무엇을 하는지, 어떤 한계가 있는지 공감할 수 있어야 합니다. 많은 경우 이는 신속한 엔지니어링과 관련이 있습니다. 동시에 AI가 무엇을 인식하고 있는지 이해해야 합니다. 코드를 생성할 수 있도록 실제로 데이터로 무엇을 제공했나요? 많은 경우 우리는 충분한 정보를 제공하지 않는다는 사실을 깨닫지 못합니다. 알았어요, 알았어요. 공감해야 합니다. ‘알았어요, 이 파일은 알고 있는 파일입니다. 이것이 질문하신 질문의 구체적인 내용입니다. 다른 것은 아무것도 모르는 인턴이라고 상상해야 합니다.

(04:15:09) 우리는 종종 AI가 말하지 않은 것까지 알아내기를 원합니다. 하지만 그런 것들은 알 수 없고 사용자가 지정해야 합니다. 따라서 실제로는 훨씬 더 신중하고 엄격하게 지정해야 합니다. 그래서 저는 수많은 프롬프트를 저장해두고 프롬프트를 위한 다양한 템플릿 라이브러리를 만들고 있는데 엉망진창이 되어 버렸습니다. 많은 개발자들이 이와 비슷한 어려움을 겪고 있을 것입니다.

(04:15:38) 이를 개선할 도구와 장기적으로 관련이 있는 부분이 많이 있습니다. 첫째, 뉘앙스가 필요 없을 때 시스템이 훨씬 더 지능화될 것입니다. 둘째, 이러한 사항을 지정하고 올바르게 로드하여 시스템이 올바른 결정을 내리는 데 필요한 모든 컨텍스트를 제공할 수 있는 도구가 등장할 것입니다. 그리고 시스템에서 “여기 당신이 명확히 하지 않은 사항이 있습니다”라는 후속 질문을 할 수도 있습니다.

(04:16:02) 많은 부분이 인터페이스와 도구의 실제 디자인에 관련이 있습니다. 커서에서도 말했듯이 커서는 점점 더 좋아지고 개선될 것입니다. 저는 일반적으로 개발자들이 뒤처지지 않기 위해, 생산성, 효율성, 프로그래밍의 즐거움 등을 향상시키는 초능력으로 어떻게 활용할 수 있는지, 경쟁자로 여겨지지 않기 위해 이를 배워야 한다고 생각합니다.”

(04:16:33) 하지만 이미 제게는 생산성이 크게 향상되었습니다. 실제로 얼마나 빨리 일을 처리할 수 있는지 측정해보면, 분과 시간이 아니라 며칠 단위로 측정했을 때도 큰 도움이 되었습니다. 가끔은 그다지 중요하지 않은 일을 미루다 보면 그냥 미루게 되는 경우가 있습니다.

Lex Fridman (04:17:03) 그리고 앞서 말씀드린 것처럼 빈 페이지, 즉 AI는 제가 글을 쓰고, 완성하고, 테스트를 거쳐 제품을 출시하는 데 도움이 되기 때문에 실제로 작업을 완료하는 데 도움을 주죠. AI와 함께 일하는 것이 덜 외롭기 때문일 수도 있습니다. 모르겠어요. 이 말이 말이 되는지는 모르겠지만…

ThePrimeagen (04:17:22) 이 모든 것이 완벽하게 이해가 되네요. 저는 그 문구가 정말 마음에 들어요. 외로움을 덜 느끼게 해줘요. LSP 자동 완성 기능이 아닌 어느 정도 수준의 상호작용을 통해, 실제로는 그것보다 조금 더 많은 것을 생각하고 다른 생각을 볼 수 있고 ‘와우, 저건 내가 생각했던 것과는 다른 접근 방식이구나’라는 생각이 들게 하는 흥미로운 점이 있다고 생각해요. 멋지네요. 저는 이런 방식이 좋아요.”

(04:17:43) 그리고 저는 AI에 부정적인 사람이 아닙니다. 사람들이 왜 그렇게 좋아하는지 알 것 같아요. 저는 Nat이 저에게 액세스 권한을 부여한 후부터 약 6개월 전까지 Copilot을 사용했습니다. 꽤 오랫동안 사용했죠. 그리고 제가 사용한 기능들이 정말 좋았어요. 저에게는 정반대의 효과가 있었어요. 글을 쓰기보다는 검토하는 데 더 많은 시간을 할애하는 것 같았고, 너무 깊게 생각하지 않고 그냥 흘려보내는 것 같았어요. 그리고 몰입도도 떨어졌죠. 그래서 저는 “그래, 여기 뭔가 잘못됐어”라고 생각했죠. 그리고 그건 제 개인적인 생각입니다. 저는 그런 식으로 접근해서는 안 된다는 것을 알고 있습니다. 인공지능을 사용해야 하는 이유나 사용하지 말아야 하는 이유에 대한 좋은 이유가 될 수 없습니다. 저는 그것이 옳지 않다고 생각합니다. 제가 이를 바로잡고 더 나은 방법을 찾아낼 수 있을 것 같습니다.

(04:18:32) 저는 인공지능 라운드를 한 번 더 해보고 싶어서 2주 동안 커서에서 이런 사람이 된다는 것이 어떤 의미인지 완전히 받아들이면 어떨까 생각해봤어요. 그리고 이 새로운 능력으로 무엇을 할 수 있을까요? 실제로 사용할 수 있을 정도로 좋아졌을까? 그리고 저에게는 제가 내리는 많은 결정, 제가 작성하는 많은 작은 함수들은 이 문제를 해결하기 위해 이 함수를 작성하는 것이 아니라 이 문제를 해결하기 위해 이 함수나 이 세트를 작성하는 것이 아니라 다른 모든 것을 구축하는 약 2,000줄의 코드에서 다음 활동을 시작해야 한다는 것을 알고 있기 때문입니다. 마치 체스를 두는 것처럼, 일을 더 빨리 진행하면 그 체스 수에 맞춰서 체스를 두려고 노력하다가 무너지는 것과 같습니다. 그리고 다시 말하지만, 기술적인 문제입니다. 그리고 제가 충분히 잘 사용하지 못하기 때문에 비평을 하는 것 같은 진정한 의미의 의미입니다.

Lex Fridman (04:19:23) 이것이 일반적인 규칙인지는 모르겠지만, 이것은 제 일화 데이터입니다. 프로그래밍을 잘할수록 AI를 덜 사용하고 싶을수록 더 많은 방해가 됩니다. 좋은 프로그래머는…>

ThePrimeagen (04:19:32) 내가 알기로는 충분히 공평합니다.

Lex Fridman (04:19:34) 초보 프로그래머일수록 AI를 사용하는 것을 훨씬 더 좋아합니다. 제가 AI를 사용할 때는 그냥… 더 좋은 용어가 있는지 모르겠습니다. 전문 용어는 아니지만 꽤 쉬운 프로그래밍입니다. 그리고 그런 종류의 프로그래밍은 훨씬 더 쉽습니다. 제가 아는 매우 생산적이고 똑똑한 프로그래머 10명 중 9명은 AI를 싫어합니다. “이건 필요한 것과는 거리가 멀다”고 말하죠. 그럴 만도 하죠. 저는 여전히 AI가 더 똑똑해지고 더 좋아질 것이기 때문에 학습용으로만 사용해야 한다고 생각합니다. 네오빔을 초최적화하거나 이맥스를 초최적화하면 새로운 것을 발견하지 못할 수도 있는 것처럼, 항상 그런 식으로 학습하는 것이 좋습니다.

ThePrimeagen (04:20:26) 제 이해를 돕기 위해 여기서 질문 하나만 드리겠습니다. 이 모든 LLM 프롬프트, 지저분한 LLM 프롬프트의 큰 백로그에 대해 다양한 작업을 수행 할 수있는 이러한 템플릿이 있다는 아이디어에 대해 이야기했습니다. 스스로 설명한 다음 올바른 작업을 수행하도록 하는 전략이 있습니다. 제가 알 수 있는 한, 많은 사람들에게 이러한 전략이 내장되어 있습니다.

(04:20:46) 그런 다음에는 이런 문구를 만들지만 어느 시점에는 인터페이스가 더 좋아질 것이고 아마도 내가 필요하지 않은 많은 일을 더 잘할 수 있을 것입니다. 그렇다면 제 질문은, 그렇다면 AI를 사용하지 않는다고 해서 실제로 뒤처지는 사람이 있을까요? 인터페이스가 너무 크게 바뀌어서 모든 습관이 근본적으로 바뀌어야 하고 그 모든 것을 명확히 할 수 있게 된다면 저는 실제로 전혀 뒤처진 것일까요? 아니면 다음 세대는 실제로 현재 세대와 너무 달라서 ‘그래, 지금 저기서 펀치 카드 AI를 하고 있구나’라는 생각이 들까요? 컴파일러 타임 AI가 들어와서 펀치 카드가 뭔지 모를 정도로 달라질까요?

Lex Fridman (04:21:23) 질문은 분명 열려 있습니다. 흥미로운 질문입니다. 저는 개인적으로 뒤처지고 있다고 생각합니다. 하지만 그렇지 않다면…

ThePrimeagen (04:21:24) 나일 수도 있습니다, 나일 수도 있습니다.

Lex Fridman (04:21:33) … 제가 프롬프트로 하는 일은 여러분이 학습하고, AI 작동 방식에 대한 직관을 쌓는 것이기 때문에 뒤처지고 있는 것이지, 그걸 가지고 노는 것이 아닙니다. AI의 강점과 약점이 무엇인지 이해하고 있나요? 현재 버전이 아니라 다음 버전도 마찬가지입니다. AI 시스템에 세상에 대해 가르친다는 것은 무엇을 의미할까요? 효과적인 결정을 내리기 위해 어떤 종류의 정보가 필요할까요? 저는 그것이 점점 더 똑똑한 모델로 옮겨간다고 생각합니다. 시간이 지남에 따라 덜 엄격하고 구체적인 세부 지침을 만들어야 하지만 여전히 그런 종류의 정보가 필요합니다.

(04:22:21) 인공지능 시스템과 거의 공감하는 기술이라고 생각하는데… 뭐가 부족한지 아세요? 상식이 없습니다. 장기기억이 없습니다. 인간은 다른 사람과 대화할 때 현실에 대한 기본적인 상식을 가지고 있지만, 인공지능 시스템은 그런 상식이 부족한 경우가 많습니다. 그리고 그들은 또한 사물을 기억하지 못합니다. 끊임없이 백지 상태가 계속된다는 사실을 깨달아야 합니다. 제가 훈련하고 있는 AI 시스템과 대화하는 것은 거의 기술입니다. 그리고 어떤 프롬프트가 더 효과적인지 아닌지를 파악하기 위해 모든 프롬프트를 작성하고 앞뒤로 소통하면서 직관력을 키울 수 있습니다. 또한 다른 사람의 코드를 읽는 기술도 익힐 수 있습니다. 대규모 팀에서 일하는 사람들에게는 이미 발달된 기술일 수도 있습니다. 저에게는 그렇지 않기 때문에 다른 사람이 작성한 코드를 수정하는 방법을 배우는 것이 진정한 기술입니다.

(04:23:23) 그리고 말씀하신 다른 것, 즉 코드에 대한 다른 관점을 고려하는 것도 정말 좋지만 ‘그래, 이렇게 했구나’ 이해하는 것도 기술입니다. 생성된 코드에 대해 질문을 던지고 그 접근 방식에 대해 대화를 나눌 수 있는 기술도 필요합니다. 두 명의 바보와 하나의 키보드가 등장하는 동영상을 찍을 때 여러분과 티제이 사이에 진짜 기술 문제가 있었던 것처럼, 코딩을 위한 협력적인 노력에는 미묘하고 작은 기술들이 많이 포함되어 있다고 생각합니다. 사람들이 보러 와야 해요.

Lex Fridman (04:24:00) 두 명의 바보, 하나의 키보드, 사람들이 가서 그 영상을 봐야 해요, 당신들이 분명히 형편없는 영상을요.

Lex Fridman (04:24:08) 두 개의 다른 키보드에서 하나의 Neovim 인터페이스를 제어하는 멋진 작업이었어요.

ThePrimeagen (04:24:15) 그래요. 그리고 각자 수행할 수 있는 특정 캐릭터나 모션이 허용됩니다.

Lex Fridman (04:24:19) 그래요. 그래서 둘이 함께 소통해야 했군요. 그게 진짜 기술이에요. 하지만 그런 것을 배우는 데는 시간이 걸립니다. 그래서 네, 어느 정도 가치가 있다고 생각하지만 학습 곡선이 있다고 생각합니다.

ThePrimeagen (04:24:37) 한 가지 분명한 것은 제가 실제로 AI를 꽤 많이 사용한다는 점입니다. 다만 프로그래밍에는 사용하지 않습니다. 그래서 제가 노력하고 있는 것 중 하나는 긴 인터뷰를 하거나 트위치 채팅의 내용을 이해하고 트위치 채팅처럼 말할 수 있게 하는 것입니다. 다양한 방식으로 프롬프트하는 방법을 배우려고 노력합니다. 그래서 그런 것들이 저에게는 정말 재미있어요.

(04:24:56) 타워 디펜스 게임을 배우게 하려고 했어요. Zig에서 타워 디펜스 게임을 만든 다음 타워 디펜스를 하도록 한 다음 Claude 3.5로 OpenAI와 대결했습니다. 낮에는 클로드 3.5가 더 잘했고, 밤에는 OpenAI가 더 잘했습니다. 왜 그런지는 모르겠지만 한 쪽은 이기기 시작하고 다른 쪽은 지기 시작하더군요. 정말 이상했어요. 그래서 저는 프롬프트를 잘하는 법을 배우고 있지만 매우 다른 축에서 프롬프트하는 법을 배우고 있습니다. 아직 프로그래밍에서 그다지 유용하다고 생각하지 않아요.

Lex Fridman (04:25:23) 프로그래밍에서. 그리고 저는 모든 분야에서, 모든 맥락에서 이 방법을 사용하고 있다고 말해야 할 것 같습니다. 프롬프트 등에 대해서도 같은 종류의 탐색을 사용하며 사용하고 배우고 있습니다. 그 자체로 하나의 분야라고 생각합니다.

Lex Fridman (04:25:42) 프롬프트 엔지니어링과 AI 시스템과 상호작용하는 방법, 투자할 만한 가치가 있다고 생각해요. 실제로 그렇게 말씀하실 수 있나요? 기본적으로 트위치 채팅에서 LLM이 말을 하는 것을 봤거든요. 채팅 메시지를 정확히 읽지 않으시는군요…

Lex Fridman (04:26:04) 일종에 요약 같은 걸 하고 계신 건가요?

ThePrimeagen (04:26:07) 예. 그래서 저는 결국 OpenAI에 8개의 쿼리를 만들어서 기본 성격으로 설정한 것처럼 만들었습니다. “이봐요, 당신은 소프트웨어 엔지니어링 매니저인 랜달입니다.” 자신의 위치, 좋아하는 것, 싫어하는 것 등을 설명한 다음 “머릿속에 있는 생각의 목록은 다음과 같으니 이 사람과 대화하고 질문해야 합니다.”라고 말하는 식이죠.

ThePrimeagen (04:26:28) “이 답변 중 여러분이 가지고 있고 물어보고 싶은 생각이라고 생각되는 10가지를 말해 주세요.” 목록을 제시하고 “알았어요.”라고 답하세요. 그런 다음 다시 질문을 던지고 “랜달, 당신은 이것, 이것, 이것, 이것, 이것”이라고 말합니다. 이제 10가지 질문 중 하나를 골라서 엔지니어링 매니저인 랜달에게 더 잘 어울리는 말로 바꿔야 합니다.”라고 말합니다. 그리고 한 번에 끝내는 것이 아니라 계속 반복하도록 노력하고 있습니다. 반복을 너무 많이 하면 원래 질문하려고 했던 내용을 잃어버리고 트위치 채팅과는 너무 멀어진다는 것을 알게 되었죠. 그래서 이 아이디어로 개선할 점이 많은 것 같아요.

Lex Fridman (04:27:07) Twitch 채팅에서 “당신은 매니저인데, 머릿속에 있는 생각 중 가장 심오한 생각을 골라 주세요”라고 말하는 건가요?

ThePrimeagen (04:27:20) 효과적으로. 제가 원하는 바에 따라 더 나은 시스템을 위해 여전히 노력 중입니다.

ThePrimeagen (04:27:25) 그래서 “어떻게 하면 Twitch 채팅에 목소리를 줄 수 있을까요? Twitch 채팅에 대항하는 적 캐릭터를 만들거나 Twitch 채팅을 위한 캐릭터를 만들 수 있나요? YouTube를 통합할 수 있을까요?” 그런 종류의 질문이죠. 그리고 LLM이 그 입장이 되어 역할극을 하려면 어떻게 설명해야 할까요? 그런 것들을 생각하면서요. 즉흥적인 기술은 있지만 아직 코딩 세계에는 익숙하지 않은 것 같아요.

Lex Fridman (04:27:48) 다른 목소리로 연주하는 것을 봤어요. 섹시한 목소리였나요?

ThePrimeagen (04:27:56) … 그리고 ElevenLabs는 프랑스 여성은 할 수 없는 것으로 밝혀졌습니다. 다국어를 구사하는 프랑스 여성에게 말을 걸면 그녀가 말을 하기 시작하죠. “뭐야? 이게 뭐야?”

Lex Fridman (04:28:08) 자신의 생방송을 시청했는데 어떤 여성이 성적인 모습을 하고 있었어요.

ThePrimeagen (04:28:16) 너무 재밌어졌어요. 그래서 우리는 그녀를 프렌치 스토미 다니엘스가 아니라고 부릅니다.

ThePrimeagen (04:28:21) 예. 하지만 AI와 몇 가지 측면으로 돌아가고 싶습니다.

ThePrimeagen (04:28:25) 그래서 제가 AI에 대해 불만을 품는 것은 그 기능과는 아무 상관이 없습니다. 사람들이 그렇게 프로그래밍했기 때문에 인공지능은 당연히 그렇게 할 수 있습니다. 제가 정말 싫어하는 것은 “종말이 가까워졌다. AI가 왔으니 프로그래밍을 그만두면 됩니다.”라고 말하는 사람들이 있습니다. 아까 피터 레벨에 대해 언급하셨는데, 그가 트윗을 올렸는데 그 사람의 반응 중 하나가 “2025년이나 그 이후에는 아무도 어려운 기술을 습득해서는 안 된다. 모든 것을 인공지능에 효과적으로 의존해야 합니다.”라고 말했죠. 젊은이들에게 정말 지독한 조언이 아닐 수 없습니다. 젊은이들은 어떤 분야든 전문가가 되어서는 안 되며, 항상 다른 사람에게 맡겨야 한다는 말을 듣고 있습니다.

(04:29:04) 그리고 문제는 인공지능이 코드를 생성할 수는 있지만 수많은 경우에서 오류를 범할 것이라는 점을 조금이라도 아는 사람이라면 누구나 알 것입니다. 그리고 코드가 더 커지거나 복잡해지거나 입력이 많아지면 버그 사이를 왔다 갔다 하기 시작할 것입니다. 따라서 이러한 고난이도 기술을 갖추지 못하고 궁극적으로 드라이버가 아니라면 정말 힘든 시간을 보내게 될 것이며, 여러분의 발전 능력은 LLMs이 얼마나 좋은지에 직결될 것입니다. 따라서 LLMs가 내년에 인간보다 훨씬 더 뛰어날 것이라고 믿는다면 좋은 선택이 될 수 있습니다. 하지만 그렇지 않다면, 당신의 실력 상한선은 어디까지나 정해져 있습니다.

(04:29:42) 그리고 그 이상으로 “이 정도 규모로 문제를 해결할 수 있을 만큼의 컴퓨팅 파워가 있는가?”라는 수준의 정보 문제도 있습니다. 그리고 설사 있다고 하더라도 모든 사람이 지금 당장 사용하기 시작한다면 “지금 당장 모든 사람이 사용할 수 있는 컴퓨팅 성능이 있는가?”라는 문제도 있습니다. 많은 한계가 있는 질문이 있고, 개인정보 보호 문제도 있고, 사람들이 어려운 기술이 필요 없고, 이런 것들은 필요 없고, 창의적으로 생각하기만 하면 되는 즉각적이고 당연한 선택을 하지 않았으면 좋겠어요. 저는 그렇게 생각하지 않습니다. 인공지능이 크게 개선되더라도 이러한 어려운 기술은 꽤 오랫동안 존재할 것이며, 제가 알기로는 꽤 오랫동안 정기적으로 개입해야 할 것입니다.

Lex Fridman (04:30:27) 그러나 저는 그 외에도 어려운 기술을 습득하거나 예를 들어 프로그래밍의 맥락에서 처음부터 프로그래밍을 하는 것만으로도 AI를 수정하는 것이 아니라 AI를 조종하는 데 더 나아질 수 있다고 생각하죠. 컴퓨터가 어떻게 작동하는지 알면 파이썬을 더 잘 프로그래밍할 수 있다고 생각합니다. 반직관적일 수도 있지만, 낮은 수준의 추상화, 그에 대한 직관을 알고 있다면 높은 수준의 추상화를 더 잘 조종할 수 있습니다.

Lex Fridman (04:31:01) 그러나 그것은 단지 그런 것 같습니다. 물론 인공지능이 위의 여러 단계처럼 정말 초지능이 된다면 모를까, 단기적으로는 그럴 가능성이 매우 낮습니다. 그리고 장기적으로는 점점 더 좋아지고 개선의 물결을 탈 수 있다는 점에서 여전히 좋습니다.

ThePrimeagen (04:31:19) 예, 저도 그 팀에 속해 있습니다.

Lex Fridman (04:31:21) 많은 개발자, 프로그래머들이 빠르게 발전하는 AI 시스템과 관련하여 자신의 직업의 미래에 대해 정말 걱정하고 있는 것 같다는 편지를 많이 받았습니다. 그렇다면 결국 AI가 프로그래머를 대체할 것이라고 생각하시나요?

ThePrimeagen (04:31:37) 이 문구에서 어려운 부분은 결국 5년, 10년, 100년 후라는 용어를 사용한다는 점입니다. 그 용어가 실제로 무엇을 의미하나요? 모든 것이 현재와 같은 속도로 계속 발전한다면 언젠가는 어려운 기술로서의 프로그래밍이 불필요해지는 시점이 올 것이라고 생각합니다. 언젠가는, 언젠가는, 언젠가는 그렇습니다. 그 시점이 언제가 될지는 모르겠습니다. 언제가 될지 모르겠어요. 그런 예측을 하려고 하지도 않아요. 하지만 아직 우리가 해야 할 도약과 도약이 남아 있습니다.

(04:32:11) 사회적으로만 봐도 AI 사용을 허용하지 않는 기업이 많아요. 현실적인 문제가 존재하기 때문이죠. 그래서 그 질문에는 직접적으로 대답하지 않으려고 합니다. 인류가 계속 발전하고 모든 것이 긍정적인 방향으로 나아간다면 언젠가는 엄청난 컴퓨팅 시스템으로 인해 많은 기술이 사라질 날이 올 것입니다. 네, 그 점은 인정합니다. 하지만 지금까지 컴퓨터의 발전이 더 많은 일자리를 창출하지 못한 사례는 없었습니다.

Lex Fridman (04:32:46) 네, 물론이죠. 프로그래밍을 어떻게 정의하느냐에 따라 다르다고 생각합니다. 커뮤니티가 어셈블리에서 C로, C에서 파이썬과 자바스크립트로 이동하는 것은 진화라고 할 수 있기 때문입니다. 저수준 언어 프로그래밍에 익숙한 많은 사람들에게는 정말 고통스러운 일이기 때문에 지속적인 진화가 있을 것입니다. 그리고 아마도 AI를 통해 적절한 프롬프트를 작성하는 방법을 배우는 것과 같이 도구 체인의 일부로서 자연어를 향한 진화가 점점 더 많이 이루어질 것입니다. 네, 자연어는 여전히 언어이기 때문입니다. 그리고 장기적으로는 프로그래밍의 상당 부분이 자연어로 이루어질 수도 있습니다. 물론 여전히 자연어가 아닌 극도로 구조화된 언어도 일부 존재하겠지만요.

ThePrimeagen (04:33:45) 지금 당장은 자연어가 모호하기 때문에 가능하지 않다고 생각합니다. 그리고 사람들이 이 문제를 정말 열심히 파고들면서 결국 보게 될 것은 일종의 의사 언어, 즉 AI를 위한 언어가 될 것이며, 이는 덜 모호한 언어가 될 것입니다. 사람들은 덜 모호한 상태를 향해 계속 노력할 것입니다. 그리고 그 시점에서 여러분은 고차원적인 언어로의 또 다른 진화를 프로그래밍하고 있는 것입니다. 그리고 아마도 사람들은 더 간결한 언어를 사용하게 될 것입니다. 얼마나 더 간결해질 수 있을지는 모르겠습니다.

(04:34:19) 제 말은, 파이프라인에서 자연어를 사용할 수 있다고 하면 더 많은 사람들이 프로그래머가 될 수 있게 되었고, 이는 결국 훨씬 더 많은 소프트웨어가 만들어질 것이며, 유지 관리해야 할 소프트웨어가 그만큼 더 많아져서 정말 큰 눈덩이 효과가 된다는 뜻이죠.

Lex Fridman (04:34:37) 하지만 프로그래머인 사람들이 자신의 직업에 대해 걱정하는 사람들이 있습니다. 완전히 대체되지는 않겠지만 프로그래머라는 직업의 의미가 빠르게 진화할 수도 있겠죠. 말씀하신 것처럼 자연어가 의사소통이나 프로그래밍을 할 수 있는 방식이 된다면 프로그래밍 일자리를 얻을 수 있는 인력 풀이 급격히 변화한다는 의미이기 때문에 정말 걱정하고 있습니다.

ThePrimeagen (04:35:01) 그리고 어느 정도는 우리가 아무리 AI가 얼마나 좋은지 말하고 싶어도 버그가 존재하고, 변경 사항을 설명하는 데 몇 페이지의 설명만 필요한 대규모 소프트웨어가 존재하기 때문에 누군가 그냥 뭔가 만들어내는 것이 훨씬 빠르고 쉬워지는 시점이 오기 마련입니다. 거기에는 분명 균형이 존재하지만 완벽한 절충안이 있는 것은 아닙니다. 따라서 사람들은 걱정을 그만두고 어떻게 통합할 수 있을지 고민하고 스스로 증명해 볼 필요가 있다고 생각합니다. 실제로 스스로를 무의미하게 만들까요?

(04:35:37) 그리고 정말 스스로를 무의미하게 만든다면, 자동화하기에는 너무 복잡한 일을 하고 있다고 도전하고 싶습니다. 백엔드에서 프론트엔드에 이르는 단순한 앱과 간단한 테이블 디스플레이만 작성하고 있다면, 예, 자동화할 수 없었고 지금은 그 작업을 조금 더 잘 수행할 수 있는 무언가가 있어서 자동화가 되었지만 실제로는 프로그래밍이 아닙니다. 이는 마치 레고를 조립할 때 이미 디자인이 정해져 있는 상태에서 가방의 조각을 올바른 위치로 옮기기만 하면 되는 것과 비슷합니다.

Lex Fridman (04:36:11) 예. 개발자나 프로그래머가 인공지능으로 자동화할 수 있는 상황을 피하는 방법을 추천해 주시겠어요?

ThePrimeagen (04:36:23) 저는 관리할 수 있는 프로젝트가 클수록, 구축할 수 있는 것이 클수록, 스택의 아래쪽과 위쪽 모두를 더 많이 이해할수록 더 가치 있는 사람이 된다고 생각해요. 프론트엔드에서 무언가를 빌드하는 방법을 이해했다면, 이제 어떤 LLM 작업을 시작하면 그 작업이 시작되고 프론트엔드를 변경할 수 있기 때문이죠. 이 작업을 수행하는 동안 CLI 도구에서 무언가를 시작할 수도 있고, 다른 곳에서 무언가를 시작할 수도 있습니다. 결과가 나오면 결과를 검토하고, 원하는 방식인지 확인하고, 변경하고, 커밋하고, 다음 단계로 넘어갈 수 있습니다. 결국, 말씀하신 대로 그렇게 할 수 있는 상태에 도달해야만 생산성이 높아집니다.

Lex Fridman (04:37:00) AI와 함께 일하는 데는 기술 같은 것이 있다고 생각하기 때문에 계속 노력하는 모습을 보는 것이 신기합니다.

Lex Fridman (04:37:09) 정확히 어떻게 맞는지는 모르겠지만 AI가 생산성을 높이는 데 도움이 될 것 같다는 느낌이 듭니다. 그리고 프로그래밍의 즐거움도 확실히 향상될 것이라고 생각합니다. 많은 사람들이 프로그래밍을 직업으로 생각하지만, 동시에 의미의 원천이자 기쁨의 원천이기도 하죠. 프로그래밍은 재미있고, 멋진 무언가를 만들고, 잠재적으로 많은 사람들이 사용할 수 있습니다.

ThePrimeagen (04:37:34) 저를 정말 실망시키는 한 가지가 있는데, 이것은 Devin 범주에 들어가는 것인데, 바로 배려하는 인턴을 원한다는 점입니다.

ThePrimeagen (04:37:42) LLM에서 그런 것을 얻을 수는 없습니다. 즉, 제가 요청한 대로 아이콘을 표시하는 UI를 만드는 데 그치지 않고, 관심을 갖고, 생각하고, “아, 그래, 그거 좋네.”라고 말할 수 있는 UI를 만들어주길 원합니다. 그리고 나서 제가 변화를 일으키고 싶어요. 그리고 나중에는 “사실, 다시 생각해봤는데 이렇게 바꾸면 훨씬 더 좋을 것 같아…”라고 말하죠. 사실 기술적인 부분은 신경 쓰지 않아요. 하지만 인턴이나 다른 사람과 함께 일할 때는 신경을 쓰죠. 그들은 무언가를 고려할 때 실제로 “아, 이건 사실 좀 안 좋네요. 다시 생각해봐야겠어.”라고 말합니다. 이 작업을 끝내고 여기로 돌아와서 더 나은 방향으로 개선합니다. 그들은 실제로 물건 자체에 신경을 씁니다. 완전히 다른 경험입니다. 저는 단순히 과제를 완수하는 데 그치지 않고 더 나은 방향으로 나아가고자 하는 마음을 가진 사람을 원합니다.

(04:38:24) 과도한 요구라는 것을 알지만… 이제 우리는 블레이드 러너 수준의 AI에 도달하고 있습니다. 제가 원하는 것은 제가 지시한 내용을 어느 정도 이해하긴 하지만 실제로는 신경 쓰지 않는 수준까지 작업을 완료하는 것 같은, 제가 놓치고 있는 것 같은 무언가를 원합니다.

Lex Fridman (04:38:42) 내 말은, 배려에는 많은 측면이 있는데, 그 사소한 버전은 계속 개선하고 싶은 일종의 불안감인데, “내가 이것을 더 잘 만들 수 있을까?”라는 질문을 끊임없이 스스로에게 하는 것이 인공지능이 할 수 있는 일이라고 생각해요. 그리고 계속 그렇게 하면 아마 말도 안 되는 곳으로 갈 것이기 때문에 실제로는 언제 멈춰야 할지도 알고 있습니다. 맛이라고 부를 수 있는 무언가를 개발한다는 것은 정말 열심히 노력하고, 제대로 느껴질 때까지 끊임없이 개선하는 것과 같다고 생각합니다. 바로 이거예요. 인공지능은 “그래, 이거다”라고 판단하는 데는 능숙하지 않다고 생각합니다.

ThePrimeagen (04:39:26) 쓰기가 세 번 반복되었고 세 번은-이었어요.

Lex Fridman (04:39:27) 네, 맞습니다. 이제 도착했습니다. 궁극적으로 인간은 “바로 이거다.”라는 식으로 옳은 때를 아는 것, 그것이 바로 인간의 놀라운 능력이라고 생각합니다. 특히 특정 산업, 특정 상황의 애플리케이션에서 취향을 개발하면서 ‘바로 이거다’라는 것을 알게 되면 더욱 그렇습니다. 네, 이 버튼의 둥근 모서리가 바로 그거예요. 아름답네요.” 즉, 미적 감각, 기능 감각, 효율성 등을 모두 고려한 것입니다. 네, 하지만 그런 맥락에서 인간은 AI 시스템을 감독하는 것과 거의 비슷한 일을 할 수 있습니다.

Lex Fridman (04:40:09) 그래요. 데빈에 대해 분노로 가득 차서 폭언을 하셨군요.

ThePrimeagen (04:40:15) 먼저 Devin을 운영하는 사람들이 매우 친절하다는 점을 말씀드리고 싶어요. 그 점을 이해해 주셨으면 좋겠어요. 그들에 대해 어떤 불만이나 그런 건 전혀 없어요. 둘째, 데빈은 프로그래밍에 관한 한 풀 패키지 같은 곳이에요. 따라서 작업과 리포지토리를 주고, 리포지토리와 작업을 이해하고, 탐색을 통해 리포지토리를 변경하고, 실제로 GitHub에 커밋을 하고, 수행한 작업을 설명하는 과정을 거치게 됩니다. 제가 정말 좋아하는 AI 부분의 또 다른 부분인 “가서 이걸 고쳐봐”와 같은 오프라인 기능이 있기를 바랍니다. 그러면 저는 가서 이 한 가지를 고치고 다시 돌아와서 “좋아, 이제 됐어, 병합, 쾅!”이라고 말할 수 있습니다. 저는 그런 식으로 일을 완수할 수 있기를 바랍니다.

(04:41:00) 이상적인 솔루션은 작은 버그를 제공하기 시작하면 이 버그를 수정하고 아무도 하지 않는 백로그 티켓으로 돌아와서 실제로 이 백로그 티켓을 검토하기 시작하면 정말 놀라운 경험을 할 수 있는 것이라고 생각합니다. 그래서 저는 이 아이디어가 마음에 듭니다. 하지만 제가 이 작업을 해보고 많은 사람들에게 물어보면서 문제를 계속 좁혀가려고 노력할 때마다 문제가 좁혀질수록 더 잘 해결된다는 사실에 모두 동의할 수 있을 것 같습니다. 그래서 제가 “아이콘 하나만 추가하면 돼요. 그리고 이 아이콘을 클릭하면 콘솔에서 저를 클릭하세요’라고 하면 됩니다. 최소한 SVG를 만들어서 보기 좋게 배치해 주세요.”라고 말하면 됩니다. 작업이 좁을수록 성공할 가능성이 높아집니다.

(04:41:39) 지정하는 데는 일정한 수준이 있는데, 너무 많이 지정하면 할 수 없는 것과 마찬가지입니다. 너무 적게 지정하면 이상하게 작동합니다. 그래서 밸런스 게임은 매우 재미있고 독특한 방식으로 플레이해야 합니다. 하지만 지금까지는 이런 작업을 할 때마다 항상 “이런, 테일윈드를 더 잘해서 직접 써야겠어”라고 생각하고 다시 돌아가서 다시 작성하고 나면 “젠장!” 하는 식으로 끝났어요. 마지막에 내가 뭘 저장하고 있는 거지?” 아직 아무것도 저장하지 않은 것 같아요. 그리고는 “정말 간절히 원한다.”라는 생각이 들죠. 사실 저는 AI가 훌륭해졌으면 좋겠어요. 그러면 정말 빨리 갈 수 있기 때문이죠. 제 말은, 저는 엄청나게 빨리 갈 수 있지만 항상 “이런, 내가 직접 테일윈드를 배워서 n번째로 빨리 갈 걸 그랬어”라고 생각하죠.

Lex Fridman (04:42:17) 예. 또한 디버깅은 직관적일 수도 있고 반직관적일 수도 있는데, AI가 정말 서툴다는 점도 언급해야 합니다.

Lex Fridman (04:42:27) 이런 것이 가장 어려운… 실제로 인간이 얼마나 특별한 존재이며 디버깅 작업이 얼마나 어려운지 깨닫게 해줍니다. 물론 사소한 디버깅의 경우 버그를 찾을 수 있지만 프로그래밍의 진정한 예술은 버그, 논리적 버그, 매우 복잡한 희귀 버그, 에지 케이스를 찾는 것입니다. AI가 도움을 줄 수는 있지만, 어려운 버그는 불확실성으로 가득 찬 안개 속에서 수많은 맥락과 경험, 직관을 필요로 합니다. 어렵죠.

Lex Fridman (04:43:07) 물론 AI가 로그를 생성하고 추적을 수행하고 인간이 할 수 없는 엄청난 양의 데이터를 로드할 수도 있지만 궁극적으로 이는 실제 리드 디버거보다 디버깅을 더 잘 보조할 수 있다는 의미일 뿐입니다..

ThePrimeagen (04:43:27) 네, 그럴 수 있으면 좋겠죠. 제가 알 수 있는 한, 현재 상태 디버깅은 코드를 보고 버그 문제를 보고 가장 정확할 가능성이 높은 부분을 텍스트로 예측한 다음 그 부분을 수정하려고 시도하기 때문에 더 많이 할수록 더 좋습니다. 그래서 이 지점, 관리자 패널이라고 하셨는데 약간 벗어난 이 지점, 이 지점, 이 지점일 가능성이 높습니다. 아마도 이 위치일 텐데, 시맨틱 검색을 통해 이 위치가 어디인지 알려주면 대규모 코드베이스를 탐색하는 데 정말 좋은 방법이 될 수 있습니다. 스마트 지능형 검색과 같은 것이죠. 검색이 알아서 하도록 하는 것이 아니라 문제를 정확히 찾아내도록 도와달라고 요청하는 것이죠. 저는 이 부분이 가장 흥미로운 부분이기 때문에 더 많은 기능을 보고 싶습니다.

(04:44:11) 그리고 curl의 작성자 또는 유지 관리자가 작성한 정말 훌륭한 글이 있는데, LLM에서 I는 지능을 뜻합니다. 그리고 그는 컬을 작성하고 컬을 유지 관리합니다. Curl은 보안 문제 등으로 홍수를 이루고 있는데, 이 모든 것이 LLMs에서 “아, 보안 결함을 발견했습니다. 여기 보안 결함이 있습니다.”라고 코드에 자세히 설명합니다. 그리고 그는 “좋아, 어떻게 재현했어? 여기 코드를 보면 실제로는 불가능한 상황이기 때문에 보여주세요.”라고 말합니다. 그리고 지금 보안팀에 버그 바운티 프로그램이 넘쳐나고 있는 것처럼, 기본적인 텍스트 예측 이상의 코드 분석이 불가능하기 때문에 LLM으로 제출된 응답이 넘쳐나고 있는 것이죠. “아, 이건 스터 카피입니다. 일반적으로 교반 카피는 어쩌고저쩌고 하는 것이죠. 짜잔, 여기 있네요. 여기 버그가 있습니다.” “아니, 문자열이 너무 길면 바로 앞의 if 문이 함수를 종료하기 때문에 이런 경우는 발생하지 않습니다. 지금 말씀하시는 것은 불가능합니다.”라고 말할 수 있습니다. 그래서 디버깅은 매우 흥미롭습니다.

Lex Fridman (04:45:08) 예. 저에게는 그게 큰 문제인데, 그걸 해결할 수 있다면, 해결이 아니라 개선할 수 있다면, 그게 에이전트든 그냥 LLMs IDE에 통합되든 큰 문제가 될 것입니다..

ThePrimeagen (04:45:19) 저는 이 모든 아이디어가 주목 거부에 해당한다고 생각합니다. 전체 공격 벡터가 있다고 생각합니다. LLMs을 사용하여 가짜 버그 보고서를 생성하고, 오픈 소스 관리자의 사기를 떨어뜨리고 피해를 입히기 위해 이런 모든 것들을 가짜로 만들어서 실제로 효과적으로 사용하고 있습니다. 이런 경험을 한 최초의 버그는 폴리킬(Polykill)로, 적극적인 악의적인 관리자가 소유자를 괴롭히는 관심 거부가 있었습니다. 그러자 백기사가 나타나서 그 밑에서 물건을 사겠다고 제안했습니다. 그리고 그들은 그것을 사서 실제로 악성 코드로 교체한 다음 사용했습니다. 그래서 보안 업계 전체가 이를 매우 공격적인 형태로 사용하는 것을 중심으로 발전하고 있습니다.

Lex Fridman (04:46:04) 매혹적인 세상으로 진입하고 있는 것은 맞지만, 인간 개발자가 그 세상의 큰 부분을 차지할 것이라는 점에는 동의합니다.

Lex Fridman (04:46:11) 직업이 진화할 수도 있지만, 그 자리에 있을 것입니다. 할 수만 있다면, 이 페이지를 잘 살펴보지 않았는데, 함께 살펴보는 것도 좋을 것 같아서요. 다시 말하지만, 이것은…

ThePrimeagen (04:46:21) 스택 오버플로, 내가 가장 좋아하는

Lex Fridman (04:46:23) … 스택 오버플로 개발자 설문조사, AI 시스템에 대한 생각과 사용법에 대해 이야기합니다. 일반적인 정서는 61%가 ‘그렇다, 사용한다’고 답했고 25%는 ‘아니다, 사용할 계획이 없다’고 답했습니다. 즉, 대다수가 사용하고 있고, 대다수가 호의적이거나 매우 호의적이거나 무관심한 등 호의적인 정서를 가지고 있습니다. 90%가 넘는 것 같습니다.

ThePrimeagen (04:46:52) 이렇게 많은 사람들이 AI에 대해 아무런 계획이 없다는 것이 정말 놀랍습니다. 저는 코딩에 사용하는 것을 좋아하지 않지만 언젠가는 더 많이 사용할 수 있기를 바랍니다. 그래서 저는 항상 다음 일을 찾고 있습니다. 사람들이 그렇게 고집을 부린다는 사실에 놀랐어요. 물론 두 번째 항목인 AI 도구 감성은 응답자 수를 고려할 때 첫 번째 항목의 상위 2개 항목에 응답한 사용자들만 해당되는 것 같습니다.

Lex Fridman (04:47:17) 아니요, 할 계획이 없다는 사람은 해보고 “이건 정말 짜증나”라는 직관을 빠르게 쌓은 사람이 아닐까 싶습니다.”

Lex Fridman (04:47:26) 그래서 숙련된 프로그래머처럼 될 수도 있죠. “아니, 이런다고 생산성이 높아지지 않아요.”라고 말합니다. 81%의 개발자가 생산성 향상이 AI 도구의 가장 큰 이점이라는 데 동의합니다. 그렇다면 어떤 이점이 있을까요? 생산성 향상, 학습 속도 향상, 효율성 증대, 코딩 정확도 향상, 워크로드 관리 용이성, 협업 개선 등이 있습니다. 재미와 즐거움은 어디에 있을까요? 저는 그 점이 가장 큰 장점이라고 생각합니다.

ThePrimeagen (04:47:55) 학습 속도를 높이는 것은 재미의 하위 범주와 같은 것일지도 모릅니다. 더 많은 것을 배우고 더 나은 사람이 될 수 있다면 말이죠. 제게는 좋은 것 같습니다.

Lex Fridman (04:48:05) 모르겠어요. 생산성도 재미의 일부이기 때문에 다르죠. 그냥 가벼워졌어요. 협업이 개선되고, 이런 모든 요소가 확실히 좋아졌을 겁니다.

ThePrimeagen (04:48:16) 코파일럿을 사용하면서 ‘정말 대단한 기능이다’라는 경이로움이 꽤 오래 지속되었습니다.

ThePrimeagen (04:48:24) 사용하지는 않지만 그 기능에 매우 감명받았습니다. 그 정도까지 근접할 수 있는 기능이 있다는 사실이 놀랍습니다.

Lex Fridman (04:48:31) AI 도구의 정확도 측면에서 2.7%만이 높은 신뢰도를 보였어요-

ThePrimeagen (04:48:37) 나는 인공지능의 결과를 크게 신뢰해야 한다고 생각하려면 매우 신중해야 한다고 말하고 싶습니다. 매우 회의적이어야 합니다.

Lex Fridman (04:48:43) 예, 제가 어디에 서 있는지 모르겠습니다. 아마도 어느 정도 불신일 겁니다. 높은 불신은 공격적인 것 같습니다.

ThePrimeagen (04:48:47) 그런 것 같긴 하네요. 항상 뭔가 잘못되었다고 가정하고 거기서부터 도전할 수 있어야 합니다.

Lex Fridman (04:48:57) 그리고 AI가 복잡한 작업을 처리할 수 있는지 추정해 보면 대부분의 사람들은 복잡한 작업을 처리할 수 없다고 생각하지 않습니다. 사람들은 인공지능이 처리할 수 있는 것과 그렇지 않은 것에 대해 잘 알고 있는 것 같습니다.

ThePrimeagen (04:49:07) 나는 사람들이 프로그래밍에서 컴플렉스가 무엇인지 잘 이해하지 못한다고 주장하고 싶습니다.

ThePrimeagen (04:49:12) “퀵소트 써줘”라고 하면 어떤 사람들은 퀵소트가 매우 복잡하다고 생각할 것입니다. 하지만 저는 이것이 사실 인공지능에게 요청할 수 있는 가장 간단한 작업이라고 주장하고 싶습니다. 잘 문서화되어 있는 것들은 인공지능이 아주 잘 해낼 수 있을 것입니다.

Lex Fridman (04:49:26) 예. 아마도 지금은 사람들이 AI를 사용하지도 않는 높은 수준의 디자인 결정은 상담원이 해야 할 일인 것 같습니다. 가장 어려운 일, 가장 영향력 있는 일, 또는 가장 어려운 일은 버그를 찾는 일일 것입니다.

ThePrimeagen (04:49:47) 이번엔 윤리에 관한 부분입니다. 윤리에 대해 어떻게 생각하시는지 정말 궁금합니다. 유럽에서 새로운 규정을 마련할까요?

ThePrimeagen (04:49:56) 아티스트는 어떨까요? 정말… 코딩과 아티스트의 차이는 아주 간단하기 때문입니다. 종이 한 장을 주면 게를 그릴 수 있습니다. 여러분은 “저게 게다.”라고 말할 수 있죠. 하지만 코딩은 그렇게 할 수 없습니다. 코딩은 옳고 그름이 정해져 있죠. 게가 무엇인지에 대한 다양한 해석이 존재하지 않습니다. “아니요, 그렇게 말하면 안 됩니다.”와 같은 식이죠. 표현할 수 있는 것이 매우 제한적입니다. 그래서 예술가들이 매우 답답해하는 이유를 알 수 있었습니다. 그러면 그 모든 것에 대한 보상은 누가 받나요?

(04:50:28) 그리고 코딩과 라이선스 같은 것들이 있습니다. 그 중 얼마나 많은 부분이 GPL 라이선스일까요, 스크랩해서 학습 데이터로 사용했을까요? GPL은 오픈소스를 강제합니다. 그걸로 무엇을 할 건가요? 즉, 모델이 오픈소스여야 할 수도 있습니다. GPL에 대한 힌트가 조금이라도 있다면 OpenAI는 이전의 모든 것을 강제로 공개해야 할 수도 있습니다.

Lex Fridman (04:50:48) 예, 그거 이상하네요. 제가 생각하는 대부분의 모델은 기술적으로 학습할 권한이 없는 데이터로 학습하고 있기 때문에 정말 이상합니다.

Lex Fridman (04:50:58) 말할 수 없는, 진짜 와일드 웨스트입니다.

ThePrimeagen (04:51:01) 상상하실 수 있겠지만, 저는 항상 유럽을 사용하는데, 그 이유는 아마도 전 세계에서 가장 소비자 보호법이 잘 되어 있기 때문일 것입니다. 만약 GPL 잠재적 코드를 생산한 모델을 사용했다면 오픈소스를 공개해야 한다는 법이 내려진다면 어떻게 될지 상상해볼 수 있을까요? 얼마나 많은 회사가 “오, 세상에”라고 말할까요? “1년 안에 모델에서 GPL 소스가 될 수 있는 코드를 모두 제거해야 합니다.”라고 말하겠죠. 얼마나 큰 공황이 일어날지 상상할 수 있을 겁니다. 코드가 불티나게 팔릴 것입니다.

젊은 프로그래머를 위한 조언

Lex Fridman (04:51:31) 그렇다면 젊은 프로그래머에게 조언을 해줄 수 있을까요? 레드딧의 무한한 지혜, 레드딧의 또 다른 질문입니다. “20대 초반의 사람이 기술 업계에서 발전하려면 어떻게 해야 할까요?” 그리고 “그렇게 하면 다른 사람의 길을 걷게 될까요?”라는 흥미로운 질문이 추가되었습니다.

ThePrimeagen (04:51:59) 이 질문에 제가 할 수 있는 최선을 다해 대답해 보려고 하는데요, 제가 기술 세계에 입문하면서 가장 힘들었던 점 중 하나는 제가 너무 빠져들고 중독되었다는 점입니다. 너무 많은 시간 동안 프로그래밍을 하다 보니 아내, 친구들과의 시간을 잊어버리고 한 가지 활동에 완전히 몰두하는 것 같았어요. 그것이 저를 지금의 저로 만들었지만 아마 건강하지 않은 활동이고 현명한 활동은 아니었을 거라고 생각해요. 그래서 제가 드릴 수 있는 가장 좋은 조언은 사랑, 기술, 욕구를 개발해야 한다는 것입니다. AI 에이전트만 사용하든, 직접 프로그래밍을 하든, Zig를 사용하든, 자바스크립트를 프로그래밍하든, 어떤 것이든 그 취향이 무엇이든 간에 매일 다시 돌아와서 체육관에서 연습을 하고 프로그래밍을 할 수 있도록 해야 합니다.

(04:52:53) 또한 가치 있는 것을 소중히 여기는 방법을 알고 다음 단계의 스타트업을 만드는 데 너무 집착하여 건강을 희생하고 관계를 희생하는 소스에 빠지지 않는 것도 중요합니다. 또는 더 나쁜 것은 금전적 성공을 위해 도덕성을 희생하고 인생에서 해서는 안 될 지름길을 택하는 것입니다. 금전적 성공을 위해 도덕성을 희생한 사람들의 끔찍한 이야기는 수없이 많이 들으실 수 있을 겁니다.

Lex Fridman (04:53:22) 예. 황금 수갑의 안락함은 어떤 의미에서는 영혼을 파괴할 수도 있죠. 네, 그래서 그 점을 기억해야 합니다. “내가 지금 프로그래머가 되고 싶은가?”라고 생각하는 젊은이들이 있습니다. 인공지능이 프로그래밍을 점점 더 잘하는 것 같거든요. 만약 그들이 그런 결정을 내리려고 한다면 “그래, 이 일이 당신을 기쁨으로 채우는 일이라면”이라고 말할 수 있을까요?

ThePrimeagen (04:53:51) 내 아이들이 프로그래밍을 배울 수 있다면, 그것만으로도 충분한 대답이라면…

ThePrimeagen (04:53:57) … 제 아이들은 지금 프로그래밍을 배우려는 젊은이들보다 수십 년은 어리다는 점에서 말이죠. 그래서 저는 제 아이가 Roblox에서 원하는 것은 무엇이든 실행하고 만들 수 있기를 바랍니다. 저는 아이에게 ChatGPT를 보여주며 “좋아, 질문해 보자. 이걸 어떻게 할까?” 하지만 아이는 여전히 이 모든 작업을 수행하는 데 매우 혼란스러워합니다. 그래서 “이렇게 해봅시다.”라고 말하죠. 저는 그가 20년 후 언젠가는 그 기술을 모두 버려야 할지도 모른다는 생각에 그가 배우고 능숙해지기를 바랍니다. 하지만 70년대에 소셜 네트워크에 대해 누군가에게 물어보면 “도대체 무슨 소리야?”라고 말하는 것처럼, 그가 버린 기술이나 버려야 하는 어려운 기술이 무엇이든 우리 중 누구도 생각하지 못한 완전히 새로운 분야가 될 것이라고 장담합니다. 미래에는 엄청나게 다르고, 미치고, 흥미진진한 것들이 존재할 것입니다.

Lex Fridman (04:54:42) 아마도 우리 모두는 실제로 비디오 게임을 만들고 있을 것입니다.

ThePrimeagen (04:54:46) 모두를 위한 엔터테인먼트, 우리 세상의 멋진 신세계?

Lex Fridman (04:54:51) 엔터테인먼트는 비디오 게임의 일종의 사소한 버전이라고 생각합니다. 인생의 목적이 뭐냐는 식이죠. 제 말은, 매우 만족스러운 비디오 게임이 될 수도 있죠. 꼭 도파민을 분출하는 것일 필요는 없죠. 교육적일 수도 있고, 무서울 수도 있고, 도전적일 수도 있고, 진화를 강요하고 모험으로의 도약을 통해 만족스러운 삶을 구성할 수도 있습니다. 비디오 게임이 될 수도 있습니다. 누가 알겠습니까? 특히 가상 현실에서는요. 저는… 그게 또 다른 문제입니다. 저는 비디오 게임을 많이 해요. 비디오 게임을 깊이 있게 즐길 수 있는 여지가 많다고 생각해요.

ThePrimeagen (04:55:42) “월드 오브 워크래프트를 할까요, 코드의 출현을 할까요?”라고 구체적으로 물어보면 “코드의 출현, 코드의 출현”이라고 하셔서 비디오 게임을 많이 하는 줄 몰랐어요.”

Lex Fridman (04:55:50) 아, 그렇다면 제가 월드 오브 워크래프트 게임을 안 해본 이유는 제가 피하는 게임이 있기 때문일 수도 있겠네요. 그런데 포트나이트도 그 중 하나였던 것 같아요. 너무 중독될까 봐 걱정해서요.

Lex Fridman (04:56:01) 그래서 제가 절대 중독되지 않을 게임들이 있습니다. 예를 들어 저는 문명을 무서워합니다. 걱정돼서 문명 게임을 한 번도 해본 적이 없어요. 어떤 게임에는 정말 빠져들게 만드는 어두운 길이 있기 때문에 걱정이 되죠. 그래서 저는 스카이림을 훨씬 더 잘해요. 이런 게임이나 발더스 게이트를 플레이하면서 플레이하는 양을 조절할 수 있어요. 평생의 동반자가 될 수도 있고, 해가 뜨면 “내 인생이 어떻게 된 거지?”라는 생각이 드는 중독이 될 수도 있죠. 그리고 어딘가 쓰레기통 뒤에서 벌거벗은 채 무슨 일이 일어났는지 궁금해하는 제 자신을 발견하죠. 네, 그래서 저는 비디오 게임을 선택하는 방식입니다.

ThePrimeagen (04:56:43) 문명이라고 구체적으로 말한 사람은 당신이 처음이 아닙니다.

ThePrimeagen (04:56:48) 기술 업계에서 아주 높은 위치에 있는 한 사람 이상이 “문명은 나의 몰락이다”라고 말한 적이 있습니다. 그 게임만 가까이 하면 끝이다.”라고 말하더군요.”

ThePrimeagen (04:56:57) 게임을 해본 적도 없습니다. 이제는 “야, 이거 한번 해봐야겠다. 미친 소리 같네요.”

Lex Fridman (04:57:02) 그래요. 그리고 새로운 것은 실제로…

ThePrimeagen (04:57:00) 이거 한번 해보세요. 미친 소리 같네요

Lex Fridman (04:57:02) 그래요. 그리고 새로 나온 건 정말 정말 좋다고 하더라고요. 무슨 얘기 중이었나요? 네. 같은 젊은 개발자에게 조언을 해줄 수 있는 직업을 통한 궤적이 있나요? 스케줄리시티에서 시작하셨나요?

ThePrimeagen (04:57:17) 예, 그게 제 첫 풀타임이었어요… 이전에 정부와 계약을 맺었을 때는 정규직이 아니었죠. C급이었지만 정말 재미있었어요. 그리고 꽤 오랫동안 제 스타트업을 구축했습니다. 둘 중 하나를 정규직으로 간주한다면 그 때가 정규직이겠죠. 문서상으로는 스케줄리티가 공식적이었죠.

Lex Fridman (04:57:32) 이 회사 저 회사 옮겨 다니며 무엇이 자신에게 즐거움을 주는지 알아내는 데 어떤 가치가 있나요?

ThePrimeagen (04:57:41) 모든 직업이 다 좋은 것은 아니기 때문에 많은 것을 생각해야 합니다. 첫 직장에서 프로그래밍을 싫어한다고 생각하게 될 수도 있습니다. 어떤 곳에서 인턴십을 했는데, 제가 과거에 했던 일들이 계속 놀랍게 다가왔고, 인턴십을 했던…>

Lex Fridman (04:57:59) Fuck. 정말 많은 일을 하셨네요. 정말 대단해요

ThePrimeagen (04:58:02) … 종합 정보 관리 시스템이라는 곳입니다. 몇 시간 전에 제가 의료와 산업 배송에 대해 이야기했던 거 기억하시죠? C 샤프 샵이었어요. 너무 힘들어서 그 일을 하고 나서 대학 1학년 1학기에 기계공학과로 전공을 바꿨어요.

ThePrimeagen (04:58:17) 저는 “알았어요. 사실 저는 컴퓨터 과학을 좋아해요. 프로그래밍은 싫어요.” 따라서 어떤 직업을 가졌다고 해서 그 직업이 평생직장이 되는 것은 아닙니다. 하지만 가장 좋은 점은 직업을 구하고 나서 그 일을 좋아하고 하고 싶고 흥미진진하다면 굳이 바꿀 필요가 없다는 것입니다. 많은 사람들이 ‘아, 다음 일을 찾아야겠어’라고 생각하는 것 같아요. 2년 동안 이 일을 해왔는데…”라고 생각하죠. 마음가짐을 바꿔야 합니다. 저는 움직일 필요가 없다고 생각해요. 경력에 해가 된다고 생각하지 않아요. 오히려 더 많은 책임감을 갖게 되고 훨씬 더 권위 있게 이야기할 수 있을 테니까요. 그리고 다음에 면접을 볼 때는”아, 이 모든 일을 하려면 이 X 사람과 이 X 사람이 있어야 했어요.”라고 말할 수 있게 될 것입니다.

(04:58:53) 한 장소에 오래 머무르면 훨씬 더 권위 있게 이야기할 수 있는 것 같아요. 그리고 그것은 제 책에서 혜택일 뿐입니다. 두려움이나 원하지 않아서 한 장소에 머물러야만… 이미 자신에게 맞는 무언가를 가지고 있고 변화하고 싶지 않아서 “나는 그냥 들어가서 완전히 아무 생각 없이 지낼 수 있다”고 생각하는 경우입니다. 몇 년 동안 무심하게 지내다 보면 자신을 발견하게 될 겁니다… 그게 유일한 위험입니다. 아무것도 남지 않게 되죠.

Lex Fridman (04:59:15) 특히 젊을 때는 그게 핵심이죠. “위험을 감수하세요. 다음 일, 다음 일로 도약하세요.”라고 말하죠. 돈 때문이 아니라 개인적인 기쁨과 즐거움을 위해서요.

ThePrimeagen (04:59:24) 그리고 결국에는 돈이 따라올 수 있다는 것이 가장 좋은 부분입니다. 돈을 위해 노력하지 않으면, 때때로 돈은 어차피 그냥 나타나기도 하죠.

Lex Fridman (04:59:29) 네, 맞아요. 그리고 삶을 가치 있게 만드는 것 중 일부는 함께 일하는 사람들, 좋은 팀입니다. 일반적인 얘기는 아니지만 문화가 중요하죠. 여러분을 행복하게 만드는 것이 무엇이든지요. 예를 들어, 방금 특정 장소를 거론하지는 않았지만 모든 사람이 9시부터 5시까지 일하는 회사가 있습니다. 그리고 일이 흥미진진하더라도 충분히 열심히 일하지 않는다고 말할 수 있습니다. 저는 열정적으로 일하는 것을 좋아하고 열정적인 사람들로 둘러싸여 있는 것을 좋아하는 사람 중 한 명입니다. 공정하게 말하자면, 그들 중 상당수는 가족이 없거나

Lex Fridman (05:00:07) 매혹적인 선택입니다. 일과 삶의 균형이냐 아니냐와 같은 선택에 대해 이야기하고 싶지 않고, 둘 다 아름다운 길이라고 생각해요. 그리고 일에서 정말 많은 가치를 얻는다면, 적어도 인생의 일부분이라도 일에 올인하는 것은 아름다운 일입니다. 열정을 다하고, 사회생활을 많이 희생하고, 그런 모든 것을 희생하는 것이죠. 글쎄요. 그것도 아름다울 수 있겠죠.

ThePrimeagen (05:00:39) 어떤 의미에서, 특히 직접 무언가를 구축하는 경우에는 매우 흥미로운 일이 될 수 있습니다. 정말 흥미진진할 것 같아요. 제가 아마존을 만드는 제프 베조스라면 초창기에는 아마 매우 힘들었을 것이고, 투입한 시간도 매우 많았을 것이라고 상상할 수 있습니다. 하지만 저는 우리 문화에는 “아, 아이를 낳아도 되고 낳지 않아도 된다”는 식으로 가정과 일의 균형을 맞추는 독특한 측면이 있다고 말할 수 있습니다. 제가 생각하는 유일한 생각은 아이를 낳기 전까지는 자신의 사랑에 대한 능력을 결코 알 수 없다는 것입니다. 그냥 모를 뿐이죠. 어떤 사람들은 “그래요, 하지만 전 제 개를 사랑해요”라고 말하죠. 저도 제 개를 사랑했던 것처럼요. 그러다 아이를 낳고 나니 이제 제 개들은 “괜찮아요. 좋아해요.”

ThePrimeagen (05:01:26) 집에 와서 인디를 쓰다듬으며 “오, 인디”라고 말하곤 했어요. 그리고는 “그래, 잘 가, 인디”라고 말하죠. 둘의 차이를 설명할 수도 없을 정도로 전혀 다르죠. 지금 당장 닥친 현실이 있기 때문에 그 트레이드오프가 어떤 것인지 아무도 말할 수 없고, 제 아내와도 100% 확신합니다. 지금 당장 이걸 하면 당신은 죽지만 아이는 살 수 있다는 의료 시술이 있다는 소식을 들었다면 저는 그렇게 하지 않을 거라는 데 의심의 여지가 없습니다. 미래를 내다볼 수 있고 지금 당장 죽어야 한다면 아이들이 더 나은 삶을 살게 되고, 더 행복해지고, 더 성취감을 느낄 수 있다면 저나 제 아내는 그 모든 것을 감수할 것입니다.

(05:02:08) 대부분의 일에 대해 그렇게 말할 수 없는 것과 마찬가지입니다. 사람들은 실제 상황이 닥치기 전까지는 농담으로 그렇게 말하죠. 하지만 그 순간에는 사나운 기운이 느껴져요. 가상의 누군가가 제 아이를 바닥에 내동댕이치는 상상을 하면 식은땀이 흐르고 실제 부신 반응이 제 몸에 흐르게 되죠. 정말 다른 세상이고 설명하기 어려운 일이죠. 어렸을 때는 이렇게 큰 일이 될 거라고는 상상도 못했을 거예요.

ThePrimeagen (05:02:33) 예, 알고 있다고 생각했습니다. 몰랐습니다.

Lex Fridman (05:02:35) 하지만 제가 아는 가장 성공한 사람들, 가장 생산적인 사람들 중 일부는 자녀를 두고 있습니다. 그래서 저는 그것이 절충안인지도 모르겠습니다. 자녀에 대한 사랑이 촉매제가 되어 시간이 줄어드는 대신 그 시간을 생산성을 높이는 데 더 잘 사용하게 되는 것 같습니다.”

ThePrimeagen (05:02:56) 제 인생의 많은 부분과 문제와 모든 것에 접근하는 방식이 확실히 달라졌다고 주장하고 싶습니다.

Reddit questions

Lex Fridman (05:03:03) 레딧에서 몇 가지 무작위 질문을 해보겠습니다. 1점부터 10점까지 점수를 매길 때 Microsoft가 만든 모든 제품이 얼마나 싫으시며 왜 10점인가요? 그건 이미 다룬 것 같네요

Lex Fridman (05:03:18) 이것을 보십시오. 좋아요, 계속하세요. 계속하세요.

ThePrimeagen (05:03:22) 내가 말할 수 있는 유일한 것은 Microsoft가 정말로 원하는 것은 사용자가 자사 제품에 중독되어 제품을 최대한 많이 사용하게 하여 사용자로부터 최대한 많은 돈을 끌어내는 것인데도 선한 사람인 척하는 것이 싫다는 것입니다..

Lex Fridman (05:03:32) 이 세상에는 정말 좋은 사람이 있나요?

ThePrimeagen (05:03:35) 좋은 지적입니다. 저는 네오빔이 훌륭한 사람이라고 주장하고 싶습니다. 그들이 돈을 벌 수있는 방법은 없습니다. 저스틴 키스는 자비로운 독재자이며 제품에 대해 깊이 생각하고 가능한 한 최고로 만들려고 노력합니다. 반면에 Microsoft와 같은 회사는 VS Code를 손실 리더로 만들었습니다. 코파일럿은 아마도 로스 리더로 운영되고 있을 겁니다. GitHub, 원격 작업 공간, CI, Copilot 등 모든 것이 너무 묶여 있어서 영구적으로 갇히게 되고, 가격이 오르면 어느 순간 전환 비용이 너무 커서 전환할 수 없게 되죠. 한 때 EEE로 비난받았던 Microsoft가 다시 EEE를 하는 것처럼 느껴지는 것이 유일한 두려움입니다.

Lex Fridman (05:04:13) 예, 좋은 일을 비판하는 것이 긴장되는 이유는 예를 들어 구글이 Gmail처럼 돈을 벌지 못하는 서비스를 만드는 것처럼, 기본적으로 사용자를 생태계에 묶어서 평생 유지하기 위해 그렇게 하는 것이라고 냉소적으로 말할 수 있는 인센티브가 보일 수 있기 때문이죠. 하지만 Gmail을 만든 것도 대단한 일입니다.

Lex Fridman (05:04:38) … 그리고 그들은 놀라운 제품을 만들어 냈습니다.

ThePrimeagen (05:04:40) 나는 그 점에 대해서는 당신 편을 들 수 있습니다. 좋은 제품입니다. VS Code는 좋은 제품입니다.

ThePrimeagen (05:04:45) 자, 이제… 하지만 괜찮습니다. 그들은 훌륭한 일을 해냈습니다.

Lex Fridman (05:04:50) 그렇습니다. 따라서 일부 회사 뒤에는 금전적 인센티브가 있을 것입니다. 그건 그렇고, 제가 Microsoft를 옹호하는 것은 옹호하는 것이 아니라 긍정적인 이야기를 하는 것은 Prime에게 욕을 하기 위해서입니다. 하지만 그건…

Lex Fridman (05:05:03) 예, 리눅스는 저의 처음이자 마지막 사랑입니다… 리눅스와 오픈 소스의 정신은 아름다운 것이기 때문에 대기업이 좋은 일을 하려고 해도 종종 이익이 우선시되어 스스로 타락하는 경우가 있는데, 마이크로소프트는 오랫동안 그렇게 해온 역사를 갖고 있다고 생각합니다.

Lex Fridman (05:05:28) 개발자들 사이에서 착한 사람처럼 보이고 싶어서 냉소적으로 말할 수도 있지만 오픈소스 지원을 위해 많은 일을 해왔습니다. 메타도 마찬가지입니다. 메타는 엄청나게 많은 일을 해왔습니다.

Lex Fridman (05:05:43) … 오픈소스를 지원합니다. 사실 그 부분에 대해서는 Meta가 왜 라마와 이것들을 오픈소스화했는지에 대한 재정적 또는 냉소적 근거를 제시할 수 있을지 모르겠습니다…

ThePrimeagen (05:05:55) 예, 그건 헷갈리네요. 그냥 멋져 보이네요.

Lex Fridman (05:05:56) 아마 채용을 위해서일지도 모르죠. 하지만 그건 합법적이고 윤리적이고 정말 강력한 결정이라고 생각합니다. 그리고 때때로 이런 회사들은 현금이 많기 때문에 옳고 올바른 일을 할 수 있습니다.

ThePrimeagen (05:06:13) 예. 정말 긍정적인 시각으로 바라보는 것 같고 정말 좋은 것 같습니다.

Lex Fridman (05:06:17) 우리는 항상 회의적이어야 합니다.

ThePrimeagen (05:06:18) 예, 결국 기업은 좋은 것도 나쁜 것도 아니며 도덕적으로 중립적이기 때문에 제 말은, 결국 기업은 선하지도, 나쁘지도 않다는 것입니다. 기업을 운영하는 사람들, 그 사람들이 내리는 결정에 따라 좋은 일과 나쁜 일이 결정되는 것이죠

Lex Fridman (05:06:28) 또 다른 질문, 젖소 젖 짜는 법을 아느냐고 물어보세요. 이미 물어봤어요. 대답은-입니다.

ThePrimeagen (05:06:35) 나는 젖소 젖을 짜본 적이 없습니다.

ThePrimeagen (05:06:37) 소에게 죽을 뻔했지만 소 젖을 짜본 적은 없습니다.

ThePrimeagen (05:06:46) 오케이, 그럼 제가 설명할게요. “저는 보라색이 정말 싫어요. 보라색은 저를 화나게 하기 때문이에요.”와 같은 말을 할 수 있습니다. 글쎄요, 그냥 아주 순한 말이에요. 하지만 바로 뒤에 누군가가 “그런데 왜 보라색을 싫어하죠?”라고 묻습니다. 그러면 마치… 데릭 주랜더처럼 되죠. 제가 5분 정도 이야기하고 나면 다음 질문이 “근데 진짜 왜요?”라는 식이죠. “왜 남자 모델이죠?”라는 식이었어요.

Lex Fridman (05:07:12) 네, 맞아요. 남성 모델에 대한 설명이 길어지면 동의했다가 잊어버리는 것이 바로 주랜더의 예시입니다.

ThePrimeagen (05:07:26) 나는 리그마에 여러 번 죽었습니다. 리그마의 유래를 아세요?

ThePrimeagen (05:07:31) 그래서 유명한 스트리머인 Ninja에게 누군가 “아, 리그마에 대해 들어봤어요?”라고 물었더니 “네”라고 답했죠. 그러자 그는 “아니요”라고 했죠 그러더니 “아, 리그마 공이네”라고 했어요. 그 후 닌자는 그 말을 듣고 상처를 받아 채팅에서 리그마라는 말을 하는 사람을 금지하기 시작했습니다. 그래서 그 밈을 받아들이지 않으면 파멸하게 되죠. 그래서 당연히 파괴되고, 사람들이 나를 리그마로 잡을 수 있을까? TJ가 일라디를 했어요. “오, E-girls가 일라디스로 개명했다는 거 들었어?”라고 말하더군요. 전 전혀 예상하지 못했죠. 전 그냥 “뭐?”라고 물었죠. 그랬더니 ‘일라디즈’라고 하더군요 그리고는 “맙소사”라고 생각했죠. 그리고 해적판 소프트웨어로 인해 “아, Google SIMA에 대해 들어보셨나요?”라는 말을 듣기도 했습니다. SEMA는 Google의 실제 제품입니다.

(05:08:12) “그래, 들어본 적이 있구나. 이게 또 뭐죠?” 그랬더니 ‘시마 불알’이라고 하더군요. “젠장, 어떻게 계속…?” 이러는 거죠. 그래서 이 장면을 생방송으로 여러 번 보여드렸어요. 저는 리그마에게 가장 많이 죽었어요.

ThePrimeagen (05:08:28) 오케이, 그게 딕션이고, 파이썬의 딕셔너리입니다.

Lex Fridman (05:08:32) 딕트를 좋아하지 않는 사람이 있을까요?

ThePrimeagen (05:08:34) 예, 좋은 질문입니다. 파이썬을 사용할 때는 딕셔너리 파티만 하면 됩니다.

ThePrimeagen (05:08:39) 저건 티셔츠여야 합니다. 정말 웃긴 티셔츠네요. 그래서 스택 오버플로에서는 원하는 모든 질문을 할 수 있고, 저는 언젠가 스택 오버플로에서 딕셔너리와 바이트를 측정하는 방법에 관한 질문을 만들어보기로 했습니다. 그런 다음 “그럼 문자열과 참조의 비용은 어떻게 계산할까요?”와 같은 다양한 질문에 대해 정말 열심히 설명하기 시작했습니다. 그리고 실제로 딕셔너리에 양손을 얹고 정말 쫓아가다 보면, 풍자를 던지기가 매우 어렵습니다. 스택 오버플로 팀에서 해당 질문을 삭제한 후 누군가 저에게 직접 이메일을 보내 질문을 삭제한 이유를 설명하면서 풍자를 넣기 위해 얼마나 철저하고 사려 깊은 질문을 했는지, 팀 전체가 감명을 받았다고 칭찬했지만 부적절하므로 삭제해야 하며 다시는 그러지 않으면 계정을 금지할 것이라고 말했습니다.

(05:09:31) 그래서 정말 재밌는 순간이었고 “아, 그거 재밌네”라고 생각했죠. 그게 약 6년 전 일이었죠. 작년에 한 컨퍼런스에서 스택 오버플로우 이름표를 달고 있는 사람이 있어서 “아, 스택 오버플로우에서 일하시나요?”라고 물었죠. 그랬더니 그는 “네, 맞아요”라고 대답했죠. 그래서 제가 “이야기 하나 해드릴까요?”라고 물었죠. 그러자 그는 이렇게 말하더군요.

ThePrimeagen (05:09:49) … “아니, 잠깐만요. 당신이 받아쓰기 담당인가요?”

ThePrimeagen (05:09:51) 그 질문은 그것뿐이었죠. 저는 그냥 “가자”라고 대답했죠. 저는 저에 대해 아무 말도 하지 않았는데도 그는 제가 딕셔너리라는 것을 바로 알아차렸어요.

Lex Fridman (05:10:01) 진심으로 말하자면, 파이썬 세계에서 이 데이터 구조의 이름을 언급해야 하는 대화를 많이 해왔고 매번 불편함을 느낍니다.

ThePrimeagen (05:10:10) 아쉽게도 단어를 줄인 것입니다..

Lex Fridman (05:10:13) Dict. 마치 철물점에 가서 코킹을 사러 가면 항상 친절한 할머니가 계셔서 어디 있는지 물어보면 매우 불편한 것과 같아요. 최대한 열심히 발음을 하려고 노력합니다.

God

Lex Fridman (05:10:30) 코킹, 확실하게 하세요. 그리고 계속 눈을 마주치지 않도록 노력하세요. 신이 당신의 인생에서 큰 부분을 차지하고 있다고 말씀하셨잖아요. 그 부분에 대해 조금 더 말씀해 주시겠어요? 하나님은 누구이며, 당신의 삶에서 어떤 영향을 미쳤고 어떤 역할을 하셨나요?

ThePrimeagen (05:10:47) 그래서 저는 어떤 이유에서든 그 순간 의식을 갖게 된 중요한 저녁에 대해 이야기했습니다. 제가 기능적 무신론자라고 주장할 수 있는 삶에서 자랐기 때문이죠. 교회에 몇 번 간 적은 있습니다. 실제로 어떤 의미에서 가족이 함께 교회에 간 기억은 잘 나지 않습니다. 그래서 교회에 대한 강한 유대감이나 그런 건 없었어요. 90년대에 미국에서 자란 사람이라면 누구나 인생의 어느 시점에 교회와 어떤 식으로든 영향을 받거나 교감을 나눈 적이 있을 겁니다. 그래서 그런 일이 일어났을 때 저에게는 상당히 놀랐습니다. 제가 반드시 그런 방향으로 가거나 그런 일을 하겠다고 결심한 것은 아니었거든요.

(05:11:33) 그래서 저에게는 분명 제 인생의 전환점입니다. 그것이 없었다면 지금의 저는 어떤 사람이 되었을지 말할 수 없습니다. 다만 제가 추진력을 갖지 못했을 거라고 말할 수 있을 뿐입니다. 아마 대학을 졸업하지 못했을 거예요. 아내를 만나지 못했거나 아이를 낳지 못했을 겁니다. 사람을 소중히 여기는 방법도 몰랐을 거예요. 그 모든 것이 없었다면 저는 계속 제 모습 그대로 객관화했을 것이기 때문에 사람에 대한 저의 가치는 아주 아주 작았을 것입니다. 그리고 아마도 가장 중요한 것은 어디에 있는지도 모르는 한 구절이 있는데, 그 구절은 그분이 우리를 먼저 사랑하셨기 때문에 우리가 사랑한다고 효과적으로 말합니다. 그래서 저는 이 노래가 없었다면 행복한 삶을 살지 못했을 것 같아요. 그리고 그게 제게 선택지인지도 몰랐어요.

(05:12:22) 저에게는 정말 힘든 시기였고, 매우 슬펐고 항상 저를 채워줄 무언가를 끊임없이 찾아야만 했어요. 그래서 자신감도 없었고 기쁨도 없었어요. 정말 슬펐어요. 그러던 중 처음으로 처음으로 기준에 맞춰 살 필요가 없다는 생각이 들었어요. 표준은 이미 지불되었고, 모든 것이 이미 공짜로 주어졌고, 교환이 이루어졌습니다. 그래서 처음으로 멋진 남자가 될 필요도 없었고, 모든 올바른 말을 할 필요도 없었고, 느낄 필요도 없었고, 인정받기 위해 정복이나 성적 정복에 나설 필요도 없었어요. 그런 것들을 할 필요가 없으니 정말 자유로웠어요.

(05:13:12) 그렇다면 신은 누구일까요? 이는 아마도 교리문답에 가까운 질문일 것입니다. 인간이란 무엇인가, 신은 누구인가? 이 질문들은 훨씬 더 어려운 질문입니다. 신이 누구인지에 대해 너무 깊이 들어가려고 하면 보통 기독교 이단에 빠지게 된다고 생각합니다. 하지만 여러분에게는

Lex Fridman (05:13:29) 그는 당신에게 행복해질 기회를 주었습니다.

ThePrimeagen (05:13:31) 네. 그는 저에게 행복할 기회를 주었을 뿐 아니라 처음으로 어떤 의미에서 용서받았다고 느끼고 저에게 상처 준 사람들을 용서할 수 있도록 만들어 주셨어요. 오랫동안 저는 고등학교 시절에 제가 싫어했던 것들, 그리고 그런 모든 것들로 인해 무거운 짐을 지고 살았어요. 그 경험을 통해 저는 모든 사람의 이름을 적고 실제로 꽤 오랫동안 가지고 다녔고, 이것이 제가 용서한 사람들의 목록이었습니다. 그리고 몇 번 읽었어요. 증오는 너무 끈적거려서 평생 붙어 있기 때문에 그런 것에 화를 내거나 집착할 수 없었어요. 그리고 증오에 대한 치료법은 오직 하나, 용서뿐이죠. 용서 없이는 증오를 없앨 수 없다고 생각해요.

(05:14:17) 그래서 저는 이 사람들을 용서하고 앞으로 나아가기로 선택했고, 정말 자유로워졌어요. 그리고 제가 직접 경험하지 않았다면 용서를 그런 변화를 위한 수단으로 생각하지 못했을 거예요.”

Lex Fridman (05:14:30) 철학적으로 가기 위해 인간의 조건에서 사랑의 역할은 무엇이며, 당신의 삶에서 사랑의 역할은 무엇이었나요?

ThePrimeagen (05:14:40) 모든 사람이 사랑을 원하거나 갈망한다는 것은 매우 분명한 사실입니다. 최근에 아내가 저에게 러브 이즈 블라인드를 같이 보자고 설득한 적이 있습니다. 그런데 이 프로그램을 보고 나니, 잘 모르면 그냥 미친 촬영을 위한 실험의 재앙처럼 느껴지더라고요. 어쨌든, 누군가를 만나지 못하면 10일 또는 아주 짧은 기간 동안 누군가와 사랑에 빠지고 결혼하고 싶다는 생각이 들 수 있다는 것입니다. 그리고 실제로 만나게 되는 것은 진짜 사랑을 간절히 원하는 사람들입니다. 저는 아내에게 “이건 마치 사랑의 검투사 같다”고 말했죠. 사람들이 드라마를 위해 싸우는 것을 보고 있는데, 정말 그들이 원하는 것은 사랑입니다. 죽기 살기로 사랑하기 위해 싸우는 것 같아요. 이런 모습을 지켜보는 것은 거의 슬픈 일입니다.

(05:15:28) 그래서 저는 인간 경험에서 그 역할이 무엇이라고 부르기가 어렵다고 생각합니다. 왜냐하면 그것은 우리 모두가 자연스럽게 원할 뿐만 아니라 필요로 하는 것이라고 생각하기 때문이죠. 그리고 저는 사랑이라는 단어를 말할 때 조금 더 범위를 좁히고 싶어요. 섹시한 사랑 같은 그리스어 에로스를 말하는 것이 아니라 부성애와 우정애가 굉장히 중요하다고 생각해요. 그리고 아가페, 하나님 사랑도 매우 중요하다고 생각합니다. 아가페 사랑은 이 모든 것들보다 우월하지만 분명히 다르며 부모 사랑이나 다른 모든 것들과 함께 필요한 사랑입니다. 그래서 이 모든 것이 혼합되어 필요하며, 각각의 이유와 적용 위치에 따라 다릅니다.

(05:16:15) 그래서 저는… 그것이 아주 기초적인 부분 없이 어떤 종류의 좋은 세상도 있을 수 없다고 생각해요. 다시 말하지만, 저는 어떤 성구를 인용하려고 여기에 온 것이 아니라 못이 아니라 사랑이라고 말합니다. 그것이 바로 이런 일이 일어나는 이유입니다. 따라서 용서가 어떤 의미에서 증오를 갚기 위한 요건이라면 사랑이 용서의 동기가 되어야 합니다.

Lex Fridman (05:16:48) 예, 그게 인생의 비극적인 면이죠. 우리 모두에게는 깊은 외로움과 더 큰 무언가의 일부가 되고자 하는 갈망이 있다고 생각합니다. 그리고 그 갈망은 사랑이고 여러 가지 이름으로 불립니다. 네, 삶의 아름다운 측면, 비극, 외로움, 불행한 고통은 삶의 근본적인 부분이며 그 아름다운 측면은 사랑입니다.

Lex Fridman (05:17:24) 영원한 긍정과 사랑의 공간인 Reddit을 더 언급할 때가 된 것 같습니다. 누군가 “영원한 긍정에 대해 감사하고 저를 위해 큰 포옹을 해주세요”라고 썼어요. 제가 발기될까 봐 카메라 앞에서 큰 포옹은 하지 않겠습니다. 그러면 정말 불행한 일이 될 것 같아서요.

ThePrimeagen (05:17:51) 다신 딕트 얘기는 꺼내지 말자, 알았지?

Lex Fridman (05:17:53) 제가 가장 좋아하는 데이터 구조입니다. 말씀드렸듯이 저는 딕셔너리, 모든 종류의 딕셔너리, 정렬된 딕셔너리를 좋아합니다…

Lex Fridman (05:18:01) … 정렬되지 않은 딕트. 전 차별하지 않아요. 네, 하지만 제게 큰 감사를 전하고 싶어서요. 저도 많은 일을 겪어왔고, 가장 멍청한 것을 만들 때에도 긍정적으로 말해주시는데, 그 긍정성이 저를 좋은 사람이 되게끔 영감을 주죠. 당신은 제가 무언가를 만들도록 영감을 주죠. 정말 고마워요. 그리고 같은 이유로 여러분의 말에 귀를 기울이는 다른 많은 사람들이 있을 거라고 확신합니다. 당신의 긍정성에 감사합니다. 많은 사람들의 삶에 빛이 되어주셔서 감사하고, 제게 말을 걸어주셔서 감사합니다.

ThePrimeagen (05:18:43) 댕. 정말 친절하시네요. 레딧에서도 이렇게 좋은 말을 해주셔서 정말 감사해요. 정말 놀랍네요. 그래도 고마워요. 제 말은, 많은 사람들의 삶이 있다는 것을 알고 있고, 제가 한 행동과 말, 행동으로 인해 변화된 편지를 받았을 것입니다. 그래서 이 일을 하면서 가장 좋은 점 중 하나는 누군가의 삶을 잠재적으로 개선할 수 있는 기회를 얻을 수 있다는 점입니다. 그리고 많은 사람들을 인터뷰할 수 있고, 크리스 래트너의 이야기를 듣고 스위프트에 대한 그의 열정을 보고 스위프트를 배워 정말 멋진 직업을 갖게 된 많은 사람들이 그 인터뷰를 통해 다시 여러분에게 돌아올 수 있습니다. 정말 놀라운 일이죠. 여러분도 마찬가지로 좋은 일을 많이 하셨어요.

Lex Fridman (05:19:34) 오빠에게 바로 답장합니다. 오늘 대화해 주셔서 감사합니다. 마이클 폴슨(일명 ThePrimeagen)과의 대화를 들어주셔서 감사합니다. 이 팟캐스트를 후원하시려면 설명에 있는 스폰서를 확인해 주세요. 이제 파울로 코엘료의 명언을 남겨드리겠습니다. “우리가 지금보다 더 나아지기 위해 노력하면 우리 주변의 모든 것들도 더 나아지게 됩니다.” 들어주셔서 감사드리며 다음에 또 뵙기를 바랍니다.