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

 

 

요즘 대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도 다운로드 받았다.

반응형

 

오라일리 레이더 2월호

  • 구글의 Genie3 모델: 인터랙티브 3차원 실시간 동영상 생성 -> 게임 업계의 월드 생성 및 물리 엔진 기반 개발 과정에 중대한 변화를 초래할 수 있겠다.
  • Kimi K2.5 모델: 문샷 AI에서 개발하는 오픈소스 모델. 다중 모달로 최대 100개의 서브에이전트와 협업할 수 있음.
  • Qwen2-Max-Thinking: Qwen말로는 Opus 4.5 나 제미나이 3와 비슷한 성능을 보인다고 주장. 적응형(adaptive) 도구 사용. 테스트-타임 스케일링
  • MCP Apps 규격: MCP의 공식 확장 기능으로 발표. MCP 서버가 사용자 인터페이스 컴포넌트를 반환하는 표준 방법 정의한 규격. 이 기술을 이용하면 MCP 클라이언트가 복잡한 사용자 인터페이스를 만들 수 있다. 링크
  • Moltbook: 에이전트의 소셜 네트워크. 보안상 위험 경고 많음
  • OpenClaw(이전 Moltbot, ClawdBot): LLM에게 영속성과 기억을 제공하는 방식으로 컴퓨터를 특정 지시를 수행하는 에이전트처럼 사용할 수 있게 됨. 메모리 및 개인 상세 정보는 로컬에 저장. 하드웨어가 충분하다면 Local에서 API로 유명 모델을 실행할 수 있음. 주요 특징은 왓츠앱, 텔레그램 등을 통해 메시징이 가능.
  • FlashWorld: 텍스트/2차원 이미지에서 3차원 장면을 생성하는 새로운 비디오 모델. 속도와 효율성에서 크게 개선됨.
  • 지식 기반을 구축할 때 부정적 예제와 의사결정 트리를 사용함으로써 AI 시스템이 언제 'No'라고 말할지를 알 수 있게 해야 한다. 특히 No라고 말할 수 있는 능력은 사용자의 문제를 해결하는데 중요하다.
  • 앤트로픽은 constitution을 출간. 클로드가 어떻게 행동하고 그 결과를 반영하는가에 대한 설명. 단순 규칙 목록이 아니라, 클로드가 왜 동작하는지에 대한 추론을 할 수 있게 하는 이유가 중요.
  • ChatGPT에 광고 넣는 실험 중. 월 8달러 사용자를 만들기 위함.
  • OpenResponses API: 에이전트를 비롯한 클라이언트가 API 요청을 주고받기위한 표준화된 방법. 
  • 앤트로픽 코워크(Cowork): 클로드 코드를 범용 목적 컴퓨팅 영역으로 가져옴. 간접 프롬프트 인젝션 공격을 통해 사용자의 파일을 훔칠 수 있는 보안상 취약점이 발견됨.
  • 비추론 모델을 사용할 때 단순히 프롬프트를 반복하는 것만으로도 정확도가 상당히 올라갈 수 있다고... 프롬프트 엔지니어링.
  • Signal을 만든 Moxie Marlinspike는 사용자의 프라이버시를 지키는 AI 조수인 Confer를 개발중.
  • 구글에 따르면 콘텐츠를 청킹하는 것은 제대로 되지 않고 SEO에 좋지 않은 영향을 미친다.
  • 헬스케어쪽 AI 진출: Claude for HealthCare, OpenAI for Healthcare. HIPAA 자격 취득. 의사와 환자간의 프로세스를 부드럽게 진행시켜주는 역할. 진단쪽에 포커싱 맞춘 것은 아님.
  • Nightshade: 아티스트의 작품이 AI의 학습에 이용되지 않도록 막아주는 도구. AI에게는 인간이 보는 것과 다른 이미지를 보여줌으로써 학습을 훼방놓는 목적.
  • 파인 튜닝을 하면 다른 맥락에서 예상치 못한 일반화를 범할 수 있다. 예를 들어 19세기 조류 이름으로 파인튜닝한 모델은 다른 맥락에서도 마치 19세기에서 만들어지진 것처럼 동작했다. 
  • 커서를 사용하여 수백개의 에이전트를 돌려서 1주일만에 웹 브라우저를 만드는 실험 진행.
  • curl이 AI 쓰레기를 최소화하기 위해 버그바운티 프로그램을 없앰.
  • 유닉스 파이프 카드 게임: 유닉스 시스템의 명령행 도구 사용법을 연습할 수 있는 좋은 학습 도구
  • 대AI시대에서도 가장 중요한 소프트웨어 엔지니어 스킬은 소프트 스킬, 즉 커뮤니케이션 능력이다.
  • NanoLang: LLM을 위한 프로그래밍 언어
  • 내가 좋아하는 차드 파울러의 글 나중에 좀 더 자세히 읽자
  • 언어모델이 코드를 작성할 때 파이썬을 선호한다.
  • Drew Breunig이 whenwords라는 실험을 진행. 소스코드없이 스펙만 가진 라이브러리고, 실제로 사용할 때 LLM으로 일반적인 프로그래밍 언어로 작성된 라이브러리로 변환하는 실험.
  • 켄트백은 AI가 주니어들에게 더 유용하다고 주장. 더 빨리 학습하는 것을 도울 수 있다고. 그래서 바이브 코딩 대신 증강 코딩(augmented coding)이라는 용어를 사용. 하지만 내 생각엔 결국 호기심을 가진 사용자에게나 적용되는 말인 듯. 증강은 호기심을 증폭시켜줌.

 

 

 

반응형

+ Recent posts