코딩 AI에 의해 이른바 딸깍하면 대량의 코드가 생산되는데 굳이 언어를 배워야 하는걸까 하는 고민을 하면서도 여전히 코드를 읽고 쓰는 연습을 한다. 그 중에서도 내가 최근 많이 사용하는 언어는 파이썬인데, 언어도 재미있고 서드파티 모듈도 풍부하기 때문이다. 그런데 파이썬을 어느 정도 사용하느냐라는 질문을 받으면 내가 어느 정도로 잘 사용하는가에 대해 궁금함을 가지게 된다. 그 와중에 내가 본 파이썬 책 2권(이펙티브 파이썬과 파이썬 하우투)은 파이썬을 중급 수준에서 사용한다는 것이 어떤 의미인지를 알려준다.

 

 

 

<이펙티브 파이썬>과 <파이썬 하우투>는  기본적인 파이썬 문법을 다루는 책이 아니다. 기본 문법은 익힌 상태에서 모범사례를 통해 파이썬 다운 코드를 작성하는 사례를 살펴본다. <이펙티브 파이썬>의 경우 모범사례의 갯수도 판이 올라가면서 대폭 늘어났는데, 처음 1판에서는 59개, 2판에서는 90개, 3판에서는 125개로 늘어났다.(처음에 비해 2배 이상 늘어났네) 나는 모범사례를 살펴보는 것이 단순한 프로그래밍 언어 구문 학습보다는  의미가 크다고 생각한다. 결국  이런 책을 보고 공부하는 이유는 코드를 읽기 위함인데, 모범사례를 읽다보면 좋은 코드, 파이썬 다운 코드에 대해 감각이 생긴다.

 

개인적으로 파이썬 중급 수준이란 컴프리헨션기법, 각종 데코레이터, 클래스 및 예외 체계, 협업 환경 구축 등에서 동작 방식을 이해하고 코드에서 사용할 수 있는가에 달려있다고 생각한다. 그래서 <파이썬다운 코드를 개발하는 63가지 실용기법(인사이트)>와 <이펙티브 파이썬>은 비슷한 내용이 많다. 두 권 중 어떤 책을 읽어도 괜찮다고 생각한다. 둘다 읽은 입장에서는 서로 보완해 주는 부분이 있었다. 다만 편집 측면에서 <파이썬다운 코드를 개발하는 63가지 실용기법>이 좀 더 가독성이 좋았다. <이펙티브 파이썬>은 친절하게 본문 내에서 관련된 모범사례 항목의 번호와 제목을 모두 기재하고 있는데, 나에게는 과잉 친절 같아서 읽을 때 본문의 맥락이 자꾸 끊어지는 듯한 느낌이 들었다.

 

 

새로운 언어를 배우다 보면 기존에 사용하던 언어와 새로운 언어 문법의 유사점때문에 잘못된 인식으로 실제 동작과는 다른 코드를 작성할 수 있는데, 이 책은 실수하기 쉬운 부분을 잘 정리해 두었다. 늘 개발과정에서 가정(선입견)이 코드 오류의 원인이 된다.

 

<이펙티브 바이썬>에는 병렬처리에 관한 내용이 추가되었는데, 이 부분은 점점 처리량을 높여야 하는 애플리케이션 파이썬 개발자들에게 유용한 내용이 많다.  GIL때문에 느려라는 불평을 듣곤 하는데  멀티프로세스, 난-블러킹 API, 쓰레드, 비동기IO 등 매번 파이썬으로 작성하면 파이썬으로도 충분히 괜찮은 성능을 뽑아내는 코드를 작성할 수 있겠다. 이 부분에 대한 내용은 <파이썬 하우투>에서는 없다.

 

최근 출간된 파이썬 중급서 두권을 비교해 보자면, 조금 정돈된 코스로 파이썬 중급 과정을 익히고 싶은 사람은 <파이썬다운 코드를 개발하는 63가지 실용기법>을, 기존 알고 있는 지식을 사례를 중심으로 실력을 레벨업하고 싶다면 <이펙티브 파이썬>이 적절하다고 생각한다. 두께도 비슷하다.

이제 두 책의 내용 정도는 충분히 이해하고 작성하고 있으니 파이썬 중급 정도는 쓴다고 말해도 되겠지... 내 업무 상황에서는 파이썬 고급서까지 읽을 필요가 있을까 하는 생각은 든다. 

