2016. 8. 4. 18:28 서적

[리뷰] The Clean Coder

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

* 실용주의 프로그래머, 조엘온 소프트 같은 책을 읽었을때 만큼은 감동적 이지 않다.
  책, 인터넷, 컨프런스를 통해 이미 많이 접해 봤던 내용들이라 중복의 느낌이 강하다.
  개발 문화, 개발자로서의 자세 등에 대한 고민을 하는 사람이라면 읽어 보길 바란다.
  무엇보다 중요한 것은 이 책에 있는 내용들을 얼마나 실천 할 수 있느냐는 것이다.

 

1장 프로의 마음가짐
 1) 직업윤리(55p ~ 56p)
  - 한주에 60시간 일할 계획을 짜야 한다. 40시간은 회사를 위해 쓰고 나머지 20시간은
    자신을 위해 쓴다. 20시간은 읽고 연습하고 공부하고 경력에 도움이 되는 여러 가지를 하며
    보내야 한다.
    여가 시간 전부를 바치라는 말이 아니다. 한주에 20시간을 추가 하라는 말이다.
    한주에 20시간이면 대략 하루에 3시간이다.
    점심 시간에 책을 읽고, 출퇴근할때 팟캐스트를 듣고, 새 언어를 배우는데 90분을 쓰면 3시간이 된다.
    --- 생략 ---
    이렇게 까지 시간을 쓰기 싫을지도 모른다. 그건 좋다. 하지만 자신을 프로라고 생각해선
    안된다. 프로는 직업을 돌보는 데 시간을 투자한다.
    ########## gt1000 #########
    => 그동안 후배들들과 이런 비슷한 얘기를 많이 하였지만
       구체적인 수치나 프로라는 표현을 명확히 전달하지 못했는데 이젠 확실히 말해 줄 수 있을거 같다.
 2) 전산 분야 지식을 익혀라(57p ~ 58p)
  - 프로 소프트웨어 개발자라면 알아야 하는 최소한의 목록
    디자인 패턴 : 24가지 GOF 패턴을 설명할 수 있고, POSA 패턴을 실무에 적용할 수준으로 알아야 함
    설계 원칙 : SOLID 객체지향 원칙을 알아야 하고 컴포넌트 개념을 충분히 이해해야 한다.
    방법론 : XP, 스크럼, 린, 칸반, 폭포수, 구조적 분석, 구조적 설계 개념을 충분히 이해해야 함
    원칙 : 테스트 주도 개발, 객체지향 설계, 구조적 프로그래밍, 지속적 통합, 짝 프로그래밍을 실천해야 함
    도구 : UML, 데이터 흐름도, 구조차트, 페트리 넷, 상태전이 다이어그램과 테이블, 흐름도, 결정 테이블을
           어떻게 쓰는지 알아야 함
    ########## gt1000 #########   
    => 이중에 아는게 없음. 다시 공부해야 겠다.
 3) 연습(59p)
  - 품새는 대개 프로그래밍으로 간단한 문제를 푸는 형식이다.
    품새의 핵심은 손가락과 두뇌를 단련 시키는일이다.
    나는 매일 품새를 한두 개씩 푼다.
    ########## gt1000 #########
    => 좋은 얘기인거 같다. 나도 이제부터 하루에 한문제씩 다른 언어로 풀어봐야 할거 같다.
2장 아니라고 말하기
  - 노예들에겐 아니라는 말이 허락되지 않는다. 단순 일꾼들은 아니라고 말하길 꺼린다.
    하지만 프로는 아니라고 말해야 마땅하다.
    ########## gt1000 #########
    => 맞는 말인거 같다.
