이전

리뷰 (3)

한줄평
평점 분포
  • 리뷰 총점10 100%
  • 리뷰 총점8 0%
  • 리뷰 총점6 0%
  • 리뷰 총점4 0%
  • 리뷰 총점2 0%
연령대별 평균 점수
  • 10대 0.0
  • 20대 0.0
  • 30대 0.0
  • 40대 10.0
  • 50대 0.0

포토/동영상 (2)

리뷰 총점 종이책
책리뷰#109 [KODE VICIOUS 개발 지옥] 개발자를 위한 문답
"책리뷰#109 [KODE VICIOUS 개발 지옥] 개발자를 위한 문답" 내용보기
1. 질문의 힘 군 생활을 하면서 수백 권을 책을 읽었다. 일과가 끝나면 틈틈이 책을 읽었다. 각종 판타지/무협 소설을 섭렵하고 자기개발서를 읽기 시작했다. 20여권 정도 읽다 보니 그 책이 그 책 같고 결국 같은 이야기를 하는구나라고 느꼈다. 그 중 하나의 책에서 '질문하라'라는 주제가 있었는데 인상 깊었다. 질문의 중요성을 강조한 대목이었다. 질문을 통해 내가 무엇을 모르고
"책리뷰#109 [KODE VICIOUS 개발 지옥] 개발자를 위한 문답" 내용보기

1. 질문의 힘
군 생활을 하면서 수백 권을 책을 읽었다. 일과가 끝나면 틈틈이 책을 읽었다.
각종 판타지/무협 소설을 섭렵하고 자기개발서를 읽기 시작했다.
20여권 정도 읽다 보니 그 책이 그 책 같고 결국 같은 이야기를 하는구나라고 느꼈다.
그 중 하나의 책에서 '질문하라'라는 주제가 있었는데 인상 깊었다.
질문의 중요성을 강조한 대목이었다.
질문을 통해 내가 무엇을 모르고 아는지 알게 된다. 질문에 대한 답변을 통해 지혜를 배우며 시행착오를 줄이고 목표에 더욱 빠르게 닿을 수 있다.


 

<KODE VICIOUS 개발 지옥>은 개발자를 위한 문답 책이다.
작가는 개발자에게 까칠한 조언을 해주는 가상의 인물 KV를 만들었다.
그들의 질문에 답변하는 형태의 칼럼을 기고했다.
잡지에 15년 동안 연재한 글들을 다듬어져 400페이지에 달하는 두꺼운 책이 되었다.
작가는 경험이 많은 IT 전문가다.
서울대 가는 방법은 누구나 알고 있다. 
의사가 되는 방법, 변호사가 되는 방법, 부자가 되는 방법은 사실 누구나 알고 있다.
실천이 어려워서 그렇다.
훌륭하고 클린한 코딩을 하는 방법은 모든 개발자가 알고 있다.
주석과 커밋 메시지를 형식에 맞춰 작성하고 전역변수는 최대한 지양하며 하나의 기능단위로 소스를 푸시하고 간결하고 깔끔하고 명확한 변수명과 함수명을 작성하는 등의 방법을 말한다. 
실천하기 어렵고 귀찮고 바쁘기 때문에 대부분 그렇게 못한다.


 


2. 클린 코더
오랜만에 책에 형광펜으로 줄을 치며 읽었다.
줄을 그으면 나중에 중요한 문장을 찾기도 쉽고 정리도 잘 된다.
보통 자격증 취득이나 수험서에 줄을 치고 부가 설명을 적으며 공부할 때 사용하는 방법이다.
이 책도 교과서나 문제집 처럼 개발자의 정석으로 삼아도 괜찮을 만큼 중요한 조언들이 가득하다.
현업에서 겪었던 일들이 생각나면서 나만 그랬던 것은 아니구나 위로를 얻기도 했다.


 

특히 다음 문장이 마음에 들었다.


p73
코드는 항상 현재 시스템이 어떠한지 보여 주어야 하는 것이지 과거에 어떠했는지를 보여 주는 것이 아닙니다.

