Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.

실용주의 프로그래머

* Contents Descript
1. 깨진 창문 + 삶은 개구리
2. 소통하라
3. 직교성
4. 소스코드 관리
5. 의도적으로 프로그래밍하기
6. 리팩토링
7. 실용주의 팀
8. 결국은 모두 글쓰기
9. 리팩토링

  • Login to see the comments

실용주의 프로그래머

  1. 1. The Pragmatic Programmer 실용주의 프로그래머 Booker 김성중
  2. 2. 책 소개 저자 : 앤드류 헌트, 데이비드 토머스 초보를 벗어나고자 하는 프로그래머를 위해 저자들의 오랜 성찰을 통해 정제한 지혜와 구 체적인 실천법을 안내한다. 코딩 가이드라인, 설계에 대한 격언, 프로젝트 관리에 대한 조언, 사람들과의 관계에 대한 지혜, 각 항목별 연습 문제를 제공한다.
  3. 3. 소통하라 청중 이해하기(WISDOM) 1. 무엇(What)을 배우길 원하는가? : 실용주의 프로그래머가 되기 위해 준비해야할 것이 무엇인지? 2. 말하려는 것에서 그들이 관심(Interest) 있어 하는 건 무엇인가? : 가치있는 프로그래머? 개인 기량 높이기? 소스코드 관리? 자동화툴? 테스트 코드 작성? 3. 얼마나 소양(Sophisticated)이 있는가? : 다들 비슷한 수준 4. 어느 정도의 구체적인(Detail) 내용을 원하는가? : 비학술시그인만큼 대략적인 정보만? 5. 누가 정보를 소유(Owe)하길 원하는가? : 공유!! 모두가 소유 6. 그들이 경청하도록 동기(Motive)를 주려면 어떻게 해야 할까? : 공감할 수 있도록 자극을 줘야 한다. 성공한 사람이나 기업을 예로 들면서?
  4. 4. 직교성 독립성(independence), 결합도 줄이기(decoupling) 1. 하나가 바뀌어도 나머지에 어떤 영향도 주지 않는 것. 2. 직교적인 시스템의 장점 • 생산성 향상 : 변화가 국소화(localize)되서 개발 시간과 테스트 시간이 줄어든다. • 리스크 감소 : 시스템이 잘 깨어지지 않는다. 3. 직교성을 유지하기 위한 방법 • 코드의 결합도를 줄여라. : 부끄럼타는 코드(shy code) 작성. 다른 모듈의 구현에 의존하지 않는 코드 • 전역(global) 데이터를 피하라. : 코드가 전역 데이터를 참조할 때마다, 코드는 해당 데이터를 공유하는 다른 컴포넌트 와 묶이게 된다. • 유사한 함수를 피하라.
  5. 5. 소스 코드 관리
  6. 6. 의도적으로 프로그래밍 하기 1. 언제나 자기가 지금 무엇을 하고 있는지 알아야 한다. 2. 맹목적으로 코딩하지 말라. 3. 계획을 세우고 그것을 바탕으로 진행하라. 4. 신뢰할 수 있는 것에만 기대라. 5. 여러분의 가정을 문서로 남겨라. 6. 노력을 기울일 대상의 우선순위를 정하라. 7. 과거의 노예가 되지 말라.
  7. 7. 리팩토링 • 자신이 작성하는 코드를 항상 비판적으로 검토해 보는 습관을 기르기 바란다. 기회 가 있을 때마다 코드의 구조와 직교성을 향상시키기 위해 노력하라. 이러한 프로세 스를 리팩토링(refectoring)이라 부른다. • 리팩토링은 언제 해야 하는가? : 언제나 바로 지금이 최적기다. • 일찍 리팩토링하고, 자주 리팩토링하라. : 리팩토링해야 할 것들의 명단을 만들고 유지하라. 어떤 것을 지금 당장 리팩토링하기 힘들다 면, 일정에 그것을 리팩토링할 시간을 확실히 포함시켜 두도록 한다.
  8. 8. 유비쿼터스 자동화 • 빌드와 릴리스 과정이건, 코드 리뷰 서류 작업이건, 혹은 프로젝트에서 거듭 발생하 는 어떤 종류의 작업이건 간에 그것은 모두 자동화되어야 한다. • 수작업 절차를 사용하지 말라. 1. 자동화 도구 사용(cron) 2. 빌드 자동화(make)
  9. 9. 실용주의 팀 • 깨진 창문 + 삶은 개구리 • 소통하라! • : 훌륭한 프로젝트 팀은 뚜렷한 특성을 갖는다. 모든 사람이 좋아할 만한 잘 준비된 퍼포먼스를 보게 될 걸 알기 때문에 사람들은 회의를 기대한다. 그들이 생산해 내는 문서는 깔끔하고 정확 하며 일관적이다. 바보같이 들리지만, 팀은 정체성 확립의 기반을 얻을 것이고, 세상은 여러분의 작업과 관련되어서 기억할 만한 뭔가를 얻게 될 것이다.
  10. 10. 결국은 모두 글쓰기 1. literate programming : 코드와 문서를 결합시키기. 문서화는 개발 프로세스에서 필수불가결한 부분이다. 노력을 중복하 거나 시간을 낭비하지 않고, 문서를 늘 손에 닿는 가까이에 두면 문서 작성이 더 쉬워진다. 2. 코드 내의 주석 • 단순한 모듈 수준의 헤더 주석, 중요한 데이터와 자료형 선언에 대한 주석, 클래스 및 메서드별 간략한 주석, 해당 함수가 어떻게 사용되는지 • 소스코드에 대한 책임감은 사람들이 정직해지도록 하는데 놀라우리만큼 효과적이다.
  11. 11. 감사합니다

×