AI에 작업을 맡기면서 학습을 남기는 방법

코드를 읽고 예상한 결과와 실행 결과를 비교하는 학습 과정
목차

AI가 수정한 코드의 테스트가 통과해도 작성자가 오류의 원인을 이해했다고 볼 수는 없습니다. 이후 비슷한 오류를 조사하려면 수정한 조건과 실행 순서를 설명할 수 있어야 합니다. 기능 완료와 코드 이해를 별도로 확인해야 하는 이유입니다.

Addy Osmani는 Don't Outsource the Learning에서 작업 완료와 학습을 별개의 결과로 보자고 제안합니다. 반복 구현을 맡기더라도 앞으로 수정할 영역의 코드와 선택 이유는 확인해야 한다는 주장입니다. 아래에서는 이해도를 검사할 방법을 비동기 검색 예시로 설명합니다.

작업 시간과 이해도의 차이

Anthropic의 연구는 Python 라이브러리 Trio를 처음 배우는 개발자 52명을 대상으로 AI 지원 유무를 비교했습니다. 이해도 평가의 평균 점수는 AI 사용 그룹 50%, 직접 작성한 그룹 67%였습니다. 작업 시간 차이는 통계적으로 유의하지 않았습니다.

이 결과를 모든 개발 작업에서 AI가 학습을 방해한다는 결론으로 넓힐 수는 없습니다. 특정 참가자와 새로운 라이브러리 학습 과제를 대상으로 했고, 과제 직후 이해도를 측정한 실험입니다. 장기적인 학습 효과까지 확인한 결과는 아닙니다. 같은 AI 사용 그룹에서도 설명과 개념을 물은 방식과 대부분을 맡긴 방식의 차이가 관찰됐지만, 사용 방식별 관찰만으로 학습 결과의 원인을 확정할 수는 없습니다.

실무에서도 비슷하게 두 결과를 나눠 확인할 수 있습니다. 기능은 동작하는지, 작성자는 그 기능의 핵심 조건을 설명할 수 있는지입니다. 테스트 통과만으로 두 번째 결과까지 확인되지는 않습니다.

검색 A와 B의 응답 순서가 바뀌는 경우

직접 만든 검색 요청 시간선입니다. 먼저 보낸 요청 A가 늦게 도착하면 요청 B의 결과를 표시한 최신 화면을 덮을 수 있음을 그림에 표시했습니다.

수정을 요청하기 전의 가설

수정을 요청할 때는 관찰한 현상과 가설을 구분해 전달합니다. 가설이 맞는지 코드와 실행 결과로 확인하고, 틀렸다면 놓친 조건을 기록합니다. 아래 예시는 응답 순서 때문에 오래된 검색 결과가 표시되는 상황을 조사하는 요청입니다.

관찰: 목록을 빠르게 두 번 새로고침하면 예전 결과가 나옵니다.
가설: 먼저 시작한 요청이 늦게 끝나 최신 결과를 덮어쓸 수 있습니다.
요청: 이 가설을 코드와 실행 순서로 확인하고, 다른 원인도 검토해주세요.

이 예시는 비동기 요청의 순서를 배우는 상황입니다. 답을 받은 뒤에는 코드의 어느 부분이 가설을 뒷받침하는지, 실제로 어떤 순서가 발생했는지 확인합니다. 단순히 모델의 가설로 교체하면 직접 판단하는 단계가 다시 빠집니다.

코드의 결과를 예상하는 연습

낯선 라이브러리에서는 완성된 코드보다 기본 개념과 대안을 먼저 요청할 수 있습니다. 수정하기 전에 “이 코드가 사용하는 취소 처리의 범위와 실패 조건을 설명해달라”고 요청하고, 설명을 코드와 비교해볼 수 있습니다.

설명을 읽었다면 작은 입력으로 결과를 예상해봅니다. 요청이 실패하면 어떤 상태가 남는지, 응답 순서가 바뀌면 어느 값이 보이는지 적은 뒤 실행 결과와 비교합니다. 예상과 결과가 다른 부분이 다음 질문의 대상입니다.

생성 코드 전체를 외우려 하면 공부할 범위가 너무 커질 수 있습니다. 지금 수정한 핵심 동작 하나부터 자신의 말로 설명해보세요. 한 부분을 바꿨을 때 결과를 예상해보는 정도에서 시작해도 됩니다.

핵심 동작을 다시 써보는 이유

AI 출력도 다른 사람이 작성한 변경처럼 읽습니다. 입력과 출력, 예외 처리, 기존 코드의 가정을 확인합니다. 이해하지 못하는 부분은 설명을 요청하고, 필요하면 작은 함수나 조건문을 직접 다시 작성해볼 수 있습니다.

핵심 동작을 다시 구현하면 자신이 개념을 이해했는지 확인할 수 있습니다. 원본을 보지 않고 요청 취소나 중복 방지 로직을 작게 만들어보면 설명을 읽을 때 놓친 조건을 발견할 수 있습니다. 전체 기능을 매번 다시 만드는 대신 지금 배워야 할 부분만 선택합니다.

작업 기록에는 완료한 기능과 자신이 설명할 수 있는 개념을 따로 적어봅니다. 비동기 검색을 고친 날이라면 “오래된 응답이 최신 결과를 덮는 조건을 설명하고 작은 입력으로 확인했다”처럼 학습한 조건을 남길 수 있습니다.

학습 여부를 다시 확인하려면 응답 순서를 바꾼 입력에서 결과를 예상하고 실행 결과와 비교합니다. 수정한 코드가 동작하는지와 작성자가 그 조건을 설명할 수 있는지는 별개의 검사 결과로 남깁니다.

댓글

0

아직 공개된 댓글이 없습니다.