AI 코딩이 도박이라고?
최근 해외의 한 블로그 글을 읽었다. AI로 코딩하는 행위를 '도박’에 비유한 흥미로운 글이었다. 슬롯머신의 레버를 당기듯 프롬프트를 입력하고, 그 결과가 운 좋게 맞아떨어지기를 기대하는 중독적인 과정이라는 설명이다. 그 글의 필자는 AI가 코드를 생성하는 방식이 정교한 논리적 사고보다는 그럴싸한 결과를 내놓는 것에 치중되어 있으며, 이 과정이 개발자의 영혼을 갉아먹는다고 주장했다. 어느 정도 일리가 있는 지적이지만, 나는 이 현상을 조금 다른 각도에서 바라보고 싶다.
그 글에서 지적한 것처럼 AI 코딩이 어느 정도 운에 기대는 측면이 있다는 점은 부정할 수 없다. 우리가 프롬프트를 입력할 때마다 모델은 매번 조금씩 다른 결과를 내놓고, 때로는 전혀 엉뚱한 코드를 제시하기도 한다. 하지만 이것을 단순히 슬롯머신을 돌리는 행위로만 치부하기에는 무리가 있다. 슬롯머신은 사용자가 결과에 개입할 여지가 전혀 없지만, AI 코딩은 개발자가 어떤 의도를 가지고 질문을 던지느냐, 그리고 나온 결과물을 어떻게 검증하고 조립하느냐에 따라 완전히 다른 결과가 나오기 때문이다. 이것은 도박이라기보다는 차라리 고도의 추상화된 도구를 다루는 숙련된 기술에 가깝다.
많은 개발자가 AI로 인해 코딩의 '소울’이 사라지고 있다고 한탄하곤 한다. 예전에는 코드 한 줄 한 줄을 직접 타이핑하며 로직을 설계하고, 그 과정에서 발생하는 수많은 시행착오를 통해 성취감을 느꼈다. 하지만 지금은 AI가 수백 줄의 코드를 순식간에 만들어내고, 개발자는 그 코드를 훑어보고 수정하는 역할에 머문다. 이를 두고 개발자가 단순히 AI가 싸질러 놓은 쓰레기를 치우는 '청소부’로 전락했다고 비판하는 시각도 있다. 하지만 나는 이런 감상적인 접근이 오히려 개발의 본질을 가리고 있다고 생각한다. 이전 글에서도 여러 번 언급했듯이, 코딩은 예술 작품을 만드는 행위가 아니라 문제를 해결하기 위한 수단이다.
컴퓨터 공학의 역사를 돌이켜보면 지금의 변화는 지극히 자연스러운 흐름이다. 1970년대에 어셈블리어로 코딩하던 사람들은 C언어가 등장했을 때 '기계의 세부적인 제어권을 잃었다’며 한탄했을 것이다. 파이썬이나 자바 같은 고수준 언어가 나왔을 때도 마찬가지였다. 메모리 관리를 직접 하지 않는 것이 진정한 개발이냐는 비판이 늘 존재했다. 하지만 그런 추상화 덕분에 우리는 더 복잡하고 거대한 시스템을 설계할 수 있게 되었다. AI는 그 추상화의 사다리에서 한 단계 더 위로 올라가는 도구일 뿐이다. 이제 우리는 개별 함수를 어떻게 짤 것인가를 고민하는 단계에서 벗어나, 전체적인 아키텍처를 어떻게 구성하고 어떤 사용자 가치를 창출할 것인가에 집중해야 한다.
나는 오히려 AI가 개발자의 에너지를 더 가치 있는 곳으로 돌려준다고 믿는다. 논리적인 완결성을 따지는 일은 이제 AI가 인간보다 훨씬 더 빠르고 정확하게 해낼 수 있다. 우리가 AI를 논리적으로 이기려 들 필요가 있을까? 계산기가 나온 뒤로 우리가 암산 능력을 자랑하지 않게 된 것처럼, 코딩 로직을 짜는 능력도 이제는 기계의 영역으로 넘겨주어야 한다. 대신 우리는 그 남은 에너지를 아키텍처 설계, 사용자 경험(UX) 개선, 그리고 비즈니스 모델의 지속 가능성을 고민하는 데 써야 한다. 이것이야말로 AI가 대체할 수 없는 인간 개발자만의 영역이기 때문이다.
AI가 만들어낸 결과물에 집중하는 것이 위험하다는 시각도 있다. 하지만 만들면 끝이 아니라는 점을 명심해야 한다. 소프트웨어는 살아있는 생물과 같아서 끊임없이 유지보수하고 개선해야 한다. AI가 짠 코드가 돌아간다고 해서 거기서 멈추는 것이 아니라, 그 코드가 앞으로의 확장성을 고려했는지, 다른 모듈과의 결합도는 어떤지 끊임없이 고민해야 한다. 이 과정에서 개발자의 전문성이 드러난다. AI는 수단일 뿐이고, 그 수단을 이용해 어떤 가치를 만들어낼지는 전적으로 개발자의 역량에 달려 있다.
일부에서는 AI 코딩이 개발자의 사고를 게으르게 만든다고 걱정한다. 하지만 나는 반대라고 생각한다. AI를 제대로 활용하기 위해서는 오히려 더 넓고 깊은 사고가 필요하다. AI가 내놓은 코드를 단순히 복사해서 붙여넣는 것이 아니라, 그 코드가 왜 이렇게 작성되었는지, 잠재적인 보안 결함은 없는지, 성능 최적화의 여지는 없는지를 판단할 수 있는 눈을 길러야 한다. 이것은 과거의 코딩 방식보다 더 높은 수준의 통찰력을 요구한다. 단순히 문법을 외우고 타이핑하는 것보다, 전체 시스템의 흐름을 이해하고 통제하는 능력이 훨씬 더 중요해진 시대가 왔다.
물론 AI가 생성하는 이른바 '슬롭(slop)'이라고 불리는 저품질 코드에 대한 우려는 타당하다. 하지만 저품질 코드는 AI 이전에도 늘 존재했다. 숙련되지 않은 개발자가 스택 오버플로우에서 가져온 코드를 이해하지 못한 채 붙여넣던 행위와 AI가 짠 코드를 맹신하는 행위는 본질적으로 같다. 문제의 핵심은 도구가 아니라 그것을 다루는 사람의 자세다. 우리는 AI를 통해 생산성을 극대화하되, 동시에 그 결과물을 냉철하게 검증할 수 있는 시스템과 안목을 갖추어야 한다. 테스트 자동화와 정적 분석 도구를 더 적극적으로 도입하고, AI와 협업하는 새로운 워크플로우를 정립해야 한다.
결국 개발자의 역할은 '코드를 쓰는 사람’에서 '문제를 해결하는 설계자’로 변하고 있다. 코딩 자체에 쏟을 에너지를 아껴서 더 복잡한 비즈니스 로직을 설계하고, 사용자가 정말로 원하는 기능이 무엇인지 고민하는 것이 훨씬 더 효율적이다. AI 덕분에 우리는 이제 더 빠르게 실패하고, 더 빠르게 배울 수 있다. 60세가 넘은 개발자가 AI 덕분에 다시 코딩의 열정을 찾았다는 이야기는 우리에게 시사하는 바가 크다. 그는 문법을 익히는 고통에서 벗어나 자신의 아이디어를 즉시 결과물로 확인하는 즐거움을 누리고 있다. 이것이야말로 진정한 개발의 즐거움이 아닐까.
앞으로의 개발 환경은 더욱 빠르게 변할 것이다. AI는 더욱 똑똑해질 것이고, 우리가 직접 코드를 짜는 영역은 점점 더 줄어들 것이다. 하지만 그렇다고 해서 개발자의 존재 가치가 사라지는 것은 아니다. 오히려 시스템을 이해하고, 방향을 설정하고, 최종적인 책임을 지는 인간의 역할은 더욱 중요해질 것이다. 나는 이 변화가 두렵기보다 기대된다. AI라는 파도에 올라타서 우리가 어디까지 갈 수 있을지, 어떤 새로운 세상을 만들어낼 수 있을지 궁금하다. 우리는 이제 코딩이라는 좁은 틀에서 벗어나, 진정한 의미의 소프트웨어 엔지니어링으로 나아가야 한다.
관련 글
AI 코딩이 도박이라고?