3장 예라고 말하기
4장 코딩
 1) 새벽 3시에 짠 코드(109p)
  - 헌신과 프로다운 모습은 무턱대고 많이 일하는 데서가 아니라 원칙을 지키는 모습에서 나온다.
    충분히 자고 건강을 챙기고 건전한 생활습관으로 하루에 8시간씩 충실히 일하자.
    ########## gt1000 #########   
    => 다수의 개발자들이 공감을 하지만, 아직도 지켜지는 곳은 별로 없다.
       내가 제일 싫어 하는 것이 밤새워 일하는 개발자이다. 막차라도 타고 집에가서 쉬고 다음날 일찍 출근하는것이
       훨씬 효율적이다. 밤을 새는것은 자기 만족에 지나지 않는다.
 2) 몰입 영역(111p)
  - 몰입에 빠지지 마라. 이 의식 상태는 사실 극도로 생산적이지도 않고 당연히 절대 옳은 상태도 아니다.
    단지 가볍게 명상에 잠겨 속도 감각에 몰두한 나머지 확실한 이성적 판단이 흐려진 상태다.
    -- 생략 --
    문제는 영역에 빠진 상태에서는 큰 그림을 놓쳐, 나중에 되돌려야 할 결정을 내리기 쉽다는 점이다.
    영역은 의사 소통을 하지 않는 상태지만, 짝 프로그래밍은 강하고 끈임없이 의사 소통이 필요하다.
    ########## gt1000 #########   
    => 좋은 말인거 같다. 요즘 개발자들을 보면 지나치게 몰입이란 단어에 빠져드는 경향이 있다.
       심지어 내가 하루에 몇분정도 몰입을 했는지를 측정하는 앱을 사용할 정도다.
       필요 이상의 군더더기라고 생각한다.
5장 테스트 주도 개발
6장 연습
 1) 품새(143p)
  - 품새 연습은 단축키와 코드 관용구 탐색을 익히는 좋은 방법이다. TDD나 지속적 통합을 익히는데도 좋다.
    하지만 문제/해결 모음을 무의식 상태에 주입해 실제 프로그래밍에서 문제를 만났을 때 자연스레 해법을
    알아내도록 만드는 좋은 방법이라는 점이 제일 중요하다.
7장 인수 테스트
8장 테스트 전략
 1) QA의 명세 서술(172p ~ 173p)
  - QA의 역할은 사업부와 함께 자동화된 인수 테스트를 만드는 일이다.
    그렇게 만든 인수 테스트는 시스템에 대한 진정한 명세서이자 요구사항 문서이다.
    ########## gt1000 #########   
    => 기능 명세서를 작성 할 줄 모르는 개발자가 의외로 많다.
       제품을 개발함에 있어서 가장 기본이 되는 문서이다.
9장 시간 관리
 1) 타임박스와 토마토(188p)
  - 시간 관리와 집중을 관리하기 위해 토마토라고도 알려진 포모도로라는 매우 효율적이며 유명한 기법을 사용한다.
    기본 발상은 아주 단순하다. 평범한 주방 타이머를 25분에 맞춘다.
    25분 동안 정해진 일만 하고, 5분 쉬고 다시 반복
    토마토 4회를 끝낼 때마다 30분 정도 길게 쉰다.
    ########## gt1000 #########   
    => 얼마나 효율적인지 시도해 봐야 할거 같다. 몰입과 혼동하지 말자... 집중이다.
10장 추정
 1) 엉겁결에 해버린 약속(200p)
  - 노력이란 단어는 함정이 있는 용어다.
    -- 생략 --
    프로는 추정과 약속 사이에 명확한 선을 그어 구분 짓는다. 프로는 확실히 성공 한다는 사실을 알기 전에는
    약속하지 않는다. 프로는 넌지시 암시된 약속도 하지 않도록 주의를 기울인다. 의사 소통할 때는
    추정의 확률 분포에 대해 가능한한 선명히 밝혀 관리자가 적절한 계획을 세울 수 있도록 한다.
