본문 바로가기

DM ML AD

AI 시대의 개발이란?


질문: 현재 가장 인기 있는 프로그래밍 언어는? 답을 찾기 위해서 굳이 구글링 할 필요 없다. 이 글을 읽는 사람이라면 이미 모두 사용하고 있는 언어다. 참고로 가장 오래된 프로그래밍 언어다. 엄밀히 말하면 기계어나 어셈블리어가 가장 오래된 프로그래밍 언어일 텐데 요즘 이걸 알고 있는 사람이 몇이나 될까? 대학 동기 중에 몇 명은 2학년 때 어셈블리 수업을 들었는데, 아직 제대로 기억하고 있는 친구가 몇 있을까? 나 때 대학교 1학년에 들어가서 모두 C언어를 배웠다. 하드웨어 쪽에선 여전히 사용하겠지만 요즘에 핫한 언어는 아니다. 인터넷 업계에선 Java도 많이 사용하고 데이터 과학자는 Python을 기본으로 사용한다. 웹을 위해서 JavaScript도 인기가 있고, 이전 직장에서 속도 때문에 Go를 사용하기도 했다. 추억 속의 이름 코볼, 포트란, 펄, PHP 등 수많은 언어들이 생기고 생기고 생겼다. 잡설이 길었다. 답은 ‘영어’다. 좀 더 엄밀히 말하면 AI가 이해할 수 있는 모든 자연어 Natural Language가 현재 가장 인기 있는 프로그래밍 언어다.

Vibe Coding이란 말을 들어 본 적이 있는가? 전 OpenAI 개발자인 Andrej Karpathy가 지난 2월에 X에 올린 글에 처음 등장한 용어다. 영어를 못해서 왜 저런 네이밍이 붙었는지 잘 모르겠다. 어쨌든 요는 요즘은 AI의 도움으로 프로그램을 완성한다는 의미다. 때론 프로그래밍 언어를 전혀 모르면서도 프로그램을 완성하기도 한다. 인터넷에 바이브코딩을 검색하면 — 비록 복잡한 프로그램은 아닐지라도 — 언어를 모른 채 프로그램을 완성한 예시가 많다. 채 10 명도 안 되는 소수의 인원으로 바이브코딩만으로 스타트업을 시작한 사례도 쉽게 찾아볼 수 있다. 그리고 AI를 업무에 적용하면서 — 조사에 따라 다르지만 — 생산성이 10~30% 정도는 높아졌다는 조사 결과가 많다. 문제는 사람에 따라서 AI 효과를 누리는 정도가 다르다는 점이다. 평범한 개발자가 AI를 잘 사용하면 생산성을 최대 2배는 늘릴 거지만, 뛰어난 개발자가 사용한다면 10배, 20배 이상의 효과를 얻을 거다. 그렇다면 제대로 사용하지 못하는 이들은 AI 때문에 자신의 자리를 보존하기 어렵다는 얘기다.

일전에도 비슷한 글을 적은 기억이 있다. 나는 프로그래밍을 못한다. 그리고 프로그래밍을 좋아하지 않는다. 못하기 때문에 좋아하지 않는 것인지 아니면 좋아하지 않아서 못하는 것인지 그 선후는 모르겠으나 결론적으로 프로그래밍을 못하고 좋아하지 않는다. 사실 프로그래밍만 못하는 게 아니다. 세상의 모든 언어를 싫어한다. 누구나 다 있다는 초등학교, 아니 국민학교 때 올백의 기억이 내겐 없다. 3학년 때 아깝게 놓친 적은 있다. 맞다. 국어 문제 2개를 틀렸다. (아마도 기본형을 묻는 문제에서 ‘싣다’가 아닌 ‘실다’로 적어서 틀렸을 거다.) 중학교에 올라가니 영어도 배워야 했다. 잠시 미국도 1년 넘게 다녀왔지만 여전히 영어는 어렵다. 고등학교 때 제2 외국어로 일어를 배웠는데, 현재는 ‘아리가또’ 이상을 기억하지 못한다. 히라가나는 그나마 모양이 익숙한데 가타카나가 외계어가 된 지 오래다. 이과와 공대를 나왔지만 자연의 언어인 수학을 잘하는 것도 아니다. 그때 제법 문제는 잘 풀었지만 수학을 제대로 이해한 건 아닌 것 같다. 그러니 기계어인 컴퓨터 프로그래밍 언어를 잘하지 못하는 건 당연한 결과다.

