데이터 과학을 위한 소프트웨어 엔지니어링
도서+사은품 또는 도서+사은품+교보Only(교보굿즈)
15,000원 미만 시 2,500원 배송비 부과
20,000원 미만 시 2,500원 배송비 부과
15,000원 미만 시 2,500원 배송비 부과
1Box 기준 : 도서 10권
로그아웃 : '서울시 종로구 종로1' 주소 기준
이달의 꽃과 함께 책을 받아보세요!
1권 구매 시 결제 단계에서 적용 가능합니다.
알림 신청하시면 원하시는 정보를
받아 보실 수 있습니다.
북카드
키워드 Pick
키워드 Pick 안내
관심 키워드를 주제로 다른 연관 도서를 다양하게 찾아 볼 수 있는 서비스로, 클릭 시 관심 키워드를 주제로 한 다양한 책으로 이동할 수 있습니다.
키워드는 최근 많이 찾는 순으로 정렬됩니다.

작가정보
저자(글) 캐서린 넬슨(Catherine Nelson)
프리랜서 데이터 과학자. 이전에는 SAP Concur의 수석 데이터 과학자로서 프로덕션 머신러닝 애플리케이션을 작성했다. 머신러닝의 설명 가능성, 모델 분석, 개인정보보호 등에 관심이 많다. 《살아 움직이는 머신러닝 파이프라인 설계》(한빛미디어, 2021)를 공저했고, 시애틀 PyLadies의 조직자이기도 하다.
플랫폼 기업의 빅데이터 서비스 조직에서 근무하고 있다. 업계 용어 중심으로 쓰면 나태하게 보일까 걱정되고, 모두 우리말로 바꾸자니 전문가들과 소통이 어렵지는 않을까 하는 걱정 사이에, 이제는 어떻게 하면 챗GPT보다 더 나은 가치를 제공할 수 있는지까지 고민을 하나 더 얹어 번역하고 있다. 이런 고민을 책 문장마다 잘 녹여내기 바라며 옮기지만, 그에 대한 인정은 독자들 몫이니 마음을 내려놓는 연습도 하고 있다. 옮긴 책으로는 《파이썬 데이터 사이언스 핸드북(개정판)》, 《실전! 파이토치 딥러닝 프로젝트》, 《강화학습/심층강화학습 특강》, 《실전! 텐서플로 2를 활용한 딥러닝 컴퓨터 비전》 등이 있다.
목차
- 옮긴이 머리말 xi
베타리더 후기 xiii
시작하며 xvi
감사의 글 xxii
표지에 대하여 xxiii
CHAPTER 1 좋은 코드란 무엇인가? 1
1.1 좋은 코드가 왜 중요한가? 2
1.2 변화하는 요구사항에 대응하기 3
1.3 간결성 3
__1.3.1 같은 일을 반복하지 말라(DRY 원칙) 5
__1.3.2 장황한 코드를 피하라 6
1.4 모듈성 7
1.5 가독성 9
__1.5.1 표준과 규칙 9
__1.5.2 이름 10
__1.5.3 코드 정리 11
__1.5.4 문서화 11
1.6 성능 12
1.7 안정성 12
__1.7.1 오류와 로깅 13
__1.7.2 테스트 13
1.8 요약 14
CHAPTER 2 코드 성능 분석 17
2.1 성능 개선 기법 18
2.2 코드 시간 측정 20
2.3 코드 프로파일링 23
__2.3.1 cProfile 23
__2.3.2 line_profiler 26
__2.3.3 Memray를 활용한 메모리 프로파일링 27
2.4 시간 복잡도 30
__2.4.1 시간 복잡도 추정 방법 30
__2.4.2 빅오 표기법 31
2.5 요약 34
CHAPTER 3 데이터 구조를 효율적으로 사용하기 35
3.1 파이썬 기본 데이터 구조 36
__3.1.1 리스트 36
__3.1.2 튜플 39
__3.1.3 딕셔너리 39
__3.1.4 집합 41
3.2 넘파이 배열 43
__3.2.1 넘파이 배열 기능 43
__3.2.2 넘파이 배열의 성능 고려사항 44
__3.2.3 대스크를 사용한 배열 연산 48
__3.2.4 머신러닝에서의 배열 50
3.3 팬더스 데이터프레임 51
__3.3.1 데이터프레임 기능 52
__3.3.2 데이터프레임의 성능 고려 사항 53
3.4 요약 55
CHAPTER 4 객체지향 프로그래밍과 함수형 프로그래밍 57
4.1 객체지향 프로그래밍 58
__4.1.1 클래스, 메서드, 속성 58
__4.1.2 직접 클래스 정의하기 61
__4.1.3 OOP 원리 64
4.2 함수형 프로그래밍 68
__4.2.1 람다 함수와 map() 69
__4.2.2 함수를 데이터프레임에 적용하기 70
4.3 어떤 패러다임을 사용할 것인가? 71
4.4 요약 72
CHAPTER 5 오류, 로깅, 디버깅 73
5.1 파이썬에서의 오류 73
__5.1.1 파이썬 오류 메시지 읽기 74
__5.1.2 오류 처리 75
__5.1.3 오류 일으키기 79
5.2 로깅 81
__5.2.1 무엇을 로깅할 것인가? 81
__5.2.2 로깅 설정 82
__5.2.3 로그 남기는 방법 83
5.3 디버깅 85
__5.3.1 디버깅 전략 86
__5.3.2 디버깅 도구 87
5.4 요약 93
CHAPTER 6 코드 포매팅, 린팅, 타입 검사 95
6.1 코드 포매팅과 스타일 가이드 96
__6.1.1 PEP8 97
__6.1.2 임포트 포매팅 98
__6.1.3 블랙을 사용해 자동으로 코드 포매팅하기 100
6.2 린팅 102
__6.2.1 린팅 도구 103
__6.2.2 IDE에서 린팅하기 106
6.3 타입 검사 107
__6.3.1 타입 주석 108
__6.3.2 mypy로 타입 검사하기 110
6.4 요약 111
CHAPTER 7 코드 테스트 113
7.1 왜 테스트를 작성해야 하는가? 114
7.2 언제 테스트할까? 115
7.3 테스트 작성 및 실행 방법 116
__7.3.1 기본 테스트 116
__7.3.2 예상치 못한 입력 테스트 118
__7.3.3 Pytest로 자동화된 테스트 실행하기 120
7.4 테스트 종류 123
__7.4.1 단위 테스트 123
__7.4.2 통합 테스트 124
7.5 데이터 검증 125
__7.5.1 데이터 검증 예제 125
__7.5.2 Pandera를 사용해 데이터 검증하기 126
__7.5.3 Pydantic을 이용한 데이터 검증 128
7.6 머신러닝을 위한 테스트 130
__7.6.1 모델 학습 테스트 131
__7.6.2 모델 추론 테스트 131
7.7 요약 132
CHAPTER 8 설계와 리팩터링 133
8.1 프로젝트 설계와 구조 134
__8.1.1 프로젝트 설계 시 고려사항 134
__8.1.2 머신러닝 프로젝트 예제 136
8.2 코드 설계 138
__8.2.1 모듈식 코드 139
__8.2.2 코드 설계 프레임워크 140
__8.2.3 인터페이스와 계약 141
__8.2.4 결합도 141
8.3 노트북을 확장성 있는 스크립트로 144
__8.3.1 왜 노트북 대신 스크립트를 사용하는가? 144
__8.3.2 노트북에서 스크립트 생성하기 145
8.4 리팩터링 148
__8.4.1 리팩터링 전략 149
__8.4.2 리팩터링 작업 예제 150
8.5 요약 152
CHAPTER 9 문서화 153
9.1 코드베이스 내에서의 문서 154
__9.1.1 이름 155
__9.1.2 주석 157
__9.1.3 독스트링 159
__9.1.4 Readme, 튜토리얼, 기타 장문의 문서 162
9.2 주피터 노트북에서의 문서화 163
9.3 머신러닝 실험에 대해 문서화하기 165
9.4 요약 167
CHAPTER 10 코드 공유: 버전 관리, 종속성, 패키징 169
10.1 깃을 사용한 버전 관리 170
__10.1.1 깃의 작동 방식 171
__10.1.2 변경사항 추적 및 커밋 172
__10.1.3 원격과 로컬 174
__10.1.4 브랜치와 풀 리퀘스트 175
10.2 종속성과 가상 환경 179
__10.2.1 가상 환경 180
__10.2.2 pip를 사용한 종속성 관리 182
__10.2.3 Poetry를 사용한 종속성 관리 183
10.3 파이썬 패키징 185
__10.3.1 패키징 기초 186
__10.3.2 pyproject.toml 188
__10.3.3 패키지 빌드 및 업로드 189
10.4 요약 191
CHAPTER 11 API 193
11.1 API 호출 194
__11.1.1 HTTP 메서드와 상태 코드 194
__11.1.2 SDG API에서 데이터 받아오기 195
11.2 FastAPI를 사용해 API 생성하기 199
__11.2.1 API 구성 200
__11.2.2 API에 기능 추가하기 203
__11.2.3 API에 요청하기 207
11.3 요약 209
CHAPTER 12 자동화 및 배포 211
12.1 코드 배포 212
12.2 자동화 예제 213
__12.2.1 프리-커밋 훅 214
__12.2.2 깃허브 액션 217
12.3 클라우드 배포 222
__12.3.1 컨테이너와 도커 223
__12.3.2 도커 컨테이너 구축 223
__12.3.3 구글 클라우드에 API 배포하기 226
__12.3.4 다른 클라우드에 API 배포하기 228
12.4 요약 228
CHAPTER 13 보안 231
13.1 보안이란 무엇인가? 231
13.2 보안 위험 233
__13.2.1 자격 증명, 물리적 보안, 사회공학적 기법 234
__13.2.2 타사 패키지 234
__13.2.3 파이썬 pickle 모듈 235
__13.2.4 버전 관리 위험 235
__13.2.5 API 보안 위험 236
13.3 보안 수칙 236
__13.3.1 보안 리뷰 및 정책 236
__13.3.2 보안 코딩 도구 237
__13.3.3 간단한 코드 스캔 238
13.4 머신러닝을 위한 보안 241
__13.4.1 ML 시스템 공격 241
__13.4.2 ML 시스템에서의 보안 수칙 243
13.5 요약 244
CHAPTER 14 소프트웨어 업계에서 일하기 247
14.1 개발 원칙 및 실전 247
__14.1.1 소프트웨어 개발 생애주기 247
__14.1.2 폭포수 소프트웨어 개발 방법론 249
__14.1.3 애자일 소프트웨어 개발 방법론 249
__14.1.4 애자일 데이터 과학 250
14.2 소프트웨어 업계에서의 역할 251
__14.2.1 소프트웨어 엔지니어 251
__14.2.2 QA 혹은 테스트 엔지니어 253
__14.2.3 데이터 엔지니어 254
__14.2.4 데이터 분석가 254
__14.2.5 제품 관리자 255
__14.2.6 UX 연구원 256
__14.2.7 디자이너 257
14.3 커뮤니티 258
__14.3.1 오픈소스 258
__14.3.2 이벤트에서 연설하기 260
__14.3.3 파이썬 커뮤니티 261
14.4 요약 262
CHAPTER 15 다음 단계 265
15.1 코드의 미래 267
15.2 코드에 담긴 당신의 미래 270
15.3 감사의 말 270
찾아보기 272
추천사
-
이 책은 데이터 과학자들이 오랫동안 찾고 있던 미싱 링크로서, 데이터 과학과 소프트웨어 엔지니어링의 간극을 훌륭하게 메워준다. 데이터 과학자들이 소프트웨어 엔지니어링 측면에서 직면하는 중요한 기술 격차를 메워주고, 코딩 실력을 새로운 차원으로 끌어올릴 수 있는 명확하고 실행 가능한 지침을 제공한다. 정말로 우리가 기다려왔던 책이다.
-
개개인의 작업을 프로덕션 수준으로 확장하는 비법을 쉽게 설명해주는 책이다. 데이터 과학자이든, 개발자나 경영진이든 책을 통해 대규모 데이터 서비스를 이해할 수 있게 될 것이다. 스타트업에서 대규모 기업 데이터에 이르기까지 저자의 모범 사례를 따르면 데이터 프로젝트의 성공을 보장할 수 있다.
-
데이터 과학 기술을 아이디어 단계에서 완전히 구현된 시스템으로 발전시키고자 하는 사람이라면 반드시 읽어야 할 책. 코딩의 가장 중요한 엔지니어링 측면을 안내하는 훌륭한 가이드다. 이 책을 몇 년 전에 읽었더라면 수많은 시간을 절약할 수 있었을 것이다! 이 책을 강력히 추천한다.
책 속으로
코드를 작성하는 것은 완벽하게 설계되고 계획이 확정된 다음 건설에 들어가는 다리를 건설하는 것과는 다르다. 데이터 과학 프로젝트 등에서 코드를 작성할 때 변하지 않는 한 가지 원칙은 프로젝트를 수행하는 동안 변경사항이 발생할 수 있다는 점을 예상해야 한다는 것이다. (…) 적응력은 코드베이스가 커질수록 더 중요해진다. 소규모 스크립트 하나라면 변경사항을 반영하기 간단하다. 그렇지만 프로젝트 규모가 커지고 여러 스크립트나 노트북으로 나뉘어 서로 의존하는 형태를 갖게 되면 변경하기 더 복잡하고 어려워질 수 있다. 처음부터 코드를 잘 짜두면 큰 프로젝트에서 코드를 수정하기 쉬워질 것이다. (3쪽)
리스트에 요소를 추가할 때마다 메모리에서 추가 공간을 차지한다. 파이썬은 원래 리스트 길이보다 여유 있게 메모리 공간을 할당하지만 이 공간이 가득 차면 전체 리스트는 연속된 공간을 더 확보할 수 있는 새로운 메모리 위치로 복사되어야 한다. 리스트의 마지막에 요소를 추가하는 것은 O(1)의 복잡도를 갖지만 추가 할당된 공간까지 가득 차면 리스트를 복사해야 하므로 약간의 오버헤드가 수반된다. (…) 리스트에 특정 길이까지 요소가 추가될 것을 안다면 .append()가 가장 효율적인 방법은 아닐 것이다. 리스트 컴프리헨션(list comprehension)을 사용하거나 초깃값으로 0을 채운 정확한 길이의 리스트를 생성한 다음 값을 업데이트하는 것이 더 나을 것이다. 리스트의 시작과 마지막에 아이템을 추가하고자 한다면 collections 모듈의 양방향큐 deque 데이터 구조를 사용할 수 있다. (37~38쪽)
다형성(polymorphism)은 서로 다른 클래스에 대해 동일한 인터페이스를 가질 수 있어 코드를 단순화하고 반복을 줄일 수 있음을 뜻한다. 즉, 두 개의 클래스가 유사한 결과를 만들지만 내부 동작은 서로 다른 같은 이름의 메서드를 가질 수 있다. 이 두 개의 클래스는 부모와 자식 클래스일 수도 있고 서로 아무 관계가 없을 수도 있다. / 사이킷런은 다형성의 대표적인 예다. 모든 분류기는 다른 클래스로 정의되었더라도, 특정 데이터에 분류기를 훈련시키는 fit이라는 같은 이름의 메서드가 있다. 다음은 특정 데이터에 두 개의 서로 다른 분류기를 훈련시키는 예제다. (67쪽)
Pydantic을 사용하면 실행 시간에 데이터를 검증할 수 있다. 이 도구는 파이썬 커뮤니티에서 점점 인기를 얻고 있는 믿을 수 없을 만큼 유용한 라이브러리다. Pydantic은 데이터를 검증하기 위해 6.3절에서 소개했던 타입 주석을 사용한다. 그렇지만 mypy처럼 정적 분석 도구는 아니다. 대신 코드를 실행할 때 검증하기 때문에 별도의 도구를 실행시킬 필요가 없다. 이는 코드를 API에 배포할 경우 특히 유용하다. (…) Pydantic은 데이터를 검증하기 위해 데이터 스키마 개념을 사용한다. 먼저 데이터의 포맷을 기술한 스키마를 정의한다. 그런 다음 그 스키마를 사용해 새로운 데이터가 올바른 포맷인지 검사하면 된다. (128쪽)
코드를 작성할 때마다 수많은 이름을 선택해야 한다. 변수, 함수, 노트북, 프로젝트, 이 모든 것은 이름이 필요하다. 좋은 이름을 짓는 것은 코드를 가독성 있게 만드는 데 중요한 부분이다. 누군가가 여러분의 코드를 사용하고자 한다면 코드를 변경하기 전에 전체를 훑어볼 것이다. 여러분이 사용하는 이름은 코드가 해야 할 일을 전달할 것이다. 예를 들어 download_and_clean_monthly_data라는 함수 이름이 process_data라는 이름의 함수보다 더 많은 정보를 전달한다. 주피터 노트북 이름을 untitled1.ipynb로 지으면 절대 안 된다. 이 이름은 노트북에 무엇이 담겨 있는지에 대해 어떤 정보도 전달하지 않기 때문이다. 나중에 그 노트북에서 필요한 것이 있더라도, 좋은 이름 없이는 찾을 수 없을 것이다. (155쪽)
출판사 서평
데이터 과학은 코드에서 이뤄진다
협업이 필요한 대규모 프로젝트에서는 데이터 과학자에게도 유지보수성이 높은 코드를 작성하는 것이 요구된다. 그럼에도 데이터 과학자는 교육 과정에서 소프트웨어 엔지니어링 역량을 높일 기회가 많지 않고, 현업에서 배우고 싶더라도 마땅한 방법을 찾기 어려운 실정이다.
이 책은 소프트웨어 엔지니어링의 모범 사례를 데이터 과학에 적용하는 방법을 다룬다. 성능, 객체지향, 테스트, 오류 처리, 린팅, 문서화, 버전 관리, 패키징, API, 배포 등 일반적인 소프트웨어 엔지니어링 기술을 파이썬 예제를 통해 설명한다. 데이터 과학자에게 친숙한 예제를 통해 더 나은 파이썬 코드를 작성하는 방법을 배울 수 있고, 이는 개발자와의 협업 및 프로덕션 환경에서 작업하는 데에 큰 무기가 된다.
통계나 머신러닝 기법에 정통한 데이터 과학자조차 소프트웨어 엔지니어링에 대한 이해가 부족해 한계에 부딪히곤 한다. 대규모 프로젝트를 성공으로 싶다면, 이 책이 거대한 간극을 메워주는 미싱 링크 역할을 해줄 것이다.
대상 독자
● 코딩 스킬을 향상하고자 하는 데이터 과학 유관 분야 종사자
● 데이터 과학 학위를 막 마쳤거나 독학으로 배운 주니어 데이터 과학자
● 수학/과학 등 다른 분야에서 데이터 과학으로 전환 중인 분야 입문자
● 개발자와의 협업이나 교류가 잦은 관련 업무 종사자
주요 내용
● 효율적이고 강력한 파이썬 코드 작성하기
● 데이터 구조와 객체지향 프로그래밍 이해하기
● 테스트, 오류 처리, 로깅 모범 사례
● 안전한 코드 작성하기
● 데이터 과학 코드를 더 큰 코드베이스와 통합하기
● 코드를 명확하고 능숙하게 문서화하기
● 코드 패키징 및 공유하기
● API 작성 방법 배우기
● 소프트웨어 엔지니어와 효과적으로 협업하기
● 데이터 과학 프로젝트를 프로덕션 단계로 전환하기
기본정보
ISBN | 9791194587002 | ||
---|---|---|---|
발행(출시)일자 | 2025년 02월 28일 | ||
쪽수 | 300쪽 | ||
크기 |
190 * 247
* 20
mm
/ 832 g
|
||
총권수 | 1권 | ||
원서(번역서)명/저자명 | Software Engineering for Data Scientists/Catherine Nelson |
Klover 리뷰 (4)
구매 후 리뷰 작성 시, e교환권 200원 적립
문장수집 (0)
e교환권은 적립 일로부터 180일 동안 사용 가능합니다. 리워드는 작성 후 다음 날 제공되며, 발송 전 작성 시 발송 완료 후 익일 제공됩니다.
리워드는 한 상품에 최초 1회만 제공됩니다.
주문취소/반품/절판/품절 시 리워드 대상에서 제외됩니다.
판매가 5,000원 미만 상품의 경우 리워드 지급 대상에서 제외됩니다. (2024년 9월 30일부터 적용)
구매 후 리뷰 작성 시, e교환권 100원 적립
-
반품/교환방법
* 오픈마켓, 해외배송 주문, 기프트 주문시 [1:1 상담>반품/교환/환불] 또는 고객센터 (1544-1900) -
반품/교환가능 기간
상품의 결함 및 계약내용과 다를 경우 문제점 발견 후 30일 이내 -
반품/교환비용
-
반품/교환 불가 사유
(단지 확인을 위한 포장 훼손은 제외)
2) 소비자의 사용, 포장 개봉에 의해 상품 등의 가치가 현저히 감소한 경우
예) 화장품, 식품, 가전제품(악세서리 포함) 등
3) 복제가 가능한 상품 등의 포장을 훼손한 경우
예) 음반/DVD/비디오, 소프트웨어, 만화책, 잡지, 영상 화보집
4) 소비자의 요청에 따라 개별적으로 주문 제작되는 상품의 경우 ((1)해외주문도서)
5) 디지털 컨텐츠인 ebook, 오디오북 등을 1회이상 ‘다운로드’를 받았거나 '바로보기'로 열람한 경우
6) 시간의 경과에 의해 재판매가 곤란한 정도로 가치가 현저히 감소한 경우
7) 전자상거래 등에서의 소비자보호에 관한 법률이 정하는 소비자 청약철회 제한 내용에 해당되는 경우
8) 세트상품 일부만 반품 불가 (필요시 세트상품 반품 후 낱권 재구매)
9) 기타 반품 불가 품목 - 잡지, 테이프, 대학입시자료, 사진집, 방통대 교재, 교과서, 만화, 미디어전품목, 악보집, 정부간행물, 지도, 각종 수험서, 적성검사자료, 성경, 사전, 법령집, 지류, 필기구류, 시즌상품, 개봉한 상품 등 -
상품 품절
-
소비자 피해보상 환불 지연에 따른 배상
2) 대금 환불 및 환불지연에 따른 배상금 지급 조건, 절차 등은 전자상거래 등에서의 소비자 보호에 관한 법률에 따라 처리함
상품 설명에 반품/교환 관련한 안내가 있는 경우 그 내용을 우선으로 합니다. (업체 사정에 따라 달라질 수 있습니다.)
기분 좋은 발견
이 분야의 베스트
이 분야의 신간
-
50개의 프로젝트로 완성하는 파이썬 업무 자동화10% 19,800 원
-
우아한 C 언어 코딩 패턴10% 28,800 원
-
닥터, 코드를 만나다30,000 원
-
리액트의 정석 with 타입스크립트34,000 원
-
코딩 자율학습 잔재미코딩의 파이썬 데이터 분석 입문10% 23,400 원
<데이터 과학을 위한 소프트웨어 엔지니어링>의 저자는
프로그래밍 언어에서 강조되는 체계적인 코드 작성 원칙을 데이터 과학에도 적용합니다.
그래서 이 책은 단순한 코드 작성법을 넘어, 견고하고 유지보수하기 쉬운 코드 설계 원칙에 중점을 둡니다.
초보 개발자부터 실무자까지 폭넓은 독자층을 대상으로 하며,
특히 데이터 과학을 실무에 적용하려는 이들에게 유용한 가이드를 제공합니다.
저자는 책을 14개의 장으로 구성하였으며, 저는 그중 1장, 2장, 7장에 집중하여 읽었습니다.
이 세 장은 중요한 주제인 코드 품질, 성능 최적화, 테스트 자동화와 밀접한 관련이 있기 때문입니다.
또한, 이 세 장은 코드 품질 > 성능 최적화 > 신뢰성 및 안정성이라는 논리적인 흐름을 따릅니다.
간단히 요약하면
1장에서는 좋은 코드의 원칙을 이해하여 유지보수성과 확장성이 높은 코드를 작성하는 방법을 배울 수 있습니다.
2장에서는 성능 분석을 통해 실행 속도를 최적화함으로써 대용량 데이터 처리에서도 효율적인 코드를 구현할 수 있습니다.
7장에서는 코드 테스트 기법을 활용하여 신뢰할 수 있는 데이터 과학 파이프라인을 구축하는 방법을 다룹니다.
따라서, 실무에서 중요한 요소를 고려했을 때 1, 2, 7장이 핵심적이라 생각합니다.
물론, 다른 장들에 비해서 빨리 적용가능하다는 점도 있습니다.
가령 8장의 설계와 리팩터링과 같이 훨씬 고민하고 생각해야하는 챕터들은
시간을 더 들여서 공부해야 하기에 1,2,7장에 먼저 집중을 한것도 있습니다.
다만, 읽는 목적에 따라 우선순위를 다르게 설정할 수도 있습니다.
코드 품질을 우선한다면: 1, 7, 8장
코드 성능을 우선한다면: 2, 3, 5, 6장
협업과 유지보수를 우선한다면: 9, 10, 12장
이처럼 목적에 따라 다양한 조합을 선택하여 읽으면 될 것입니다.
Chapter 1에서는 좋은 코드의 정의와 그 조건을 설명합니다.
저자는 좋은 코드의 핵심 요소로 가독성, 모듈성, 간결성을 강조하며,
DRY(Don't Repeat Yourself) 원칙과 같은 소프트웨어 엔지니어링의 주요 개념을 적용할 것을 제안합니다.
이를 통해 초보 개발자도 코드의 재사용성을 높이고 유지보수를 용이하게 할 수 있도록 유도합니다.
특히 코드 스타일과 문서화의 중요성을 강조하는 부분은
협업 환경에서 필수적인 요소임을 다시 한번 상기시켜 줍니다.
또한, 데이터 과학 프로젝트는 잦은 변경과 높은 복잡성을 수반하므로,
가독성, 모듈성, 안정성, 성능과 같은 요소가 더욱 중요합니다.
이 장에서 다루는 원칙들은 이후 챕터에서 제시하는 기술적 내용을 이해하는 데 기반이 됩니다.
Chapter 2에서는 코드 성능 분석과 최적화에 대해 다룹니다.
데이터 과학 프로젝트에서는 대량의 데이터를 다루므로 성능 최적화가 필수적입니다.
이를 위해 이 장에서는 코드 실행 속도를 분석하는 방법과 성능 저하를 방지하는 기법을 설명합니다.
책에서는 cProfile, line_profiler, Memray 등의 도구를 활용한 프로파일링 기법을 소개하며,
이를 통해 코드 실행 시간을 분석하고 병목 현상을 찾아내는 방법을 배울 수 있습니다.
또한, 시간 복잡도와 빅오 표기법을 활용한 성능 예측 개념을 다뤄 데이터 처리 최적화의 기반을 제공합니다.
초보 개발자도 쉽게 따라 할 수 있도록 실습 중심의 예제를 포함해,
실제 프로젝트에서 성능 최적화가 어떻게 적용되는지 직관적으로 이해할 수 있도록 구성했습니다.
Chapter 7에서는 코드 테스트의 중요성을 다룹니다.
이 장에서는 단위 테스트와 통합 테스트의 개념을 설명하고,
Pytest를 활용한 테스트 자동화 방법을 소개합니다.
또한, Pandera와 Pydantic 라이브러리를 활용한 데이터 검증 기법을 통해
데이터 무결성을 유지하는 방법을 설명합니다.
데이터 과학 코드는 단순한 분석용 스크립트가 아니라 재현 가능하고 신뢰할 수 있어야 하며,
예기치 않은 입력에도 견고하게 동작해야 합니다.
이를 위해 다양한 테스트 기법을 활용하여 데이터 품질과 코드의 정확성을 보장하는 방법을 다룹니다.
특히, 머신러닝 모델의 학습 및 추론을 테스트하는 방법까지 포함되어 있어 매우 유용합니다.
이 책은 데이터 과학 코드 품질 향상을 원하는 이들에게 훌륭한 가이드가 될 것입니다
체계적인 코드 작성 방법을 배우고자 하는 사람들에게 강력히 추천합니다.
특히 초보 개발자도 단계적으로 학습할 수 있도록 구성되어 있어 더욱 추천합니다.
#데이터과학을위한솦트웨어엔지니어링, #캐서린넬슨, #김정인, #제이펍, #JPub, #데이터과학, #소프트웨어엔지니어링, #소프트웨어, #개발자
제이펍 출판사로부터 서평단 선발이 되어 책을 받았다.
데이터 과학자들을 대상으로 이루어져 있지만, 코드를 작성하는 누구에게나 유용할만한 도서이다.
이 책은 파이썬 코딩을 가르쳐 주는 것이 아니다.
이미 파이썬을 실무로 다루는 분들을 대상으로 진행된다.
책에 등장하는 파이썬 코드가 그리 난이도가 높진 않기에 코드를 읽을줄 안다면 도전해볼만한 책이다.
책에서 주 된 목적은 3가지이다.
1.) 협업
2.) 클린 코드
3.) 설계와 리팩터링
책의 전반적인 내용은 쉬운편이지만, 협업 프로젝트를 해보지 않은 분들은 공감하기 어려운 부분들이 몇 있다.
이 책의 독자는 ->
1.) 파이썬으로 클린코드를 배우고 싶은 자
2.) 혼자가 아닌 협업 프로젝트에 연관있는 자
3.) 데이터 과학자의 사고 마인드가 궁금한 자
필자가 책을 읽어보고 느낌점은 꼭 데이터 과학자가 아니더라도 파이썬 클린 코드와 협업에 대해 알고 싶다면 선택할만한 책 이라는 것이다.
---
"제이펍 출판사의 도서 지원을 받아 작성한 리뷰입니다."
---
https://youtube.com/@Certa6
제 유튜브 채널입니다.
도움이 됐다면, 구독 부탁합니다!
주변에 제 블로그, 유튜브를 알려주시면 감사하겠습니다~! :)
Thank you for watching the blog.
Please subscribe! I would appreciate it if you could share the blog around you.
#제이펍 #제이펍출판사 #출판사 #서평단 #베타리더 #hackers #hacker #hacking #anonymous #cybersecurity #kalilinux #programming
#hack #hacked #technology #cybercrime
#linux #ethicalhacking #coding
#programmer #computerscience
#malware #hacks #bhfyp #redteam #tryhackme #hackthebox
내용 구성이 좋아서 신입 때 한 번 보고 끝내는 책이 아니라, 상기했듯 지식 체계화 목적으로 꾸준히 꺼내볼 만하다는 점에서 소장 가치가 높은 책입니다.