《데이터 과학을 위한 소프트웨어 엔지니어링》 서평단에 당첨되어 책 리뷰를 진행하게 되었습니다.
어떻게 해야 회사 동료분들께 내가 하는 일을 잘 설명할 수 있을까?
저는 위와 같은 내용에 대해 갈증이 있었는데 마침 좋은 책을 추천 받고 읽을 수 있게 되었습니다.
짧은 소감
읽고 느낀 점을 한 줄로 표현하자면 "주니어 데이터 사이언티스트의 길라잡이" 라고 표현할 수 있을 것 같습니다.
주니어의 경우, 열심히는 하지만 메타 인지가 잡혀있지 않아 무엇을 열심히 해야하는지를 잘 알지 못해서 삽질을 많이 하게 되는 것 같은데요. (저는 일단 그렇습니다... ㅎ ㅜ)
데이터 과학에 필요한 소프트웨어 엔지니어링이 무엇이 있는지 개념을 언급하여 주고,
관련해서 참고할만한 서적이 어떤 것들이 있는지 소개해주기 때문에 길라잡이로써 너무 좋은 책이었습니다.
다만, 정말 가볍게 언급만 하고 넘어가기 때문에 주니어가 아니시거나 또는 깊은 내용을 바라시는 분들께는 맞지 않을 수 있을 것 같습니다.
목차별 리뷰
1. 좋은 코드란 무엇인가?
《데이터 과학을 위한 소프트웨어 엔지니어링》 에서 다룰 각 챕터에 대한 소개입니다.
좋은 코드를 작성하는 원칙에 대해 알고 싶다면 아래의 책을 추천한다고 합니다.
《실용주의 프로그래머(20주년 기념판)》(인사이트, 2022)
《A Philosophy of Software Design》(Yaknyam Press, 2021)
2. 코드 성능 분석
코드 성능 개선을 위해 어떤 부분을 고려하면 좋을지와 코드 프로파일링에 대해 언급합니다.
코드 프로파일링은 미처 생각하지 못했던 부분이었어서 재밌었습니다.
3. 데이터 구조를 효율적으로 사용하기
파이썬 기본 데이터 구조와 넘파이 배열, 판다스 데이터 프레임을 언급합니다.
책 전반적으로 개념에 대해 언급만 하고 넘어가는 느낌이기 때문에, 깊은 내용을 알고 싶으시다면
책에서 추천한 참고 문헌들을 읽어보면 좋을 것 같습니다.
넘파이 배열보다 더 빠른 연산을 원한다면 대스크를 사용하면 된다고 하던데 그런게 있는지 처음 알았네요
4. 객체지향 프로그래밍과 함수형 프로그래밍
Object-Oriented Programming와 Functional Programming에 대해 언급합니다.
개념만 가볍게 짚기 때문에 실제로 필자가 어떻게 활용하는지는 잘 나와있지 않아 아쉬웠던 챕터 입니다.
5. 오류, 로깅, 디버깅
오류 예외 처리, 로깅의 종류, 디버거 사용법 들을 언급합니다.
개인적으로는 관련 주제에 대해 잘 모른 상태로, 필요할 때마다 검색을 통해 알음알음 사용해왔는데,
어떤 코드를 사용하는지 적혀있어 좋았습니다.
6. 코드 포메팅, 린팅, 타입 검사
매번 신경쓰기 어려운데, 좋은 라이브러리들이 있어 정말 다행인 것 같습니다.
Formatter - Black
Linter - Ruff
타입 검사 도구 - mypy
깃 액션을 통해 자동 적용하는건 12장에 나와있네요.
7. 코드 테스트
코드 테스트를 위한 pytest,
데이터 검증을 위한 pandera, pydantic 등을 언급합니다.
ML 테스트에 대해서도 가볍게 언급하는데, 너무 가볍게 언급하기 때문에 어떤 내용인지 알기 위해서는 책에서 추천해준 글을 읽어보아야할 것 같습니다.
8. 설계와 리팩터링
ML 프로젝트 구조, 코드 설계(인터페이스, 결합도 등), 리팩터링 등을 언급합니다.
마찬가지로 좋은 책들을 많이 추천해주니 참고하면 좋을 것 같습니다.
9. 문서화
코드 주석, 독스트링 부터 실험에 대한 정리, 그리고 이를 위한 좋은 툴 ( ex. wandb) 등을 소개해줍니다.
사실 책만 보고서는 너무 가볍게 넘어갈 수 있을 것 같은데, 정말 중요한 내용이기 때문에 너무 가벼워보여도
소개해준 라이브러리와 개념을 검색 한번 씩 해보면 좋을 것 같습니다.
10. 코드 공유: 버전 관리, 종속성, 패키징
git, poetry, PyPI에 패키지 업로드 하는 방법 등을 언급합니다.
poetry 사랑합니다.
11. API
Rest 등의 라이브러리로 API를 받아오는 것과 FastAPI로 API를 생성하는 것을 가볍게 다룹니다.
12. 자동화 및 배포
깃 액션과 도커 빌드, 클라우드에 API 배포하는 것에 대한 언급을 해줍니다.
이런게 있다는 걸 알았으니 이제 찾아보고 검색하면서 공부해보면 좋을 것 같습니다.
13. 보안
패키지가 합법인지 아닌지 확인할 수 있다는 점.
ONNX가 pickle 저장 보다 안전하다는 점.
보안 취약점을 스캐닝 해주는 bandit, pip-audit 등의 라이브러리가 있다는 점.
(pip-audit은 requirements 만 본다고 하네요)
등등 새롭게 알게된 사실이 많았습니다.
14. 소프트웨어 업계에서 일하기
직무가 어떤 것들이 있는지 몇 가지 알려줍니다.
정리 및 소감
2년전에 읽었다면 메타 인지 든든한 상태로 공부할 수 있었을텐데 하는 생각이 드는 책이었습니다.
읽으면서 필요한 개념들을 인지할 수도 있었고
책 자체가 아주 가벼운 길라잡이이기 때문에, 열심히 각 잡고 읽기보다는 놓친 메타 인지들을 점검하며 필요한 부분을 보충하는 그런 계기가 되었으면 하는 책 이었습니다.
'근황 토크 및 자유게시판' 카테고리의 다른 글
[Cuda 11.8] unsupported Microsoft Visual Studio version! (0) | 2025.01.27 |
---|---|
[Win10, Win11] AMD 드라이버 충돌 문제 (4) | 2025.01.24 |
나의 삶의 지도 (3) | 2024.04.28 |
[React Native] Pre-commit에 Prettier, Eslint 추가 (1) | 2024.03.12 |
[ubuntu 20.04] AIHub Data 다운로드 - aihubshell (0) | 2024.03.08 |