현업에서 일을 하다 보면 히스토리가 중요하다는 이야기를 많이 듣는다.
그래서 소스에는 과거에 어떤 이슈가 있었고 현재 어떻게 바뀌었다는 내용을 주석으로 적기도 한다.
심지어 과거에 쓰고 지금은 사용하지 않는 코드가 주석처리 되어있는 경우도 많다.

하지만 고객의 입장에서는 지금 현재의 프로그램이 어떻게 동작하는지가 가장 중요하다.
예를 들어 1년 전에 카톡에서는 이런 기능이 있었고 지금보다 더 편리한 UI였는데 지금은 그렇지 않다고 가정해 보자.
과거 일은 과거 일이다. 지금 당장 카톡을 쓰는 사람에게는 중요하지 않는 옛 것(히스토리)일 뿐이다.

그 옛날 스타크레프트에서 프로토스, 테란, 저그의 적절한 벨런스를 위해 다양한 패치가 있었다.
해처리의 비용이 350에서 300으로 감소하고 건설 시간이 100초에서 120초로 증가했다는 사실을 누가 기억하겠는가?
프로게이머에게는 중요한 정보일지 몰라도 대부분의 사람은 현재 어떠한지에 대한 관심만 있을 뿐이다.

과거는 과거이니 더 이상 안 쓰는 소스를 주석 처리하여 클린하지 않게 관리하지 않겠다고 생각했다.
나중에 필요하다면 형상관리(git)툴의 히스토리를 보면 된다.


 


3. 멘토
까칠하지만 친절한 KV는 코드 뿐아니라 운영체제/인프라/네트워크 심지어 회사 생활과 사람과의 관계까지 폭넓게 다룬다.
개발자로 살면서 궁금했거나 힘들 때 꺼내들 책의 목록이 하나 더 늘었다.

트렌드는 계속 변화하고 공부할 것은 많다.
고객의 요구사항은 까다롭고 시시때때로 변한다.
시스템은 생물처럼 유기적으로 변화가 필요하다.
조금만 관심을 주지 않으면 금세 엉망이 된다.
개발자(프로그래머)는 결코 쉬운 직업이 아니다.

그럼에도 개발자를 놓을 수 없는 이유는 성취감 때문이다.
내가 작성한 코드가 수많은 사람에 의해 수천만 번 오류 없이 실행되는 모습을 보면 뿌듯하다.
비록 한두 명이 사용하는 앱이라도 괜찮다.
만드는 과정의 기쁨도 무시할 수 없다.


 

훌륭한 멘토 KV를 만나서 즐겁다.
세상의 편의와 발전을 가져오는 전 세계에 모든 개발자에게 존경을 담으며 글을 마친다.
 


이 리뷰는 출판사로부터 도서를 제공받아 작성하였습니다.

https://blog.naver.com/kyoyo21/222968100033

k*****1 2022.12.28. 신고 공감 1 댓글 0
리뷰 총점 종이책
[서평] KODE VICIOUS 개발 지옥
"[서평] KODE VICIOUS 개발 지옥" 내용보기
네이버 블로그 링크: https://blog.naver.com/rock1192/222877401352   이 책은 저자가 무려 15년 동안 잡지에 기고한 컬럼을 엮어서 만든 책 이다 꽤나 재미있는 5개의 챕터 87개의 컬럼으로 구성 되어있다 Chapter1 - 손 안의 코드 The Kode at Hand Chapter2 - 코딩 수수께끼 Koding Konundrums Chapter3 - 시스템 디자인 Systems Design Chapter4 - 기계에
"[서평] KODE VICIOUS 개발 지옥" 내용보기

네이버 블로그 링크: https://blog.naver.com/rock1192/222877401352

 

이 책은 저자가 무려 15년 동안 잡지에 기고한 컬럼을 엮어서 만든 책 이다

꽤나 재미있는 5개의 챕터 87개의 컬럼으로 구성 되어있다

  • Chapter1 - 손 안의 코드 The Kode at Hand

  • Chapter2 - 코딩 수수께끼 Koding Konundrums

  • Chapter3 - 시스템 디자인 Systems Design

  • Chapter4 - 기계에서 기계에게 Machine to Machine

  • Chapter5 - 사람과 사람 Human to Human