반응형

우리, 프로그래머들 / 로버트 마틴/ 길벗

 

 

요즘 대AI 시대라는 말에 가슴이 답답한 개발자가 한두 명이 아닐 것이다. 개발자라는 역할이 계속될 수 있을지, 지금 익히고 있는 기술이 미래에도 의미가 있을지 불안하다. 이런 격동의 시기에 대체 무엇을 어떻게 해야 하는가에 대해 답하는 책이 나왔다. 클린 코드로 유명한 엉클밥 아저씨(엉클이 아저씨라는 뜻이니 역전 같은 느낌을 주는 표현이구나)의 신간 <우리, 프로그래머들(We, Programmers)>에서는 미래에 대한 정답 대신, 거꾸로 과거를 깊이 파고들면서 그 답을 찾는다.

 

첫 페이지를 펼쳤던 때가 1월 28일이니, 대략 10일동안 출퇴근길에 재미있게 읽었다. 이 책은 한마디로 IT, 특히 소프트웨어 개발의 역사를 정리한 책이다. 1부에서는 우리 같은 개발자들이 어떤 정체성을 가지고 있는지 이야기하고, 2부에서는 거장들의 일화를 통해  소프트웨어가 발전해 오면서 개발자들이 어떤 길을 걸어왔는지 소개한다. 3장에서는 마틴 자신이 개발자로서 걸어온 길을 정리하고, 4장에서는 그동안 자신의 경험을 바탕으로 미래에 대한 견해를 적고 있다. 3장과 4장은 자서전 내지는 회고록 느낌이 든다.

 

예전에 영문학을 전공한 친구에게  '너는 세익스피어를 직접 만날 수 없지만, 그래도 IT 쪽은 웬만한 분들이 아직 생존해 계셔서 직접 이야기를 나눌 수 있다'라고 농담한 적이 있었는데, 이 분야의 개척자들이 돌아가시는 상황에서 개척자들의 시도와 견해를 이처럼 기록으로 남기는 것이 소중하다고 생각한다.

 

이 책이 사파리 북스에 올라왔을 때 한 번 가볍게 읽었는데, 번역본은 꼼꼼하게 읽었다. 이 책을 보기 전에 읽었던 인사이트에서 출간된 <오래된 인터뷰> 1,2권, <소프트웨어, 개발방법론을 만나다>, 한빛미디어에서 출간되었던 <유닉스의 탄생>, <사라진 개발자들>의 내용과 겹쳐지면서 나름 재미있게 읽었다.

 

어쩌다 보니, 소프트웨어 개발의 역사를 계속 읽게 되었다.

 

개인적으로는 초등학교때 컴퓨터학원에 다니면서 배웠던 애니악과 유니박 이야기, 인간 컴퓨터 이야기 등이 새롭게 다가왔다. 예전에는 그냥 암기식으로 컴퓨터의 역사는 이렇다 하면서 외웠던 내용들이다. 엉클밥 아버지도 중학교 과학 선생님이셨고, 우리 아버지도 선생님이셨다. 아버지는 그 시절 그렇게 고가의 컴퓨터를 왜 구입해서 나에게 배우게 하셨던 걸까? 돌아가시기 전에 한번 이유를 여쭤봤어야 했다. (이 이야기를 하면 연식이 드러날 것 같은데, 여하튼 컴퓨터학원에 가면 종이에 인쇄된 키보드를 나눠주던 시절이었다. 입으로 소리 내면서 종이 위의 키보드를 짚어가면서 자판 배열을 익혔다.)

 

라때는 더했... 쿨럭..

 

내가 요즘 입에 달고 사는 '대AI 시대'에 개발자의 미래나 역할에 대해 여러 주장들이 많고, 다들 나름의 논거를 가지고 주장하는데 비등비등하니 불안감이 커지고, '개발자로서 대체 무엇을 어떻게 해나가야 하는 것인가?'라는 질문이 커져간다. 이런 시기에 옛날이야기를 읽는 것이 의미가 있을까라는 질문을 가지고 책을 읽기 시작했다. 책을 덮으면서 역사란 과거를 돌아보면서 현재를 재인식함으로써 미래로 나아갈 방향을 열어주는 구나라는 생각이 들었다. 출판사에서 이런 류의 책을 펴내는 것도 그런 고민에서 출발했을 것이리라.

 

