소림사의 홍반장! :: 소림사의 홍반장!

정보

http://www.yes24.com/Product/Goods/80749963


출간일 : 2019년 10월 30일

쪽수, 무게, 크기 : 228쪽 | 152*225*20mm

ISBN13 : 9791160509519




책소개
100년 뒤에도 유용할 소프트웨어 설계 원칙 & 프로그래머의 바른 길!
Google의 코드 건강(Code Health), 즉 코드의 가독성, 안정성, 단순성, 유지보수성은 어떻게 개선되어 왔을까? 오픈소스 버그질라(Bugwilla)는 어떻게 침체기를 벗어나 다운로드 수를 10배 이상 늘렸을까? 그 중심에는 이 책의 저자 맥스-카넷 알렉산더가 있다. Google의 기술 책임자로서, 버그질라 프로젝트의 수석 아키텍트로서 활동하면서 얻은 통찰과 깨달음을 이 한 권에 담았다. 수많은 프로그래머가 올바른 방법으로 소프트웨어를 설계하고, 더 나은 코드를 작성하도록 도와준 ‘소프트웨어 설계 원칙’을 차근차근 이야기해 준다.

출판사 리뷰

할 거면 잘 해라!

단순함을 추구하라! 더 나은 프로그래머가 될 것이다!
그러나 단순함을 추구하는 것은 어려운 일이다. 하지만 생각해 보자. 나는 프로그래머고, 지금 내 앞에는 해야 할 일이 있다. 자, 이제 어떻게 할 텐가? 나는 뭐든 할 거면 그 분야에서 제일 앞서 나가기 위해 최선을 다해야 한다고 생각한다. 다른 사람들에게도 그렇게 살라고 권하고 싶다. 다음과 같이 말이다.

“어차피 할 거라면 왜 잘하지 않나요? 더 능숙하게 할 수 있으면 일하는 게 더 즐겁지 않을까요? 자신이 한 일을 보고 다른 사람이 감동한다면 어떨까요? 하루를 마치고 집으로 가는 길에 그날 무언가를 잘 해낸 기억이 떠오른다면 어떨까요? 현재보다 아주 조금이라도 삶이 더 즐거워지지 않을까요?”


추천평

코드는 한 줄도 나오지 않습니다. 대신에 코드를 작성하기 전에 한 번쯤 생각해 보아야 할, 어쩌면 코드 보다 더 중요한, 그런 이야기로 가득합니다. 자신이 하는 일을 이해함으로써 더 나은 소프트웨어 개발자가 되고 싶은 분들에게 이 책을 추천합니다.
- 김훈민(메쉬코리아 웹프런트엔드 테크 리더)

'문제 해결'보다는 프로그래머로서의 기본 자세와 더 높고 멀리 볼 수 있는 시야에 대해 이야기합니다. 기존 책에서는 볼 수 없었던 현업에서의 생생한 경험과 사례를 볼 수 있습니다. 이 책이 자신만의 '프로그래밍 가치관'을 정립해보는 기회가 되기를 바랍니다.
- 권태관(NAVER 소프트웨어 엔지니어)

간결하고 논리적 정합성을 가진 문장으로 코드, 소프트웨어 그리고 프로그래머가 가져야 할 인식에 대해 이야기한다. 아직 테스트 코드 작성 및 리팩토링이 생산성을 해친다고 생각한다면 이 책을 읽어보길 권한다.
- 이동규(우아한형제들 개발자)


선정이유

동료 개발자의 책 선물.
DDD에 대헤 같이 공부하며 더 나은 소프트웨어 설계에 대해 고민하다가 선물받게 되었음.


저자의도

소프트웨어 개발 세계를 조금 더 나은 곳으로 만들고 싶었음.
기본 원칙을 개발할 방법론이 필요했다.
여러분이 더 나은 소프트웨어 개발자가 될 수 있게 돕는 것이 이 책의 핵심이자 유일한 목표다.
이러한 것들을 이 책에 소개했고 여러분들은 이 책이 제공한 데이터를 적용하기만 하면 된다.


목차


독서전략

지은이의 설명에 의하면 이 책은 순서대로 읽지 않아도 문제가 없도록 구성되었다고 한다.
1~3부. 프로그래머게 적용되는 몇 가지 기본 원칙, 소프트웨어의 복잡성과 단순성, 원칙 소개 및 적용 경험
소프트웨어 설계원칙의 기반이 되는 철학에 대해 설명한 '소프트웨어 이해하기'
나아지기

기본 원칙을 바탕으로 진행하기 좋아하는 나로써는 아주 기대가 되는 책이다.
'1부. 프로그래머를 위한 원칙'부터 잘 파악해놓고 전체적으로 이헤하도록 노력해보자.
총 7부. 출퇴근시간을 이용하여 하루에 1부씩 읽기.
3일은 내용 정리를 위한 버퍼시간
최소 1주 ~ 최대 2주에 걸쳐 책 뽀개보자.

요약정리

