AI와 코딩은 스테이크 요리와 닮아 있다
최근 AI를 활용한 소프트웨어 개발은 기술적 이해 없이 결과물만 기대하는 스테이크 요리와 같습니다. AI는 개발의 속도를 높여주는 훌륭한 도구일 뿐, 근본적인 품질 기준이나 설계에 대한 개발자의 판단력을 대체할 수 없습니다. 결국 원하는 수준의 완성도를 갖춘 소프트웨어를 만들려면, 개발자는 요리법을 배우듯 시스템의 원리와 디테일을 깊이 이해해야 합니다.
스테이크를 요리하는 데는 거의 기술이 필요하지 않습니다. 뜨거운 팬에 올리고, 조금 기다렸다가 뒤집기만 하면 기술적으로 먹을 수 있는 결과물이 나옵니다. 하지만 가장자리부터 중심까지 완벽한 미디움 레어로, 갈색으로 적절히 구워지고, 양념이 잘 맞으며, 언제 먹어도 맛있는 진짜 좋은 스테이크는 완전히 다른 문제입니다.
AI를 활용한 소프트웨어 개발 역시 이와 똑같은 느낌이 들기 시작했습니다. 우리는 끊임없이 무언가를 만들어냅니다. AI를 사용하거나, AI 없이, 출퇴근길에, 화장실에서, 심지어 잠자는 동안에도 말입니다. 우리는 에이전트(agent), 하네스(harness), 도구, 기술, 프롬프트, 피드백 루프, 정교한 워크플로를 만들어냅니다. 그런 다음 그 모든 것을 AI 모델에 던져놓고, 내부가 어떻게 작동하는지 이해할 필요 없이 우리가 상상한 결과물을 내어주길 바랍니다.
그리고 우리가 원하는 건 뭘까요? 우리는 완벽한 스테이크를 원합니다. 우리는 제대로 작동하고, 보기 좋고, 다듬어졌으며, 우리가 상상했던 그대로 도착하는 소프트웨어를 원합니다. 무엇보다 우리는 매번 똑같은 결과를 원합니다.
우리는 그것을 얻고 있을까요? 매번 얻는 건 아닙니다. 매번 가까이 가본 적도 없죠. 때로는 모델이 놀라울 정도로 좋은 무언가를 건네주기도 합니다. 하지만 다른 때는 타버린 숯덩이에 타임 가지를 얹고 미디엄 레어라고 자신 있게 거짓말을 하기도 합니다.
그래서 우리는 어떻게 합니까? 우리는 식당에 갑니다. 프리미엄 AI 제품에 돈을 지불하고, 대행사를 고용하고, 또 다른 코딩 어시스턴트에 구독하고, 전문적인 결과를 약속하는 새로운 프레임워크로 눈을 돌립니다. 우리는 누군가가 이미 우리를 위해 이 문제를 해결해 주었기를 바랍니다. 때로는 그들이 그렇게 했을 때도 있습니다. 하지만 상당히 자주, 그들은 그러지 못했습니다.
그러면 이제 두 가지 선택지만 남게 됩니다. 제대로 요리하는 법을 스스로 배우거나, 다음 번 또 다른 비싼 실망감을 위해 지갑을 준비하며 계속 친구에게 식당 추천을 부탁하는 것입니다.
우리 대부분은 구현 디테일에 매몰되지 않고 AI를 통해 우리가 신경 쓰는 무언가를 만들고 싶어 합니다. 우리의 주방에서 일하는 전문 셰프를 대하듯 하고 싶어 합니다. 우리가 원하는 것을 말하고, 한 발짝 물러섰다가 저녁 식사가 준비되면 다시 돌아오는 식으로 말이죠.
하지만 AI는 셰프가 아닙니다. 아무리 좋아봐야 그것은 스테이크 머신일 뿐입니다. 레시피를 따를 수는 있습니다. 온도를 지켜보고, 알맞은 순간에 뒤집고, 버터를 넣을 수 있죠. 충분한 도구와 지침을 주면 이 과정을 빠르고 거대한 규모로 반복할 것입니다. 하지만 이 머신이 당신이 진짜로 원하는 게 뭔지 아는 것은 아닙니다. 당신 머릿속에 있는 그림을 요구 사항, 제약 조건, 예시, 테스트, 피드백으로 번역하지 않는 한 그것은 당신의 머릿속 그림을 볼 수 없습니다. 그리고 그렇게 한다고 해도, 여전히 머신 자체의 한계와 컨텍스트 윈도우(context window), 그리고 이를 감싸고 있는 시스템의 품질이라는 틀에 갇혀 있습니다.
머신 옆에 서서 30초마다 교정해 줄 수는 있습니다. 그게 도움이 될 수도 있죠. 하지만 그렇다고 기계를 미슐랭 셰프로 만들지는 못합니다.
결국, 좌절한 당신은 꿈의 스테이크를 돈 주고 사기로 결심합니다. 당신은 비싼 식당을 고릅니다. 자리에 앉아, 메뉴를 살펴보고, 마침내 확신을 가지고 주문을 합니다. 당신은 첫 입을 기다립니다. 접시가 도착합니다. 집에서 내가 만들었던 것과 똑같은, 타버린 스테이크입니다.
왜 그럴까요? 도시에 있는 모든 식당이 똑같은 AI 요리사를 고용했기 때문입니다. "비용 최적화"라고 경영진은 말합니다. "대부분의 사람들은 눈치채지 못할 겁니다." 그리고 그들은 아마 맞을 것입니다. 대부분의 사람들은 눈치채지 못할 테니까요.
대부분의 경우, 소프트웨어는 그저 '무난한 수준'이면 충분합니다. 고객들은 이상한 인터페이스, 무의미한 기능, 기묘한 버그, 그리고 아무도 이해하지 못하는 생성된 코드로 겨우 버티고 있는 시스템들을 용인합니다.
하지만 당신은 눈치챌 것입니다. 당신이 눈치챌 것인 이유는, 이것이 당신이 진정으로 만들고 싶어 했던 무언가이기 때문입니다.
그래서 당신은 실망하고, 배가 고프고, 약간 민망해진 채 집으로 돌아와 선반에서 요리책을 꺼냅니다. 이제 선택지는 하나뿐입니다. 요리법을 배우는 것입니다.
당신은 열이 실제로 어떤 역할을 하는지 배웁니다. 어떤 팬이 중요하고 왜 그런지, 두께가 왜 중요한지, 왜 휴지(숙성)가 중요한지, 왜 타이머만으로는 당신을 절대 구원할 수 없었는지를 배웁니다. 당신은 저녁 식사를 몇 번 더 망칩니다. 그런 다음 다시 시도합니다. 또 다시 시도합니다. 결국 당신은 운에 의존하는 것을 멈추고, 힘들게 그 모든 것을 배우게 됩니다.
소프트웨어도 똑같은 방식으로 작동합니다. AI는 당신의 속도를 높여줄 수 있습니다. 반복적인 작업을 자동화하고, 시작점을 뱉어내며, 코드를 설명하고, 아이디어를 시험해 보는 데 도움을 줍니다. 하지만 AI가 할 수 없는 것은 당신의 판단력을 대체하는 것입니다. AI는 당신을 위해 품질을 정의해 줄 수 없고, 어떤 절충안이 허용되는지 결정할 수 없으며, 기술적으로는 맞지만 본질적으로 틀린 순간을 항상 알아챌 수는 없습니다.