내가 왜 언어에 약한지 오랫동안 고민했다. 딱히 결론은 없지만, 새로운 것을 배울 때 처음에는 속도가 느리지만 원리를 깨닫는 경험을 하면 그 후로 속도가 빨라졌던 것 같다. 다소 귀납을 과정을 거쳐서 연역의 영역으로 넘어가야 제 실력을 발휘하는 사람이다. 그러니 시작이 느린 슬로 스타터인 셈이다. 우리의 교육이 그렇다. 원리에 관한 설명 없이 그냥 문법이나 예시만 주야장천 외우는 그런 교육 말이다. 

다시 프로그래밍으로 넘어와서… 며칠 전에 회사에서 웹프로그래밍을 해야만 했다. Jupyter Notebook으로 개념을 확인했는데, 다른 이들과 소통하기 위해서 웹으로 애플리케이션을 만들면 좋겠다는 생각이 들었다. 소싯적에 HTML로 웹페이지도 만들어보고 ASP/JSP로 동적 웹페이지도 만들어봤지만 너무 예스럽다. 이걸 해야 되나 말아야 하나를 여러 날 고민하다가 그냥 해보기로 했다. 뭐부터 시작해야 할지 막막했다. 어떤 프레임워크를 사용해야 할지 그리고 Python으로 웹 프로그래밍이 가능할지 등등 고민이 많았다. 그러다가 일단 회사의 LLM 시스템에 파이썬으로 웹 프로그래밍을 할 건데 간단한 입력폼 예시를 짜줘라고 prompting 했다. 나온 예시와 절차 대로 vscode에 넣고 실행하니 그냥 돌아갔다. (구글링으로 얻은 블로그글을 보고 시작했는지 그냥 LLM의 답으로 시작했는지…) 블로그에 sqlite를 DB로 사용하던데 이건 또 어떻게 해야 할지 몰라서 다시 prompting 했고, 예시를 조금 수정하니 원하는 기능을 얻었다. 실제 작업 시간은 한두 시간에 불과하지만 하루 만에 애초에 원했던 프로그램을 얻었다. 실제 코딩보다는 할지 말지를 걱정하고 고민하는데 더 오랜 시간이 걸렸다. 미약하나마 나도 Vibe Coding을 했던 거다.

불과 몇 시간 만에 그럴듯한 웹 애플리케이션을 만든 것은 AI와 구글의 도움이 컸다. 언어를 몰라도 Vibe Coding이 가능한 시대다. 그러나 약 30년 전에 Unix 터미널에서 HTML 마크업 하던 기억이 없었다면, 오래전에 JSP로 FORM을 작성하던 기억이 없었다면 하루 만에 성공하진 못했을 거다. LLM이 알려준 Flask라는 좋은 프레임워크 때문에 쉽게 문제를 해결했지만, 소싯적에 손으로 익힌 기초적인 HTML 문법을 몰랐다면 과연 성공할 수 있었을까? AI 시대에 미련하게 모든 걸 line-by-line 손코딩을 할 필요는 더 이상 없다. 그럼에도 내가 다루는 언어의 원리와 기초에 관한 지식이 없다면 제대로 된 프로그램을 얻을 수 있을까?라는 의문을 갖는다. 명확하고 자세하게 AI에게 명령하는 것이 베스트 프랙티스가 된 시대지만 여전히 기초의 중요성을 강조하고 싶다. 도구가 좋으면 모든 것이 마법처럼 느껴진다. 그럴수록 기본에 더 충실하자. 복잡한 계산은 계산기에 맡기더라도 1 + 1 = 2 정도의 암산은 할 수 있어야 한다. 

AI가 단순히 코딩을 도와줘서 프로토타입을 빨리 만들 수 있다는 점도 있지만, 프로토타입의 프로토타입에도 기여한다. 예전에는 일단 간단한 코드를 짜서 프로그램을 돌려본다거나 주변의 모든 데이터를 긁어모아서 데이터 분석을 해봄으로써 어떤 아이디어의 가능성을 확인했다. 하지만 생성형 AI의 등장으로 그런 아이디어의 실효성을 AI를 통해서 미리 검증해 볼 수 있다. 이번에 진행한 작업은 A를 넣었을 때 B가 나오는지 확인하는 프로그램이었다. 그런데 이 작업을 하기 전에 AI한테 만약 A를 넣으면 결과가 뭐니?라고 여러 번 물어봤다. 물론 틀릴 수도 있지만, 예전에는 모두 실제 해봤어야만 하는 일들을 미리 AI한테 간단히 질의해서 가능성 여부는 확인할 수 있다. 프로토타입 이전의 프로토타입을 시뮬레이션하는 방식으로도 AI를 활용할 수 있다. 간단히 C라는 아이디어의 장단점, 기술적 어려움, 가능한 비즈니스 모델 등이 뭔지를 확인하는 것만으로도 큰 진전이다.

반응형