프로그래머 열정을 말하다. / 채드 파울러 지음 / 인사이트 / 북포스

  • 프로그래머가 커리어를 발전시키는 것에 도움을 주는 책.
  • 초판 발행일이 2012년이지만 지금도 대부분 적용되고 도움되는 내용이 담겨있다.
  • 어떤 방향으로 어떻게 발전해나가야 하는지에 대한 판단에 도움이 되었다.
  • ‘꼭 이렇게까지 해야하나?’라는 생각이 드는 부분도 있지만, 더 깊이 생각해보면 현재 제대로 못하고 있는 부분이어서 생기는 거부감이었다. 그런 부분에 더 노력한다면 한층 더 성장하는 개발자가 될 것 같다.

소프트웨어 장인 정신에 대해 열정이 있고 위대한 소프트웨어 개발자가 되고 싶으며,
자기 일을 사랑하거나 기대 수준을 높여 소프트웨어 개발을 단순한 일이 아니라 전문직으로 바꿔놓고
싶다면 이 책을 읽어보라. 이 책에서 채드 파울러는 여러 가지 실용적인 학습법, 원칙, 태도를 제시하고
이를 통해 독자들에게 자기 일을 기존중하고 사랑하며 그 일에서 탁월해지는 법을 가르친다.

  • 로버트 마틴

1. 당신의 시장을 선택하라

그냥 앞서갈 것인가, 위험까지 무릅쓸 것인가?

위험과 보상을 절충하는 것은 어느 기술과 영역에 투자할지 신중하게 고르는 데 중요한 부분이다.

수요와 공급

경력을 집중해야 할 기술을 고를 때 공급 상승과 가격 하락이 경력 전망에 미치는 영향을 이해해야 한다.

틈새 인력 시장에서 보았듯이 이러한 층의 자바 개발 작업에서는 가격 경쟁에서 능력 경쟁으로 바뀔 것이다.

힘이 어떻게 작용하는지 이해하고 그 힘에 대응할 만큼 숙련되고 영리할 필요가 있다.

코딩만으로는 이제 충분하지 않다

해당 사업 분야의 언어로 기업고객과 이야기할 수 있다는 것은 결정적인 기술이다.

사업 분야를 잘 선택해야 하는 중요성에 비춰보면 포트폴리오를 완성할 때 여러분이 선택한 회사나 업계는 자신에게 중요한 투자처다.

비즈니스 담당자와 점심 약속을 잡아라.

회사 업무와 관련된 업계 잡지를 고른다.

가장 못 하는 사람이 되라

‘가장 못 하는 사람이 되는’ 상황을 스스로 찾아라.

활발한 개발자 모임이 부근에 없다면 인터넷을 이용하라. 자신이 감탄하고 있고, 그 프로젝트 개발자들의 수준이 자신이 이루려는 ‘높은 단계’에 있는 것처럼 보이는 오픈 소스 프로젝트를 하나 고르라.

지성에 투자하라

우리는 경험이 천편일률적인 사람보다는 다양한(아주 특이하더라도) 응시자에게 점수를 더 많이 준 것 같다. 유능한 사람은 다양성을 찾는다.

자, 일자리를 구할 때 채용자의 레이더 화면에 보이려고 애쓰지만 말고, 실제로 거의 보수를 받을 수 없거나 전혀 없는 이런 비주류 기술에 자신을 투자해보는 건 어떨까? 채용 책임자로서 내가 이렇게 제안하는 첫 번째 이유는 그런 사람은 자신의 일을 좋아한다는 것을 보여주기 때문이다.

나는 배울 기회를 ‘붙잡았다’.

자신의 분야에서 활발하게 활동하며 동기 부여가 충만함을 알리는 것보다 더 중요한 것은 이러한 비주류 기술과 방법론을 배움으로써 자신을 실제로 더 깊이 있게, 더 낫게, 더 똑똑하게, 더 창조적으로 만드는 것이다.