저자는 프로그래머라면 개발을 하면서 한번씩 고민해봤거나 겪어봤던 상황들을 각 주제마다 재미있고 뛰어난 문장력으로 분노하는 케릭터를 연기하며 흥미롭게 풀어내고 있다

책을 읽으면서 저자의 지혜를 옅볼 수 있으며 이러한 사고를 넓혀주는 책을 프로그래머들이 반드시 읽어보면 좋을 것 같다

독자 대상

  • 코딩을 평생의 업으로 삼은 소프트웨어 개발자

  • 시스템 세부사항과 기능 확장 방법을 탐구하는 열정적인 프로그래머

  • 실무를 위한 프로그래밍 및 협업에 관한 노하우를 얻고자 하는 개발자

  • 개발자와의 소통에 어려움을 느끼는 IT 업계 종사자

도서 특징

  • ACM Queue와 Communications of the ACM의 정기 컬럼인 Kode Vicious의 글 중 가장 인기 있는 주제를 꼽아 수록한 칼럼집으로, 튜링상 수상자인 도널드 E. 커누스가 추천하는 책이다

  • 옛날부터 지금까지 여전히 개발 업계에서 논쟁을 불러 일으키고 있는 중차대한 주제를 다루며 그에 관한 핵심적인 조언을 제공한다

  • 현장 전문가의 날카로운 시선으로 문제를 지적하지만, 딱딱한 학술적 문체가 아니라 냉소적인 영국식 위트와 우스꽝스러운 유머를 담아 흥미롭게 서술하고 있다

  • 튜링상 수상자 도널드 E. 커누스 추천 도서

  • LINE, 카카오 T, 우아한형제들, 그린랩스 개발자들이 읽어보고 추천한 도서

 

누구도 640K 이상의 RAM이 필요하지 않다

- 빌 게이츠가 주장하고, 철회한 말

예전에는 비행기, 기차 및 자동차용 시스템을 구축하는 임베디드 컴퓨팅 분야에서 일하는 소수의 전문가들만 작은 메모리를 들여다봐야 했다

비록 IoT로 칭해지는 대상들에게 RAM과 관련된 사항들은 옛날의 임베디드 시스템들과 밀접하지만, 그 외의 나머지는 사촌 격인 데이터 센터에 위치한 서버들에게 맡긴다

이 서버들의 메모리는 MB 단위에서 몇 GB 정도로 어림잡을 수 있다

값싼 컴퓨팅 장치가 계속 확산됨에 따라 새로운 세대의 코더들은 다시 메모리라는 귀중한 자원을 인식하고 효율적으로 작업하는 방법을 반드시 배워야 한다

 

 

우린 그저 침몰하는 타이타닉 갑판에서 의자를 재배치하는 중입니다

- 관리자 격언

떄론 소프트웨어의 한 조각에서의 문제가 코드 속 어떤 라인에 있는 게 아니라 이것들이 어떻게 배치되고 쓰이는지에 있는 경우가 있다

소프트웨어를 개발한다는 것은 단순히 수천 줄의 코드를 순차적으로 작성한다기보다는 그것들을 조합하는 행위에 가깝다

제대로 작성된 소프트웨어는 다른 이들이 사용하기 쉽도록 안배되어 있는데, 만약 그걸 원치 않는다면 모든 프로그램을 단 하나의 함수만 가진 파일 하나로 해서 10,000줄 이상의 코드로 작성하면 된다

우리는 이것을 '불합리해 보이는 정원사의 비유'를 통해 볼 것이다

 

 

필요하다면 코드의 일부를 복사하는 것이 기능 하나를 쓰기 위해 라이브러리를 추가하는 것보다 좋다. 의존성 위생 관념이 코드 재사용보다 우선이다

- 롭 파이크

코드 재사용은 경우에 따라 칭찬 받기도 하지만 남용이 되기도 하고, 조롱 당하거나 어떤 때에는 적절한 조치가 되기도 한다

