Jr Devs - "I Can't Code Anymore" - YouTube
AI가 개발을 돕는가, 개발자를 퇴화시키는가?
Cursor IDE나 Copilot을 사용해 본 사람이라면 한 번쯤 느꼈을 감정이다.
*"아 뭐야, 엄청 빠르네. 내가 안 해도 되겠는데."*
그리고 AI가 짜준 코드가 내가 만든 코드보다 훨씬 간결하고, 모듈화도 잘 되어 있다.
그러다 보면 어느 순간, 나는 코드보다 자연어를 더 많이 입력하고 있는 자신을 발견하게 된다.
이러한 현상을 두고 두 가지 시각이 존재한다.
- 개발자가 퇴화하고 있다.
AI가 모든 것을 해결해주니, 깊이 있는 사고를 할 기회가 줄어든다. 개발자의 기본기가 약화되고 있다. - 원래 개발이란 이런 것이다.
개발이란 본래 생산성을 높이는 것이고, 비효율적인 삽질에서 벗어나는 것이 맞다. 오히려 기존의 방식이 비효율적이었던 것이다.
영상의 저자 역시 Copilot을 매번 사용하다가, 어느 날 Lua의 for
문을 잊어버려 혼자 코드를 작성하지 못한 경험을 했다고 고백한다. 이는 많은 개발자들이 공통적으로 겪고 있는 문제다.
문제 정의: AI가 개발자의 깊은 지식 습득을 방해한다.
1. 탐구 과정의 부재
- AI의 답변은 최종 결과물일 뿐, 그 과정이 생략된다.
- 하지만 우리는 탐구 과정에서 재미를 느끼고, 문제 해결 능력을 키운다.
- 기존 학습 루트:
검색 → 독해 → 맥락 파악 → 실험
→ AI 시대의 학습 루트: AI에게 모듈 받기
2. 대체 방법과 장단점을 모른다.
- AI가 제시한 코드가 동작한다고 해도, 왜 그런 방식이 최적인지 모른다면 유지보수 및 디버깅 시 문제가 발생한다.
- 특히 코드가 많아지고, 복잡도가 올라갈수록 "진짜 문제"들이 나타난다.
- 유지보수
- 최적화
- 디버깅
- 아키텍처 설계
- AI가 만들어준 코드 조각들을 이어 붙여 개발을 계속할 수는 있지만, 그 과정에서 개발자가 ‘진짜 성장’을 하지 못하면 결국 한계에 부딪힐 수밖에 없다.
- (마치 변종 키메라는 강력하지만, 레벨업을 못 해서 결국 주인공에게 패배하는 것처럼.)*
해결 방법
1. 결과를 거꾸로 탐구하는 자세
- AI가 제공한 코드가 왜 이렇게 동작하는지 계속해서 질문하고 검증해야 한다.
- "왜 이 방식이 최선인가?", "다른 대안은 없는가?"를 고민하는 습관이 필요하다.
2. 빠른 개발과 사고를 병행하는 장치 마련
- 코드 리뷰와 토론 활성화
- AI를 활용하면서도, 팀원들과 코드 리뷰에서 대체 방법과 선택의 이유를 공유하는 습관을 기른다.
- 리뷰 시 내가 시도해 본 다른 방법과 그 근거를 간략히 첨부한다.
3. 기본기 강화: 직접 재구현해보기
- 특정 기능을 처음부터 직접 구현하는 연습을 한다.
- 특히 인프라 레벨이나 작은 라이브러리를 직접 만들어보면 큰 도움이 된다.
- 예: WebSocket 프로토콜을 처음부터 구현해보기
4. 기본기 관련 서적 꾸준히 읽기
- 자료구조, 알고리즘, OS, 네트워크, 디자인 패턴 등의 기초 지식을 지속적으로 학습해야 한다.
- "언젠가 필요할 수도 있다"가 아니라, AI와 함께 일할 때 더 강력해지기 위해 필요한 지식이다.
생각해볼 점
1. Deep한 이해가 모든 개발자의 필수 요소인가?
- 사실 대부분의 개발자는 CRUD 개발만 잘해도 업무를 수행하는 데 큰 문제가 없다.
- INT형이 몇 비트인지, 프로토콜이 어떻게 동작하는지, 언어 내부가 어떻게 설계되어 있는지를 아는 것이 실제 업무 수행의 필수 요소는 아닐 수도 있다.
- 물론 알면 좋다. 하지만, 기업이 요구하는 ‘생산성’과 ‘속도’라는 관점에서 볼 때, 모든 개발자가 이를 깊이 이해해야 하는지는 논란의 여지가 있다.
2. 결국 개발자의 태도 문제
- GPT를 사용할 때, 묻고 답하기만 하면 안 된다.
- 답을 얻었더라도, 중간 과정에서 실험하고 탐구해야 한다.
- AI가 제공한 룰(규칙)만 받아들이는 것이 아니라, 방향을 스스로 설정할 수 있어야 한다.
3. "페어 프로그래밍"의 필요성
- AI는 방향을 제시해주지 않는다. 따라서 개발자는 적절한 질문을 던지고, 문제를 분석하는 능력이 필요하다.
- 개발 방식도 점점 변할 것이며, 페어 프로그래밍의 개념이 더욱 중요해질 가능성이 높다.
- 단순한 "AI와의 Q&A"가 아니라, 질문 템플릿이나 새로운 방법론이 등장할 가능성이 크다.
결론: AI 시대의 개발자가 갖춰야 할 3가지 핵심 역량
- 기본기(Basics)
- 자료구조, 네트워크, OS, 디자인 패턴 등의 핵심 개념을 지속적으로 학습해야 한다.
- AI가 제공하는 코드를 보고 이해하는 것이 아니라, 직접 검증하고 분석하는 능력이 필요하다.
- 비판적 사고(Critical Thinking)
- AI가 제공한 답을 무조건 신뢰하는 것이 아니라, 왜 이런 답이 나왔는지 스스로 질문하고 검토해야 한다.
- 디버깅, 최적화, 유지보수 등에서 AI는 한계를 가질 수밖에 없다.
- 페어 프로그래밍(Pair Programming) + AI 활용 능력
- AI는 개발 속도를 무한정 끌어올리는 것이 아니라, 사람의 속도에 맞춰 페어 프로그래밍을 하는 도구가 될 것이다.
- 개발자는 자신의 목표와 학습 속도를 설정하고, AI를 이를 보조하는 도구로 활용하는 능력을 갖춰야 한다.
👉 AI를 활용할 것인가, AI에게 종속될 것인가?
개발자로서 스스로 학습하고 성장할 것인지, AI에게 코딩을 떠넘기는 단순한 중개자로 전락할 것인지는 결국 개발자의 태도에 달려 있다.
GPT의 개발 속도에 맞춰 개발하는 사람은 없다. 결국 내 속도에 맞게 AI와 협업하는 능력이 필요하다.
'Etc' 카테고리의 다른 글
ICT 공모전 후기 (5) | 2024.07.24 |
---|---|
Cpp map insert() & 범위 기반 반복문 (0) | 2024.03.14 |
Drunk Passenger Problem 확률 문제 (cpp) :: (0) | 2024.02.04 |