AI가 코드를 대부분 작성한다면, 개발자는 무엇을 알아야 할까

이 글은 Gergely Orosz의 When AI writes almost all code, what happens to software engineering?를 읽고, 구현을 맡긴 뒤 개발자가 확인해야 할 것들을 생각해 본 글입니다.

AI에게 기능을 설명하면 코드가 나오고, 수정을 요청하면 코드가 바뀐다. 개발자가 직접 작성하는 코드는 줄어들지만, 저장소에는 계속 새로운 코드가 쌓인다.

그렇다면 AI에 맡긴 코드를 어디까지 이해해야 할까?

코드가 나와도 결정은 남는다

예를 들어 AI에게 게시글 삭제 기능을 만들어 달라고 요청했다고 하자. AI는 삭제 버튼과 API를 연결하고, 데이터베이스에서 글을 지우는 코드를 작성했다. 화면에서 글이 사라지는 것까지 확인했다면 기능이 완성된 걸까.

삭제 기능의 동작은 아직 다 정해지지 않았다. 작성자만 삭제할 수 있는지, 관리자에게도 권한을 줄지 결정해야 한다. 실수로 지운 글을 복구할 수 있어야 하는지, 첨부 파일과 댓글은 어떻게 처리할지도 정해야 한다.

이 질문들은 사용자가 경험할 기능의 일부다. 요구사항에 적지 않은 문제도 구현 과정에서 답이 정해진다. AI가 작성한 코드에 그 답이 들어갔다면, 그것이 서비스에서 원한 동작인지 확인해야 한다. 그래서 AI에게 일을 맡길 때는 무엇을 요청했는지뿐 아니라 어떤 결정을 AI에 넘겼는지도 살펴봐야 한다.

테스트 통과는 무엇을 보장할까

테스트 코드를 볼 때도 AI가 무엇을 확인하도록 만들었는지 따져봐야 한다. ‘게시글 삭제 테스트 통과’는 작성자가 자기 글을 삭제할 수 있다는 뜻일 수 있다. 다른 사람의 글을 삭제할 수 없는지도 검사했는지는 테스트 내용을 읽어야 알 수 있다. 삭제 요청이 실패했을 때 화면에 성공 메시지가 뜨지 않는지도 별도로 확인해야 한다.

AI에게 구현과 테스트를 모두 맡길 수는 있다. 하지만 어떤 실패를 잡아야 하는지 정하는 일은 여전히 남는다. Orosz 역시 코드 생성량이 늘수록 테스트, 아키텍처, 운영 상태를 확인하는 능력이 중요해질 것으로 본다.

기능을 끝냈다고 말하기 전에

이를 실제 작업에 적용하려면 기능을 끝냈다고 판단하기 전에 세 가지를 짧게 기록해 볼 수 있다.

  1. 이번에 결정한 동작은 무엇인가?
  2. 어떤 실패 상황을 확인했는가?
  3. 아직 확인하지 못한 것은 무엇인가?

게시글 삭제 기능이라면 권한 정책, 복구 가능 여부, 관련 데이터의 처리 방식이 그 기록에 들어갈 것이다.

이 세 가지를 설명하기 어렵다면 구현을 승인하기 전에 더 확인할 부분이 있다. 반대로 직접 작성한 코드가 적더라도, 변경 내용을 설명하고 검증할 수 있다면 그 기능을 이해하고 있다는 근거가 생긴다.

개발을 배우는 방식에도 이 기준을 적용할 수 있다. AI가 만든 기능을 실행해 보는 데서 그치지 않고, 조건이 바뀌면 어디를 수정해야 할지 먼저 예측해 보는 것이다. 삭제 권한을 바꾸거나 복구 기능을 추가할 때 어떤 코드와 테스트가 영향을 받을지 생각한 뒤, 실제 결과와 비교할 수 있다. 직접 코드를 쓰는 시간이 줄어들어도 판단하고 확인하는 연습은 계속할 수 있다.

AI가 구현을 빠르게 내놓을수록 ‘완성됐다’고 판단하는 순간이 중요해진다. 기능이 어떤 상황에서 동작해야 하는지, 무엇을 확인했는지, 문제가 생기면 어디부터 살펴볼지 설명할 수 있어야 한다. 개발자는 그 판단을 뒷받침할 근거까지 함께 제시해야 한다.