대규모 언어모델(LLM)의 도움으로 상당한 규모의 시스템을 구축한 초보 개발자가 구현 능력과 이해 수준의 격차라는 새로운 도전에 직면했습니다. 초기에는 아이디어를 빠르게 현실화하는 데 LLM이 큰 도움을 주었지만, 실제 제품으로 전환하고 오류를 수정하는 과정에서 자신이 만든 시스템의 동작 원리를 완전히 이해하지 못하고 있음을 깨달은 것입니다. 이는 AI 시대에 프로그래밍을 배우고 일하는 방식에 대한 근본적인 질문을 제기합니다.
한 독자의 경험에 따르면, 약 1년간 LLM을 활용해 API, PostgreSQL, LLM 파이프라인 등을 포함하는 TypeScript/JavaScript 시스템을 구축했습니다. 처음에는 아이디어와 구현 사이의 거리가 극적으로 줄어드는 경험에 감탄했지만, 프로덕션 단계로 넘어가면서 이해할 수 없는 동작과 연쇄적인 오류에 부딪혔습니다. AI로 하나의 오류를 고치면 다른 오류가 발생하는 상황이 반복되었고, 수개월간의 리팩터링 끝에 시스템이 자신의 이해 수준을 넘어섰음을 인정하게 되었습니다. 이는 단순히 작동하는 코드를 만드는 것을 넘어, 그 코드를 이해하고 책임질 수 있는 능력의 중요성을 보여줍니다.
이러한 경험은 프로그래밍 학습의 본질과 개발자의 역할에 대한 중요한 시사점을 던집니다. 과거에도 개발자들은 자신이 완전히 이해하지 못하는 추상화 계층 위에서 작업해왔지만, 실용적인 기준은 자신이 작업하는 계층의 바로 위와 아래를 이해하여 대부분의 문제를 해결하는 것이었습니다. 그러나 LLM은 이 '이해의 범위'를 급격히 확장시켜, 초보자도 훨씬 복잡한 시스템을 만들 수 있게 합니다. 문제는 이러한 '구현 능력'의 확장이 '이해 수준'의 확장으로 이어지지 않을 때 발생하며, 이는 장기적인 유지보수와 문제 해결에 큰 걸림돌이 됩니다.
AI가 프로그래머를 포함한 지식 노동자의 일자리를 대체할 가능성에 대한 우려도 커지고 있습니다. 과거 기술 발전이 새로운 일자리를 창출했지만, 기존 일자리를 잃은 사람들이 그 혜택을 직접적으로 받은 것은 아니라는 역사적 사실은 낙관론을 경계하게 만듭니다. LLM 시대의 프로그래밍 학습은 단순히 코드를 생성하는 것을 넘어, 생성된 코드를 비판적으로 검증하고, 시스템의 전체적인 맥락을 이해하며, 복잡한 문제를 해결할 수 있는 깊이 있는 사고력을 요구하게 될 것입니다. 따라서 '무엇을 배워야 하는가'라는 질문보다 '어떻게 배워야 하는가'에 대한 고민이 더욱 중요해지고 있습니다.