AI가 다 짜주는데, 왜 손코딩을 배워야 할까

서울대 AI 부정행위 논란이 던진 불편한 질문

by예나빠



미국, 특히 이곳 베이 지역에서는 자율주행에 운전을 맡긴 사람들을 쉽게 발견할 수 있다. 그 편리함을 한번 맛보면 절대 이전으로 돌아갈 수 없다고 한다. '신기술 적용에 게으른' 나는 아직도 꾸역꾸역 두 손으로 운전하고 있지만, 끌고 다니는 내연기관차의 잔고장과 아내의 압박 때문에 조만간 이 FSD의 급류에 올라타지 않을까 싶다. 자율주행은 앞으로 더욱 확산될 것이고, 결국 인류의 비가역적인 일상이 될 것이니까.


그렇다면 앞으로 사람은 운전을 배울 필요가 없을까?


레벨 5의 완전 자율주행이 이루어지는 먼(?) 훗날에는 정말 그런 날이 올지도 모른다. 그러나 적어도 인간에게 자동차의 최종 바카라임이 남아 있는 동안에는 운전 기술을 완전히 포기할 수 없다. 평소에 직접 운전하기 위해서만은 아니다. 시스템이 무엇을 하고 있는지 이해하고, 그것이 잘못된 판단을 내리는 순간을 알아차리고, 필요할 때는 직접 운전대를 넘겨받기 위해서다.


자동화가 깊어질수록 인간에게 필요한 능력은 모든 동작을 직접 수행하는 기술에서, 언제 개입해야 하는지를 판단하는 능력으로 이동한다. 그러나 그 판단 능력은 역설적으로 직접 해본 경험 없이 생기지 않는다. AI가 제공하는 윤택한 삶을 온전히 누리기 위해서도 우리가 절대 양보해서는 안 되는 것들이 있다.


AI가 짜준 코드를 과제로 제출해 한바탕 논란이 있었나 보다.


기사를 완독 했다. 요지는 서울대 컴퓨터공학과의 한 전공과목에서 코딩 과제를 냈는데, 사전에 금지했던 생성형 AI를 사용한 학생들이 무더기로 적발됐다는 것이다. 기사는 금지된 AI를 사용한 학생들을 마치 선악과를 따먹은 아담처럼 묘사한다. 제목부터 'AI 부정행위'다.


담당 교수는 규정에 따라 일을 처리했다. AI를 사용했다고 자수한 학생들에게는 해당 과제만 0점 처리했고, 끝까지 사용 사실을 인정하지 않은 학생들에게는 한 학기 성적으로 D-를 부여했다. 한 대학 수업의 규칙만 놓고 보면 당연한 절차다.


그러나 AI가 소프트웨어 개발의 핵심 도구로 떠오른 지금, 문제는 그리 단순하지 않다. 실제 산업 현장에서는 AI를 능숙하게 사용하는 것이 부정행위가 아니라 경쟁력이다. 회사에서 중요한 것은 개발자가 코드를 한 글자씩 직접 입력했는지가 아니라, 제한된 시간 안에 정확하고 유지보수 가능한 결과물을 만들어 냈는지다. 반면 학교 과제의 목적은 결과물 자체가 아니라, 그 결과물을 만들어내는 과정에서 학생의 능력을 형성하는 데 있다.


같은 AI 사용이라도 회사에서는 생산성이 되고, 수업에서는 학습 과정을 건너뛴 부정행위가 될 수 있다. 결국 문제는 AI라는 도구가 선한가 악한가가 아니다. 그 과제가 무엇을 평가하기 위한 것이었는가에 달려 있다.


딱 1년 전, 현 회사로 이직하기 전까지 나는 이전 회사에서 여전히 손코딩을 했다. 여느 개발자처럼 한 줄 한 줄 코드를 수작업으로 작성했고, 빌드와 실행을 반복하며 의도대로 동작하는지 확인했다. 잡히지 않는 버그라도 생기면 이를 찾기 위해 온갖 방법을 동원해야 했다.


문제가 발생한 지점까지 실행을 반복하며 변수의 값을 확인하고, 그래도 여의치 않으면 디버깅 코드를 심어 수천 줄의 로그를 뽑았다. 그 로그를 한 줄 한 줄 대조하면서 프로그램의 흐름을 추적했다. 데드라인을 맞추기 위해 1~2주 동안 야근하는 일도 비일비재 했다.


