tl;dr

[소프트웨어 엔지니어링의 해체와 재조립]

바둑계에서 은퇴한 이세돌 선생님은 최근 많은 강연에서 일관되게 이야기 합니다. ‘알파고 모먼트가 결국 모든 분야에 올 것이다, 그리고 그것은 먼 일이 아니다’… 그리고 길게는 최근 1~2년, 짧게는 최근 몇 달 가량의 변화를 통해, 소프트웨어 산업은 그 전으로 돌아갈 수 없도록 근본적으로 다시 쓰여지게 되었습니다. 이제 소프트웨어 엔지니어는 끝난 것일까요?

다행스럽게도, 바둑과 산업은 약간 다른 성질을 가지고 있습니다. 명확한 규칙과 승패가 존재하는 바둑이라는 필드에서는 인간이 AI를 더 이상 이길 수 없게, 그것도 절대 따라잡을 수 없는 격차로 벌어졌다는 사실이 굉장히 크게 느껴집니다. 하지만 산업에서는 다릅니다.

AI가 산업에서 완전히 소프트웨어 엔지니어를 대체하게 되는 날은, ‘AI가 인간보다 더 빠르고 정확하게 소프트웨어를 만든다’가 충족되는 날이 아닙니다. ‘AI가 인간 없이도 인간이 AI를 활용한 것보다 더 빠르고 정확하게 소프트웨어를 만든다’가 충족되는 날일 것입니다. 즉 ‘AI vs 인간’의 싸움이 아닌, ‘AI vs (인간+AI)’의 싸움에서 AI가 이기는 날이 정말로 소프트웨어 엔지니어링이라는 직업의 종말일 것입니다.

물론 지금 당장도 ‘AI vs (인간+AI)’의 싸움에서 패배하는 사람들이 있을 것이고, 아마도 그들의 자리는 조금씩 대체될 것입니다. 하지만 모든 인간이 패배하기까지는 아직은 조금 더 시간이 있어보입니다. 왜냐하면 더 강력한 AI가 나올수록 인간 역시도 그 강력한 AI를 등에 업고 경쟁할 것이기 때문입니다.

다만 그렇기 때문에 ‘소프트웨어 엔지니어링’이라는 분야의 해체와 재조립은 불가피하고, 이미 그것이 일어나고 있습니다. 먼저 바로 가시적으로 보이는 것은 개발 환경의 변화일 것입니다. 개발환경을 위한 IDE, 혹은 CLI 기반의 수많은 툴들과, 그런 툴들을 보조하고 또 지휘하는 다른 툴들이 매일같이 쏟아져 나오고 있습니다.

하지만 더 근본적으로는 지금까지 인간이 차지하는 비중이 아주 컸던 소프트웨어 엔지니어링이라는 분야가 해체되고 재조립되는 과정이 이루어질 것입니다. 인간과 인간이 소통해서 이루어진다고 암묵적으로 가정했던 모든 워크플로와 베스트 프랙티스들에 대한 재검토가 이루어질 것입니다.

예를 들어 TDD라는 프랙티스는 ‘테스트부터 작성하고 그것이 통과할 때까지 반복한다’라는, 인간의 인지부하를 줄여주기 위한 방향의 프랙티스일 것입니다. 그렇다면 AI가 코드를 작성하는 시대에도 이것이 유효할까요? 지금의 git과 PR 중심의 워크플로는 AI가 코드의 대부분을 작성하게 되면 유효할까요? 저는 이 글에서 세부적인 문제의 어떤 결론을 내리고 싶진 않지만, 이런 식으로 모든 프랙티스와 워크플로가 재검토될 것은 분명합니다.

[어떤 회사를 만들려 하는가]

2011년에 CTO로서 참여했던 첫 번째 창업(Knowre)은 결과와 보상을 놓고 보면 성공적이었지만, 그 과정에는 많은 아쉬운 부분과 미숙함이 있었습니다. 소프트웨어 엔지니어로서의 저의 이상에 가까이 다가가지 못했고, 제가 이상적으로 생각하는 제품을 만들지도 못했던 것 같습니다.

다행히 시간이 흘렀고 세상도, 기술도, 엔지니어링 환경도 많이 바뀌었습니다. 그러다가 저는 2024년 가을쯤 두 번째 창업을 할 결심을 했습니다.

저는 단순히 ‘바이브코딩으로 쉽게 많은 것을 만들어낼 수 있으니 저의 회사에 참여하세요’라고 주장하고 싶지는 않습니다. 쉽게 만들 수 있다는 것은 그만큼 시장에서 독보적으로 앞서나갈 수 없다는 이야기라고 생각합니다. 그리고 아직 지금의 바이브코딩 기술이 진지한 프로젝트, 복잡하고 섬세한 프로젝트에도 누구에게나 접근성을 열어줄 정도가 되지는 않은 것 같습니다. 그리고 그것은 당분간 계속 그러할 것입니다.

그렇기 때문에 이제 진지한 프로젝트에서의 소프트웨어 엔지니어링은 계속해서 더 폭넓은 자동화를 지향하면서도, 그 안에서 어떤 섬세한 공정을 통해 시행착오와 불량율을 줄이느냐의 문제가 되었다고 생각합니다. 그리고 저는 최근 1년 반동안 계속해서 그 고민을 하고 일정 정도의 답을 냈습니다.