파칭코처럼 도는 AI 개발, 그 끝을 누가 정할 것인가

기술 진전과 무한 작업 순환의 역설

by kimdonglin

레버를 당기는 그 순간의 감각

파칭코를 해본 사람이라면 알 것이다. 그 작은 강철 구슬이 기계 안으로 사라지는 순간의 감각. 공은 못들 사이를 헤매며 떨어진다. 좌우로, 또 좌우로. 언제는 보너스 구간에 빠지고, 언제는 허공으로 떨어진다. 하지만 매번 기대한다. 이번엔 혹시?


AI 개발의 세계도 그와 크게 다르지 않다.


3개월이 걸릴 줄 알았던 프로젝트가 6개월이 되고, 6개월이 1년이 된다. 처음엔 하나의 문제를 해결했다. 완벽했다. "이제 끝이야"라고 생각했다. 하지만 성공하자마자 두 개의 새로운 문제가 눈에 들어온다. 더 나은 성능 때문에 발견되는 엣지 케이스들. 사용자 피드백에서 떠오르는 새로운 요구사항들. 그렇게 또 레버를 당긴다.


당신은 이런 느낌을 모를까? 밤 11시, 회사를 나가는 길. 버스를 기다리면서 지금 막 완성한 기능 하나가 떠오난다. "아, 저거 하나만 더…." 지하철을 타고 집에 가면서도 뇌는 다음 과제로 이미 넘어가 있다. 침대에 누워서도 "요즘 가장 어려운 부분은 이거야"라고 반복한다. 마치 파칭코 공처럼, 당신은 계속 떨어지고 있다.

가장 불편한 진실은 이것이다. 이건 개인의 나약함이 아니라는 점. 당신이 게으르거나 의지가 약해서가 아니다. 당신이 밤샘 작업을 하거나 주말을 코딩으로 지내는 것도 당신의 책임만은 아니라는 뜻이다. 그 무한성은 시스템 자체에 내장되어 있다.


그렇다면 누가, 언제 이 레버 당기기를 멈춘다고 선언할 것인가?



기술 진전의 역설: 성능 향상이 일을 늘리다

이것은 소프트웨어 세계의 가장 역설적인 현상이다. 기술이 발전하면 할수록, 문제는 더 많아진다.

보통은 이렇게 생각한다. 더 좋은 도구를 얻으면 더 빨리 일을 끝낸다. AI 모델이 좋아지면 엔지니어링 복잡도가 줄어들고, 더 많은 시간을 고부가가치 작업에 쓸 수 있다. 이 논리는 틀리지 않다. 하지만 현실은 다르다.

AI 개발에서는 성능 개선 자체가 새로운 문제를 드러낸다. 모델 정확도가 95%에서 97%로 오르는 순간, 그전까지 보지 못했던 엣지 케이스들이 눈에 띈다. "이 케이스는 왜 틀렸지?" 이 질문이 시작되면 끝이 없다. 기술이 진전될수록 해결해야 할 문제들이 기하급수적으로 쌓인다.


마찬가지로 기술 부채도 같은 양상으로 증가한다. Martin Fowler가 지적했듯이, 기술 부채는 단순한 빌린 것이 아니다. 그것은 이자를 지불해야 하며, 시간이 지날수록 지수함수적으로 증가한다. 어제 당신이 빨리 구현하기 위해 해킹한 코드는 오늘의 유지보수 비용이 된다. 그리고 그 비용은 수렴하지 않는다. 계속 자라난다.

실제로 80%의 소프트웨어 프로젝트가 스코프 크리프(Scope Creep)를 경험한다. 당신이 "우리도 이건 피할 수 없는 거군"이라고 위로받아 본 그 현상 말이다. 프로젝트 범위가 처음 계획의 두 배, 세 배로 확장되는 것이 표준이 되어버렸다. 그것을 피할 수 있다고 말하는 PM은 거짓말쟁이이거나 그냥 아직 큰 프로젝트를 해본 적이 없는 사람이다.