코더의 매크로일 수도 있고 다른 코더의 라이브러리일 수도 있다

아니면 전혀 말이 안될 수도 있다

소프트웨어에게 주어진 유연성을 감안했을 때, 우리가 적용하려는 목적에 맞지 않는 코드 조각을 재사용하고 싶은 충동이 들 때가 종종 있다

하지만 그것은 코드 남용이다

재사용이 아니라

 

 

내 친구들에게나 말할 법한 투로 말하지 말아야 할 거 같다

- 대학에서 처음 발표했을 때 받은 조언

그때 나는 지식의 전당에는 어울리지 않는, 브롱크스 거리에서나 용인될 법한 말을 했었다

머릿속에서는 그럴싸하게 느껴지지만, 막상 글로 적어 보면 그다지 좋아 보이지 않는 경우가 있다

이 둘의 차이를 일찍 깨닫는 것이 코딩 커리어에 있어 중요한 사항이다

물론 우리 모두는 자신의 작업이나 다른 이의 작업을 들여다보면서 늘 좌절을 겪고 있다

그 와중에 저마다의 다채로운 표현들을 허용하고 싶어하지만, 이런 코드를 버전 컨트롤 시스템에 영구 보관하는 것은 벽에 대고 소리치는 것만 못하다

소프트웨어 개발이라는 것은 결국 많은사람들에게 이러한 코딩 부산물들을 제공하는 것이므로 코딩도 은밀한 소수의 전유물이 아니라 공개적인 행위로 취급되도록 해야만 한다

따라서 우리는 코드, 주석 및 다른 어디라도 무엇에 대해 말하고자 하는지와 전하는 방법에 대해 신중하게 고려해야 한다

 

 

문서화는 마치 섹스와 같다. 좋으면 엄청, 엄청 좋고 별로면 아무런 감흥도 없다

- 딕 브랜든

코더들이 자신의 시스템에 대한 문서를 남기는 것을 싫어한다는 것은 오랫동안 내려져 온 믿음이다

'글로 쓰기 어렵다면, 이해하기도 어렵다'라는 말처럼 사실은 문서화되지 않은 대량의 코드를 살펴본 경험이 있는 사람들은 누구나 좋은 문서의 가치를 알고 있다

사람들이 자신의 코드나 디자인을 문서화하는 데 어려움을 느끼는 이유는 좋은 글귀나 소설과 수필, 함수 블록, 하드웨어 기능에까지 내러티브가 필수라는 사실을 받아들이지 못했기 때문이다

내러티브 없이는 독자들에게 아무런 정보도 제공 못하고 그저 글귀를 흩뿌리는 것에 불과하다

아이러니인 점은 소프트웨어에서 흔히말하는 함수는 내러티브와는 거리가 멀다는 것이다

함수는 주로 어떤 입력값을 받아 출력값으로 변환하는 역할만 한다

좋은 내러티브는 초현실주의 소설과 다르게 독자를 무지의 장소가 아니라 꺠달음의 장소로 안내한다

여러분들이 하나의 함수에 대해서 문서화를 시도할 때 다음 네 가지 질문에 답변을 하면 좋은 문서화가 될 것이다

  • 입력은 무엇인가?

  • 입력은 어떠한 변화를 겪게 되는가?

  • 어떠한 형태로 출력이 나오는가?

  • 적절하거나 부적절한 경우 어떠한 (에러) 반환 값이 있는가?

 

 

프로그래밍 기술은 많은 경우의 수를 정복하고 끔찍한 혼란을 가능한 한 효율적으로 회피하는 것을 통해 복잡성을 정리하는 기술이기도 하다

- 에츠허르 데이크스트라

적절한 추상화는 좋은 시스템 디자인의 핵심이다

왜냐하면 추상화가 잘못되면 복합성이 저하될 가능성이 매우 높기 때문이다

그렇게 되면 전체 시스템이 유기적으로 동작하지 않고, 설령 작동할지라도 결점이 있을 것이며 서로 자연스럽게 맞물리지 않을 것이다

