본문으로 바로가기
반응형

본 리뷰는 한빛미디어의 도서 서평단 <나는 리뷰어다 2021> 프로그램의 일환으로, 무상으로 도서를 증정 받고 작성된 리뷰임을 고지합니다. 

지나가는 대학생을 대여섯쯤 붙잡고 Python을 아느냐고 물어보면, 그들 중 서넛은 알고 있으며, 그 중에서도 한 두명은 Python을 사용해본 경험이 있을 것입니다. 대학에서 이제 Python은 교양의 영역으로 접어들었기 때문입니다.

 

제가 재학중인 학교에서도, 이미 모든 학부생에게 기초 교양으로 Python 및 데이터과학 관련 과목을 지정하였습니다. 또한 상당수의 타 대학에서도 Python을 활용한 여러 교양/전공 과목을 개설중인 것으로 알고 있습니다. 즉, Python 프로그래밍은 이미 대학 교양 영역의 일부가 되었으며, 요즘 대학생들의 상당수는 Python Idle에서 print("hello world!") 정도는 타이핑 해보았을 것이라 기대할 수 있겠습니다.

 

저 역시 처음 Python IDLE를 켜고, 기초 교재를 따라 코드를 타이핑 해본지도 몇 년이 지났습니다. 물론 그에 비해 실력은 썩 좋지 않고, 아직도 검색을 통해 겨우 겨우 원하는 것을 구현하는 것에 그치는 정도입니다. 하지만, 여러 개발 프로젝트에 참여하는 것 이외의, 어떠한 방법으로 스스로의 Python 실력을 업그레이드 할 수 있을지에 대한 의문은 이미 오래 전부터 가지고 있었습니다.

 

거의 700~800페이지에 육박하는, 시중의 두껍고 무거운 교재는 중급자 이상에게 유효한 내용을 충분히 담고 있을 것이라 기대할 수 있습니다. 하지만, 바쁜 일상에서 이러한 교재를 모두 소화한다는 것은 현실적으로 어려운 일이고, 보통 '백과사전'을 활용하는 형식으로 그때그때 목차를 뒤져보게 되는 것이 대부분의 활용법이 됩니다. 즉, 책 전체를 꼭꼭 씹어서 소화하고, 내것으로 온전히 만들기에는 많은 애로사항이 따릅니다. 

헌데, 이 책은 조금 다릅니다. 겨우 300페이지 남짓한 책인데, 목차 하나하나를 살펴보니 재밌어보이는 주제가 너무 많고, 실제로 한 챕터씩 읽어갈때마다 새로운 지식이 쏙쏙 들어옵니다. 게다가, 걔중에는 바로 프로젝트에 활용할만한 내용도 많습니다.

 

책의 서문에 따르면, 대상 독자는 이미 파이썬 개발 경험이 어느정도 있는 파이썬 개발자이며, 대상 독자는 본 책을 통해 파이썬을 더 잘 활용할 수 있는 방법을 배울 수 있습니다. 특히 파이썬 코드, 애플리케이션, 테스트, 이식, 확장 등에 대한 노하우를 엿볼 수 있습니다. 그것도, 20년 간의 개발 경력을 가진 저자의 노하우를 말이죠.

 

파이썬 모듈, 라이브러리, 프레임워크를 가져다가 사용한 적이야 많지만, 이들이 어떤 구조로 되어 있으며, 내부적으로 어떻게 연결되어 돌아가는지, 스스로 개발하여 사용하려면 어떠한 형태를 취하여야 하는지, 깊게 고민해본적도, 실제로 해본 적도 없었습니다. 2장을 읽고 나니, 이미 충분한 지식을 얻게 되었고, 동작 원리도 알 수 있게 되었습니다.

 

요즘 대부분 라이브러리의 문서화는 스핑크스를 사용하여 진행된다고 합니다. 본 책에서도 문서 작업의 자동화를 위한 스핑크스 사용법을 소개하고, 좀 더 편리하게 응용하는 방법까지 소개하고 있습니다. 사실 스핑크스가 무엇인지, 또는 스핑크스를 사용하는 법을 알려주는 포스팅은 이미 웹 상에도 많습니다. 하지만, 이렇게 응용법을 한 눈에 알려주는 글은 그리 많지 않습니다. 특히 국문으로 된 글은 더더욱이요.

 