여기에 또 다른 법칙이 작동한다. 파킨슨의 법칙이다. 업무를 마치는 데 걸리는 시간은 할당된 마감 시간만큼 늘어난다. 마감이 3개월이면 일이 3개월을 채우고, 6개월이 주어지면 6개월을 채운다. AI 개발에서는 마감이 명확하지 않다. 아니, 더 정확히는 끝을 정하기가 불가능하다.


"언제까지 완성인가"라는 질문에 소프트웨어는 명확한 답을 제공하지 못한다. 생산성은? 버그가 없어야 하는가? 몇 개까지는 괜찮은가? 성능은? 응답 시간은 1ms 이하여야 하는가, 100ms 이하여야 하는가? Definition of Done(완료의 정의)을 명확하게 하지 않으면, 이 기준은 계속 상향조정된다.

그 결과, 당신은 레버를 계속 당긴다. 완성의 골포스트가 자꾸만 뒤로 물러나니까.



단계별 쾌감이 계속하게 하는 동력

그런데 왜 우리는 이 무한 순환을 견디는가? 왜 그만두지 않는가?

심리학이 이 질문에 대해 답을 준다. 간헐적 강화 스케줄(Variable Ratio Schedule)이라는 개념이 있다. Skinner의 고전적 심리학 실험에서 나온 것인데, 이것은 가장 높은 행동 지속성을 만드는 패턴이다. 파칭코가 중독성 있는 이유가 바로 이것이다. 매번이 아니라 예측 불가능한 간격으로 보상받을 때, 인간의 뇌는 가장 강하게 반응한다.

AI 개발도 정확히 이 구조다. 매번 코드를 작성할 때마다 성공하진 않는다. 하지만 어떤 순간엔, 완전히 예상치 못한 순간에, 파이프라인이 완벽하게 움직인다. 모델이 갑자기 수렴한다. 그 순간의 쾌감은 형언할 수 없다.

뇌의 도파민 시스템이 이것을 강력하게 강화한다. 흥미롭게도 도파민은 실제 보상이 올 때만 분비되지 않는다. 보상이 올 거라는 기대(reward anticipation)만으로도 분비된다. 다음 과제가 명확할수록, 그것을 완성했을 때 얻을 쾌감이 선명할수록, 뇌는 지금 당장 도파민을 분비한다. 그래서 당신은 밤샘을 한다.

여기에 Flow 상태가 더해진다. 심리학자 Csikszentmihalyi가 정의한 것처럼, Flow는 세 가지 조건에서 발생한다. 첫째, 명확한 목표. 둘째, 즉각적인 피드백. 셋째, 기술 수준과 과제의 균형. 개발 업무는 이 모든 것을 갖추고 있다. 다음 과제가 무엇인지는 명확하다. 코드를 실행하면 바로 결과가 나온다. 그리고 성공과 실패가 즉시 시각화된다.


자결성 이론의 관점에서는 더 깊다. 심리학자 Deci와 Ryan이 말하는 인간의 세 가지 기본 욕구가 있다. 자율성(자기 스스로 결정하는 느낌), 능력감(뭔가 잘할 수 있다는 느낌), 관계감(남들과 연결되어 있다는 느낌). 개발자는 이 세 욕구를 모두 충족시키며 일한다. 코드를 짜는 방식은 내가 결정한다(자율성). 작동하는 코드는 내 능력의 증거다(능력감). 그리고 팀이 그 코드를 사용한다(관계감).


이것들의 조합은 강력하다. 너무 강력해서, 개발자를 파칭코 공처럼 만들어버린다. 다음 레버는 이미 손가락 사이에 있다.



도박인가, 게이미피케이션인가, 아니면 다른 것인가?

이 지점에서 질문이 생긴다. 그럼 이것은 도박인가?

표면적으로는 그렇게 보인다. 파칭코의 심리 구조와 AI 개발의 심리 구조가 얼마나 유사한가. 간헐적 강화. 예측 불가능한 결과. 그 다음을 또 기대하게 되는 악순환. 하지만 근본적으로는 다르다.