추상화를 올바르게 하지 않으면 두 컴포넌트 사이에 오해가 생기게 된다

그리고 오해하는 버그를 유발하고, 버그는 시스템 실패를 유발한다

추상화가 제대로 고려되지 않아 시스템이 실패하면 구성 요소를 구현해야 했던 코더가 아니라 디자이너가 책임을 지게 된다

 

 

난 당신 기계에서 동작하는 게 궁금하지 않다! 우린 당신 기계를 파는 게 아니잖아!

- 비디유 플라톤

사람들은 코더 중 대다수가 낙관주의자들이란 사실을 믿지 않는다

여기서 보안과 관련된 일을 하는 사람들을 제외하고 말한거고, 대다수 코더, 즉 열에 아홉은 낙관론자이다

우리가 하는 일을 보면 이게 무슨 말인지 알 수 있을 것이다

시스템이 크거나 난해한 코드가 동작하게 하는 건 환장할 정도로 성가시고 어려운 일이기 때문에 코드가 빌드되면 대부분의 코더는 그것이 동작될 거라고 확신하곤 한다

이런 낙관주의의 단점은 이 책에서 다양한 표현으로 언급되고 있는데 그중 가장 빈번한 건 코드를 커밋하기 전 테스트 부족이다

소프트웨어 개발은 90퍼센트 또는 그 이상의 공통된 노력의 대상이기 때문에 코드를 커밋하기 전에 테스트하지 않는 것은 소프트웨어 개발의 주요 죄악 중 하나이다

코더들에게서 보이는 이러한 지속적인 경향에 대해 가장 실망스러운 점은 이제는 컴퓨터가 엄청 빨라져서 가장 큰 시스템을 실행하는 데에도 몇 분이면 충분한데도 그러지 않는다는 점이다

오늘날엔 빌드를 위한 인프라는 대기업의 일터에서만 사용할 수 있는 것이 아니라 가장 작은 오픈소스 프로젝트에서도 사용할 수 있다

실제로 많은 시스템의 빌드 및 테스트 인프라는 노트북에서도 수행 가능하다

 

 

 

이 책은 저자가 15년동안 잡지사에 기고한 분노를 유발시키는 프로그래머들이 저지르는 실수들에 대한 컬럼을 엮어 놓은 책이다

자신이 분노를 유발시키는 프로그래머 유형에 속하는 프로그래머가 아닌지 깨닫게 해주는 흥미로운 주제들이 가득하다

목차에서 총 87개의 컬럼 주제를 보고 흥미로운 부분들을 펼쳐서 읽어보는 식으로 책을 읽어 보아도 좋다

책을 읽어 가다보면 내가 이런 실수를 하고 있지는 않는지 또 이런 것들은 어떻게 풀어나가면 좋을 지에 대한 지혜를 얻을 수 있다

많은 프로그래머들이 간과하고 넘어가서 다른 프로그래머들의 분노를 유발시키는 코드와 시스템을 양산하고 있다

동료 머리를 쥐어 뜯게 만드는 개발자들이 이 책을 꼭 읽고 분노를 유발시키지 않는 개발자가 되는 법은 어떤 것인지 깨닫고 좋은 개발자가 되기를 간절히 바라는 책의 재목이 매우 인상 깊다

 

 

r******1 2022.09.18. 신고 공감 0 댓글 0
리뷰 총점 종이책
KODE VICIOUS 개발 지옥
"KODE VICIOUS 개발 지옥" 내용보기
1. 손 안의 코드 : 코드를 손 안에서 쥐락펴락하기 위해서 반드시 고려해야 할 스타일과 코딩의 핵심(정확성, 간결성, 조합성)에 대해 다룹니다. 2. 코딩 수수께끼 : 시스템이 만들어지고 나서 발생하는 디버깅, 문서화, 테스트 등과 관련된 문제를 살펴보며 전반적인 시스템 성능 및 코드에 관한 조언을 전합니다. 3. 시스템 디자인 :  잘 디자인된 시스템이 무엇인지 설명하기 위해
"KODE VICIOUS 개발 지옥" 내용보기


 

