AI 시대에도 소프트웨어 개발을 배우는 일이 왜 그 어느 때보다 중요하고 유리할 수 있는지에 대한 주장.
무슨 일을 하나요, 에이전트들이 코드를 작성해 주기를 기다리는 동안에?
ChadGPT는 운동을 추천하고, 그래서 나는 바로 엎드려 스무 개를 한다. 플랭크도 좋지만, 그러면 생각하는 모델이 더 나을 상황에서 Gemini Flash를 쓰고 싶어지는 유혹이 생긴다. 그리고 회사 서밋에서 내가 왜 갑자기 빨래판 복근에 햄만 한 이두근을 갖게 되었는지 설명하기도 어렵다. "아, 어, 확실히 AI 때문은 아니에요," 나는 얼굴을 새빨갛게 붉히며 거짓말한다. "제가 쓰는 웨이트는 헬스장에서 드는 것뿐입니다! 하하."
동시에 몇 개의 코딩 에이전트를 관리할 수 있나요?
나는 세 개를 넘기면 무슨 문제가 생겼는지 제대로 이해하지도 못한 채 "고쳐!!"라고 답하기 시작해서 그 이상은 관리하기 어렵다. 그들이 일하는 동안 나는 보통 코드를 리뷰하고(그리고 절반은 되돌리고), 새 규칙을 쓰거나("제발 컴포넌트를 쓰기 전에 grep 좀 해"), 새로운 에이전트를 살펴본다(플라토닉하게).
나는 엄청 즐겁다. 내가 뭔가 잘못하고 있는 걸까? 개발자는 원래 비참해야 하는 거 아닌가? 물론 저 멀리 먹구름이 있는 것 같긴 하다. AI 전쟁과 AI 전쟁의 소문들 말이다. 내가 오늘 즐겁게 쓰고 있는 바로 그 모델들이 내일 내가 해고되는 이유가 될 거라고들 한다. 어떤 임원들은 너무 성급하게 방아쇠를 당겨서 이미 신규 인재 채용의 전원을 내려버리고 있다고 한다. 분명 나는 평생 고임금을 받는 수공 농부였고, LLM은 내 코드를 수확하러 온 강력한 콤바인 수확기라는 것이다. 아니면 심었다가 수확하는 건가, 비유가 원래 뭔지 잘 모르겠다.
Tom이 가장 잘 말했다:
장인을 따라 수련하든지 죽든지. 부자 농부들은 타도하라! 농부들이 터무니없이 과대보상을 받던 바로 그 역사적 시기처럼 말이다. 위대한 비유는 언제나 이렇게 타협 없는 전제 위에 세워진다.
LLM은 정말로 콤바인 수확기와 같다. 한 사람이 많은 사람의 일을 할 수 있게 해주기 때문이다. 그리고 기계화된 농기계처럼, LLM은 싸고 흔하며 날마다 더 작아지고 있고, 가장 중요하게는 작동법을 익히기 위한 훈련이 필요 없다. "이봐 CombineGPT, 저 넓고 비옥한 평야를 수확하는 법을 가르쳐 줘!" 그러면 바로 출발이다.
"좋아, 빈정대는 양반아, LLM이 그렇게 쉽고 흔하다면 대체 왜 개발자를 계속 두는 건데 응??" 타당한 지적이다. 나는 그저 중간상일 뿐이다. 소들이 스스로 몰리게 되는 날까지 Software Ranch에서 가축을 몰고 다니는 고용된 일손이다(이제 카우보이 비유다 아무튼). "가서 훌륭한 스테이크와 가죽이 되어라!!" 스테트슨 모자를 쓴 어떤 사장이 외칠 것이고, 소들은 기꺼이 따를 것이다. 개발자들은 외로운 길을 따라 석양 속으로 걸어 들어갈 것이고, 역사 로맨스 소설은 우리가 거칠고 섹시했다고 정당하게 기억할 것이다.
나도 로맨스 소설 속 근육질 미남 역할을 받아들일 수도 있겠지만, 소프트웨어 개발자의 죽음은 심하게 과장되었다는 강력한 주장이 가능하다고 생각한다. 사실 나는 그 반대가 사실이라고 의심한다. 오늘이야말로 역사상 소프트웨어 개발을 배우기 가장 좋은 때일지도 모른다. 이 대담한 주장에 걸맞은 대담한 논점들로 뒷받침해 보자:
이건 나중에 보면 너무도 뻔한 일처럼 보일 수도 있다. "우리 개발자들은 이런 제도적 지식도 있고, 우리 비즈니스를 친밀하게 이해하고, 우리 제품을 누구보다 잘 만드는 방법도 알고 있잖아? 그런데 비싸네. 그리고 알고 보니 우리 제품은 거의 공짜나 다름없는 AI 서비스가 쉽게 작성할 수 있네. 맞아, 개발자들이 그 AI를 누구보다 잘 다루는 건 사실이지만 비싸니까 대부분 해고하고, 우리 비즈니스는 영원히 아무 차질 없이 돌아갈 테니 그 엄청난 비용 절감을 함께 기뻐하자!!"
당신의 개발자들을 보호하는 해자는 당신의 비즈니스도 보호하고 있다. AI가 그 해자를 없애버렸다면, 문 앞에 파괴자가 다가오고 있다는 뜻이기도 하다. 정말 지금이 군사들을 해고하기 시작할 때인가? 당신의 섹시한 카우보이 군사들을??
사실 더 정확히 말하자면 해자는 여전히 있다. 다만 이제는 모든 병사가 갑자기 공격 헬리콥터를 가지게 되었기 때문에 해자를 건너는 일이 너무 쉬워졌을 뿐이다(그건 콤바인 수확기로도 쓸 수 있다, 제발 좀 따라와 달라). 개발자는 계속 개발할 것이다. 다만 이제 그 어느 때보다 훨씬 더 넓은 도달 범위와 더 빠른 속도로 그렇게 할 뿐이다. 그래서 해고를 고민하는 어떤 임원에게든 내가 하고 싶은 조언은 이렇다. 다른 조직들은 AI의 힘을 받은 개발자들을 재편해서 새로운 영토를 정복하려 하고 있다는 점은 분명한데, 왜 당신은 당신의 개발자들로 같은 일을 하지 않는가? 모두가 핵무기를 갖게 되는 상황에서 정말 수비만 할 건가?? (이제 핵 공격 콤바인이다.)
개발자들에게 하는 내 조언도 같다. 봇에게 해고당할 날만 기다리며 가만히 있지 말라. 바위에서 검을 뽑는 선택받은 자처럼 AI를 집어 들어라. 이걸 가장 잘 휘두를 수 있는 사람은 분명 당신이다. 지금이 바로 당신의 시간이다! 그래, 변화는 무섭다. 하지만 당신은 기술자 아닌가. 아니면 기술은 언제나 그대로일 거라고 생각하고 이 업계에 들어온 건가?
개발 경험이 전혀 없이 앱을 만든다고? AI를 써라, 그러면 성공할 것이다. 정말로 그럴 것이다. 앱은 만들어질 것이다. AI는 완전히 작동하는 코드를 뚝딱 내놓을 것이고, 당신은 심지어 어떤 힘의 전율까지 느낄지 모른다. 하지만 함정이 있다. 코드를 쓰는 일은 개발자의 하루 중 가장 쉬운 부분이다.
개발자가 해결하는 문제의 대부분은 사회적이다. 아무도 현실을 정확히 보지 못하는데도 모두가 자기가 원하는 것이 무엇인지 안다고 우기기 때문이다. 우리는 모두 어둠 속에서 더듬고 있고, LLM은 빛보다 환상을 더 많이 만들어 낸다.
어떤 의료 서비스 제공자가 AI에게 더 나은 기록 시스템을 만들어 달라고 한다. 짜잔, blockchain 기반 앱이 있다. 2048-bit 보안과 모든 경우를 위한 편리한 폼까지 완비했다! 하지만 마이그레이션 전략도 없고 auth 통합도 없으며, 직원들은 여전히 2FA도 없는 이메일 계정 비밀번호를 서로 공유한다. 그런데도 그 앱은 느낌상 맞아 보인다.
어떤 계약업체는 모든 고객 프로젝트의 실시간 업데이트가 되는 포털을 원한다. 훌륭하다. AI는 번개처럼 빠른 realtime 기능을 위해 Phoenix를 고르고, 강력한 ecto 데이터 마이그레이션 툴킷까지 곁들인다. 하지만 모든 고객 데이터는 여전히 당신이 시간 날 때마다 업데이트하는 Excel 파일 안에 있다. 그래도 포털은 훌륭하다. 다음 달에는 배포 패키지 중 하나에 대한 zero-day가 공개되지만, 당신은 그 소식을 듣지도 못한다. 대체 누가 그런 걸 물어보겠는가?
당신은 AI에게 애플리케이션이 GDPR compliant여야 한다고 말한다. 그게 정확히 무슨 뜻인지는 잘 모르지만 AI는 안다. 그래서 AI는 성실하게 데이터 삭제 워크플로를 구축한다. 환상적이다! 이제 고객은 Delete 버튼을 클릭하고 자기 데이터가 더는 보관되지 않는다고 느낄 수 있다. 그런데 다음 날 당신은 또 다른 아이디어를 떠올린다. "고객 기록을 우리 집 서버에 백업하자. 나는 Amazon을 신뢰하지 않고 우리 데이터는 우리가 직접 통제해야 한다고 생각해!!" AI는 기꺼이 따른다. 그러면서 당신의 전략적 사고를 열렬히 칭찬하는 말도 덧붙인다.
이 예시들은 너무 우스꽝스럽고 작위적이어서 현실 같지 않게 느껴질지도 모르지만, 개발자들은 이런 종류의 헛소리를 고객들이 하지 않도록 매일같이 설득해야 한다는 점을 나는 장담할 수 있다. 개발자들은 문제를 해결하는 코드를 쓰는 시간보다, 그 문제 밑에 깔린 현실을 발견하는 데 훨씬 더 많은 시간을 쓴다. 그리고 이것은 좋은 일이다. 잘못된 문제를 하루 만에 해결하는 것보다, 올바른 문제를 찾는 데 5일을 쓰는 편이 낫다.
LLM은 이런 빗나감을 더 악화시킨다. 가끔은 밑바탕의 현실을 찔러 맞히기도 하지만, 대부분은 그저 당신을 가장 편안하게 해주는 것, 바로 그것을 만들어 낼 뿐이다. 무언가가 실제로 도움이 되는지, 아니면 그저 해결책의 환상인지 알아보려면 깊은 이해와 경험이 필요하다. 그리고 개발자들조차도 길게 이어지는 깔끔한 코드 블록과 반짝이는 반응형 버튼들에 속을 수 있다.
"하지만 AI가 내가 알아야 할 걸 가르쳐 주겠지!" 그렇다! 그리고 많은 신중한 시행착오를 거치면, 당신도 결국 개발자가 될 것이다. AI는 분명 학습을 더 쉽게 만들어 줄 수 있다. 하지만 기초를 배우는 일을 더 소홀히 할수록, 당신은 The Land of Large Language Illusions를 더 오래 헤매게 될 것이다.
이건 조금 더 음울한 이야기지만, 정말로 우리는 아직도 해결해야 할 소프트웨어 문제가 엄청나게 많다. 그리고 그것들이 전부 해결되고 나면, 아마 AI가 더 잘하지 못하는 일자리는 하나도 남지 않을 것이다. 벌목꾼은 소프트웨어로 대체될 것이지, 실업 상태의 소프트웨어 개발자로 대체되지는 않을 것이다.
AI는 무엇을 물어봐야 하는지 아는 사람에게 엄청난 증폭 능력을 준다. 훌륭한 새 도구가 아주 많고, 종이 위에서는 좋아 보이지만 실제로는 형편없는 도구도 아주 많다. 당신은 그 차이를 알아볼 수 있는가? 좋은 도구들조차도 정말로 좌절스럽기 짝이 없을 수 있다. 언제나 당신이 원하는 것을 줄 듯이 너무 가까이 와 있지만, 끝내 정확히 거기에는 도달하지 못하기 때문이다. 제대로 해낼 인내심이 있는 사람에게는, 지금은 무언가를 만들기에 믿을 수 없을 만큼 재미있는 시대다.
배우는 일은 그 어느 때보다 쉬워졌다. 이제 당신은 모든 언어를 알고 StackOverflow 전체를 외운 신탁에게 자문할 수 있다. 그래서 나는 우리가 소프트웨어 개발자의 미래가 얼마나 암울한지만 이야기하면서 학생들을 낙담시키고 인재 파이프라인을 닫아버리는 일이 불편하다. 바로 지금이 배우기 가장 쉽고, 활용하기 가장 생산적이며, 인간이 고삐를 쥐고 있는 것이 그 어느 때보다 중요할 수 있는 순간인데도, 그런 말들이야말로 재능을 죽여버리고 있을지도 모르기 때문이다.
그리고 왜 그런가? 추측 때문이다. 개발 실무는 발전하는 대신 죽을 것이라는 추측. 해결할 가치가 있는 문제의 파이가 어떤 제로섬이라는 추측. AI에 고질적으로 따라붙는 문제들이 약간의 추가 진보만 있으면 갑자기 모두 사라질 것이라는 추측.
막대한 양의 자본이 AI 기술로 이동하고 있다. 멋지다! 하지만 전통적인 개발자들에 대한 투자를 멈추는 것은 실수라고 나는 생각한다. 그리고 인재에 계속 투자하는 조직이 결국 승리할 것이라고 생각한다. AI-native 프로그래머 1세대는 서른쯤 되었을 때 무슨 비전의 마법사들처럼 되어 있을 것이라고 나는 생각한다. 그리고 새로운 인재에 투자하지 않는 이들을 구하러 AI가 달려오지 않는다면… 글쎄, 그때 우리는 진짜로 과대보수된 농부가 어떤 대가를 치르게 하는지 보게 될 것이다.
그래도 이건 여전히 도박이다. 기술에 대해 확실한 것은 그것이 변하고 있다는 사실뿐이고, 어디로 가는지 안다고 말하는 사람은 그저 추측하는 것뿐이다. 하지만 언젠가 humans-in-the-loop가 더 이상 가치를 더하지 않게 되더라도, 나는 여전히 그들의 중요성을 굳게 믿는다. 이것은 AI가 대체할 것이라고들 하는 모든 전문가에게 적용된다. AI를 사용하는 것만으로는 충분하지 않다. 우리는 AI에 책임을 물을 수 있고, 그것이 진실 대신 위안을 주고 있음을 알아볼 수 있는 전문가들을 가져야 한다. 인간의 기여를 더 이상 가치 있게 여기지 않는 날이야말로 alignment가 실패한 날이다.
나는 분명히 말수가 적은 사람이니, 여기서 멈추겠다. 이제 이 카우보이는 핵 공격 콤바인에 올라타고 석양 속으로 달려갈 시간이다. 아니면 저건 일출인가? 일출일 수도 있겠다.