도박은 확률적(probabilistic)이다. 당신이 아무리 열심히 해도 결과는 운에 달려있다. 슬롯머신의 최종 결과는 기계가 이미 정해두었다. 당신의 노력은 개입할 여지가 없다. 반면 AI 개발은 구조적(structural)이다. 당신의 노력이 직접 결과에 영향을 미친다. 당신이 더 나은 아키텍처를 설계하면 성능이 개선된다. 더 나은 데이터 전처리를 하면 모델이 수렴한다. 실제로 진전이 일어난다.


그렇다면 게이미피케이션은 어떤가? 게이미피케이션의 논리는 단순하다. 포인트, 배지, 리더보드 같은 게임 메커닉을 비게임 맥락에 적용하면, 사람들이 동기화된다는 것이다. 개발에서도 이것을 본다. 마일스톤을 달성했을 때의 그 쾌감. 초록 체크리스트. 깃 커밋이 쌓여가는 그래프. 이것들은 모두 게임의 진행도처럼 작동한다.


하지만 게임과 개발의 근본적인 차이가 있다. 게임은 끝나도록 설계된다. 체스는 체크메이트로 끝난다. 게임 디자이너는 처음부터 종료 조건을 명확히 한다. 어떤 점수에 도달하면 레벨을 통과한다. 어떤 조건을 만족하면 게임 오버다. 하지만 AI 개발, 아니 소프트웨어 개발은? 종료 조건이 처음부터 설계되지 않는다.


시스템 동역학이라는 관점에서 보면, 이것은 강화 루프(Reinforcing Loop)의 문제다. 강화 루프는 양의 피드백으로 지수함수적 성장을 생성한다. AI 개발에서의 강화 루프는 이렇다. 기술 진전 → 새로운 문제 발견 → 더 높은 기술 투자 → 더 많은 새로운 문제 발견. 이 사이클이 균형을 이루는 음의 피드백이 없다. "이것으로 충분하다"는 판단이 없다면, 이 루프는 끝나지 않는다.


복잡 적응계(Complex Adaptive Systems) 이론으로 보면 더 흥미로워진다. AI 에이전트들이 상호작용하며 만드는 시스템은 자기조직화(self-organization) 특성을 가진다. 당신이 계획한 대로 움직이지 않는다. 개별 행동의 합이 전체 시스템 동작을 결정하지 않는다. 이것을 창발성(emergence)이라고 부른다. 이 때문에 AI 개발은 완전히 제어 불가능하다. 당신이 아무리 계획해도 항상 예상 밖의 것이 일어난다.


정리하면, 이것은 도박(확률에만 의존)도 아니고, 순수한 게이미피케이션(설계된 끝이 있는)도 아니며, 복잡 적응계의 자기강화 루프다. "도박처럼 느껴지지만 도박이 아닌", "게임처럼 설계되었지만 끝이 없는", "구조적이고 자기생성적인" 무한성. 이것이 AI 개발의 본질이다.



무한성과 성취감 사이에서: 개발자의 조건

그렇다면 이 무한성에서 벗어날 수 있는가?

먼저 현실을 직시해야 한다. 무한성은 피할 수 없다. 시스템 자체가 끝을 설계하지 않으면, 끝은 오지 않는다. 각 개인의 의지나 노력만으로는 이 구조를 바꿀 수 없다. Evan Moon이 겪었던 번아웃, Amaranth가 느껴던 공허감, Cowkite가 7년 후에 맞닥뜨린 의미의 상실. 이것들은 모두 개인의 약함이 아니라 구조의 특성이다.


하지만 그렇다고 완전히 무력한 것도 아니다. 조직 차원에서, 개인 차원에서, 그리고 인식 차원에서 의도적인 경계를 그을 수 있다.


조직 차원에서는 Definition of Done을 재정의하는 것부터 시작한다. "우리는 이 일을 언제 완료했다고 간주할 것인가"를 명시적으로 정의해야 한다. 모든 PR 리뷰를 받았을 때인가? 테스트가 90% 커버되었을 때인가? 명시적인 합의가 있어야만 끝이 생긴다.


