본문 바로가기
320x100
320x100

[ 제이펍 ]

리뷰어 선정

제이펍에서 서평단을 모집을 했었고 신청했었는데 당첨됐다!

 

책 수령

인별그램에서 주소와 이름 등을 말하고 2일 뒤에 책을 받았다!

 

 

목차

1장 에러가 왜 무서울까?


1.1 에러를 읽어보자 4
1.2 에러를 읽지 않게 되는 이유 8
__이유 1 영어로 쓰인 에러 9
__이유 2 길어서 읽기가 어려움 16
__이유 3 읽어도 바로 원인을 파악할 수 없음 18
1.3 에러를 향한 마음가짐 24
__간단하게 생각하자 24
__어려운 에러는 좋은 학습의 기회 25
__에러를 읽는 스킬은 항상 도움이 된다 26

2장 에러를 잘 읽는 방법

2.1 에러의 구성 요소를 알아보자 32
__구성 요소 1 에러의 종류 34
__구성 요소 2 에러 메시지 35
__구성 요소 3 스택 트레이스 36
2.2 에러의 종류를 알아보자 47
__에러의 종류 1 SyntaxError 48
__에러의 종류 2 ReferenceError 49
__에러의 종류 3 TypeError 51
__에러의 종류 4 RangeError 52
__다른 언어에서 발생하는 에러의 종류 53

3장 효율적으로 에러의 원인 찾기

3.1 디버깅이란? 58
__디버깅의 흐름 59
3.2 프린트 디버깅을 해보자 61
__프린트 디버깅으로 문제 해결하기 63
__경로를 따라 문제의 위치 특정하기 66
3.3 이진 탐색으로 효율적으로 찾아보자 68
__이진 탐색이란? 68
__프린트 디버깅으로 이진 탐색 71
__에러가 표시되는 부분에 문제가 없을 때는? 76
__더욱 큰 단위로 이진 탐색하기 81
3.4 최소한의 코드로 디버깅해보자 85
__최소한의 코드는 도움을 요청하기 쉽다 89
3.5 디버깅을 빠르게 진행하기 위한 방법 91
__사전에 가설 세우기 91
__한 번에 하나씩 검증하기 93
__작은 의문에 귀를 기울이자 93
__귀찮아하지 말자 94

4장 도구를 활용해 편하게 디버깅해보자

4.1 디버거는 강력한 도구 100
4.2 브레이크포인트를 사용해보자 102
__브레이크포인트란? 102
__브레이크포인트 설정 방법 103
__브레이크포인트를 사용해 디버깅해보자 109
4.3 다양한 스텝 실행 124
__다음 함수 호출(step into) 124
__다음 함수 호출(step over) 126
__현재 함수에서 벗어나기(step out) 127
__스텝의 사용 시기 129
4.4 조건을 포함하는 브레이크포인트 130
__조건을 포함하는 브레이크포인트를 사용해보자 131
__브라우저에서 편리한 조건을 포함하는 브레이크포인트 135
4.5 변수를 감시해보자 136

5장 해결할 수 없는 문제

5.1 개발자를 위한 정보 수집 테크닉 144
__구글 검색 144
__깃허브 검색 149
__커뮤니티에 질문하기 154
__1차 정보를 확인하자 156
5.2 에러를 찾을 수 없을 때 159
__보고 있는 위치가 다름 159
__에러의 출력 설정을 확인하지 않음 161
__에러를 프로그램에서 처리하고 있음 163
5.3 에러가 재현되지 않을 때 165
5.4 운영 환경에서 에러를 수집하는 방법 167
__에러 수집 방법 167
__진화하고 있는 로그 관리 방법 170

6장 디버깅이 쉬운 코드를 작성하자

6.1 재할당을 자제하자 176
__재할당을 억제하는 기능을 사용하자 178
__재할당을 하지 않으면 디버깅도 쉬워진다 178
6.2 스코프를 최소화하자 181
__스코프가 넓을 때의 단점 182
6.3 단일 책임의 원칙 185
구체적인 예 프로필 작성 서비스 185
6.4 순수 함수를 사용하자 189
__순수 함수란? 189
__순수 함수와 순수 함수가 아닌 함수의 비교 192
__순수 함수의 이용 194
6.5 타입을 의식하여 코드를 작성하자 195
__코멘트로 타입 명시하기 196
__프로그래밍 언어의 기능을 사용해 타입 정보 부여하기 197
6.6 디버깅을 도와주는 테스트 코드 201
__테스트 코드는 무엇일까? 201
__테스트 코드와 디버깅의 관계 203
__에러가 발생했을 때 먼저 테스트 코드를 작성하자 204

COLUMN

__결함을 수정하는 데 걸리는 시간 27
__스택 트레이스의 흐름은 프로그래밍 언어에 따라 다를까? 46
__버그는 벌레? 왜 벌레일까? 59
__왜 다른 위치가 표시될까? 80
__깃을 사용한 이진 탐색 84
__자고 나면 버그가 수정된다? 90
__테디 베어 효과 95
__브레이크포인트를 코드에서 설정하기 122
__에디터에서도 사용할 수 있는 디버거 139
__PHP에서 에러 출력 설정 162
__에러 메시지에서 uncaught의 의미는? 164
__여러 방법으로도 에러가 해결되지 않을 때의 회피술 172
__코드의 잠재적인 문제 찾기 180
__동적 타입 언어와 정적 타입 언어 199
__실제 유저의 조작을 재현하는 E2E 테스트 도구 206

 