버그를 수정하고 돌아가는 코드를 힘겹게 만들어냈다고 끝이 아니었다. 팀에서 관리하는 저장소에 코드를 체크인하면 동료들의 매서운 리뷰가 시작됐다. 명확한 이유 없이 단순한 편의만을 위해 작성한 코드에는 어김없이 "Why?"로 시작하는 코멘트가 달렸다. 그럴듯한 이유를 급조해 방어하거나, 그러지 못하면 코드를 전면 수정해야 했다. 물론 그 모든 고통스러운 시간 끝에 쓸 만한 코드를 만들어내면 그만큼 성취감도 컸다.


그로부터 1년, 세상은 급속도로 변했다.


이직한 회사는 여느 빅테크보다 AIX에 급진적이었고, 바이브 코딩을 위한 A부터 Z까지의 환경이 잘 갖춰져 있었다. 여전히 ‘신기술 적용에 게으른’ 나는 그 파도에도 비교적 뒤늦게 올라탔다. 그리고 정신을 차리고 보니, 적어도 내 주변에서는 앞서 말한 재래식 개발 방식이 빠르게 사라지고 있었다. 코딩, 디버깅, 실행, 코드 리뷰, 성능 분석 등 개발에 필요한 일련의 과정이 '딸깍' 몇 번으로 진행되는 시대다. 내가 불과 1년 전까지 감내했던 개발의 인고에서 개발자를 자유롭게 해주는 시대가 온 것이다.


한국이었다면 진작 코딩에서 손을 뗐어야 할 구세대인 나는 AI 도구를 익히는 속도가 느리다. 노안은 이미 찾아왔고, 타이핑 속도도 현저히 떨어졌다. 그래서 가끔은 빠릿빠릿한 우리 팀 인턴에게 새로운 기능을 배우기도 한다.


하지만 일단 사용법을 익히고 나면, 그 친구보다 내가 AI의 등골을 더 잘 빼먹는 것 같기도 하다. AI가 내뱉은 요약을 이해하고, 미진한 부분을 찾아 추가 작업을 지시할 때 커리어 내내 축적한 '조직적 지식(institutional knowledge)'이 활용되기 때문이다.


이직 후 수십만, 수백만 줄의 새로운 시스템을 맞닥뜨리더라도 동종 업계에서 유사한 시스템을 다뤄본 경험은 사라지지 않는다. AI가 제시한 설명에서 중요한 것이 무엇인지, 무엇이 빠졌는지, 어디까지 믿어도 되는지를 판단할 수 있다. 경험이 많을수록 AI에 일을 잘 시키는 것만이 아니라, AI가 만든 결과물을 더 집요하게 의심할 수 있다.


AI에게 코드를 만들라고 시켜놓고 문득 그런 생각이 들었다.


철들고 보니 이미 AI로 둘러싸인 세대에게 AI는 어떤 의미일까? 특히 개발을 천직으로 삼아 이제 막 커리어를 시작하려는 세대에게 AI는 생산성을 극대화해 주는 히어로일까? 아니면 코딩의 원리와 도메인 지식을 쌓을 기회를 빼앗는 빌런일까?


과제에서 AI 사용을 엄격히 금지한 교수의 의도는 명확해 보인다. 그리고 나는 그 의도를 십분 이해한다. "나는 젊을 때 고통스럽게 손코딩했으니, 너희도 한번 고생해 봐라"라며 학생들을 골탕 먹이려는 것이 아니다. 향후 엔지니어가 될 공학도의 머릿속에 커리어 내내 근간이 되어야 할 전공 지식을 AI가 대신 채워줄 수 없기 때문이다.


수업에서 들은 지식은 자신의 손을 거쳐 다시 만들어져야 비로소 자기 것이 된다. 코드를 직접 짜고, 틀리고, 버그를 찾고, 왜 동작하지 않는지 고민하는 과정이 두뇌 안에 지식의 구조를 만든다. 그 일련의 과정은 하나도 버릴 것 없이 값진 경험으로 남는다.


AI가 개발 과정과 개발자를 대체한다는 공포 마케팅이 거세질수록 오히려 기초와 본질에 집중해야 한다. 교수는 자신의 학생들이 깊은 도메인 지식으로 무장한 엔지니어가 아니라, 몇 가지 도구 사용법만 익힌 얇은 코더가 되는 것을 경계했을 것이다.