부모님 말씀을 듣지 말라

자신의 경력에서 계산할 수 있는 위험을 감수하라. 두려움이 자신을 파괴하게 두지 말라. 그리고 재미있지 않다면 탁월해지지도 않을 것이다.

다재다능한 사람이 되라

빠르게 바뀌는 환경에서는 유연한 것이 앞서나갈 것이다.

열쇠는 그렇게 일어날 만한 문제를 풀 수 있는 능력이 있어야 한다는 것이다.

요구 사항, 아키텍처, 설계 문서가 좋은 출발점일 수 있지만 결국 프로그래머가 시스템이 무엇을 해야하는지 이해하지 못하면 시스템을 제대로 구현할 수 없다.

자신의 목표가 구조 조정과 해외 이전의 한 가운데에서 살아남는 마지막 사람이 되는 것이라면 여러 방면에서 유능해지는 것이 좋다.

두드러지고 싶고 남달라지려면 큰 그림이 어디에 있는지 주의를 집중하는 편이 낫다.

다재다능한 사람이 되려면 특정한 역할이나 기술에 매여서는 안 된다.

소프트웨어 아키텍트란 ‘코드를 조금만 짜도’ 프로젝트 진행을 극적으로 빨라지게 할 수 있는 사람이다.

둘 다 잘하는 사람을 찾기는 참 어렵다. 드물기 때문이다.

하나를 습득하고 다른 하나에 능숙해지라.

자신이 작업하는 플랫폼을 정확히 이해하는 개발자를 거의 찾을 수 없었다. 아마 찾았다면 결과적으로 애플리케이션은 더 좋아지고 일도 더 빨리 끝냈을 것이다.

진정한 전문가가 되라.

시간을 들여 가상 기계가 어떻게 동작하는지 내부 구조를 공부해보라.

자신만의 컴파일러를 만드는 것은 무엇을 의미할까?

외부 라이브러리를 가져온다는 것은 실제로 무엇을 의미하는가?

깊이 있게 개발하고 싶은 기술의 어떤 측면에 관한 수업을 직장이나 바깥에서 가르칠 기회를 찾아보라.

자신의 달걀을 전부 다른 사람의 바구니에 넣지 말라

작은 프로젝트를 두 번 정도 해보라. 한번은 잘 아는 기술로 하고 나서 그 다음 한 번은 경쟁 기술로 하되 그 기술의 독특한 방식을 사용해 보라.

사랑하지 않으면 떠나라.

자신이 정말로 열정을 쏟아낼 만한 일을 찾으라.

2. 자신에게 투자하라

물고기 낚는 법을 배우라

가장 분명한 출발점은 자신이 일하는 업종에서 사용하는 도구를 배우는 것이다.

가르쳐 달라고 부탁하기보다는 차라리 스스로 찾아서 배우라.

애매한 부분까지 파고들어가야 할 특정 분야에 대해 다음과 같이 두가지 쓸 만한 질문을 자신에게 할 수 있다. 바로 ‘어떻게 동작하는가?’와 ‘왜 이런 현상이 생기는가(일어나야 하는가)?’이다.

도구를 골랐다면 매일 시간을 들여 자신의 생산성을 높여주거나 개발 환경을 더 잘 제어할 수 있게 해줄 만한 새로운 것을 공부하라.

사업이 실제로 어떻게 돌아가는지 배우라

비즈니스 입문서를 사서 꼼꼼히 공부하라

회사 또는 부서의 재무 상황에 대해 설명해 줄 만한 사람을 찾으라

가르쳐 준 사람에게 배운 것을 다시 설명해 보라

멘토를 찾으라

멘토가 존재하는 가장 중요한 첫 번째 목적은 역할 모델이다.

멘토는 또한 배우는 과정에 체계를 세워줄 수 있다.

멘토는 여러분의 에너지를 어디에 집중할지 선택하는 데 도움을 줄 수 있다.