1. 손 안의 코드 : 코드를 손 안에서 쥐락펴락하기 위해서 반드시 고려해야 할 스타일과 코딩의 핵심(정확성, 간결성, 조합성)에 대해 다룹니다.
2. 코딩 수수께끼 : 시스템이 만들어지고 나서 발생하는 디버깅, 문서화, 테스트 등과 관련된 문제를 살펴보며 전반적인 시스템 성능 및 코드에 관한 조언을 전합니다.
3. 시스템 디자인 :  잘 디자인된 시스템이 무엇인지 설명하기 위해 적절한 추상화, 스레드 프로그래밍, 보안이라는 주제로 좋은 시스템의 핵심을 이야기합니다.
4. 기계에서 기계에게 : 분산 시스템, 네트워크 프로토콜 디자인 등에 대한 내용을 통해 기계 간 통신, 즉 컴퓨터 네트워킹에 관한 유용한 지침을 제시합니다.
5. 사람과 사람 : 업계 내 동료들과 소통하고 조율하고 협업하는 방법, 참조할 만한 레퍼런스 등 개발자의 커리어 관리를 위한 노하우를 알려 줍니다.
총 5가지 주제로 이야기 하고 있습니다.
이중에서 몇가지 인상 깊었던 내용들로 이야기 해보겠습니다.


 

문서의 중요성
개발자들은 자신의 시스템에 대해 문서를 남기는 것을 싫어합니다.
자신의 코드나 디자인을 문서화하는 데 어려움을 느끼는 이유는 코드가 빠르게 변동되기 때문입니다. 
또는함수 및 class를  서술하는 표현들이 잘하지 못하는 경우도 있습니다.
문서화가 어렵다고 느껴지면 4가지 질문에 답변하면 좋은 문서화가 될 수 있다는 점을 명심했으면 합니다.
첫번째 입력은 무엇인가?
두번째 입력은 어떠한 변화를 겪고 되는가?
세번째 어떠한 형태로 출력이 나오는가?
네번째 적절하거나 부적절한 경우 어떠한(에러) 반환 값이 있는가?
좋은 문서화는 좋은 코드와 같은 작성 이후에도 꾸준히 관리되어야 합니다. 코드가 변경되었다면 문서도 같이 변경을 해줘야 합니다.

시스템 디자인
시스템 디자인이란 의미는 조합성에 중요성을 이야기 하고 있습니다.
함수, 클래스, 모듈 또는 시스템을 구성하는 모든 프로그램들의 조합성을 의미합니다.
시스템 디자인 철학에 대해 제시하고 있습니다.
첫번째 프로그램은 한가지 위해 작성되고 잘 작동어야 합니다.
두번째 프로그램들은 서로 협력할 수 있어야 합니다.
세번째 텍스트 스트림은 범용 인터페이스이므로 프로그램은 텍스트 스트림을 처리할 수 있어야 합니다.
결국 모든 컴포넌트들을 한데 모아 봐도 서로 다른 수준에서 상호연결과 종속성 관점에서 일관된 설명을 할 수 있어야 합니다.


 

안전한 로그 남기기
사람들은 안전한 시스템을 만든다고 할때 정문만 잠그고 창문이나 창고, 뒷문은 활짝 열어둔 채 방치한다는 점입니다.
안전한 시스템은 단순히 몇가지 지침을 준수하고 책의 내용을 따르는 것을 의미하는게 아닙니다.
데이터가 접근되는 모든 위치와 접근을 모두 제어하는 것입니다.
로그 시스템은 데이터 유출이 매우 흔한 지점입니다. 암호 파일 시스템만 이용하면 로그 데이터로 인한 문제는 훨씬 줄어들것입니다.
그리고 로그는 정말  필요한 것들만 목록으로 남기고 나머지는 삭제하는 것이 좋습니다. 암호화까지 되어 있으면 완벽합니다.

 

m****3 2022.09.06. 신고 공감 0 댓글 0