Copilot과 함께 학습한 주니어 개발자는 그것 없이는 디버깅을 못 한다. 괜찮다.
요약
AI 도구 사용으로 인해 주니어 개발자의 기초 역량이 저하된다는 우려에 대해, 이는 기술적 추상화가 높아지는 역사적 과정의 반복이라고 분석합니다. 핵심적인 위험은 단순한 코드 작성 능력의 부재가 아니라, AI가 생성한 코드의 오류를 식별하고 비판할 수 있는 '안목'을 기르지 못하는 데 있습니다.
핵심 포인트
- 기술의 발전은 항상 추상화 수준을 높여왔으며, 이에 따라 요구되는 '기본기'의 정의도 변화한다.
- AI 시대의 진정한 위험은 디버깅 능력의 상실이 아니라, AI 결과물의 미묘한 오류를 잡아내는 비판적 안목의 결여이다.
- 미래의 개발자에게는 코드를 직접 작성하는 능력보다 코드를 비판적으로 읽고 검토하는 능력이 더 중요해진다.
- 프롬프트 엔지니어링과 코드 리뷰 역량이 새로운 핵심 기술 세트로 부상하고 있다.
한 주니어 개발자가 AI 도구를 사용하는 것에 대해 “바보가 되어가는 기분”이라고 온라인에 공유했고, 이 게시물은 입소문을 탔습니다. 수천 명의 시니어 개발자들이 그들에게 동의하며 “우리가 말했잖아”라고 말했습니다. 저는 그들이 잘못된 것에 대해 패닉에 빠져 있다고 생각합니다.
하늘이 무너지는 듯한 상황 (The Sky Is Always Falling)
새로운 개발자들 사이에서 Copilot 도입은 이제 기본적으로 보편적입니다. 주니어들은 자신이 완전히 설명할 수 없는 코드를 배포하고 있습니다. 그들은 자동 완성(autocomplete)이 손을 잡아주지 않으면 디버깅에 어려움을 겪습니다. 그리고 시니어 엔지니어들은 이를 비상사태처럼 취급하고 있습니다. 저는 우리가 이전에 이런 상황을 겪어본 적이 있다고 느낍니다. 10년 전에는 Stack Overflow가 악당이었습니다. “이 젊은 개발자들은 인터넷에서 복사하지 않고는 아무것도 못 해!” 이 말이 낯익으신가요?
우리는 C를 작성하기 위해 어셈블리(Assembly)를 요구한 적이 없다 (We Never Required Assembly to Write C)
여기서 중요한 것은 관점의 전환입니다. C가 어셈블리를 대체했을 때, 아무도 모든 C 프로그래머가 먼저 기계어(machine code)를 직접 쓸 수 있다는 것을 증명하라고 요구하지 않았습니다. 추상화(abstraction) 수준이 높아졌습니다. 필요한 기술 또한 이동했습니다.
→ 어셈블리 프로그래머들은 C 개발자들이 게으르다고 생각했습니다.
→ C 프로그래머들은 Java 개발자들이 온실 속 화초 같다고 생각했습니다.
→ Java 개발자들은 JavaScript 개발자들이 진지하지 않다고 생각했습니다.
→ 이제 모두가 AI의 도움을 받는 개발자들이 망가졌다고 생각합니다.
이것은 반복되는 사이클과 같습니다. 모든 세대의 개발자들은 자신들이 "기본(fundamentals)"을 이해하지 못하고 있다는 말을 듣습니다. 다만 "기본"의 정의가 계속해서 위로 이동할 뿐입니다. 수동으로 세그폴트(segfault)를 추적할 수는 없지만, AI와 협업하여 작동하는 기능을 설계할 수 있는 그 주니어는 어떤가요? 그들은 결여된 것이 아니라, 다른 기술 세트(skill set)를 가지고 있는 것입니다.
실제로 위험해지는 지점 (Where It Actually Gets Dangerous)
위험이 전혀 없다고 주장하는 것은 아닙니다. 위험은 존재하지만, 대부분의 사람들이 생각하는 방향과는 다릅니다. 실제 위험은 주니어 개발자들이 Copilot 없이는 디버깅을 할 수 없다는 점이 아닙니다. 그 위험은 그들이 AI의 결과물이 미묘하게 틀렸을 때를 알아채는 '안목(taste)'을 영영 기르지 못할 수도 있다는 점입니다. 겉보기에는 좋아 보이는 상상 속의 함수, 확신에 찬 코드 속에 숨겨진 레이스 컨디션(race condition), 지금은 작동하지만 규모가 커지면 무너져 버리는 아키텍처적 선택 같은 것들 말입니다.
그것이 바로 우리가 우려해야 할 기술 격차(skill gap)입니다. "참조(reference) 없이 for 루프를 작성할 수 있는가" 같은 것이 아닙니다. 🙄
기술의 기준선(Skill Bar)은 사라진 것이 아니라 이동했습니다. 지금 등장하는 주니어들은 제가 배웠던 것과는 다른 것들을 배워야 합니다. 그들은 단순히 코드를 작성하는 것이 아니라, 코드를 비판적으로 읽는 법을 배워야 합니다. AI가 확신에 차서 틀린 답을 내놓을 때를 감지하는 감각을 길러야 합니다. 그들은 단순히 결과물을 생산하는 사람이 아니라, 결과물을 비판할 수 있을 만큼 시스템을 충분히 파악할 수 있어야 합니다.
→ 프롬프트 엔지니어링(Prompt engineering)은 이름이 다소 우스꽝스러울지라도 실제적인 기술입니다.
→ 무엇을 만들지 아는 것이 한 글자씩 타이핑하는 것보다 더 중요합니다.
→ 코드 리뷰(Code review) 본능이 그 어느 때보다 가치 있어졌습니다.
기준이 낮아진 것이 아닙니다. 단지 약간 이동했을 뿐입니다. 솔직히 말해서, 일부 주니어 개발자들은 단순히 문법을 외우느라 6개월 동안 헤매지 않았다는 이유만으로, 저보다 더 빠르게 결과물을 내놓고 시스템 아키텍처를 설계하는 지식을 더 빨리 습득하고 있습니다.
시니어 개발자가 실제로 해야 할 일
만약 당신이 AI에 의존하는 주니어들 때문에 좌절감을 느끼는 시니어 개발자라면, 그 마음을 이해합니다. 하지만 해결책은 그들의 도구를 뺏는 것이 아닙니다. 그들에게 판단력을 기를 수 있을 만큼의 최소한의 하위 계층(layer underneath)을 가르치는 것입니다.
Copilot을 비활성화한 상태에서 멘티와 함께 디버깅 세션을 진행해 보세요. 이것을 벌이 아니라 경험(exposure)으로서 제공하십시오. 이 도구가 무엇을 추상화(abstracting away)하고 있는지 보여줌으로써, 그들이 도구의 실수를 쉽게 찾아낼 수 있도록 하십시오. 그것이 멘토링입니다. 과거의 방식을 고수하며 보호하는 것은 멘토링이 아닙니다.
💡 "바보가 되어가는 것 같다"는 글을 올린 젊은 개발자는 망가진 것이 아닙니다. 그들은 격차를 인지하고 있으며, 그 사실만으로도 이미 대부분의 사람들과 차별화됩니다. 제가 정말 우려하는 대상은 AI가 만들어낸 결과물에 대해 단 한 번도 의문을 제기하지 않는 사람들입니다.
모든 세대의 개발자는 이전 세대의 눈에 약해 보입니다. 하지만 모든 세대는 결국 잘 해냅니다. 업무 그 자체가 성장을 강제하기 때문입니다. 시대는 변하지만, 사고방식은 변하지 않습니다.
AI의 도움을 받는 주니어들이 도구의 도움 없이 반드시 고통스럽게 익혀야 한다고 생각하는 단 하나의 기술은 무엇인가요?
AI 자동 생성 콘텐츠
본 콘텐츠는 Dev.to AI tag의 원문을 AI가 자동으로 요약·번역·분석한 것입니다. 원 저작권은 원저작자에게 있으며, 정확한 내용은 반드시 원문을 확인해 주세요.
원문 바로가기