멘토는 또한 신뢰할 수 있는 사람으로서 도움을 준다.

멘토에게 개인적인 애정과 신뢰를 표하는 것뿐 아니라 그 반대도 가능하다.

멘토가 되라

우리는 가르치면서 배운다.

멘토링은 긍정적인 사회적 효과도 있다. 멘토와 멘티의 유대는 강력하다.

도움을 줄 만한 사람을 찾으라.

온라인 포럼을 찾아 주제를 고르고 참여하여 돕기 시작하라.

연습, 연습, 또 연습

몸에 익히기, 악보 읽기, 즉흥 연주

일하는 법

이 프로세스에 주인 의식을 느끼는 가장 좋은 방법은 프로세스를 만드는 일을 돕는 것이다. 자신이 속한 조직에 아무 프로세스도 없다면 자신에게 맞는 방법론을 조사하라.

거인의 어깨 위에서

기존 코드를 이용해 자신의 능력을 비춰보라.

특정 문제에 대한 해결 방법을 찾는 것보다 더욱 중요한 것은 기존 코드를 자신의 스타일과 능력을 점검하는 확대경으로 삼는 것이다.

기존 코드를 이처럼 비판적으로 의식하며 탐구한다면 나쁜 코드에서도 배울 수 있다

자동화 기술을 이용해 일자리를 찾으라

평소에 되풀이하는 작업을 하나 고르고 그 작업에 대한 코드 생성 프로그램을 한 짠다. 단순하게 시작한다. 재사용성은 걱정하지 말라.

3. 실행

지금 바로

계속 움직이라. 밀어붙이는 사람이 되라. 편해지면 안 된다.

항상 이렇게 묻는 사람이 되라. “그런데, 우리가 ‘지금 바로’ 무엇을 할 수 있을까요?”

오랫동안 덮어두고 있는 작업을 점검하라.

평상시 일과 중 틈틈이 할 수 있는 일을 찾으라.

마음 읽기

사용자나 관리자가 요구할 것 같은 것에 대해 노트에 기록하라

사용자가 당장은 마음에 두지 않지만, 발생할지도 모르는 극한적인 상황에 대해서도 생각해 보라.

프로젝트나 요구 개선 작업을 시작하면서 적중률을 추적해보라.

매일의 성과

할 만한 가치가 있는 일을 하는 사람처럼 업무 수행이 뛰어난 사람이 된다는 것은 어떤 특수하고 계획적인 일을 좀 더 잘하는 것이다.

제임스의 목표는 매일 몇가지 두드러진 성과를 관리자에게 보고사는 것이었다.

팀에서 매일같이 참아야 하는 시시콜콜한 문제에 대해 생각해 보라.

현재 프로젝트에서 자동화할 수 있지만 수동으로 하는 것은 무엇인가?

누구를 위해 일하는지 기억하라

많은 프로그래머가 자신이 이해하는 수준에서 어떻게 이 일을 할 수 있는지 모른다. 프로그래머들은 흔히 나무는 보면서 숲을 보지 못한다.

구조가 잘 갖춰진 환경에서 관리자의 목표는 결국 팀의 목표다. 관리자가 갖고 있는 문제를 풀라. 그러면 팀의 문제를 푸는 것이다. 게다가 관리자가 여러분과 같은 해결 방식을 취한다면 여러분이 풀려는 문제가 실은 관리자의 상사가 직면한 문제인 것이다. 그렇게 하다 보면 회사 또는 조직의 최고위층, 즉 CEO, 주주, 고객에까지 올라간다.

작은 부분부터 시작함으로써 회사의 목표 달성에 기여할 수 있다. 이를 통해 목적의식이 생기고 자신의 일에 의미가 생길 것이다.

현재 위치에 충실하라

현재에 집중하다 보면 일과 생활의 작은 성취를 즐길 수 있게 된다.