MoSCoW 방법론도 도움이 된다. Must(반드시 필요한 것), Should(있으면 좋은 것), Could(할 수 있으면 좋은 것), Won't(하지 않을 것)로 요구사항을 분류하는 것이다. 중요한 건 "Won't"를 명시하는 것. "우리는 이것을 하지 않기로 결정했다"는 선언이 필요하다. MVP(최소 기능 제품) 개념도 같은 맥락이다. 완벽함이 아니라 충분함을 추구하기. "이 정도면 시장에 낼 수 있다"는 판단.


개인 차원에서는 더 구체적이다. 40년 경력의 개발자가 공개한 비결은 간단했다. 정시 출퇴근. 저녁 7시가 되면 노트북을 닫는다. 주말에는 코딩을 하지 않는다. 코딩과 무관한 취미를 가진다. 음악, 그림, 독서. 뇌가 완전히 다른 것에 집중할 시간이 필요하다.


그리고 Amaranth의 경험처럼, 때로는 완전한 전환이 필요하다. 코딩에서 벗어나 2주를 쉬었다. 그 다음 새로운 영역(UI/UX 디자인)을 배웠다. 그것이 새로운 동기를 생겼다. 무한 순환에서 완전히 벗어나는 경험이 때로는 필요하다.


인식 차원에서는 이것을 받아들이는 것이다. 당신이 느끼는 무한성은 당신의 약함이 아니다. 당신이 게으르거나 의지가 약해서가 아니다. 모든 개발자가 이것을 느낀다. 이것은 시스템의 특성이다. 그 위에서 의도적으로 선택할 수 있다. 파칭코를 계속 할 수도, 멈출 수도 있다. 규칙을 바꿀 수도 있다. 그 선택은 당신의 것이다.



파칭코를 놓을 수 있는가?

그렇다면 이제 질문은 당신에게로 향한다.

당신은 무한성을 인식했다. 시스템이 끝을 설계하지 않는다는 것을 안다. 그 속에서도 의도적인 선택이 가능하다는 것을 안다. 그렇다면 어떻게 할 것인가?


파칭코를 놓는 것인가? 프로젝트를 종료하고 다음으로 넘어가는 것. "이것으로 충분하다"고 선언하고 손을 놓는 것. 이것은 가능하다. 명확한 종료점을 선언할 수 있다.


혹은 의도적으로 놀기인가? 파칭코 같은 느낌은 유지하되, 그것이 자신을 통제하게 하지 않기. 일시적인 폐쇄(temporary closure)를 반복하면서, 각 구간에서 의도적으로 경계를 긋기. 완성의 기준을 명확히 정하고, 그것을 달성했을 때 진정으로 멈추기.


혹은 규칙을 바꾸기인가? 팀 내에서 Definition of Done을 재검토하기. 개인적으로 '충분함'의 기준을 설정하기. 퇴근 시간을 정하고, 그것을 지키기. 코딩과 무관한 취미에 진정한 시간을 투자하기.


이런 선택들은 쉽지 않다. 왜냐하면 파칭코는 중독적이기 때문이다. 기술이 진전하는 쾌감, 문제를 해결하는 만족감, 그것들은 실제이고 진정하다. 손 놓기가 어렵다. 그래서 당신의 선택이 중요하다.


가장 중요한 것은 인식이다. 당신이 이 무한성을 시스템의 특성으로 인식한다면, 당신은 이미 그것에서 조금 벗어나 있다. 당신이 의도적으로 경계를 그을 수 있다는 것을 안다면, 당신은 선택자가 된다. 그 선택이 어떤 것이든, 그것은 당신이 하는 것이지, 시스템이 강요하는 것이 아니다.



레버를 당길 수도, 놓을 수도 있다. 다시 당길 수도, 계속 놓을 수도 있다. 그 모든 선택은 당신의 것이다.

매거진의 이전글AI를 함수처럼 자유롭기 쓰는 법