-
[책 리뷰] 폴 그레이엄 - 해커와 화가Memories/책 영화 리뷰 2021. 6. 14. 00:14
해커와 화가
이 책의 저자인 폴 그레이엄은 서버에서 앱을 실행하는 ISP(Internet Service Provider)를 웹에 최초로 도입한 사람이다. 컴퓨터공학과 미술을 복수 전공했고, 스타트업을 성공적으로 키워내 부자가 된 사람이기도 하다. 나는 이 책을 평범한 개발 서적으로 생각했는데, 책 전체를 관통하는 인문학적 통찰력에 오랜만에 지적 스릴을 느꼈다.
요약
01. 공부벌레는 왜 인기가 없을까?
당신은 소속 집단에서 인기 있는 사람이 되는 것과 평균적인 지적 능력을 가져야 하는 것 중 고르라면 어느 것을 고를 것인가? 공부벌레들은 대부분 후자를 고를 것이다. 그들에게 평균적인 지적 능력에 머무르는 것은 도저히 참을 수 없는 일이기 때문이다.
나도 내 자신에게 평소에 자주 던져보던 의문인데, 나도 후자를 고를 것 같다. 논리적으로 사고하지 못하는 삶을 사는 건 상상할 수 없고, 자아를 뺏기는 것과 같으니까. (난 내가 똑똑하다고 생각하지는 않는다. 다만 명석함과 인사이트는 다른 영역이라고 생각할 뿐이다...)02. 해커와 화가
개발자(해커)는 화가, 건축가, 소설 작가와 같은 창작자에 가깝다.
- 개발자가 실력을 늘리는 쉬운 방법은 화가가 실력을 늘리기 위해 하는 것과 동일하다. 하나의 프로젝트를 붙잡고 몇 년 동안 일하는 것보다, 처음부터 새롭게 시작하는 프로젝트를 규칙적으로 여러 번 반복하는 것이다.
- 그림은 덧칠로 완성된다. 개발도 마찬가지이다. 스펙 요구사항이 완벽할 것이라고 기대하는 것은 환상이다. 개발 도중에 스펙이 바뀌는 것을 수용할 수 있는 방법으로 프로그램을 짜는 것이 현명하다.
- 좋은 소프트웨어의 내부를 들여다보면 아무도 들여다볼 것이라고 생각되지 않는 곳조차 아름다워야 한다. 형편없이 Indent 되었거나 엉터리 변수 이름을 사용하는 것은 끔찍한 관행이다.
- 화가와 개발자가 공동 작업을 수행하는 방식은 같다. 프로젝트를 아주 정밀하게 정의된 모듈로 구분하고, 가능하면 모듈 사이에 존재하는 인터페이스는 명확한 방식으로 정의한다.
- 당신의 소스코드를 읽을 다음 개발자를 위한 감정이입이 필요하다. 소스코드는 읽기 쉽게 작성되어야 하는데, 그 방법은 주석을 잔뜩 집어넣지 않는 것이다. 코드가 알고리즘을 잘 설명할 수 있도록 설계되어야 한다. 주석이라는 것은 급한 커브길에 화살표 표시가 있는 것처럼, 읽는 사람에게 꼭 전달해야 하는 사항이 있을 때만 적어 넣어야 한다.03. 이단자가 되어라
- 불행히도 '도덕'에도 유행이 존재한다. 도덕의 유행은 선에 대한 잘못된 판단을 안겨준다.
- 당신이 남북 전쟁 전의 백인 농장주로 태어났거나, 1930년대의 나치 독일에서 태어났다면 그 당시의 시대관을 믿지 않았을 거라고 확신할 수 있는가? 당신이 지금 집단의 가치관을 그대로 따르고 있다면, 아마 그 당시에도 그 가치관을 그대로 믿었을 확률이 높다.
- 진실에 근접한 말만이 사람들을 화나게 한다. 만약 내가 내 형제의 키가 3 미터라고 말하고 다닌다면 사람들은 내가 거짓말쟁이라고 생각할지언정, 크게 화를 내지는 않는다. 갈릴레오가 지구가 태양의 주변을 돈다고 말했을 때 교회가 극도로 화가 난 건, 그 내용이 사람들이 믿을 만큼 진실성 있었기 때문이다. 우리가 말할 수 없는 것이 있다는 것은 그런 말을 듣고 싶어 하지 않는 집단이 존재한다는 것이다. 그리고 그 집단의 신경이 바짝 곤두서 있다면 말을 금지하는 수준은 최고조로 치솟게 된다. 하지만 확신에 가득 찬 집단이라면 스스로를 보호하기 위해 그런 금기를 만들 이유가 없다. 즉, 대개의 경우에는 충격을 받는 쪽이 뭔가 잘못 생각하고 있는 경우가 많다.
- 어떤 조직의 건강함을 측정하는 방법은 부정적인 생각이 허용되는 수준이라고 봐도 좋다.
- 우리는 우리가 과거 세대에 비해서 훨씬 더 똑똑하고 도덕적이라고 생각할지도 모르지만, 역사에 대해 읽을수록 그럴 가능성은 희박해진다.
- 왜 나의 시대적 관념이 '정말로 옳은' 것인지 의심해야 할까? 그 이유는 다음과 같다. 첫번째, 순수한 지적 호기심. 두 번째, 우리가 훗날 우습게 여겨질 만한 것들을 믿고 있는 것이라면, 그런 우를 범하고 싶지 않은 것. 세 번째, 이런 사고방식은 두뇌 활동에 도움이 되기 때문이다.
이 장을 읽으면서 이 책은 블로그에 요약 포스팅을 써야겠다는 생각을 했다. 내가 항상 희미하게 가지고 있던 개념을 저자가 명확하게 정리해주었기 때문이다. 나는 학생 때부터 항상 많은 것이 의심스러웠던 반골이었다. 편하게 살고 싶어서 입 밖으로 그런 금기들을 꺼내지 않고 살고 있지만... 익명의 블로그이고, 헌법에 표현의 자유는 보장되어 있으니까 여기에라도 적어봐야겠다. (그리고 위에 기술했듯, 생각을 말하는 것조차 억압하는 사회라면 역설적으로 내 생각이 진실에 가까울 확률이 높다.ㅋ)
나는 지금 세대가 가지고 있는 반일감정은 100년이 지나면 구시대적인 것으로 치부될 가능성이 높다고 생각한다. 어느 나라 + 어느 시기에 태어나야만 정립될수 있는 도덕이라면 그것은 선에 대한 잘못된 판단이기 때문이다. 1980년에 한국에서 태어난 중년들은 대부분 강한 반일정서를 갖고 있지만, 1980년에 미국에서 태어나 자란 한국계 미국인들은 반일감정을 당연시하지 않는다. 그렇다면 이 정서는 과연 보편적인 선일까? 보편적인 절대 선이라는 것은 "도둑질은 나쁘다", 혹은 "거짓말은 나쁘다" 같이 어느 시대, 어느 나라에서든 통용될 수 있는 것이지, 특정 시기에 특정 나라에서 태어난 사람이 가지는 혐오의 감정이 아니다. 당신이 1930년도에 태어나 한국전쟁에 참전한 세대로 태어난다면, 지금 빨갱이 타도를 외치며 어버이연합 깃발을 들고 광화문광장을 행진하고 있지 않을 거라는 확신이 있나? 미래의 후손들이 바라보는, 혹은 외국인들이 바라보는 우리의 지금 모습이, 우리가 어버이연합을 보는 모습과 같을지도 모른다. 그러니 내가 믿는 가치관이 교육과 집단에 의해 정립된 도덕인지, 인류 보편적으로 통용되는 도덕인지에 대한 질문을 끊임없이 던져야 한다. 물론 그게 절대 쉽지는 않지만... 더 생각해 보고 싶은 사람에게는 내 인생을 바꾼 책 중 하나인 우리 안의 파시즘이라는 책을 추천하고 싶은데, 우리가 의식하지 못했던 집단주의 교육의 잔재와 실체를 알 수 있다.ㅠ 이런 암시적 개념들이 어릴 때 주입되고 나면 그대로 굳어지는 것이다. (반대로 어릴 때 1984를 읽었다면...?)
반일감정이 강한 남성들에게 나는 논리적 모순을 생각해보길 권하는데, 울 아빠...남동생..ㅋ
- 과거에 성차별이 있었다는 건 인정하지만, 그래도 지금 남성 세대가 역차별을 감수하는 건 싫다는 거죠? 그럼 전쟁 이후에 태어난 일본인들이 과거 세대를 대신해 사과하고 배상하기를 바라는 것은 논리적 모순입니다. (둘 중 하나는 모순)
성차별에도 적용 가능하다.
- 81년생 김지영을 사서 읽는 것만으로 주류 집단에게 강한 공격을 당한다면, 이 책이 말하는 것은 역설적으로 진실일 가능성이 높다.
최근 이슈였던 한강 사건.
- 한강 대학생 사건의 음모론 신봉자들은 반대의견이 논리적이고 설득력 있을수록 더 화가 나지만, 사고사로 생각하는 이들은 신봉자들이 어떤 주장을 들고 와도 그리 화가 나지 않는다. 보통 사람은 자신이 믿는 것에 대립되는 주장이 논리적이라고 느낄수록 더 화가 난다.05. 웹 기반 소프트웨어에 있는 기회
- "내 컴퓨터"라는 개념은 사라져 가고 있으며 대신 "내 데이터"라는 개념이 도래할 것이다.
- 대부분의 회사는 C, C++를 사용하지만 이 언어들은 CGI의 Statelessness를 흉내 낼 방법이 없다.
- 서버에 기반한 소프트웨어는 수정이 필요할 때마다 마음대로 수정할 수 있고, 테스트할 대상이 무엇인지 정확히 알 수 있다는 장점이 있다. 맨 마지막에 수정한 내용만 테스트하면 된다.
- 웹 개발팀은 적은 인원으로 운영할 수 있다. 그룹의 크기가 작아질수록 소프트웨어 개발의 효율성이 기하급수적으로 높아진다.
- 단점이 있다면, 그것은 모든 프로그래머가 어느 정도의 시스템 관리자의 역할도 수행해야 한다는 것이다. 서버를 제대로 돌봐줄 수 있는 사람은 실질적으로 그 소프트웨어를 작성한 사람이어야 한다.
- 하드웨어 비용은 유저가 아닌 운영자가 감당하므로, 서버 기반 소프트웨어에서 효율성은 실질적으로 중요하다. 효율적으로 작성하면 경쟁자보다 비용을 절감해서 계속 이익을 남길 수 있다.
- 당신이 작성한 소프트웨어를 언제나 직접 사용해 보아야 한다.
이 책이 2004년도에 쓰인 것임을 알면, 저자가 통찰력이 얼마나 뛰어난 사람인지 알 수 있다. ISP 는 저자가 처음 도입한 것으로, 현재는 모든 웹에서 다 쓰이고 있다. DevOps, 클라우드는 이미 이 때 직관했다.06. 부자가 되는 법, 스타트업
- 대개 사람들은 대기업에 들어가려고 하지만, 그게 최선일까? 대기업에서는 당신이 수행한 일이 다른 사람들이 수행한 일과 함께 하나의 평균값으로 뭉뚱그려진다. 회사 입장에서 보았을 때 당신이 수행한 일의 진정한 가치를 정확하게 측정할 방법이 전혀 없기 때문이다. 하지만 회사의 규모가 작으면 개별 직원이 수행한 일을 거의 정확하게 측정할 수 있다.
- 열명으로 이루어진 작은 배가 갖는 진정한 힘은, 최고의 뱃사공 몇 사람을 큰 전함에서 빼내서 작은 배에 태웠을 때 드러난다. 중요한 것은, 이렇게 소수의 사람을 선택할 때 배를 가장 잘 젓는 사람들을 가려서 뽑는다는 것이다. 소수정예에서 평균을 산출하는 것은, 모든 사람과 섞어서 평균을 내는 것보다 훨씬 유리한 결과를 낳을 수밖에 없다. 스타트업은 이미 서로를 알고 있는 사람들에 의해서 신중하게 선별된 사람을 중심으로 구성되는 경향이 있기 때문에, 저절로 상향 평균치를 확보할 수 있다.
- 능력이 있어도 별로 돈에 관심 없거나, 능력이 없다면 대기업의 안정성을 중시하는 것이 좋다. 능력이 있고 돈에 관심이 있다면, 자기와 능력이 비슷한 소수의 사람과 어울려서 일을 하는 것이 더 나은 결과를 낳는다.
- 부자가 되려면 두 가지를 갖춘 환경에 있어야 하는데, <정당한 평가>와 <영향력>이다. 어디든 당신이 내린 결정이 큰 영향을 행사할 수 있는 환경에 있어야 한다.
- 물론 스타트업에도 약간의 함정이 존재하는데, 쉴 수 있는 시간을 당신이 결정할 수 없다는 사실이다.
- 스타트업이 경제적으로 의미하는 바는, 50년 동안 정상적인 수준의 월급을 천천히 나누어서 받지 않고, 가능하면 그것을 한꺼번에 받고 싶다고 말하는 것이다.
한국에서 일하면서 기회의 스타트업을 찾는 건, 미국에서 일하면서 찾는 것보다 더 어렵다. 내수 시장이 작고, 스톡 옵션을 유의미하게 크게 나눠주는 회사가 많지 않기 때문이다. 어쨌든 나는 스타트업이 인생에 몇 번 없는 기회라는 생각을 항상 하고 있다. 그래서 항상 다음 회사는 스타트업이어야 한다고 생각은 하고 있는데, 투자의 관점으로 찾으려니까 더 힘들다. 봉급자의 시선으로 바라보면, 몇 년간의 연봉만 줄 수 있는 회사라면 바로 OK 할 수 있지만, 인생의 기회를 쪼개서 쓰는 거라고 생각하면 '대성공할' 스타트업을 골라야 하는 것이니까 더 어려울수밖에 없다. 비즈니스의 타당성도 따져야 하고 경영진도 파악해야 하며 마지막으로 스톡옵션까지 협상해야 하니까...07. 차이에 대한 연구
- 어떤 프로 농구팀이 아무렇게나 선택된 100명의 사람과 자기 팀의 선수 1명을 트레이드할 수 있을까? 100명의 이사진이 스티브 잡스 1명을 대체할 수 있을까? 능력은 대체될 수 없다.
- 수입이란 그 사람이 창출하는 부의 양에 따라서 달라지기 때문에 불균등하게 분배된다고 해서 그것이 부당함을 뜻하는 것은 아니다.
- 747 비행기 조종사가 사무직원의 40배의 급여를 받는 이유는 그가 지니고 있는 기술이 사무실 직원의 그것보다 훨씬 가치가 높기 때문이다.
- 현대 사회에서는 수입의 차이가 늘어나는 것이 오히려 사회가 건강하다는 사실을 나타낸다. 수입의 차이가 생산 능력의 차이를 반영하지 않는다면 세 가지 설명으로만 설명이 가능하다.
A) 기술 혁신이 중단되었다.
B) 사람들이 열심히 일하지 않는다.
C) 부를 창출하는 사람들이 제대로 보답받지 못하고 있다.
- 어떤 방식으로든 수입의 차이를 억누르면 사회는 그런 억압에 의해서 더욱 가난해지는 것이다.
- 사회에서 부자가 필요한 이유는 부자가 되기 위해서 그들이 하는 일 때문이다.
마거릿 대처는 기회의 평등은 보장되어야 하지만, 결과의 평등을 필요이상으로 추구해선 안 된다고 말했다. 결과가 평등한 사회는 노력한 사람에게는 불공평한 사회이다.
부의 (재)분배는 약간 사상적인(?) 주제이고 깊게 공부해본 적이 없어서 말을 보태기가 어렵다. 내가 맞다고 생각하는 쪽이, 나에게 유리하게 편향된 게 아니라는 확신이 없다.
그렇지만 IT 산업이 부의 총량을 늘려줄 것은 의심하지 않는다.09. 위대한 디자인
- 좋은 디자인은 간단하다. 수학에선 짧은 증명일수록 더 훌륭하다는 의미로 해석된다. 프로그래밍도 마찬가지다.
- 좋은 디자인은 시간에 구애받지 않는다. 미래의 세대에게 통하는 어떤 것을 만들고 싶다면 이전 세대에게도 통할 만한 것을 만들어야 한다.
- 좋은 디자인은 제대로 된 문제를 해결한다.
- 좋은 디자인은 대칭을 이용한다. (반복과 재귀)
- 좋은 디자인은 무언가를 다시 디자인하는 것이다. 무엇이든 제대로 만들어 내기는 어려운 법이다. 실수는 자연스러운 것이다. 실수를 쉽게 인정하고 쉽게 고칠 수 있도록 허용해야 한다. 오픈소스 소프트웨어는 버그의 가능성을 솔직하게 인정하기 때문에 실제로 훨씬 적은 버그를 포함하고 있다.
- 좋은 디자인은 뛰어난 사람들의 모임에서 나온다. 15세기 피렌체에서는 브루넬레스키, 기베르티, 도나텔로, 마사초, 필리포 라피, 프라 안젤리코, 베로키오, 보티첼리, 레오나르도 다빈치, 미켈란젤로가 동시에 살았다. 15 세기의 피렌체에서는 어떤 특별한 일이 벌어지고 있었던 것이다. 재능 있는 사람이 모여서 관련된 문제를 연구하는 커뮤니티보다 강력한 것은 없다.
- 좋은 디자인은 종종 대담하다. 위대한 작품은 누군가 어떤 것을 바라보고 생각을 하기 때문에 탄생한다. 흠, 나라면 저것보다 더 잘 만 수 있을 텐데...라는 생각을 하는 것이다.
- 리팩토링이 더 멋진 소프트웨어를 만들 수 있다. 픽사를 만든 에드 캣멀도 비슷한 말을 했다. "첫번째 버전은 언제나 실패작이다"
- 동료가 최고의 복지. 내가 다녔던 첫 회사의 Senior Engineer 는 내가 생각할 수 있는 '천재'에 가장 가까운 사람이었는데, 나에게 그런 충고를 했었다. 면접관으로 들어온 사람이 나랑 같이 일하고 싶은 사람인지를 봐야한다고.10~11. 프로그래밍 언어
프로그래머가 멍청한 실수를 저지르는 것을 방지하는 것에 대한 논쟁
- 현재 가장 뜨거운 논쟁 중 하나는 정적 할당과 동적 할당에 대한 것이다. 정적 할당을 지지하는 사람들은 그렇게 하는 것이 버그를 양산하는 것을 막을 수 있고, 컴파일러가 빠른 코드를 작성하도록 만들 수 있다고 말한다. 동적 할당을 지지하는 사람들은 정적 할당은 자유도를 제한한다고 반박한다. 저자는 동적 할당을 선호하지만, 아직 이 질문에 대한 답은 없다고 해야 맞을 것이다.
100년 후의 프로그래밍 언어는 어떤 모습일까?
- 그 언어가 무엇인지 추측해 보면, 미래의 언어를 지향하는 언어를 사용할 수도 있을 것이다.
- 모든 프로그래밍 언어는 공리의 역할을 담당하는 기본 연산자 집합과 이러한 연산자를 이용해서 작성할 수 있는 나머지 부분으로 나뉜다. 아마 공리의 수는 적어야 할 것이다. 수학자들은 공리가 적을수록 좋다고 생각해 왔다. 가장 작고 깔끔한 중심부를 가지고 있는 언어가 남게 될 것이다.
- 프로그래밍 언어 자체는 테크놀로지가 아니기 때문에 천천히 발전한다. 언어는 Notation (표기)에 불과하기 때문이다. 수학적 표기 방법도 발전하기는 하지만, 테크놀로지와 비교하면 무척 천천히 발전한다.
추가 사이클 (하드웨어의 진화)
- 100년 후에는 추가 사이클이 많이 주어지므로, 우리는 이를 낭비할 수 있는 기회를 얻을 것이다. 예를 들어, 요즘 언어가 String과 List를 따로 가지고 있는 이유를 생각해보자. String 은 Char의 List에 불과하지만 String이라는 구조를 따로 정의해 사용한다. 이는 우리가 효율성보다 언어의 특성을 고려하여 자원을 '낭비'하기로 결정했기 때문이다. 미래에는 이러한, 낭비의 기회가 더 많이 주어질 것이다.
- 요즘 나오는 언어들이 바이너리 코드가 아니라 바이트 코드로 컴파일되는 것도 그러한 예시이다. 추가적인 희생을 감내하고 유연성을 얻는 것이다.
- 소프트웨어의 재사용을 높이기 위한 목적으로 Multi Layer로 작성하는 것도 그러하다.
- 100년 뒤에 쓰일법한 언어를 설계하려면, 지금 무한히 제공되는 자원이 있다고 상상해 보는 것이 좋다.
항상 자원을(Heap..) 절약할 생각만 했지, 어떻게 더 잘 낭비할 수 있을지에 대해서는 생각해보지 않았었다. 그런데 분명 맞는 말이다. 장기적으로 자원은 계속 늘어나갈 것이므로, 자원과 맞바꿀 수 있는 효율성이 무엇인지 생각하는 관점도 필요하다. (나는 이 부분에서 또 작가의 천재성에 감탄했다.ㅠㅠ 100년 후에 쓰일 언어의 모습을 예측해보고, 그것에서 이상적인 언어의 모습을 제시할수 있다는 상상력과 추론..)12~13. 평균 뛰어넘기 / 공부벌레의 역습 (프로그래밍 언어 선택)
- 프로그래밍 언어란 결국 도구일 뿐이다. 도구를 선택할 때는 다른 사람들이 무엇을 쓰고 있는지가 아니라, 무엇이 최선인가에 대해서 생각해야 하는 것이다. 일반적인 경우에는 기능적 힘이 가장 뛰어난 (그리고 어느 정도 효율적인) 언어를 선택하는 것이 최선이다.
- 사용자들은 소프트웨어가 무슨 언어로 작성되었는지에 대해 관심이 없다. 잘 작동하는지에 대해 관심이 있을 뿐이다.
- 일정한 기간이 지나면 프로그래머들이 자발적으로 언어를 바꾸는 일이 없다. 어떤 언어든지 일단 이용하기 시작하면 그냥 그 언어가 최선이라고 생각해 버린다.
- 스타트업에서 일하고 있다면 쉽게 언어를 바꿀 수 있다. 경쟁자들이 보통 수준의 언어에 고착되어 있을 때, 당신은 더 고성능의 언어를 고를 수도 있다. 하지만 비용이 전혀 없는 것은 아니다. 다음과 같은 문제들이 있다.
A) 다른 언어로 작성된 프로그램과 함께 어울려서 작동할 때 제대로 작동하지 않을 수 있다.
B) 사용할 수 있는 라이브러리가 제한될 수 있다.
C) 개발자 고용이 어려울 수 있다.
- 위의 문제들이 심각한 문제일까? 아니다.
A) 호환성 문제가 발생하면 직접 해결하면 된다.
B) 최소 몇 명의 개발자와 6개월 이상의 시간을 요구하는 프로젝트라면, 언어의 강력함이 라이브러리의 편리함을 앞지르게 된다.
C) 최고의 소프트웨어는 열 명 이하의 사람으로 이루어진 팀에 의해서 만들어진다. 그 정도 인원은 고용에 크게 문제가 없다.
- 도태된 (덜 강력한) 언어를 사용할 때 따르는 손실은 얼마인가? 프로그래밍 언어가 가진 기능을 측정하는 가장 편리한 방법은 코드의 길이이다. 고수준 언어일수록 더 많은 추상화를 제공한다. 보통 코딩하는데 걸리는 시간의 대부분은 코드의 길이와 연관이 있기 때문에, 도태된 언어를 사용하면 개발 비용이 증가한다.14. 꿈의 언어
인터페이스를 수정하기 위해서는 두 사람이 동시에 합의해야 하기 때문에, 인터페이스는 거의 수정되지 않는다. 하지만 인터페이스는 대개 초창기에 임시방편으로 만들어지는 것이므로, 이것이 재설계를 방해한다.
이런 상황에 대한 해결책은 인터페이스가 수평이 아니라 수직이 되도록 시스템을 설계하는 것이다. 모듈이 추상화 레이어에서 수직으로 쌓이도록 만들면 된다.15. 디자인과 연구
- 디자인은 사용자에게 관심을 기울여야 한다. 디자인은 대개 특정한 사람을 위한 것이며, 그들이 무엇을 하려고 하는가에 대한 질문에서 시작된다. 훌륭한 건축가는 디자인을 한 다음에 사용자를 생각하지 않는다. 먼저 예상되는 사용자에 대한 연구를 통해서, 그들이 정확히 무엇을 필요로 하는지를 알아낸 후에 시작하는 것이다. 앉을 수 없는 의자를 만든다면 당신은 일을 제대로 못한 것이다. 어떤 최신 기술 스택을 사용했다고 우겨봐야 아무 소용이 없다.
- 목표로 삼은 사용자 안에 설계자 자신이 포함되어 있으면 좋은 디자인을 산출할 가능성이 한층 높아진다.'Memories > 책 영화 리뷰' 카테고리의 다른 글
[책 리뷰] 하버드대학 중국 특강 요약 (0) 2021.09.07 [책 리뷰] 21세기 미국의 패권과 지정학 (0) 2021.08.01 [주식 투자 고전] 필립 피셔 - 위대한 기업에 투자하라 (0) 2020.10.09 [Book Review] 화폐 트라우마 : 달러가 이길까 금이 이길까 (0) 2020.05.01 [Book Review] 타이탄의 도구들: 일과 삶에서 최고의 성공을 거두는 방법 (0) 2020.01.09