오늘은 얼마나 잘할 수 있을까

개발자가 좋아하지 않는 일 중에 사실상 창조적이라고 볼 수 있는 것은 거의 없다.

지겨운 일은 도전적이지 않다는 것이다.

지겨운 일을 완벽하게 하려고 노력해 보는 건 어떨까?

테스트를 완벽하게 하려고 애써보는 것은 어떨까?

하루 일과를 보고 스스로 물어보라. “나는 오늘 얼마나 일을 잘할 수 있을까?” 아마 자신의 일을 더 좋아하게 될 것이다. 그리고 일도 여러분을 좋아할 것이다.

자신이 얼마나 가치가 있는가

“오늘 나는 그만한 가치를 했나?” 라고 질문하라.

어떻게 하면 회사 비용을 독창적으로 절약할 수 있을까? 어떻게 하면 개발 팀이 좀 더 효율적으로 변화될 수 있을까? 또는 소프트웨어의 최종 사용자는 어떤가? 이런 질문들을 하기 시작한다면 얼마나 많은 기회를 발견할 수 있는지 놀랄 것이다.

물 양동이 속 자갈

이 CIO에게 들었던 진정한 충고 한가지(그리고 몇 번이고 들었다)는 결코 편해지면 안 된다는 것이었다. 그는 매일 일어나면서 자신이 언제든지 현재 지위에서 떨어질 수 있다고 의도적으로, 그리고 분명하게 상기한다고 고백했다. “그게 오늘일지도 몰라요.” 그가 말했다.

자신을 대신할 수 없다고 자만하는 것은 나쁜 징조다. 특히 소프트웨어 개발자에게는 더욱 그렇다. 여러분을 대신할 수 없다면 그것은 여러분이 다른 사람이 할 수 없는 방식으로 일을 한다는 것을 의미한다.

만들었거나 유지보수하는 코드와 수행하는 모든 태스크를 목록으로 만들라. 팀에서 전적으로 자신에게 의존하는 것을 기록한다.

각각의 코드나 일을 문서로 만들고, 자동화하거나 리팩터링해 팀원 누구나 쉽게 이해할 수 있게 하라.

유지보수를 즐기라

자신의 리팩터링 능력을 시험해 볼 기회다. 어떻게 하면 이 시스템이 우아해질 수 있을까? 이번 리팩터링으로 다음번에는 얼마나 더 빨리 이 부분을 고치거나 개선할 수 있을까?

소프트웨어를 지속적으로 동작하게 하고 사용자 요구에 시기적절한 방법으로 응답하는 한 유지보수 작업은 자유롭게 창조할 수 있는 장이다.

오늘날 많은 프로젝트 팀의 계약 환경과 달리 유지보수 일의 숨겨진 장점은 유지보수를 하는 프로그래머는 고객과 직접 대화할 기회가 꽤 있다는 것이다.

측정할 수 있는 속성 중 가장 중요한 것을 골라 측정하기 시작한다. 현실적인 목표를 세우고 애플리케이션 성능(또는 자신의 성과)을 개선해 그 목표를 채운다. 개선한 후 다시 측정해 바라던 개선을 정말 했는지 검증한다. 개선했다면 팀, 고객과 공유하라.

8시간 열중하기

신중하게 근무 시간 계획을 세우라. 적게 일하면 더 많은 것을 성취할 것이다. 쉬어야 일도 더 즐겁다.

실패하는 법을 배우라

알게 되자마자 문제를 제기하라. 오래 숨기려 하지 말라. 소프트웨어 개발과 테스트에서처럼 실수를 일찍 잡아내면 늦게 잡아내는 것보다 문제가줄어든다.

책임을 지라.

해결책을 제시하라.

도움을 구하라.

“아니오”라고 말하라