독서

코딩하다가, 카페에서, 이동하는 전철에서, 독서실에서 계속 읽었다. 책이 작아서 북커버를 씌워서 가방에 넣고 다녔다.

 

분량

대략 200쪽 가량의 작은 책이다! 크기가 마루인형 손목보호대와 비교했을 때에도 비슷하다.

나는 책 크기가 크거나 너무 두꺼우면 일단 펼치기 싫은 느낌이 든다.

위에서도 말했다시피 책 크기가 작다. 

그래서 이 책은 갖고다니면서 읽기 딱 좋았다!

 

특징

1. 챕터 앞부분의 그림이 귀여움

각 챕터마다 위와 같은 그림들과 함께 책 내용이 나온다. 신입때, 취준생 시절이 떠오르는 그림이다ㅎㅎ

에러가 무서워~!!

 

2. 정말 딱 맞는 말(?)

맨 처음 목차부터 맞는 말이 나온다.

사실 내가 과거 신입 시절의 나를 돌아보면, 에러를 마주하기 싫은 이유가 영어였다.

물론 개발할때 적는 변수명도 영어로 작성하지만, 알 수 없는 오류가 긴 영어와 함께 나오면 읽어볼 생각을 하지 않고, 복붙해서 찾기 바빴던 기억이 있다.

그 에러만 잘 해석해도 문제해결의 70%이상은 할 수 있다는 것을 모르고!!

 

3. 상세한 설명

백엔드개발자는 VScode나 IntelliJ등을 활용해서 break point를 걸어본 개발자도 있겠지만, 프론트엔드 개발자들은 의외로 웹 브라우저에서 브레이크 포인트를 걸어본다던가, react/vue내에서 중단점을 거는 분을 그렇게 많이는 못 봤다.

사실 크롬의 성능은 빵빵해서 네트워크 속도를 일부러 느리게 한다던지, 돔트리 그리는걸 중간에 멈춘다던지 등등 할 수 있는 일이 어마어마하다.

이 책에서는 브라우저에서 할 수 있는 디버깅 기능과 개념을 설명한게 기억에 남는다.

 

4. 새로운 방법

이진탐색, 이진 디버깅이라는 방법이다. 에러가 발생되는 위치를 찾기 어려울때 이 방법을 도입하라고 하는데... 어느정도 도움 될 것 같다!

일단 현업에서는 특히 작은 스타트업에서는 풀스택 개발자가 되는 경우도 종종 있기 때문에 나같은 경우 백엔드 애플리케이션/프론트 애플리케이션을 전부 다 켜놓고 로그를 확인하는 편이다.

나처럼 다 인스턴스로 띄우는 법을 모르거나 너무 망망대해일때 중간부분부터 접근하는 방식은 좋은 것 같다.

 

Github에서 정규표현식으로 코드 검색하기 방법도 되게 신기했다.

나는 깃허브에서 왜 이렇게 안한걸까... 앞으로는 프로젝트할때 깃허브에서 정규표현식으로 검색하는 습관을 들여야겠다!

 

5. Next Step

책에서는 이제 에러를 보는법을 넘어 로그를 수집하고, 관리하는 방법도 알려준다.

Sentry, Rollbar등이 나오는데, 내가 예전 직장에서 프론트엔드 모니터링 툴로 적용한 Rollbar가 나오기 반가웠다.

위 사진은 내가 Rollbar를 슬랙에 연동해본 poc..

그리고 로그를 수집하는 Datadog 등등에 대한 간단한 언급도 나왔다.

 

맨 마지막 챕터는 에러가 최대한 발생하지 않도록 시큐어코딩하는 방법에 대하여 나와있다.

재할당 최소화, 전역함수 사용 최소화, 순수함수 사용 등등

일단 코드는 사람이 작성하는 것이기때문에 에러의 대부분은 사람의 실수로 인해 발생한다.

코딩만 잘해도 사실 에러가 발생할 일이 현저히 줄어든다. 하지만 에러를 겪는 것은 개발자의 숙명이고, 해결할 때 얻을 수 있는 경험치라고 생각한다.

 

총평

타겟 독자는 내가 생각하기에 취준생/신입/주니어 개발자 대상인 것 같다.

읽으면서 한가지 아쉬웠던 점은 책 자체가 javscript 친화적으로 작성된 점인 것 같았다.

C계열 언어나 Java, Rust, Python(은 나온다)에 대한 디버깅이나 에러도 나왔었으면 좋겠지만... 그럼 책이 더 두꺼워졌겠지..

 

그리고 책이 컬러라 일단 좋았다. 인쇄비가 많이 들었겠지만, 핸디한 작은 사이즈에 개발할때 중요한 포인트들을 꾹꾹 눌러담은 느낌이다.

이 책에서 나와있는만큼 브라우저 디버깅을 잘 사용한다면 박수받을 프론트엔드 또는 웹 개발자가 될 수 있다.

4~5일정도 읽었는데 휘뚜루마뚜루 읽으며 검색할때 팁 등 인싸이트도 얻었다.

 

그리고 UX의 모니터링이나 로그 수집이란 개념을 몰랐다면 이 책을 읽고 한번 적용해 보길 바란다.

무료버전으로도 작은회사는 괜찮았던 기억이 있다.

 

코드를 작성하고 기능을 추가하는 개발자도 좋지만, 에러를 만났을때 빠르게 해결하는 능력도 가진 개발자가 되길 응원한다.

댓글