프로그래머를 위한 파이썬 - Book Review

실전 프로젝트로 배우는 소프트웨어 개발의 원리와 정석

Posted by Seunghwan Hong on November 26, 2020

이 글은 제이펍에서 출간한 “프로그래머를 위한 파이썬”의 서평입니다.

저는 머신러닝 업계에서 일하고 있는데, 회사 안에서든 오픈소스에서든 수 많은 Python 코드들을 보게 됩니다. 하지만 인터넷에 있는 많은 코드들이 제대로 구조화되어 있지 않고, Python이 ‘단순한 도구’ 그 이상도 이하도 아니게 쓰이는 경우를 많이 봐왔습니다. 개인적으로도 Python을 개인 프로젝트 용도로 자주 사용했기에 이 도구를 잘 쓰면 어디까지 잘 쓸 수 있는지가 널리 알려졌으면 좋겠다는 생각이 있었고, 잘 정리해서 소개해주는 책이 등장했으면 하는 생각이 있던 차에 이 책이 출간되었습니다. 이에 책을 전달받아서 읽고 쓴 서평을 아래에 기록합니다.

이 서평은 이벤트를 통해 제이펍에서 책을 제공받아 쓰여졌습니다. 같은 내용의 서평이 SNS와 일부 온라인 서점에 게재되었습니다.

Python이 가진 ‘양날의 검’을 잘 쓰는 방법

Python은 굉장히 간결하고 직관적인 언어입니다. 프로그래밍을 ‘논리를 언어로 정리하여 표현하는 행위’로 정의한다면, 간결함과 직관성은 프로그래밍 언어가 가져야 할 최고의 덕목일 것입니다. 이 때문에 배우기 쉽고 사용하기 쉬운 언어로 널리 알려져있으며 많은 사람들이 Python을 통해 프로그래밍에 입문하고 있습니다.

내년이면 Python이 나온지 30년이 되는 지금, Python은 정말 다양한 곳에서 사용되고 있습니다. 단순한 스크립팅에는 이보다 나은 언어가 없을 정도이고, 더 나아가 백엔드 개발, 정보 보안 계열, 데이터 분석, 머신러닝 등 수 많은 분야에서 사례를 찾아볼 수 있습니다. 심지어 이 책의 저자인 데인 힐라드도 초장부터 책의 큰 꼭지를 하나 빌려 “Python은 엔터프라이즈 언어다”라고 소개할 만큼 많이 성숙해져 있습니다.

하지만, Python을 지금의 입지에 오르게 만든 간결함과 직관성은 양날의 검입니다. 다른 언어들보다 자유도가 높은 탓에 조금만 느슨하게 코딩해도 코드의 엄밀함이 상하기 쉽고, 어느 순간 잘 정리되지 않은 코드가 되어 있을 수 있습니다. 실제로 그렇게 되어버린 코드들이 오픈소스 상에서 많이 발견되고 있으며, 이는 코드의 가독성을 해치고 프로그램의 유지보수성을 크게 감소시키고 있습니다.

저는 특히 머신러닝 계열의 코드에서 그런 부분들을 많이 발견하는데, 실험 코드가 Python으로 짜여지고 동작을 위해 조금씩 수정된 흔적들이 프로젝트 내에 광범위하게 남아있는 경우를 심심치 않게 찾을 수 있습니다. 구조적으로 꼼꼼하게 설계되지 않고 편하게 쓰여진 코드는 어느 순간 굉장히 읽기 힘들고 재사용하기 힘든 코드가 되어있고, 전체적인 프로젝트의 안정성과 유지보수성을 떨어뜨리는 주요한 원인이 되기 쉽습니다.

Python 역시 설계하는 과정을 충분히 거치면 굉장히 좋은 코드를 작성할 수 있습니다. Python 본연의 장점인 간결함과 직관성이 발휘되면서, 동시에 엄밀하고 유지보수하기 편한 코드는 결국 어떻게 설계하느냐에서 나온다고 해도 무방할 것 같습니다.

이 책의 저자는 좋은 설계에는 시간과 노력이 필요하며 여기에 시간과 노력을 들이는 것이 얼마나 중요한 것인지를 책 전반에 걸쳐 설명하고 있으며, 그 설계를 Python을 활용해서 어떻게 할 수 있는지를 자세하고 명확하게 설명합니다. 기본적인 객체지향 이론을 Python에 적용하는 방법부터 시작해서 디자인 패턴과 유닛 테스트에 이르기까지 Python을 통해 만드는 프로그램이 점점 커질 때 어떻게 해야 하는지에 대한 길을 제시하고 있으며, Python을 처음 써보는 초보자부터 어느 정도 사용하고 있지만 더 잘 사용하고 싶은 중급자까지 모두에게 추천할 만한 내용으로 책의 구석구석을 채워두었습니다.

특히 상속과 조합의 차이를 통해 결합성을 낮추는 것을 설명하는 부분은 이 개념을 처음 받아들이시는 분들도 쉽게 이해하실 수 있도록 잘 설명해두었고, unittestpytest를 활용한 테스트를 어떻게 잘 진행할 수 있는지에 대해 다룬 부분도 큰 도움이 되실 것입니다.

Python을 단순한 도구로써가 아니라 “프로그래밍 언어”로써 잘 쓰고 싶은 분들께 이 책을 강력하게 추천합니다.