11장 압박
 1) 위기는 규율이다.(213p)
  - 위기에 처했을 때의 모습을 관찰하면 어떤 믿음을 가지고 있는지 알게 된다.
    위기에 처했을 때 훈련과 규율을 따른다면 진정으로 그 규율을 믿는다는 뜻이다. 반대로 위기 때
    행동이 바뀐다면 평소 행동을 진심으로 믿지 않는다는 뜻이다.
    위기 상황에서도 편하게 느껴지는 규율을 골라라. 그리고 나서 그 규율을 항상 따라라.
    이 규율을 따르는 일이야말로 위기상황을 피하는 최선의 방법이다.
12장 함께 일하기
 1) 프로그래머 VS 회사
  - 프로 프로그래머가 절대 피해야 할 일은 기술더미에 파 묻혀 정신을 못 차려 주변에서 사업이
    무너지고 불타는 사실을 알아채지 못하는 것이다. 우리 업무는 사업이 순조롭게 나아가도록 만드는 일이다.
    ########## gt1000 #########   
    => 주변에서 가끔 이런 개발자들을 본다.
       난 개발에 군더더기를 빼야 한다고 표현하곤 한다.
13장 팀과 프로젝트
 1) 한덩어리로 뭉친 팀(231p)
  - 프로그래머, 테스트, 분석가 비율은 가장 다양하지만 좋은 비율은 2:1이다.
    12명 으로 만든 멋지게 한 덩어리가 된 팀에는 프로그래머가 7명, 테스트가 2명, 분석가가 2명 그리고
    프로젝트 1명의 프로젝트 관리자가 있다.
    -- 생략 --
    분석가는 사업 가치에 집중하고 테스터는 정확함에 집중한다. 분석가는 행복한 경로에 집중하고
    테스터는 뭔가 잘못될까 걱정하며 실패하는 경우와 경계 조건 테스트를 만든다.
    프로젝트 관리자는 팀의 진행 상황을 추적하고 팀이 일정과 우선순위를 이해하도록 만든다.
    팀원 중 하나는 가끔 시간을 내 코치나 스승 역할을 맡아 팀의 절차와 규율을 책임지고 지켜낸다.
    일정 압박 때문에 팀이 절차를 벗어나려 할 때 팀의 양심으로 행동한다.
    ########## gt1000 #########   
    => 이 정도 규모나 여유가 되는 팀을 구성할 수도 없었지만 노력도 등한시 했던거 같다.
       팀장의 롤이라고만 생각했고, 팀을 이렇게 구체적인 역할로 나눠본적이 없다.
       다음에 기회가 된다면 꼭 이런 팀으로 일을 해보고 싶다.
 2) 숙성(231p)
  - 팀원들이 각자의 차이점을 극복하고 서로를 받아 들이고 진정한 한 덩어리가 되기에는 시간이 걸린다.
    ########## gt1000 #########   
    => 나 같은 경우는 2년 정도가 걸렸던거 같다.
 3) 팀이 먼저인가 프로젝트가 먼저인가?
  - 프로 개발 조직은 이미 한 덩어리가 된 팀에 프로젝트를 배정하지 프로젝트 위주로 팀을 만들지 않는다.
    ########## gt1000 #########   
    => 면접을 보다 보면 우리 회사는 팀이 없어요. 인력 풀 속에서 자유롭게 프로젝트를 담담해야 라는
       말을 가끔 듣는다. 정말 바보같고 한심한 사람들이다.
       대부분 어슬프게 애자일을 주워듣고 고민없이 회사에 적용하는 사례들로 볼수 있다.
       좋은 팀을 만들고 유지 시키는 것이 정말 중요하고 그것이 곧 회사의 자산이다.
14장 스승과 제자 그리고 장인 정신

 

Posted by gt1000

블로그 이미지
gt1000

태그목록

공지사항

어제
오늘

달력

 « |  » 2024.3
1 2
3 4 5 6 7 8 9
10 11 12 13 14 15 16
17 18 19 20 21 22 23
24 25 26 27 28 29 30
31

최근에 올라온 글

최근에 달린 댓글

최근에 받은 트랙백

글 보관함