음표 사이에서 쉰다는 것

2026년 10월 12일 월요일

얼마 전 본 강연 영상 하나가 유독 오래 마음에 남았다. Extreme Programming을 만들고 TDD를 세상에 널리 알린 켄트 벡(Kent Beck)이 Prodacity 2026에서 한 강연으로, 제목은 'Software Engineering in the Age of AI'였다. AI가 코드의 상당 부분을 쓰는 지금, 소프트웨어를 잘 만든다는 것이 무엇인지를 묻는 자리였다. 52분 남짓한 강연 가운데 내게 가장 크게 와닿은 것은 두 개의 단어와, 한 첼리스트의 짧은 일화였다.

켄트 벡은 소프트웨어 개발을 두 개의 축으로 설명했다. features와 futures. 하나는 우리가 구현하는 기능들이고, 다른 하나는 이 소프트웨어를 앞으로 어떻게 바꿀 수 있는지에 대한 선택지, 그러니까 변화의 여지(optionality)다. 프로젝트는 아무 기능도 없지만 무한한 가능성의 상태에서 출발하고, 기능을 하나씩 구현할 때마다 futures가 줄어든다는 설명이었다. 결국 기능만 계속 쌓아 가다 보면 무엇 하나 건드리기가 어려워지는, futures 값이 0인 죽은 소프트웨어가 된다는 얘기였다.

강연 25분 45초, 켄트 벡이 그린 features와 futures 그래프. 빨간 선은 기능만 쌓을 때, 초록 선은 기능과 정리를 오갈 때 (출처: Rise8 YouTube)

어떻게 보면 엔지니어로서 그간의 현업에서 리팩토링의 중요성을 체감했던 부분이고, 기능 구현 와중에도 개선시킬 수 있는 부분은 리팩토링을 병행하거나, 다음 기능을 구현하기 전 잠깐의 시간이 남을 때에도 리팩토링의 시간으로 간주했었는데, 어느 순간 AI를 통해 완전한 코딩을 주문하면서부터는 '리팩토링의 시간'을 놓치고 있었다는 생각이 들었다. 기능 구현 시 여러 하네스(테스트, 린트, 훅, 제약사항 프롬프트 및 검증에이전트처럼 AI 작업을 보정하는 장치)를 고려하지만, '리팩토링만의 작업'은 하지 않고 있는 나를 발견했다.

켄트 벡의 다음 얘기도 많이 공감되었다. '예전에는 100명이 10년을 들여야 futures가 0인 상태에 도달했는데, 이제는 AI 덕분에 한 사람이 일주일이면 완벽한 난장판을 만들 수 있다는 것'. 어떤 일이었는지 여기에 다 풀어놓을 수는 없지만, 강연을 듣는 내내 그 과정에서 부딪혔던 시행착오들이 켄트 벡의 그림 위로 하나둘 겹쳐 보였다. 돌이켜보면 나는 기능과 기능 사이의 cool down이 얼마나 중요한지를 까맣게 잊고 있었던 것 같다.

켄트 벡은 그 대안을 설명하며 첼리스트 파블로 카잘스(Pablo Casals)의 일화를 꺼냈다. 음대에서 클래식 기타를 전공하던 젊은 시절에 들은 이야기라고 했다. 첼로는 몸을 많이 쓰는 악기인데, 카잘스가 연주하던 곡 중에 16분음표가 끝없이 이어지는 대목이 있었다고 한다. 누군가 그 많은 16분음표를 연주하면 지치지 않느냐고 묻자, 카잘스는 이렇게 답했다. '아니요, 저는 음표 사이에서 쉽니다.' 사실 카잘스는 이런 말을 한 적이 없고 지어낸 이야기라고 한다. 그래도 너무 좋은 이야기라서 할 수밖에 없다고 켄트 벡은 덧붙였다.

비록 지어낸 얘기이긴 해도, 나는 음표 사이의 쉼에 대한 이야기를 들으면서 '다음 음표를 정확히 짚기 위해 손과 호흡을 가다듬는 시간', 즉 빠른 템포로 이루어지는 AI 작업 안에서도 '정리의 시간'은 필요하겠다는 것을 새삼 생각하게 되었다. 앞에서 적은 '리팩토링의 시간'이 바로 이 음표 사이였던 것이다. 기능 중간중간 정리를 해야 유연하면서도 확장 가능한 소프트웨어를 만들 수 있다는 것은 개발자라면 누구나 아는 기본이지만, 기능이 쏟아지는 요즘이야말로 그 기본을 다시 붙잡아야 할 때인 것 같다. 카잘스가 끝없는 16분음표 사이에서도 쉬었듯이, 빠르게 개발되는 feature들 사이에도 리팩토링을 포함한 테스트 케이스 정리가 들어가야 하지 않을까. 켄트 벡이 든 '썰면서 칼을 닦을 수는 없지만, 칼은 닦아야 한다'는 비유도 직관적으로 와닿았다.

정리 없이 달려온 흔적은 코드에만 있지 않았다. 내 맥북 안에도 고스란히 남아 있었다. 한동안 몰아치던 작업들이 끝나고 잠시 유휴 시간이 생기자, 손을 놓고 나서야 보이는 것들이 있었다. 미처 정리하지 못한 git 워크트리들과 DB 컨테이너들이 여기저기 쌓여 있었고, 남은 저장 공간은 바닥을 향하고 있었다. 그대로 다음 작업에 뛰어들었다면 어느 순간 용량이 0이 되어 모든 것이 멈춰 섰을지도 모른다. 쌓인 것들을 하나씩 지우고 나서야 맥북은 다시 다음 작업을 받아들일 여유를 되찾았다. 내 맥북의 futures도 그렇게 조금 돌아온 셈이다.

얼마 전 가족과 함께 제주도에 다녀왔다. 여행에서 가장 오래 남은 것은 서귀포에서 맞은 일출이었다. 아침 일찍 일어나 해가 떠오르는 것을 바라보던 그 시간이 무척 좋았다. 하늘 가득 깔린 비늘구름이 아래에서부터 주황빛으로 물들고, 야자수 실루엣 너머로 해가 조금씩 고개를 내밀었다.

서귀포에서 맞은 일출

신기하게도 여행에서 돌아온 뒤로 우리 가족의 아침 분위기가 순식간에 바뀌었다. 아침 일찍 일어나 하루를 시작하는 것이 어느새 우리 집의 리듬이 되었고, 덕분에 몸도 조금씩 더 건강해지고 있다는 것을 느낀다. 그 여행이 우리 가족에게는 음표 사이의 정리였던 셈이다. 그러고 보면 우리 삶도 소프트웨어와 크게 다르지 않은 것 같다. 일이든 육아든 하루하루는 다음 feature를 향해 몰아치듯 흘러가고, 그 사이에 정리가 없다면 삶의 futures도 조금씩 타들어 가지 않을까.