AI 사용을 제지받는 공학도나, 여전히 전통적인 코딩 테스트를 치러야 하는 입사 지원자들은 불만이다. 업계는 이미 AI 코딩을 중심으로 재편되고 있는데 왜 우리는 AI를 사용하면 안 되느냐고 묻는다. 학교가 학생을 위한다면 오히려 AI 사용을 장려하고, 취업에 도움이 되도록 AI를 더 잘 쓰는 기술을 가르쳐야 하는 것 아니냐고 반문한다. 나무를 베는 목적을 달성하기 위해서는 도끼나 톱보다 빠르고 효과적인 전기톱을 쓰면 된다. 전기톱이 있는데 굳이 도끼와 톱을 다시 꺼낼 필요는 없다는 주장이다.


맞는 말이다.


하지만 전기톱을 손에 쥐여준다고 해서 누구나 나무를 벨 수 있는 것은 아니다. 나무가 어느 방향으로 쓰러질지, 어디에 절개를 넣어야 할지, 톱날이 끼거나 튕겨 나올 때 어떻게 대처해야 할지는 전기톱이 대신 판단해 주지 않는다. 도구가 강력해질수록 도구를 다루는 사람의 판단은 오히려 더 중요해진다.


AI 코딩도 마찬가지다.


AI가 만든 코드가 동작한다는 사실과, 그 코드가 왜 동작하는지를 아는 것은 다르다. 지금 당장 테스트를 통과하는 코드와, 실제 제품에서 수년간 유지될 수 있는 코드도 다르다. AI가 자신 있게 내놓은 답을 받아 적는 능력보다, 그 답이 틀렸다는 것을 알아차리는 능력이 훨씬 중요하다. 그 능력은 프롬프트를 잘 쓰는 요령만으로 생기지 않는다. 직접 코드를 짜고, 실패하고, 디버깅하고, 다른 사람에게 "왜 이렇게 작성했는가"라는 질문을 받아본 경험에서 생긴다.


그렇다고 학교가 계속해서 AI를 금지하기만 하면 된다는 뜻도 아니다. 기초 개념과 사고 과정을 익히는 과제에서는 AI 사용을 제한할 수 있다. 대신 일정 수준을 넘어선 과제에서는 AI를 적극적으로 사용하게 하고, AI에게 어떤 일을 맡겼는지, 결과를 어떻게 검증했는지, 잘못된 답을 어떻게 찾아 수정했는지를 평가해야 한다. AI가 new norm이 된 이상 더 이상 이를 외면할 수 없다. 학교는 AI를 활용한 학생들이 사고력을 배양시키도록 그만큼 더 정교한 커리큘럼을 설계해야 한다. 앞으로 필요한 엔지니어는 AI 없이 모든 코드를 손으로 작성하는 사람도, AI가 만들어준 코드를 그대로 복사해 붙이는 사람도 아니다. AI를 최대한 활용하되, 언제 그것을 믿어서는 안 되는지를 아는 사람이다.


자율주행차를 타더라도 도로를 읽을 줄 알아야 한다. 전기톱을 쓰더라도 나무의 결을 볼 줄 알아야 한다. AI에게 코딩을 맡기더라도 코드의 논리를 이해할 수 있어야 한다. 운전대를 놓는 것과 운전할 능력을 버리는 것은 다른 일이다. 우리가 AI에 기꺼이 넘겨줘야 할 것은 반복적인 노동이지, 스스로 생각하고 판단할 수 있는 능력까지는 아니다.


'딸깍' 몇 번으로 그럴듯한 결과가 만들어지는 시대일수록, 인간은 자신의 사고력과 판단력을 지키기 위해 더 의식적으로 노력해야 한다. 그런 점에서 AI 없이 기초를 쌓고, 이제는 AI와 함께 일하게 된 나 같은 과도기 세대는 어쩌면 운이 좋았는지도 모른다. 직접 부딪치며 쌓은 지식도 있고, 그 지식을 몇 배로 증폭해 주는 도구도 손에 넣었기 때문이다.


그러나 그것은 우리 세대가 더 우월하다는 뜻이 아니다. 오히려 다음 세대가 AI의 도움을 받으면서도 생각하는 힘을 잃지 않도록, 무엇을 직접 경험하게 하고 무엇을 기계에 맡길 것인지 더 치열하게 고민해야 할 바카라임이 생겼다는 뜻에 가깝다.



- 예나빠



표지 이미지 출처: Pexels

이전 01화오늘 내가 한 일이 뭐지?