작동하는 코드를 작성하는 것만으로는 더 이상 프로그래밍을 배웠다는 충분한 증거가 되지 않는다고, Udemy에서 650,000명 이상의 수강생이 강의를 수강한 Python 강사 Ardit Sulce는 말한다. 인공지능 도구가 애플리케이션의 상당 부분을 생성할 수 있게 되면서, 초점은 모든 줄을 직접 작성하는 데서 도구가 생성한 결과를 이해하고, 검토하고, 오류를 발견하며, 시스템 구성 요소가 서로 어떻게 연결되는지 아는 것으로 이동하고 있다.
이러한 관점은 JetBrains Blog가 Sulce와 진행해 게재한 인터뷰에서 제시됐다. Sulce는 프로그래밍 교육 분야에서 10년의 경험을 보유하고 있으며, 독일 University of Münster에서 지리기술 석사 학위를 받았다. 또한 인공지능을 프로그래밍 및 소프트웨어 개발 학습을 위한 개인 교사로 활용하는 플랫폼 ActiveSkill Dev의 창립자이자 주요 개발자이기도 하다.
인공지능은 질문을 바꾸었지만 교사의 역할을 없애지는 않았다
Sulce에 따르면 그가 학생들에게서 매일 받는 질문의 수는 생성형 인공지능이 확산되기 전보다 5~10배 줄었다. 학생이 문제에 직면했을 때 토론 페이지에 질문을 올리고 교사나 교육 보조자의 답변을 기다리는 대신 즉시 답을 얻을 수 있기 때문이다.
그러나 그가 설명하듯 남은 질문은 더 크고 판단에 더 의존하게 됐다. 어떤 경로를 따라야 하는가? 프로젝트가 포트폴리오에 포함될 만한가? 학생이 배우는 내용은 더 넓은 그림 속에서 어떻게 자리 잡는가? 이러한 관점에서 교육 과정의 역할은 특정 질문에 답하는 데 그치지 않고, 초보자가 기본적인 질문조차 알지 못하는 분야에서 체계적인 경로를 제공하는 데 있다.
학습자의 기대도 달라졌다. Python과 인공지능의 관계를 무시하는 Python 과정은 학습자들에게 낡아 보인다. 학습자들은 코딩을 빠르게 하기 위해 도구를 사용하는 법과 언어 모델, 에이전트, 자동화를 활용하는 애플리케이션을 구축하는 법을 배우고 싶어 한다. 반면 무엇을 어떤 순서로 배워야 하는지 정하고 동기와 호기심을 제공하는 교사는 여전히 중요하다. Sulce는 이러한 요소를 인공지능 도구가 반복적으로 제공하기는 여전히 어렵다고 본다.
모든 학습의 고통이 같은 것은 아니다
Sulce는 이해를 쌓는 노력과 시간을 낭비하게 하는 마찰을 구분한다. 반복문이 한 번 더 실행되는 이유를 알아내거나 프로그램 안에서 데이터 흐름을 추적하려는 시도는 학습의 일부가 될 수 있다. 반면 손상된 패키지 설치, 모호한 설정 오류, 현재 환경과 더 이상 호환되지 않는 오래된 강의에서 비롯된 문제는 뚜렷한 학습 손실 없이 인공지능에 위임할 수 있는 장애물이다.
이 기준에 따르면 초보자는 다음과 같이 자문해야 한다. 이 문제를 해결하면 나중에 활용할 수 있는 이해를 얻게 되는가, 아니면 단지 시작했던 지점으로 돌아가게 되는가? Sulce는 학습 단계에서 코드를 직접 작성하는 일이 여전히 중요하다고 강조한다. 변수, 반복문, 데이터 흐름에 대한 정신적 모델을 형성하는 데 도움이 되기 때문이다. 반면 전문적인 업무에서는 모든 코드를 직접 작성하는 것보다 도구가 생성한 결과를 검토하는 일이 더 중요해질 수 있다.
경력 초기 개발자를 위한 세 가지 기술
- 직접 작성하지 않은 코드 읽기: 개발자는 GitHub 저장소, 자신의 과거 프로젝트, 에이전트의 출력을 읽고 코드가 올바른지, 입력이 바뀌어도 여전히 적절한지 판단해야 한다.
- 요구 사항을 정확하게 표현하기: Sulce는 모델에 보내는 좋은 요청이 코드가 무엇을 해야 하고 무엇을 해서는 안 되는지, 그리고 경계 조건에서 어떻게 동작해야 하는지를 정하는 명세라고 본다. 이는 과거에 다른 담당자의 책임인 경우가 많았던 요구 사항 개념과 유사하다.
- 시스템 수준의 이해: 코드의 개별 부분을 아는 것만으로는 충분하지 않다. 개발자는 애플리케이션의 구성 요소와 그 연결 방식을 이해해야 한다. 이러한 기술이 있어야 인공지능의 출력에 종속되는 대신 인공지능을 감독할 수 있다.
이에 따라 학생과 취업 지원자를 평가하는 방식도 바뀌어야 한다. 애플리케이션을 만들어 보라고만 요청하는 대신, Sulce는 반복문의 경계 오류, 예외의 조용한 무시, 빈 입력이 있을 때의 잘못된 동작과 같이 정확한 문제가 포함된 인공지능 생성 코드를 제공한 뒤, 지원자가 문제를 발견하고 설명하는 능력을 시험할 것을 제안한다. 또한 실시간 디버깅 세션을 진행해 고장 범위를 좁혀 가는 방식을 관찰할 수도 있다.
코드에서 감독으로 나아가는 단계적 경로
Sulce는 학습을 세 단계로 나눈다. 통합 개발 환경에서 작은 실제 프로그램을 직접 작성하는 단계, 더 큰 프로젝트로 넘어가면서 이해하지 못하는 부분을 설명해 주는 교사로 인공지능을 활용하는 단계, 마지막으로 학습자가 검토하는 동안 인공지능이 코드 일부를 작성하는 업무 동료로 활용하는 단계다.
이러한 단계적 진행은 프로젝트 규모를 점차 늘리는 것을 전제로 한다. 스크립트에서 데이터베이스를 사용하는 애플리케이션으로, 다시 사용자와 상호 작용하는 프로젝트로, 배포된 서비스로, API에 연결되는 애플리케이션으로 확장하는 방식이다. 실제로 이 경로는 문법 지식과 시스템 이해를 연결하며, 코드를 몇 년간 작성하면 아키텍처에 대한 이해가 자동으로 생길 것이라고 가정하지 않는다.
인터뷰는 전문적인 개발 환경에서 학습하는 일이 형식적인 세부 사항이 아님을 강조한다. 인공지능을 활용하는 프로젝트에는 환경 파일의 API 키, 가상 환경, 의존성 충돌, 패키지 버전 간 차이, 에이전트가 생성하거나 수정한 파일이 포함된다. 따라서 프로젝트를 실행하고, 변경 사항을 검토하고, 오류를 수정하며, 코드를 안전하게 조정하는 능력이 학습자가 실제로 도구를 감독하는지 아니면 도구가 생성한 결과를 그저 받아들이는지를 결정한다.