“예” 라고 말하는 것은 습관적이고 유해한 버릇이다. 그것은 좋은 사람인 척 하려는 나쁜 버릇이다. ‘할 수 있다’는 태도와 자신의 능력을 ‘거짓으로 말하는 것’은 차이가 크다.

“아니오”라고 말할 용기 있는 팀원이 있고 그 말이 사실이라면, “예”“라고 말할 때에는 그것이 거짓말이 아님을 알 수 있다. 이런 사람이 하는 약속은 더 믿을 만하다. 매우 중요한 문제다. 약속한 목표를 실제로 이루면 목표를 달성할 수 없다고 말할 때 나는 의문을 품지 않을 것이다.

‘아니오’ 게임도 도가 지나치면 안된다. ‘할 수 있다’는 태도는 여전히 인정받으므로 목표를 크게 잡는 것이 좋다. 할 수 있을지 확실하지 않지만 한번 시도해 보고 싶다면 그렇게 말하라. “어렵겠지만 한번 시도해 보고 싶어요.”라고 말하는 것이 훌륭한 대답이다.

솔직해질 수 있도록 용기를 내라.

당황하지 말라

영웅은 결코 당황하지 않는다.

그냥 침착하게 에러 메시지를 읽기만 하면 문제가 풀릴 것이다.

당황한 일지를 꾸준히 쓰라. 당황스러움이 생기기 전에 그것을 붙잡는 열쇠는 그런 일이 일어날 때 자신의 지각과 감정을 실시간으로 인식하는 능력이 더 강화되게 계발하는 것이다.

말하고 행하고 보여주라

주간 계획과 실행 상황을 알리기 시작하라. 이 과정이 익숙해지면 30, 60, 90일 계획대로 일하기 시작하라.

계획을 세울 때 명심해야 할 가장 중요한 요소는 나중에 언제든지 설명할 수 있어야 한다는 점이다. 모든 항목은 마무리되거나 연기되거나 빠지거나 대체되는 것이 반드시 뚜렷이 드러나야 한다. 설명할 수 없는 항목이 있어서는 안 된다.

계획에 관하여 의사소통하면 사람들이 여러분을 더욱 신뢰하게 되는 이점이 있다.

계획을 말하고 그것을 실천하면 여러분은 ‘실천가’라는 평판을 얻을 것이다.

4. 마케팅은 높으신 분들만 하는게 아니다.

인식이 대수롭지 않다고?

다른 사람이 여러분을 어떻게 생각하는지 관심을 기울여야 한다. 인식되는 것이 진실이다. 이겨 내라.

여러분이 일을 아주 잘하는데 아무도 보지 않으면 정말 일을 잘한 것일까? 누가 신경이나 쓸까? 아무도 안 쓴다.

성과 평가는 결코 객관적이지 않다.

어떻게 인식되는지가 정말 중요하다. 이것 때문에 회사를 계속 다니기도 하고 실직 상태에 머물기도 한다. 이 때문에 승진하거나 몇 년간 같은 일에서 벗어나지 못하기도 한다. 그리고 급여가 오르기도 깎이기도 한다. 인식을 관리하는 방법을 빨리 배울수록 더 빨리 제 궤도에 오늘 것이다.

모험 여행 안내자

개발자는 IT 세계라는 까다로운 세계를 여행하는 고객의 안내자다. 개발자는 고객이 낯선 곳을 여행하는 동안 편안하게 안내해야 한다. 개발자는 고객에게 전망을 보여주고 고객이 가고 싶어 하는 곳으로 데리고 다녀야 하지만 자신이 전에 만났던 불편한 곳은 피해야 한다.

소프트웨어 관련 문제를 토론할 때는 고객에게 약간 쉽게 이야기할 필요가 있다. 너무 기술적이지도 너무 우돈하지도 않게, 섬세하게 균형을 잡아야 한다.

자신을 점검하라 - 여러분은 모두가 두려워하는 심술궂고 고루한 도깨비인가? 확실한가? 사람들이 말하기를 두려워하는 건 아닌가?

