며칠 전 백엔드 개발자 한 분과 식사하면서, 그는 요즘 AI가 코드를 마치 치트를 쓴 것처럼 작성한다고 불평했습니다. 예전에는 반나절 걸려 디버깅하던 인터페이스를 이제는 몇 초 만에 만들어준다고요. 그런데 흥미롭게도 그는 최근에 오히려 XML 포맷팅에 더 많은 시간을 쓴다고 했습니다. 저는 듣자마자 웃음이 났습니다. 이건 10년 전에나 있던 구닥다리 아닌가, 어떻게 역전했지?
그가 프로젝트 파일 하나를 보여줬는데, 저는 입을 다물었습니다. 그것은 마이크로서비스 설정 세트였는데, AI가 생성한 코드 로직은 문제가 없었지만, 안에 있는 XML 설정은 마치 고양이가 키보드를 밟고 간 것처럼 들여쓰기가 엉망이고, 태그 중첩이 친엄마도 알아보지 못할 정도였으며, 주석과 코드가 뒤섞여 있었습니다. 그는 이 정도면 양호한 편이라고 했습니다. 때로는 AI가 네임스페이스를 잃어버리거나 속성 값의 따옴표를 혼동해서 서비스가 아예 시작되지 않기도 한다고요.
이때 XML 포맷팅 도구가 구원투수가 됩니다. 이 기능이 단순해 보여도, 실제로 하는 일은 꽤 중요합니다. 첫째, 엉킨 실타래 같은 것을 정리해서 태그 계층을 한눈에 볼 수 있게 하고, 사람이 훑어볼 수 있으며, 문제가 생겼을 때 빠르게 위치를 찾을 수 있게 합니다. 둘째, 스타일을 통일합니다. AI가 생성한 것은 때로 두 칸 들여쓰기를 쓰고, 때로 네 칸을 쓰며, 속성 정렬도 제멋대로인데, 포맷팅 도구를 한 번 실행하면 프로젝트 전체가 즉시 정돈됩니다.
더 중요한 것은 XML이 JSON처럼 관대하지 않다는 점입니다. JSON은 형식이 틀려도 기껏해야 파싱 실패지만, XML은 태그가 닫히지 않거나 속성에 따옴표가 빠지면 정말 하나가 틀리면 전체가 흔들립니다. AI가 코드를 빨리 쓰는 건 사실이지만, XML처럼 강한 구조를 가진 것에 대해서는 때때로 혼란을 겪습니다. 특히 DTD나 Schema 검증이 관련될 때는 더욱 그렇습니다. 이때 포맷팅 도구로 한 번 돌리면 정적 검사를 한 것과 같아서, 많은 저급 오류를 미리 막을 수 있습니다.
또 하나 흥미로운 시나리오는 설정 파일을 병합할 때입니다. 요즘 많은 프로젝트에서 AI를 활용해 K8s 설정, Spring Bean 정의 또는 Android 레이아웃 파일을 생성하는데, 서로 다른 출처의 XML 조각을 합치면 들여쓰기와 네임스페이스가 자주 충돌합니다. 포맷팅 도구는 이런 파편들을 다시 정렬해서 전체 파일이 한 사람이 작성한 것처럼 보이게 합니다.
그러니 보세요. AI가 코드를 강력하게 작성할수록 생성되는 XML이 많아지고, 그 XML은 더욱 정돈될 필요가 있습니다. 포맷팅 도구는 오히려 AI 시대의 인프라가 되었습니다. 마치 주방에서 칼이 빨라질수록 도마가 더 중요해지는 것과 같습니다. 그것은 코드를 생산하지 않지만, 코드를 볼 수 있고, 고칠 수 있고, 유지보수할 수 있게 만듭니다. 아마 이것이 별로 눈에 띄지 않는 작은 도구가 AI 물결 속에서 오히려 입지를 굳힌 이유일 것입니다.