거장들의 일대기를 보면서 '개발자들은 언제나 특유의 호기심때문에 예전에 없었던 영역을 개척해 가면서 문제를 해결하고 그 과정을 정리해 왔음'을 한번 더 깨닫게 된다. 또한 개발자의 소명에 대해서도 다시 생각해 보게 되는데, AI 시대에도 결국 소프트웨어에 대한 근본적인 이해를 높여가는 과정이 필요하다.

 

엉클밥은 리스프를 선호하는 것 같은데, 여전히 기계와 가까운 C언어 계열이 나에게는 더 끌린다.(수학을 못해서 그런가;) 그런데 한편으로 LLM이 등장하면서 자연어, 특히 영어가 개발언어로의 입지를 강화하는 게 아닐까 하는 엉뚱한 생각도 함께 떠올랐다.. 프로그래밍 방법론이나 기술은 인간 개발자의 실수를 막는 쪽으로 발전되어 왔다는 것이 정설이다. 구조적 프로그래밍에서 객체지향을 거쳐 함수형에 이르기까지 우리 개발자들이 인간이기에 실수할 수밖에 없었던 영역을 보완해 주는 접근방식이라고 본다. 그렇다면 엉클밥이 말한 것처럼 '앞으로 50년은 기존에 있던 기법을 확장하고 다듬어나가는 시기'가 될 것이라는데 동의할 수밖에 없다.

 

AI의 영향력에 대해 책에 실린 엉클밥의 의견(23년도 버전)은 이미 철지나간 것일 수도 있다. 생각보다 부정적인 느낌을 많이 받았는데, 그 사이 Coding AI가 많이 발전했으니  배휘동 님의 서평을 통해 엉클밥의 최근 견해를 업데이트하는 것이 좋겠다.

 

이 책에서 가장 눈길이 갔던 문구는 다음과 같다.

"그 누구도 톰프슨과 리치에게 유닉스와 C를 만들라고 시키지 않았습니다. 그들을 움직이게 만든 것은 열정과 호기심, 함께 성장한 개발자 커뮤니티입니다..... 결국 그들은 이 세상을 바꾸어 놓았습니다."

그들만큼 똑똑하진 않지만 그래도 비슷한 고민을 하는 개발자들과 열심히 소통하면서 계속 탐구해 가는 자세를 견지해야겠다고 다짐했다. 엉클밥도 열심히 유즈넷에 글을 쓰면서 생각을 공유하지 않았던가!

 

엉클밥이 SICP와 클로저를 배운 이야기를 하는데, 그때가 2009년이다. 나보다 늦게 봤구만. 인사이트에서 SICP1판이 나온 게 2007년인데... 잠깐.. 그런데 그때 엉클밥 나이가.... 52년 생이니 57세일 때다. 반성에 반성을 거듭하게 된다. 내가 새로운 언어와 프로그래밍 개념을 적극적으로 배우려고 노력했던 게 언제였던가.

 

엉클밥이 Rational에 이직할 뻔 했던 이야기에서도 숨겨진 교훈이 있다. 캘리포니아 산타클라라의 집값 때문에 입사를 포기하려 할 때 엉클밥의 아내가 "그들과 컨설턴트로 일하는 건 어때요?"라고 물어보았다고 한다. 그 덕분에 입사제안을 거절하지 않고 래셔널 로즈팀과 협업을 하면서 경력을 키웠다. 그래, 아내 말이 진리이다.. ㅡ.ㅡ

 

여하튼 세계대전부터 AI 대전에 이르기까지 소프트웨어 개발을 개척해 온 이야기들을 재미있게 들었다. 본인이 개발자 종족이라 생각하지만, 이 격동기에 어떻게 해야 할까 고민하는 사람이라면 재미있게 읽을 수 있는 내용이 많이 담겨 있다.

 

덕분에 당분간은 코드에 좀 더 가까이 다가가는 책을 읽을 계획!

 

*. 책을 읽다가 커닌핸 교수님의 <Software Tools>가 궁금해졌다. 스캔본이 있지 않을까 해서 검색하다가 유닉스의 역사를 잘 정리해둔 블로그, Crystal Labs 를 발견했다. 이 사이트에서 스캔본 PDF도 다운로드 받았다.

반응형

+ Recent posts