SEUNGMIN SEO

안녕하세요? 서승민입니다.

프로그래머 필독서: Pragmatic Programmer (1)

Categories: ,

한국에선 <실용주의 프로그래머>라는 제목으로 번역 출간된 책.

컴퓨터과학을 전공한 사람이라면, 끊임없이 코드로 실험과 증명을 해야하는 연구자라면, 개발과 프로그래밍으로 밥벌이를 하는 직장인이라면, 어느 누구든 열 번이고 백 번이고 읽어도 모자랄 책. 같이 일하는 동료 중 이 책을 단 한 번도 읽지 않은 사람이 있다면, 우리의 행복을 위해 그들의 책상 위에 몰래 이 책을 선물로 올려놓도록 하자.

앞으로 몇 개의 포스트에 걸쳐 시리즈로 <Pragmatic Programmer>의 핵심 아이디어와 인상 깊었던 부분들을 내 나름의 경험과 생각들을 곁들여 정리하고 공유한다.


Pragmatic Philosophy: 프로그래밍 기본 철학

Topic: The cat ate my source code
어, 코드 다 날아갔는데요

프로젝트를 진행하다보면 (특히 소규모 프로젝트의 경우) 피치 못할 사정으로 Development, Staging, Production 서버를 따로 두지 못할 때가 있다. 이 때 모든 데이터와 주요 환경 변수와 소스코드들이 하나의 볼륨에 저장되어 있다고 하자. 만약 서버 머신룸 유지 보수 중 갑작스런 사고로 볼륨이 다시 마운트가 되지 못하고 통째로 날아가버린다면? 헌데 아차, 바쁜 일정과 여러 가지 프로젝트 일정이 겹쳐 백업 조차 준비해두지 못했다면?

나의 잘못이다. 온전히 100% 나의 잘못.

머신룸과 인스턴스, 인프라를 관리하는 동료의 잘못도 아니고, 오래된 워크스테이션과 볼륨을 새 것으로 교체해주지 않는 매니지먼트의 잘못도 아니다. 변명은 필요 없다. 이럴 땐 나의 잘못임을 온전히 인정하고 상황을 명확히 설명한 뒤 구체적인 해결 방안을 제시하도록 하자.

물론 최선은 저런 끔찍한 일이 생기지 않도록 코드와 데이터는 수시로 여러 곳에 백업을 해두는 것이다. 가끔 다루는 시스템이나 데이터셋의 사이즈가 홀로 백업을 감당하기에 벅찰 정도로 클 때가 있다. 그럴 땐 매니저나 IT 인프라를 담당하는 동료에게 도움을 요청하면 생각보다 쉽게 여러 개의 백업 볼륨을 확보할 수도 있다. 잊지말고 항상 백업, 백업, 백업하자.

TOPIC: software entropy & Don’t Live with Broken windows
코드를 썩게 내버려두지 마라

소프트웨어도 “상하고 썩는다”.

한 연구 그룹이 깨끗하고 아름다웠던 동네가 우범지역으로 변화하는데 어떤 매커니즘이 작용하는 지 연구한 바 있다. 흥미롭게도 아주 단순한 하나의 요인이 근사하고 멋진 동네와 건물을 흉물스런 동네로 변모시키는 데 일조했다. 그건 바로 깨진 창문 (A broken window) 이었다.

하나의 깨진 창문이 고쳐지지 않은 채 남겨지게 되면, 그 건물은 아무도 신경을 쓰고 있지 않고 있다는 인상을 모든 사람들에게 주게 된다. 사람들이 쓰레기를 버리기 시작하고, 불량배들의 아지트가 되고, 창문들은 더 깨져나가기 시작한다.

절대 깨진 창문을 그대로 내버려 두지 말자. 구린 디자인, 잘못된 의사결정, 급히 짜여진 임시방편 코드들을 발견하는 즉시 고치자. No broken windows!

Topic: Your knowledge Portfolio
새로운 기술을 끊임없이 배우고 익혀라

프로그래머로써 나의 지식-기술 포트폴리오를 관리하는 건 펀드 매니저가 자산 포트폴리오를 관리하는 것과 다를 바 없다.

  1. 진정한 투자자들은 마치 습관처럼 정기적으로 투자한다.
  2. 장기적인 성공을 위해 포트폴리오 다각화는 필수다.
  3. 현명한 투자자는 보수적인 자산과 고위험-고수익 자산에 고루 투자한다.
  4. 저점에 사서 고점에 팔기 위해 노력한다.
  5. 주기적으로 포트폴리오를 점검하고 리밸런싱한다.

이를 프로그래머 버전으로 보면,

  1. 정기적으로 나의 지식-기술 포트폴리오를 발전시켜라.
  2. 다양한 지식-기술을 많이 알수록 나의 가치도 올라간다. 또한 여러 기술에 익숙해질수록 새로운 변화에 적응하는 능력 또한 향상된다.
  3. 지식-기술 포트폴리오도 리스크 관리가 필요하다. 절대 한 가지 기술에 몰빵하지 마라.
  4. 막 주목받기 시작하는 좋은 기술을 익혀두면 상상 이상의 보상을 얻을 수 있다.
  5. 주기적으로 나의 실력과 포트폴리오를 점검하고 방향성을 다잡아라.

그리고 저자들의 몇 가지의 제안,

  1. 매년 새로운 프로그래밍 언어를 하나 배워라. 생각의 지평이 넓어지고 스킬셋의 유연함이 생긴다.
  2. 매달 새로운 테크 책을 읽어라
  3. 매달 새로운 논테크 책을 읽어라
  4. 온라인 코스, 학회 등을 활용해라
  5. 직장 사람들 외의 내 분야의 다른 그룹, 사람들과 소통해라.
  6. 다양한 환경에서 실험해라 (OS, IDE, workflow manager, etc.)


Please do not copy or use any part of this content without permission or proper attribution.
본 콘텐츠의 무단 복제 및 사용을 금합니다. 사용 시 출처를 명확히 밝혀 주시거나 허가를 받아 주십시오.