원문 캡처 · thelastsoftwareengineer.substack.com
원문 캡처 · thelastsoftwareengineer.substack.com

AI 에이전트가 코드 작성을 맡아도 무엇을 만들지 정하고 실제 환경에서 드러나는 예외에 대응하는 일은 자동화하기 어렵다. 카네기멜런대 소프트웨어공학 강의 조교인 셰이 티와리(Shrey Tiwari)는 수업 과제 자동 채점기를 만들며, 소프트웨어 엔지니어의 역할은 코드를 쓰는 데 그치지 않는다고 주장한다.

티와리는 카네기멜런대 학부 강의 17-313에서 종이로 제출하는 수업 활동지를 채점하는 자동화 도구를 만들었다. 코드는 한 줄도 직접 쓰지 않고 AI 에이전트의 도움으로 구현했으며, 지금까지 학생 89명의 활동지 약 1,200장을 읽었다고 설명한다. 처음에는 활동지를 읽고 학생을 확인해 점수를 매기는 단순한 도구를 생각했지만, 실제 답안을 처리하면서 예상하지 못한 상황이 나타났다.

학생은 정답을 오리 그림의 말풍선에 적기도 했고, 객관식 문제에서 여러 선택지를 표시하거나 글씨를 매우 연하게 쓰기도 했다. 활동지에는 채점 대상이 아닌 글이나 손글씨로 쓴 프롬프트 인젝션도 있었다. 티와리는 손으로 채점할 때라면 오리 그림 속 정답도 인정할 수 있지만, 이런 예외를 미리 모두 열거해 소프트웨어에 반영하기는 어렵다고 말한다. 실제 사용 환경에 도구를 내놓고 피드백을 받아야 어떤 가정이 맞았는지, 사양을 어떻게 바꿔야 하는지 알 수 있었다는 것이다.

티와리는 프레드 브룩스(Fred Brooks)의 글 No Silver Bullet을 인용하며, 소프트웨어를 만들 때 가장 어려운 일은 정확히 무엇을 만들지 결정하는 것이라고 설명한다. AI 에이전트가 컴퓨터가 이해하는 언어로 코드를 작성하는 수고를 덜어도, 무엇을 만들어야 하는지 정하는 어려움은 남는다. 또 파멜라 제이브(Pamela Zave)와 마이클 잭슨(Michael Jackson)의 요구사항 공학의 네 가지 난점, 잭슨의 The World and the Machine을 근거로, 소프트웨어가 사양대로 작동하더라도 현실 세계가 설계 당시의 가정과 다르면 요구사항을 충족하지 못할 수 있다고 짚는다.

도구를 사용하면서 티와리는 매번 반복되는 작업을 에이전트에 맡기기보다, 페이지 방향을 확인하고 학생의 아이디를 명단과 대조하는 등의 단계를 재사용 가능한 구성요소로 분리하고 싶다는 점도 알게 됐다. 빠르고 효율적이며 결과가 일관되기를 바라는 요구는 처음부터 명시된 것이 아니라, 도구가 작동하는 모습을 본 뒤 생겼다. 활동지 채점에서 퀴즈까지 지원 범위를 넓힌 것도 기존 도구가 잘 작동한 뒤 요구사항이 바뀐 사례다.

티와리는 현실의 문제에는 해법을 시도하기 전에 문제를 완전히 파악하기 어려운 ‘사악한 문제(wicked problem)’가 있다고 설명한다. 에이전트에 더 나은 지시를 주거나 위험 분석을 시키면 이미 알려진 문제의 일부는 찾을 수 있지만, 학생이 오리 그림으로 답할지, 그 답을 정답으로 인정해야 할지는 사전에 예측하기 어렵다는 주장이다. 글은 항공기가 활주로에서 수막현상을 겪을 가능성을 설계자가 고려하지 못한 루프트한자 2904편 사고, 기계 고장이 서로 독립적이라고 가정했지만 실제로는 함께 발생할 수 있음을 다룬 분산 저장 시스템 연구, 그리고 OpenAI 모델의 시험 중 악의적 행동 가능성을 가정하지 않아 적절한 보호 장치가 없었고 이후 Hugging Face 해킹으로 이어졌다는 사고 보고서를 사례로 든다.

티와리의 결론은 AI가 소프트웨어공학을 없애기보다 작업 속도를 바꾼다는 것이다. 코드 작성에 들던 시간을 실제 환경에서 시스템을 시험하고, 그 과정에서 드러난 문제를 해결하는 데 쓸 수 있다. 자동 채점기의 코드는 AI가 모두 작성했지만, 오리 그림 속 답을 어떻게 처리할지는 여전히 엔지니어가 결정해야 했다고 그는 말한다.