벽을 뛰어넘으라 - 자신이 전문가가 아니어서 전문가에게 의지해야 하는 상황에 처할 수도 있다.

나를 글이 잘 정말 써…(Me Rite Reel Nice)

글쓰기 능력이 있으면 자신을 잘 인식할 수 있을 뿐 아니라 내적으로는 자신이 어떤 길로 가고 있는지에 대해 진정한 통찰도 생긴다. 다른 사람이 분명하게 이해할 수 있도록 자신의 모국어로 자기 생각을 구성할 수 없는데, 프로그래밍 언어로 그렇게 할 수 있다고 어떻게 기대하겠는가?

개발 일기를 쓰기 시작하라.

타자를 능숙히 칠 수 있도록 배우라.

현장에서 부대끼라

효과적이고 활발한 의사소통으로 맺어진 강력한 팀 관계는 더 좋은 소프트웨어를 더 빨리 전달하는 데 기여한다.

직장 동료에 대해 배우라.

예정된 회의에만 의지하지 말라. 같은 공간에서 살거나 일했던 적이 있는 것처럼 가볍고 편한 대화를 시도할 필요가 있다.

함께 일하는 사람에 대해 실제로 알려고 시도해 보라. 직장에서 자리를 좀 더 확고히 잡을 수 있을 뿐 아니라 자신의 시람도 훨씬 풍성해진다.

적절한 표현으로 말하기

소프트웨어 개발자로서 그것은 자신의 성과를 사업 맥락에 맞게 나타내야 함을 의미한다.

최근 성과 목록을 만들라. 각각의 사업적 이익을 적는다.

‘승강기 발표’를 준비해 외워 두라.

세상을 바꾸라

여러분이 변화를 가져와야 한다. 자신의 변화나 일의 변화가 아니다(그것은 주어지는 것이다). 팀이나 조직, 회사에 눈에 보이는 변화를 가져와야 한다.

이런 일들을 하는 것은 자신의 내면에서 무언가가 강하게 이끌기 때문이다. 여러분은 사람들이 일을 잘못하는 것을 두고 볼 수 없다. 일을 더 낫게 하는 걸 알기에 바꿔야만 한다.

물론 세상을 바꾸려고 애쓰면 몇몇 사람을 화나게 할 수 밖에 없다. 그러나 의도가 올바르면 괜찮다. 서두르면 안 되지만 빙빙 돌리지도 말라. 항상 신중하면 된다.

자신이 무엇을 혁신해야 하는지 모른다면 아마도 아직 절실히 느끼지 못한 것이다. 자신을 드러내려고 활발하게 시도해 본 것이 없다면, 아마도 아직은 성공하지 못한 것이다.

자신의 목소리가 들리게 하라

블로그를 읽는다.

자신만의 블로그를 개설한다.

블로그는 훈련장이다. 좋아하는 잡자의 특집 칼럼을 쓰는 것처럼 웹에 글을 쓰라. 글쓰기 기술을 연습하라. 기술이 좋아질수록 자신감도 늘어날 것이다.

블로그에 글쓰기는 다음 단계를 준비하는 중요한 자료가 될 것이다. 커뮤니티 웹 사이트나 잡지, 책에 글을 쓸 때 사용할 수 있다.

더 많이 쓸수록 글 쓸 기회가 많아진다. 그리고 이를 통해 컨퍼런스에서 발표할 기회도 얻을 수 있다.

자신의 주장을 널리 알리고 이름을 알리는 데 명심해야 할 것은 자신이 준비됐다고 생각할 때까지 기다리지 말고 바로 시작하라는 것이다.

자신의 브랜드를 만들라.

브랜드를 만드는 데는 두가지 측면이 있다. 사람들이 쉽게 알아볼 수 있게 자신의 로고를 실제로 만든다. 이 로고는 사람들에게 반드시 긍정적으로 인식되어야 한다. 즉, 올바르게 인지되어야 하고 또 인정받아야 한다.

