- AI 도구가 주니어 개발자에게 얕은 역량만 만들어주고 있으며, 코드를 빠르게 출력하지만 왜 그런 접근을 택했는지 설명하지 못하는 상황이 빈번해짐
- 시니어 개발자의 진정한 가치는 코드 작성 속도가 아니라, 수년간 실패를 통해 축적한 실패 패턴 인식에 있음
- AI를 사용하더라도 에러를 직접 분석하고, 코드를 추적하고, 가설을 세우는 의도적 고군분투 과정이 필수적임
- 커밋하는 모든 코드에 대해 라이브러리 선택 이유, 패턴, 트레이드오프를 직접 설명할 수 있어야 하며, 그렇지 않으면 출시 준비가 안 된 것임
- AI를 단순 답 생성기가 아닌 튜터로 활용해, 여러 접근법의 장단점을 학습하는 방식으로 전환해야 함
문제의 본질: AI가 만드는 얕은 역량
- LLM 활용으로 빠른 기능 구현과 배포가 가능해졌지만, 코드 선택 이유를 설명하지 못하는 상황 발생
- 코드 리뷰에서 접근 방식을 묻는 질문에 답하지 못하는 얕은 역량(shallow competence) 현상이 확산
- AI가 제시한 코드를 그대로 수용하는 패턴이 반복됨
- 겉으로는 생산성이 높아 보이지만, 설계 의도와 트레이드오프에 대한 이해가 부족한 상태
- 이러한 문제는 시간이 지나며 신뢰 하락으로 이어질 가능성이 있음
시니어 개발자가 가치 있는 이유
- 경험 많은 개발자가 비싼 이유는 코드를 빠르게 쓰기 때문이 아니라, 무엇을 하지 말아야 하는지 오랜 시간에 걸쳐 체득했기 때문
- 잘못된 아키텍처 결정을 내리고 그 결과와 함께 살아본 경험, 새벽 2시에 장애 호출을 받아본 경험 등에서 비롯된 실패 패턴 인식이 기업이 실제로 지불하는 비용
- 현재 많은 주니어 개발자가 AI 활용 과정에서 이 과정을 건너뛰는 현상이 발생
5가지 전략
-
1. 기초를 제대로 학습할 것
-
좋은 코드가 무엇인지 알아야 AI가 내놓는 결과물을 평가할 수 있으며, 그렇지 않으면 AI 출력을 맹목적으로 수용하게 됨
- 추천 도서: Head First Design Patterns(코딩 패턴과 선택 이유 이해)와 Designing Data-Intensive Applications(데이터 집약 시스템 설계 원리)
-
2. 장애 사례를 공부할 것
- Cloudflare, AWS, Azure, Google 등 대형 서비스 장애 시 발행되는 상세 포스트모템(post-mortem) 문서를 읽을 것을 권장
- 원인, 근본 원인 분석, 수정 방법, 재발 방지 대책 등이 포함되어 있음
- Amazon에서는 COE(Correction of Errors), Facebook 등 대부분의 대형 기술 기업에도 내부 유사 문서가 존재
- 복잡한 시스템이 어떻게 무너졌는지 이해하는 것이 문서를 읽는 것보다 훨씬 강하게 기억에 남음
-
3. 고군분투를 의도적으로 만들 것
- AI 이전에는 문제를 직접 해결하는 과정이 선택이 아니라 기본이었으나, 이제 24시간 사용 가능한 탈출구가 존재
- 에러를 AI에 붙여넣기 전에 먼저 스택 트레이스를 읽고, 코드를 추적하고, 로그를 확인하고, 무엇이 잘못되었는지 가설을 세워볼 것
- 이 과정이 진짜 디버깅 감각을 구축하는 방법
- AI는 이후에 활용해도 됨
- 온콜에 참여하고, 아무도 안 잡는 티켓을 맡는 것이 시스템 작동 원리를 배우는 가장 효과적인 방법
-
4. 이해하지 못한 코드를 절대 출시하지 말 것
- 코드 리뷰에서 특정 접근법을 택한 이유를 물었을 때 "AI가 제안했다"고 답하면, 즉시 신뢰를 잃음
- AI를 사용한 것이 문제가 아니라, 자신이 제출하는 코드를 이해하려는 노력을 하지 않은 것이 문제
- 커밋하는 모든 라인에 대해 왜 이 라이브러리인지, 왜 이 패턴인지, 트레이드오프가 무엇인지 설명할 수 있어야 함
- 속도를 줄이더라도 이해가 선행되어야 하며, 단순 복사-붙여넣기하는 사람이라는 평판은 회복하기 매우 어려움
-
5. 답이 아니라 "왜"를 프롬프트할 것
- AI에게 문제 해결만 요청하는 대신, 여러 접근법과 각각의 장단점 설명을 요청할 것
- 이렇게 하면 두 가지 효과 발생:
- 트레이드오프에 대해 실제로 학습하게 됨
- AI가 추론 과정을 거치면서 추천 자체가 바뀌는 경우도 있어, 더 나은 답을 얻을 수 있음
속도 압박에 대한 현실적 조언 : 생산성과 학습의 균형
- 속도를 늦추면 뒤처질 것이라는 우려는 현실적이나, 업무를 완전히 멈출 필요는 없음
-
여유 시간, 사이드 프로젝트, 경쟁이 적은 티켓 등에서 의도적이고 불편한 학습을 수행할 것
- 실제 기술을 쌓는 시간과 단순 출력하는 시간을 의식적으로 구분해야 함
AI를 튜터로 활용할 것
- 이전 세대 개발자에게는 없었던, 무엇이든 원하는 깊이로 설명해주는 AI 튜터를 지금 가지고 있음
- AI에게 일을 시키기만 하지 말고, 설명을 요청하고 가르치게 하는 방식으로 활용해야 함
- 개발자의 가치는 코드를 출력하는 능력이 아니라, 어떤 코드든 보고 좋은 코드인지 판단할 수 있는 능력에 있음
- AI가 생성한 코드 여부와 무관하게, 좋고 나쁨을 구분하는 능력이 핵심 역량
-
의도적 학습과 실패 경험 축적만이 장기적 경쟁력을 형성할 수 있음