by 데이브 후버, 에디웨일 오시나이, 2010
이 책의 목적은 숙련자들이 아닌 경험이 적은 개발자들이 흔히 마주치는 딜레마에
여러가지 패턴들을 보여주고 그 상황에 맞는 해결책을 제시해준다.
사실 책을 읽기 전에 많은 기대를 하진 않았다.
전문적인 내용을 전하는것이 아닌 이런 종류의 진로 가이드라인을 잡아주는식의 책은
집중해라 노력해라 포기하지마라 등의 맞는 말이지만 책을 덮고 다음날이 되면 흐릿해지는
내용들이 대부분이라 생각했기 때문이다.
하지만 나는 불안했고 어디부터 시작해야될지 모르는 막연한 상황에서 멘토에게 길을 묻는다는
책의 제목이 끌렸고 그래서 이 책을 골랐다.
책을 읽으며 색다르지 않은 일반적인 조언들도 있었지만 개발자의 길을 걷기 전 망설였던 부분들과
고민했던것들에 대한 얘기나 현실적인 개발자의 세계와 사례들에 대한 얘기가 많아 큰 도움이 되었다.
읽으며 '아 내가 이거때매 고민했었는데 이렇게 생각을 하면 되는구나, 이렇게 판단을 하면 되는구나' 하며
깨달음을 얻는 순간이 많았다.
저자의 가치관도 내 생각과 너무 비슷하여 읽으면서 진정한 멘토를 만난 기분이였다. 밑줄 친 문장들보다
긴 장문으로 읽었을 때 와닿았던 글이 많았고 저자를 소개하는 부분도 좋았다. 시간이 지난 뒤 한번 더 읽으면
다시 새롭게 다가올거같은 그런 책이다.
밑줄 친 문장
- 세월이 흘러 직업을 선택할 나이가 되면서, 무언가에 끌린 듯 별다른 망설임 없이 소프트웨어 개발의 세계로 그렇게들 발을 디뎠을 겁니다. 하지만 현실은 그렇게 만만하지만은 않았을 테지요. (p.9)
- 구체적인 기술을 습득해서 유지해라. (중략) 구체적인 기술의 예를 들자면 여러 가지 대중적인 언어로 빌드 파일 작성하기, 하이버네이트나 스트럿츠 같이 잘 알려진 오픈소스 프레임워크에 대한 지식, 기초적인 웹 디자인, 자바스크립트, 그리고 당신이 선택한 언어의 표준 라이브러리 등이 있을 것이다. (p.86)
- 그런 기술들을 습득했음을 보일 수 있는 토이 프로젝트에 대한 계획을 세우라. 자기 이력서를 정기적으로 손보는 습관을 들여라. 그렇게 해가면서 구체적인 기술을 나열한 별도의 목록을 만들어라. (p.88)
- 당신의 본능은 당신에게 무지를 숨기고 아는척하라고 시키지만, 그렇게 하면 당신의 성장은 방해 받으며 성취해야 할 일도 가로막히게 될 뿐입니다. (p.91)
- 두드러지는 역할이나 어려운 문제가 주어진다면, 그 기회를 놓치지 말고 두 손으로 꽉 잡아라. 두렵게 생각되는 일을 맡고, 능력을 넘어서는 듯한 일을 실제로 함으로써만 당신은 성장할 수가 있다. (p.99)
- 얼마나 오래, 얼마나 멀리 후퇴해 있을지 의식적으로 한계를 지어두지 않으면, 두려움이나 실패에 굴복해 버린 자신을 발견하게 될지도 모른다. (p.104)
- 돈을 벌기 위한 소프트웨어와, 만들기에 재미나는 소프트웨어 사이에는 서로 겹치는 부분이 그다지 많지 않다. (중략) 당신이 돈을 벌고자 한다면, 너무 지저분해서 누구든 공짜로는 해결하려 들지 않는 그런 문제를 안고 씨름해야 할 때가 많다. -폴 그레이엄 [Hackers & Painters] (p.122)
- 만약 당신이 궁극적인 경지로 향한 긴 여정을 걷고 있다면, 당신 삶의 다양한 측면과도 조화를 이루면서 소프트웨어 장인정신에 대해 열정을 키워 가는 태도가 반드시 필요하다. (p.124)
- 당신의 목표는 가장 못한 사람으로 머무르는 것이 아니라 밑바닥부터 시작해서 위로 올라가는 것이기 때문이다. 그러려면 팀의 다른 사람들과 같은 수준이 될 때까지 의식적으로 개선할 방법을 찾으며 더 뛰어난 개발자들을 모방해 가야 한다. (p.153)
- 구글 리더같은 블로그 모아보기 사이트에 가입해서 소프트웨어 개발 관련 블로그들을 구독하기 시작하라. 트위터에서 소프트웨어 분야 쪽으로 유명한 사람들을 팔로우하고, 그 사람들이 관심을 쏟는 분야에 대해서 주의를 기울여라. 최근에 만들어진, 신기술에 들떠 있는 로컬 유저 그룹에 참여하라. 온라인 대학 강좌는 물론이고, 아이튠스나 유튜브를 통해서 무료로 접할 수 있는 팟캐스트 및 동영상이 수백 가지는 된다는 사실을 잊지 말라 (p.186)
- 스스로 무엇을 연습하는지 주의를 기울이고, 진부함으로 빠지지 않도록 끊임없이 연습에 대한 평가를 해 나가야 한다. 매일 연습할 것을 올바르게 선택하는 것은 반복되는 수련 행위 그 자체만큼이나 중요한 기술이다. (p.192)
- 부숴도 괜찮은 장난감은 당신의 한계를 넘은 곳에 발을 디디고 혼자 힘으로 완전한 소프트웨어 프로젝트를 하나 구축해 볼 기회를 의도적으로 만드는 데 더 중점을 두었다고 할 수 있다. (p.199)
- 다른 사람들의 코드를 찾아서 읽어라. 견습생으로서 당신을 주저하게 만드는 것 중 하나는, 당신이 의존하는 도구들을 만든 사람들은 왠지 당신과 다를 것 같고 더 특출하며 훌룡할 거라 믿는 일이다. 그 사람들의 코드를 읽고서 당신은 그들처럼 프로그래밍하는 법을 배우게 되고, 더 중요하게는, 당신을 둘러싼 인프라를 만들어 낸 사고 과정이 어떤 것이었는지 이해하게 된다. (p.201)
- 다른 환경, 예컨데 대부분 학교의 전산학과 같은 환경에서는, 프로그래머들이 실무에서 코드 작성보다 코드 읽는 데 훨씬 더 많은 시간을 소비한다는 사실을 간과하는 경향이 있다. (중략) 하지만, 일과 시간 대부분을 차지하게 될 이런 코드 읽기를 더 잘할 수 있도록 자신을 훈련시키는 것은, 장기적으로 더 큰 보상을 가져오는 가장 효과적인 일이라 할 수 있다. (p.203)
- 쓰는 행위 자체가 가진 힘 역시 과소평가해서는 안 된다. (중략) 당신은 더 큰 목적의식을 잃어버릴 수도 있을 텐데, 쓴다는 행위는 한 발짝 물러서서 문제에 대해 깊이 생각할 수 있도록 해 준다. 앞뒤없는 비난의 글을 쓰는 사람이라도 어느 정도는 생각을 해야만 한다. -아툴 가완디 (p.212)
- 책을 다 읽은 뒤에도 그 노트에 당신이 배운 다른 것을 같은 식으로 기록하라. 나중에 이 항목들이 기초가 되어서 블로그 글이나 잡지 기사, 심지어는 책이 만들어질 수도 있다. (p.214)
- 견습생은 자신이 어떤 실수를 저질렀는지 알아내는 것 못지않게 초기의 실수를 피하려고 해서는 안 될 것 같습니다. 일단 자기 실수를 제대로 알고 나서야 그 실수에서 배우는 것이 더 쉬워질테니까요. (p.224)
- 끊임없는 학습은 축복으로도 저주로도 생각할 수 있다. 새로운 것을 배우는 일은 고통스러울 수 있으며, 특히 의무적으로 배워야 하거나 지도해줄 이가 없을 때 더욱 그렇다. 하지만 격렬한 연습 후에 오는 근육통을 참고 견뎌야 하는 운동 선수처럼, 소프트웨어 개발자는 새로운 것을 배울 때 따라오는 정신적인 부조화를 견뎌내야만 한다. (p.228)
- 어떤 기술 분야를 깊이 파고들 때 얻을 수 있는 또 다른 이점은, 당신이 작업하고 있는 시스템의 물밑에서 무슨 일이 일어나고 있는지 설명할 수 있게 된다는 것이다. 이런 깊이 있는 지식은 채용 면접 때 자기가 만든 소프트웨어도 의미 있게 설명하지 못하는 다른 지원자들 사이에서 당신을 돋보이게 해줄 것이다. (p.244)
- 정말 어려운 일은 도구상자의 많은 부분을 버려야 할 때 생긴다. 가끔 당신의 도구들은 구식이 되어 버리기도 하고, 더 좋은 대체품이 나타나기도 할것이다. 드물게는 당신이 '최첨단'에 대해 정통한 결과, 전에 알던 도구를 소용없게 만들어 버리는 무언가를 발명하게 될 수도 있을 것이다. (중략) 친숙하고 소중한 도구를 떠나보내는 것은 고통스러운 과정이지만, 그것도 역시 당신이 습득해야하는 기술 중 하나다. 장담하건데, 당신이 견습생 때 쓰던 도구들은 숙련공이 되고 나서는 더 이상 소용이 없다. 당신의 경력이 성공적이려면, 익숙한 도구들을 쉽게 얻고 쉽게 버리는 법을 배워야 한다. (p.253)
- 우리 분야에서 아직도 프로젝트의 성패를 결정하는 가장 중요한 요소는 개인의 역량이다. 역량이라는 단어를 사용할 때 우리는 단지 당신이 전산학에 대해 어느 정도의 지식을 가졌는지, 개발 과정은 효율적인지, 경험은 얼마나 많은지를 말하는 것이 아니다. 우리는 제대로 동작하는 소프트웨어를 출시하는 데 필요한 모든 것의 총합을 얘기하고 있는 것이다. (p.259)
댓글