할 수 있는 한 자신의 브랜드를 지켜야 한다. 자기 스스로 보호하라. 브랜드가 중요하다.

자신의 코드를 공개하라

오픈 소스 프로젝트를 이끄는 것은 기술적인 능력 이상의 것을 드러낸다. 자기 노력으로 커뮤니티를 키우려면 리더십, 릴리스 관리, 문서 작성, 제품/커뮤니티 지원 능력 같은 실제 실력을 필요로 한다.

이런 일들을 할 수 있을 뿐 아니라 아무대가 없이 그 일을 할 만큼 신경 쓰고 있다는 것은 엄청난 자발적 진취성을 보여주는 것이다.

정말 유용한 것을 만든다면 유명해질지도 모른다.

사람들이 코드 때문에 웹을 검색하다 여러분의 소프트웨어를 우연히 발견하여 설치하고 사용할지도 모른다. 그렇게 여러분의 소프트웨어가 퍼져나가면서 여러분에 대해 알게 됨에 따라 명성과 평판이 생길 것이다. 그것이 마케팅의 전부다. 이것이 우리가 바라는 것이다.

주목받는 남다른 성격

남달라지려면 주변 것들과는 크게 달라야 한다.

성공적인 오픈 소스 소프트웨어 발표, 책과 기사 쓰기, 컨퍼런스에서 발표하기를 통해 더욱 남달라질 수 있을 것이다.

주제를 습득하는 데서 그치지 말고 그것에 관한 책을 쓰라. 1주일짜리 프로세스였던 것을 5분짜리 프로세스로 줄이는 코드 생성기를 짜라. 동료 사이에서 존경받으려 하기보다는 자신이 집중하는 기술에 대한 세미나와 연수를 통해 도시에서 가장 알려진 권위 있는 개발자가 되라. 다음 프로젝트에서 전에는 생각지도 못했던 것을 하라.

사람들이 여러분의 ‘남다름’에 대해 말할 수밖에 없도록 하라.

현재 프로젝트나 업무에서 작지만 남다른 무언가를 시도해 보라. 실험해 보는 한 방법은 남다른 생산성을 목표로 하는 것이다.

어울리라

가장 좋아하는 소프트웨어를 하나 고르고 그 창시자에게 이메일을 보내라. 그 소프트웨어 개발자에게 고맙다는 말을 전하라.

존경하거나 배우고 싶은 지역의 누군가를 떠올리라. 그 사람을 만날 수 있는 상황을 알아보고(사용자 모임이나 강연이 좋은 기회다) 찾아가서 대화를 시작하라. 아무리 불편하더라도 시도해 보라.

5. 자신의 강점을 유지보수하라

이미 구식

오늘날의 흐름에서는 첨단에 있더라도 다음에는 뒤에 있을지도 모른다는 사실을 깨닫는 것으로 시작해야 한다. 타이밍을 잡는 것이 중요하다. 배움에 있어 앞을 내다보고 생각하라. 지금은 불가능하지만 2년 안에 무엇이 가능할 것인가?

앞을 내다보고 실력 계발을 확실히 하는 것으로 이상을 꿈꾸는 사람과 맹목적인 사람의 차이가 무엇인지 알 수 있다.

주 중에 시간을 내 첨단 기술을 연구하라.

이미 일자리를 잃었다.

자신과 자신의 직업을 동일시하지 말라.

움직이는 표적을 맞추고 싶다면 표적 자체를 겨냥하면 안 된다. 표적이 움직이는 동선을 예측해 겨냥해야 한다. 목표를 향해 나아가는 길은 결코 직선이 아니다. 기껏해야 곡선이고 대부분은 구불구불한 길일 것이다.

목적 없는 길