저자는 1~13장 까지 차근차근 읽는 것보다, 관심 있거나 현재 프로젝트와 관련 있는 챕터부터 먼저 읽는 것도 좋다고 말합니다. 이미 위에서 목차를 훑어보신 분들은 벌써 어느 정도 관심있는 챕터가 생기셨을텐데요. 만약 내가 현재 진행하는 별도 프로젝트가 없거나, 위 주제들을 어떻게 적용해야 될지 감조차 잡히지 않는 상황이라면, 처음부터 끝까지 쭈욱 읽어 나가는 것도 추천합니다. 

이 경우, 많은 부분들이 이해되지 않을 수 있습니다. 저 또한, 책을 1회독 하며, 이해되지 않는 부분이 곳곳에 존재하였습니다. 이 경우에는 인덱스 포스트잇을 활용합시다. 추후에 포스트잇을 붙인 부분을 좀 더 살펴보고, 찾아보고, 이해하도록 합니다. 시간이 많다면 2회독, 3회독과, 키워드 검색을 병행하여 이해도를 높이는 것도 좋을 것 같습니다.

 

몇 가지 인상적인 부분도 따로 소개합니다. 이미 파이썬을 어느정도 써보신 분들이라면, 타인이 개발한 오픈소스 프로그램을 본인의 프로젝트에 가져와서 사용하는 경우가 많았을 것입니다. Python은 setup.py 파일을 통해 손쉬운 외부 파이썬 프로그램 설치를 가능케 합니다. 내가 직접 개발한 프로그램의 배포를 실현하기 위하여, 또는 외부 라이브러리 등을 설치할때 오류가 발생할 경우, 단순히 오류를 구글링해서 해결하는 것이 아니라, 좀 더 깊은 이해를 바탕으로하여 해결할 수 있도록 하기 위하여, 본 챕터는 파이썬 개발자에게 반드시 필요한 부분 중 하나라고 생각합니다.

 

개발을 직업으로 삼고 있는 분들이 아닌, 아직 학부생 레벨의 개발자라면 단위 테스트가 많이 낯설 것으로 생각됩니다. 저 또한, 프로그램 개발에 있어서 자동화된 단위 테스트를 행한다는 것이 조금 낯설었습니다. 하지만, 본 챕터를 읽은 이후에는 조금 더 많은 것이 와닿습니다. 최근에 아예 TDD 방법론을 바탕으로 초급 웹개발을 풀스택으로 진행하는 도서의 베타테스터로 참여한 적이 있었습니다. 만약 본 책의 해당 챕터를 읽은 후였다면, 훨씬 더 와닿는 상태로 리딩을 진행할 수 있었을 것이란 생각도 들었습니다.

 

대부분의 경우, 합리적으로 저렴한 비용을 지불하여 테스트를 진행할 수 있다는 부록 인터뷰를 보고... 다시 한번 중요성을 실감합니다. 책의 곳곳에 실용적인 인터뷰가 수록되어 있어, 이 부분도 좋았습니다. 인상적인 내용도 많았구요.

 

표준 라이브러리 모듈 중 하나인 itertools에 관한 내용입니다. 불과 어제도, 프로젝트를 진행하던 중 2차원 리스트 내부에 혼재된 여러 리스트를 한방에 1차원으로 통합할 방법을 고심하다가, 결국 검색을 통해 itertools의 chain 메서드를 활용하여 해결했습니다. 어디서 본 것 같다는 생각이 들었는데, 여기 그대로 있네요. 이때, 본 책을 빠른 시일 내에 여러번 읽고 내것으로 만들어야겠다는 생각을 한번 더 하게 되었습니다.

 

성능 최적화 파트에서도 여러 사례를 소개합니다. 예컨대 위에 나온 특정 요소가 list 내에 있는지 확인하는 방법에 대한 구현 방법입니다. 훨씬 효율적인 방법으로 구현이 가능함에도, 저 역시 대부분의 케이스에서 저런 비효율적인 코딩을 해왔던 것 같습니다. 당장, 지금 하고 있는 프로젝트에서 스스로 코딩하던 '여러 짓'...들이 비효율적이란걸 깨닫게 되는 부분입니다. 깨달음이 조금씩 깊어져갑니다.

 

아직 초급 수준에 불과한 학부생 개발자이지만, 이런 실력에도 불구하고, 많은 도움을 받을 수 있었던 책이었습니다. 책의 여러 토픽에 대해 어느 정도 알고 계신 분들이라면, 또 다른 시야로 더 많은 도움을 받을 수 있을 것이란 확신이 듭니다.

 

본인의 Python 레벨을 한 단계 더 끌어올리고 싶으신 분들이라면, 

또는 책의 부제 "파이썬 작동 원리에서 확장, 테스트, 배포, 최적화까지"를 보고, 관심이 동하신 분들이라면,

반드시 읽어보시길 강력 추천드립니다! 

반응형