오픈소스커뮤니티를 키우고 유지하려면... (프로젝트를 성공적으로 수행하기 위해서도 필요해보인다.)
  • 기여에 관심을 갖도록 유도
    • 도움이 필요하다는 점, 즐거운 커뮤니티라는 점, 사회 환원은 필요하며 인정받는 활동이라는 점, 해결해야 할 문제가 있다는 점이 드러나도록 할리는 게 좋다.
      • 슬립스터기 활동을 하면서 이 부분이 항상 아쉬웠었는데... 서로 참여 할 수 있는 오픈소스를 시작하고 참여를 독려해봐야겠다.
    • 관심을 끌기 위해 가장 확실한 방법은 인기 있는 제품이 되어라.
    • 인기있는 언어로 만들어라
  • 진입 후 기여에 방해되는 장벽 없애기
    • 쉽게 시작할 수 있는 프로젝트 목록을 만들어라
    • 소통 채널을 만들고 기록하라
      • 이 역시 중요할 듯. 그냥 소통 채널이 아니라 편하게 소통할 수 있는 채널이 필요.
    • 기여 방법을 완벽하고 정확하게 설명하는 간단한 문서를 만들어두어라.
      • 최소한 프로젝트에 대한 설명(히스토리, 목적, 개발방향 등)과 세팅방법 정도는 있어야 할 듯
    • 문서를 쉽게 찾을 수 있게 하라
    • 결국 이 얘기들은...
      • 진입장벽을 줄이고 찾고 싶은 정보에 최대한 빨리 접근 할 수 있게 하라는 건데 이건 모든 일에 반드시 필요한 것.
  • 꾸준히 기여할 수 있는 기여자 확보
    • 기능 반영을 위한 트렁크를 오래 동결하지 마라.
      • 결국은...
        • 배포 주기를 짧게 해라.
          • 자동화 된 CI/CD가 구축되어야 함.
    • 기여에 즉시 반응하라
      • 결국 피드백은 확실히
    • 아주 친절한 태도로 눈에 띄게 고마워 하라
    • 사적으로 부정적인 감정을 품지 마라


짧은 주기로 반복되는 테스트는 좋은 소프트웨어를 만드는데 반드시 필요한 조건이다

나쁜아이디어를 알아내고 이런 경우 반드시 아니오라고 하자. 물론 기분나쁘게 딱자르는 것은 아니고 완곡한 표현으로 정말 나쁜부분에 대해서만 거절한다.

총평

'1부. 프로그래머를 위한 원칙'을 읽기 전까지만 해도 뭔가 오랜 시간 고심한 원칙들을 구체적으로 제시할 줄 알았는데...
요약하면,
  • 좋은 프로그래머가 되고자 하는 마음가짐은 필수, 잘하고자 한다면 자신의 일을 이해하고 항상 올바른 방법을 찾아라.
  • 소프트웨어 설계 시 구현에 드는 수고보다 유지 보수에 드는 수고를 줄이는 게 더욱 중요하다.

시작부터 맥빠지는 감이 좀 있었는데..
(아직 시도해보지는 못했다.)
(그냥 이론에 불과하다. 아직 이것에 대한 근거는 아직 충분히 모으지 못했다.)
중간중간 이런 류의 뇌피셜이라 생각되는 내용들이 심심찮게 등장한다... 
뜬구름 잡고 있다라는 느낌이 들어서 이런 부분들은 좀 실망스러움.

23장에 등장한 오픈커뮤니티에서 기여자를 확보한 경험적 이야기는 잘 와닿았다. 
전체적으로 이런 경험적인 데이터들을 토대로 얘기해줬으면 어땠을까?

오픈소스커뮤니티를 키우고 유지하기 위한 경험적 이야기에 대해 좀 더 느낀 바를 정리해보자면..
단지 오픈소스커뮤니티에만 국한 되는 것이 아니라 프로젝트를 성공적으로 수행하기 위해서라면 반드시 필요한 내용들이라고 생각한다.
핵심은
  1. 프로젝트에 참여하고 싶게 만드는 것
  2. 편한 소통채널을 마련 할 것
  3. 프로젝트에 대한 문서들을 최대한 간단하게 만들고 찾기 쉽게 하여 진입장벽을 최소화 할 것
  4. 피드백을 확실하게 가능한 짧은 주기로 할 것

컴퓨터(명사)
* 사전적정의 : 사전 정의된 명령 조합에 따라 정보를 저장하고 처리하는 전자 기기
* 글쓴이정의 : 인간이 설정한 목표를 달성하기 위해 일련의 기호 명령을 수행하고 데이터를 비교할 수 있는 모든 물질
이런 컴퓨터의 정의 같은 아주 당연하다고 생각되는 용어도 납득할 수 있는 수준으로 재정의하는 모습은 본받을만하다. (2년이라는 시간이 흐른 후에야 단순하고 포괄적인 정의를 내릴 수 있었다고 함.)
한 가지 더 예를 들어보면 프라이버시(대부분의 사람들이  그 뜻을 알고 있을것이라고 생각하지만 정작 프라이버시란 무엇이고 왜 프라이버시를 원하는지 찾아보기 어렵다)에 대해 이야기를 할때에도 공간의 프라이버시와 정보의 프라이버시로 나누어 이야기하고자하는 주제에 대해 명확히 정의하고 있다.

결국 자신이 하고자 하는 것에 대해서는 자신만의 철학적 원칙이 필요하다는 것을 알 수 있음. 물론 너무 맹목적이면 문제겠지만..





다른 카테고리의 글 목록

Dev. 내가 본 서적 카테고리의 포스트를 톺아봅니다