총 12개의 챕터 중 첫 번째만 보고 이 글의 리뷰를 쓰는 것이 맞는지 의문이지만 그래도 동기 부여면에서 훌륭한 챕터여서 글을 남깁니다.
오늘 소개하고자 하는 책은 Micha Gorelick 과 Ian Ozsvald 가 쓴 “High Performance Python” (고성능 파이썬) 2판입니다.
(솔직히 내용 보고 산 건 아니고 회사에서 도서 지원비 남은 걸 써야 했는데 책 제목이 마음에 들어서 구매했습니다. 당연히 2달 간은 놓고 있다가 여유가 생겨서 역시나 제목이 마음에 들어서 읽기 시작했습니다.)
솔직히 저는 개발을 배우면서 항상 조급한 마음이었습니다. 그래서 빠르게 무언가를 배우고 넘어가는 과정이 꽤나 있었습니다. 그러다가 진짜 일을 하게 되면 체득하게 되는 경우가 많았습니다. 당연히 실전을 통해 배운 것도 중요하지만 제가 겪은 실전에서 얻은 부분만 탄탄해지는 경향이 있어서 제 기초가 불균형적이라는 생각이 요즘 부쩍 들었습니다.
파이썬을 이용해서 소프트웨어적으로 고성능을 이루려는 것이 이 책의 목적이기 때문에 “효율” 과 “효과” 라는 측면을 파고듭니다. 이 두 가지는 개발과 분석의 기초가 탄탄하게 있어야 가능하기 때문에 제 결점을 채우기 위해 좋은 책이다라고 느꼈습니다.
파이썬의 어떤 특성이 혹은 어떤 패키지가 특정 상황에서 고성능의 바탕이 될 수 있는지 알아볼 수 있습니다. 예를 들어, 파이썬은 GIL 때문에 코어를 여러개 활용하는 것이 쉽지 않습니다. GIL 은 현재 사용 중인 코어가 몇 개든, 한 번에 명령 하나만 실행하도록 강제하기 때문입니다. 이런 단점 때문에 파이썬을 사용하지 말라는 것이 아닙니다. 파이썬은 이런 단점에도 많은 장점을 지니고 있고 또 해결책도 갖고 있어 충분히 잘 활용하면 빠르고 효과적으로 개발을 할 수 있습니다. 아까의 문제는 multiprocessing module 이나 numpy, cython 등으로 해결할 수 있습니다. 책에서는 이런 해결책들에 대해 다룰 예정입니다.
또한 첫 번째 챕터에서 인상적인 내용은 개발 프로세스에 대한 언급입니다. 뛰어난 성과를 내는 파이썬 프로그래머가 되는 일반적인 방법을 다음과 같이 소개합니다.
- 작동하게 만들라
- 코딩 전 미리 계획 수립
- 충분히 좋은 해법을 만들라
- 제대로 만들라
- 테스트 코드 만들기
- 문서화
- 다른 팀원이 사용할 수 있도록 재현 방법 명시
- 빠르게 만들라
- 프로파일링, 컴파일링, 병렬화 등에 초점 맞추기
- 새로운 빠른 해법이 기존 테스트 코드에서 작동하는지 확인
마지막으로는 일하는 즐거움을 찾기 위해 축하할만한 일의 log 를 작성 하라는 것입니다. 개발자는 끊임없이 공부하고 나아가야 하는 직업입니다. 그렇기 때문에 동기부여는 굉장히 중요합니다. 일이 끝나고 혹은 주말에도 시간을 내서 새로운 기술에 대해 꾸준히 탐구하는 것은 쉽지 않습니다. 삶은 복잡하고 개인의 내외로 끊임없이 파도가 몰아치기 때문에 어느 순간이라도 의지는 꺾일 수 있다고 생각합니다. 그럴 때 내가 성취했던 일들을 보면 자신의 가치를 느끼고 내가 목표하는 것을 다시금 되새길 수 있을 것입니다.
요즘 회사에서 제 일에 그리 만족하지 못하고 있어서 처질 때가 있었는데 동료와 사이드 플젝을 따로 하면서 이를 포트폴리오에 올릴 때 스스로의 가치를 더욱 느끼곤 합니다.
첫 번째 장을 읽고 주저리주저리 써보았는데요. 다음 챕터들은 쭉 공부할 예정이지만 여기에 글을 남길지는 미지수입니다…