근래들어, 모든 IT 이슈들은 AI와 연관되는 것 같습니다. 대부분은 장밋빛 미래에 대한 이야기들이지만, 이면에는 다수의 직업이 AI 때문에 사라지게될 것이라는 예측이 자리잡고 있기 때문에 장밋빛을 장밋빛으로만 볼 수 있는 상황은 아닙니다.
게다가, 올해 초, 두바이의 국제회의에서 엔디비디아, 젠슨 황 CEO는 '아이들에게 더이상 코딩을 가르칠 필요가 없다'고 말해서 이목을 집중시켰습니다. 이 발언은 결국, AI의 장밋빛 미래를 장밋빛으로 보지 못하고 있었던 프로그래머들에게 또다른 충격을 던져줬습니다. '올것이 오고 있구나!' 뭐 이런 류의 탄식을 자아냈으니까요.
정말 AI가 프로그래머들을 대체하게 될까요?
제가 생각하는 결론을 먼저 말씀드리면, 절대 그렇지 않을 것입니다. AI는 프로그래머를 대체 할 수 없습니다. 코딩이라는 행동은 단순히 인간의 의도를 컴퓨터에게 이식시키는 것만 있는게 아닙니다. 세상에 있는 문제들을 컴퓨터에 이식할 만한 체계로 해석하는 사고가 전단계에 자리잡고 있어야 코딩이 가능하거든요.
IT업계 전설중에 한분인 프레드릭 브룩스는 자신의 저서인 <맨먼스 미신>의 20주년 기념판에 <은총알은 없다>라는 논문을 포함시켰는데요. "은총알"즉 소프트웨어 개발 분야의 모든 문제를 한번에 해결할 수 있는 해결책은 없을 거라는게 브룩스의 주장이었습니다.
브룩스는 그렇게 주장하는 이유로 소프트웨어 개발에는 "본질적 작업(essential task)"이 필요 하기 때문이라고 했습니다. 최초의 전자식 컴퓨터라는 에니악이 30톤짜리 거대한 본체를 움직이기 시작했었을 무렵부터, 소프트웨어 개발 환경의 개선은 언제나 "본질적 작업"에 해당하는 것보다 "부차적작업(accidental task)"에 집중되어 왔습니다. 하드웨어를 좋게 만들거나, 프로그래밍 언어를 진화시키는 것과 같이 말이죠. 그런 활동은 개발자가 코딩하는 환경을 좋게 만들어 줄수는 있지만, "본질적 작업"을 개선하는 데는 크게 도움을 줄수 없었습니다. AI도 마찬가지입니다. 프로그래밍 언어를 습득하지 않아도 코딩을 할 수 있을 만큼 진보한다고 해도 AI는 "본질적 작업"을 대체할 수는 없습니다.
<더 나은 프로그래머 되는 법>은 "본질적 작업"을 할 수 있는 프로그래머의 사고 체계를 연마하게 하는 다양한 조언들을 제시하는 책입니다. 제대로 된 코드를 작성하고 이를 유지하려면 개발자가 어떤 마음가짐으로 코딩을 해야 하고, 유지해야 하는지를 말하고 있습니다. 이는 "부차적 작업"의 행동양식을 변화하는 조언이자 이면에 있는 "본질적작업"을 더 잘하는 소프트웨어 개발자가 되게 하거든요.
정말 이렇게까지 코딩에 대해 깊이 생각하고 조언할 수 있을까 싶을 정도로 세세한 조언들이 나오는 책이라서 정말 인상 깊었습니다.
게다가 저자인 "피트 구들리프"가 본인의 첫 저서가 <코드 크래프트>라고 밝히는 부분을 읽으면서는 다소 충격을 받았습니다. 약 15년전쯤 제가 읽고 크게 감명을 받았던 책이었거든요. 지금까지 개발자로 살아가면서 가장 크게 영향을 미쳤던 책을 나열한다면, 아마 다섯손가락 안에 들을 만큼 훌륭한 저서였습니다. <더 나은 프로그래머 되는 법>을 읽으면서 크게 공감할 수 있었던 원인도 아마 <코드 크래프트>의 내용이 제 개인적인 일상과 생각에 영향을 많이 미쳤기 때문이 아닐까 싶더군요.
책의 뒤편에는 한국인 개발자들 8명의 조언이 함께 실립니다. 그중 제가 주목 했던 인터뷰는 염재현님의 인터뷰였는데요. 염재현님의 저서 <디스커버리 Go 언어>라는 책을 재미있게 읽었던 기억도 있고, 인터뷰에서 "생성형 AI의 시대에는 프로그래머들이 테스트 주도 개발을 해야 합니다"라고 주장하신 것 때문입니다.
이는 <더 나은 프로그래머 되는 법>에서도 공감했던 부분인데요. 테스트 주도 개발(TDD)은 소프트웨어 개발 프로세스의 일부 이전에 개발자의 사고 방식을 변화 시키는 방식이라고 생각하기 때문입니다. 테스트가 사고를 바꾼다고? 라고 반문 하실 수 있겠지만, 이건, <테스트 주도 개발>에서도 언급됩니다. <테스트 주도 개발>에 <리팩터링>의 저자인 마틴 파울러가 첨언한 이야기를 보면 TDD는 "공 한개로 저글링" 하는걸, 느끼게 해주는 방식이라고 합니다. 복잡한 논리의 전개가 코딩이라면, 그 논리 전개를 간단하게 해체 하는 방법이 TDD이고 그래서 "공 한개로 저글링"하는 것 같다고 표현한 것인데요.
다시말해 TDD는 개발자의 사고방식에 영향을 미치는 개발 기법인 셈입니다. 그리고 TDD를 꾸준히 진행하다 보면, "본질적 작업"을 잘 할 수 있는 사고 방식을 연마하게 되는 것이죠. 구들리프 역시 <더 나은 프로그래머 되는 법>에 TDD를 언급합니다. "25장 테스트 주도 개발자"에서 인데요. 테스트 주도 개발을 하는 게 "기술 연마"와 관련되어 있다고 말하고 있습니다.
"본질적 작업"은 소프트웨어 개발자의 고유 영역이고, 이 본질적 작업을 잘 할 할 수 있는 사고(생각)기술은 더 나은 프로그래머가 되는 실천법에서 습득해 갈 수 있습니다. 그 결과로 우리는 AI가 많은 사람의 직업을 빼앗는 중에도 살아남는 개발자가 될 겁니다.

"한빛미디어 <나는 리뷰어다> 활동을 위해서 책을 제공받아 작성된 서평입니다."
'바람보기' 카테고리의 다른 글
개발자, 책 읽기 그리고 제텔카스텐 (0) | 2025.01.27 |
---|---|
소프트웨어 성장 이론 - 성숙 (1) | 2024.06.08 |
소프트웨어 성장 이론 (0) | 2024.05.25 |
켄트 벡의 Tidy First ? (1) | 2024.04.30 |
사용자 스토리 (0) | 2024.04.10 |