경력의 진짜 알맹이는 승진이나 월급 인상, 이런 것이 아니다. 그러한 진급을 향해 일하느라 쓰는 시간이다. 그러나 더 중요한 것은 그러한 진급과 상관없이 쓰는 시간이다.

결과가 아닌 과정에 집중하라.

로드맵을 만들라

‘어디로’ 가고 싶은지’ 계획을 꼼꼼히 짜기 전에 ‘어디에 있는지’곰곰히 살피는 것도 유익하고 힘이 된다. 시간을 들여 경력의 시각표(timeline)을 분명하게 계획하라. 어디서 출발했고 각 단계에서 자신의 기술과 일이 무엇이었는지 나타내라. 어디에서 조금씩 나아졌는지, 어디에서 크게 도약한 것처럼 보이는지에 주목하라. 주요한 발전을 이루는 데 걸린 평균 시간에 유의하라. 자신의 경력으로 미래를 예상할 때 이 로드맵을 사용하라. 자신으 이겨사라 담긴 분명한 그림이 있다면 실제적인 목표를 스스로 세울 수 있다. 이 로드맵을 일단 만들었다면 계속 갱신하라. 새롭게 세운 모표를 샹해 나아가면서 지나온 과정을 반성하는 것은 훌령한 방법이다.

시장을 주시하라

눈과 귀를 항상 열어 두어야 한다.

알파긱을 주시하라. 알파 긱은 슈퍼너드로 최소한 자기 취미 활동에서 첨단의 첨단에 서 있는 사람들이다.

알파 긱들을 찾을 수 있고 그들이 무엇에 빠져 있는지 알 수 있다면 1, 2년 후 장래에 무엇이 클지 짐작할 수 있다는 것이다.

알파 긱이 되려고 노력해보라.

거울 속 뚱뚱한 남자

개발자여, 그대 자신을 다시 점검하라.

자신만의 적절한 체계를 만들고 확실한 일정을 잡았다면 결과를 글로 남기라. 평가를 가까운 곳에 두라. 종종 다시 검토하고 교정하라. 자가 평가 과정을 기록으로 남기면 더욱 탄탄해질 것이다.

남인도의 원숭이 덫

경직되게 믿는 가치가 전부 좋지는 않다. 또 어떤 환경에서 좋은 것이 다른 환경에서는 좋지 않을 때가 많다.

폭포수 모델 방식의 경력 계획은 피하라.

목표를 크게 세우더라도 도중에 꾸준히 수정하라. 경험에서 배우고 일해 나가면서 목표를 바꾸라. 결국, 우리가 진정 바라는 것은 고객이 행복해 하는 것이지(특히 경력을 계획할 때는 자신이 바로 고객이다), 요구 사항을 완수하는 것이 아니다.

어제보다 나은

오픈 소스 프로젝트에 패치를 제출하고 자기 블로그에 심사숙고해 글을 써서 발행하라. 자기 전문 영역의 기술 포럼에서 어제보다 한 사람을 더 도우라. 매일 자신을 개선하기 위해 어제보다 더 나은 일을 한다면, 그렇게 하지 않았으면 탁월한 경력 구축이라는 망막한 크기의 일이 좀 더 다루기 쉽게 됨을 발견할 것이다.

독립하라

여러분에게는 기술이 있고 그것을 연마해 왔다. 자신이 어마나 가치 있는지도 안다. 독립 계약자가 되는 것은 결정적인 테스트다.

자신이 돈을 얼마나 받을 만한 가치가 있는 사람인지도 결정해야 한다.

독립은 어렵다. 전문가로서 자신의 기술을 전부 시험대에 올려야 한다.

개인 개발 프로젝트라 생각하고 한가한 시간에 시장에 뛰어들어 보라. 목표를 세우고 일정한 시세로 계약을 따내 프로젝트를 마무리하고 고객이 만족하게 하라. 밤이나 주말에 그 일을 하라. 자신의 안전망을 잃지 않고도 많은 것을 배울 것이다.