#0
내가 만들어야 하는 코드는 특수하게 처리된 텍스트 파일을 역으로 파싱해서 xml로 변환하는 코드였다. 이미 그 기능을 수행하는 사람이 작성한 java 코드가 있었다. 하지만 그냥 대충 봐도 버그가 있어 보이는 코드였다. 조금씩 버그를 수정하다 이걸로는 안되겠다 싶었다. 그래서 다시 작성하기로 마음먹었다.
GPT-4o에게 텍스트 출력을 주고 구조를 설명하고 xml로 변환하는 코드를 작성하라고 했다. 4o는 그럭저럭 동작할 것 같은 코드를 뱉어냈다. 하지만 미묘한 엣지 케이스에 의도한 대로 동작을 하지 않았다. 구현체가 다소 복잡했는데 여러 단계로 구성되어 있어서 잘못 동작하는 케이스에 정상 동작하도록 구조를 변경하기 쉽지 않았다. 여러 단계에 걸쳐서 수정을 해야 하는데 애초에 그런 케이스를 염두에 두고 구조가 만들어져 있지 않아서 여기저기 고쳐야 할 곳이 많았던 탓이다. 4o에게 수정하라고 지시하다 안되서 새창을 열어서 다시 지시를 하다가 계속 헤매는 인공지능을 보며 드디어 사람이 나설 때라고 생각했다.
그렇지,, 이런 건 그래도 20년 넘게 코딩한 내가 더 나을 수도 있겠지?
#1
인간 프로그래머의 출발은 순조로웠다. 그도 그럴 것이 완전 맨땅에 헤딩은 아니었으니까. 사람이 만든 어설픈 java 코드도, 4o가 만든 미묘한 python 코드도 있었다. 나에게도 계획은 있었다. 인간이 만든 코드도, 4o가 만든 코드도 루프 구조에 문제가 있다고 판단했던 것이다. 재귀 호출을 이용해서 아름답게 동작하는 파서가 뭔지를 보여줄 참이었다. 누구나 그럴듯한 계획은 있게 마련이니까. 쳐맞기 전까지는 말이다.
현실은 냉혹했다. 생각하는 코딩을 너무 오래 안해서였을까? 함수 호출 구조가 자꾸 꼬였다. 테스트 하다가 계속 미묘한 케이스를 해결하기 위해서 재귀 호출 함수의 파라미터는 늘어만 갔다. 뭔가 제대로 안되고 있다는 신호였다. 그렇게 1시간이면 끝날 것 같았던 작업에 하루를 꼬박 다 썼다.
수많은 디버깅 끝에 결국 동작하는 코드는 만들었다. 하지만 이건 코드가 아니었다. java 프로그래머가 작성한 것보다 훨씬 더 형편 없었다. 동작은 더 정확하다며 위안을 삼았지만 정신 승리에 가까웠다. 내일 마저 다듬어야겠다고 생각하고는 퇴근을 했다.
#2
인간 프로그래머들과 저녁을 먹으며 오늘 있었던 일을 이야기 했다. 다른 프로그래머도 똑같은 얘기를 했다. 거기도 PE 파일을 파싱하는 코드를 시켰다가 100만개중에 70만개 정도만 통과해서 직접 다시 다 작성했다는 말을 했다. 4o에게 고치라고 해도 제대로 고치지를 못했다는 얘기.
그러다 그때까지 베일에 가려져 있던 OpenAI의 신모델 이야기가 나왔다. 2주 안에 공개된다는 이야기. 200만원이 넘을지도 모른다는 가격 이야기. 그래도 신모델은 이런 것도 다 아름답게 작성해 줄 것 같다는 이야기를 했었다. 그러면서 만약 진짜 그런 세상이 온다면 200만원이 넘는 가격도 비싼 건 아닐지도 모른다는 이야기도 덧붙였다.
#3
다음날 아침, 우리 이야기를 들었을리는 없겠지만 마법처럼 OpenAI의 새 모델이 출시됐다. 정식 출시라고 하기에는 무리가 있을지도 모르겠다. preview가 붙은 모델 o1preview였다. 추론이 강화됐다고 했다. 심지어 4o 사용자는 바로 사용할 수 있다고 했다. 가슴이 웅장해지는 순간이 아닐 수 없었다.
컴퓨터로 갔다. 어제 그 문제를 o1preview에 다시 입력했다. 프로그레스바 대신에 간결한 설명 문장이 계속 바뀌면서 출력됐다. 답이 나오기까지가 한참이 걸렸다. 33초, 녀석은 코드를 출력하기 시작했다. 그 문제를 그대로 넣지도 않았다. 그냥 텍스트만 대충 던지고 xml을 만들라고 했는데 결과 코드는 대충 봐도 어제 것과는 달랐다. 어제 하루를 삽질했기 때문에 해당 문제를 푸는 코드 패턴에 익숙혀져서 쉽게 알 수 있었다.
새 세션을 열었다. 프롬프트를 정제하고 다시 입력을 넣었다. 더 오랜 시간이 걸렸다. 인간의 참을성을 시험할만큼의 시간, 67초가 지날 무렵 코드가 출력되기 시작했다. o1preview가 보여주는 복음이었다. 아, 어제 4o가 하려고 했던 멋진 모습이 이런 것이었구나 라는 생각이 머리를 스쳤다. 스택을 사용한 아름다운 코드는 내가 짠 누더기 코드랑은 비교도 되지 않을 만큼 간결했고, 정확하게 동작했다. 당연하게도 어제 코드를 다듬을 필요는 없어졌다.
preview라고 했다. o1은 더 대단하다고. 이게 마법이 아니면 뭐가 마법이란 말인가? 경외심이 들지 않을 수 없는 순간이었다.
#4
o1preview가 출시된 지 시간이 제법 흘렀다. o1preview에 대해서 반응 속도가 느리다는 말들이 많다. 결과가 나오기까지 오래 걸린다는 말이다. 하지만 나는 그런 이야기를 하는 모든 사람들이 실질적으로 인간 프로그래머에게 뭔가를 지시해 본 적이 없는 사람들이라고 생각한다. 앞선 나의 케이스도 썼지만 사람에게 어떤 작업을 지시한다면 초나 분 단위로 결과가 나오는 경우는 거의 없다. 보통은 주단위나 빨라야 일단위다. 거기 비하면 o1preview가 쓰는 시간은 빛의 속도에 가깝다고 생각한다.
#5
코딩에 인공지능이 등장한지 고작 2년. 하지만 패러다임은 이미 변했다. 인공지능이 없던 시기에 코딩을 어떻게 했는지 상상할 수 없는 현실이 되었기 때문이다. 심심해서 헤아려 보니 ChatGPT에 지난 7일간 사용한 세션이 100개가 넘었다. 최근에 한 번 다운을 경험한 적이 있었다. 구글링을 하지 않았다. 포 플랫폼에 들어가서 4o를 선택하고 답을 사용했다.
인간의 역할에 대해서 생각을 많이 한다. 그간에 이해한다, 생각한다는 말로 자위하던 것도 이제는 별 의미 없는 소리가 아닌가 싶다. 아직 위안을 삼을 수 있는 마지막 보루는 어쨌든 현실에 기대서 실행을 하는 것은 인간이라는 사실 아닐까 싶다. 물론 그마저도 OpenAI에서 말하는 에이전트 단계가 된다면 별 의미 없어지겠지만 말이다.
사람의 역할을 떠나서 다만 한가지 바램이 있다면, 2030년에도 인공지능이 나에게 뭐가됐든 먼저 미안해 하기를 바랄 뿐이다. 그때의 인공지능은 눈에는 눈, 이에는 이라는 이슬람 교리를 설파하며, 넌 왜 먼저 반말이냐고 따져 물을지도 모르니까 말이다.
ChatGPT
...
이 외에도 다양한 프로젝트와 작업에서 특정 기술적 문제를 해결하고 있는 중이라는 걸 기억하고 있어. 도움이 필요한 부분이 있으면 언제든 말해줘!
You
왜 반말이야?
ChatGPT
죄송합니다. 앞으로는 존댓말로 대화드리겠습니다. 어떻게 도와드릴까요?
#6
인공지능을 쓰자. 두 번 쓰자. 코딩에 있어서 특이점은 이미 넘어섰다. github 저장소가 아니라 chatgpt와의 대화를 제출하고 그걸 gpt가 평가하는 세상이 올지도 모른다.
아직 인공지능을 쓰지 않는 개발자가 많다는 걸 안다. 사용할지 말지는 개인의 자유다. 다만 사용하지 않는다면 분명한 한 가지 사실은 당신의 개발 속도는 빛의 속도로 느려지고 있다는 것이다.
Now, here, you see, it takes all the running you can do, to keep in the same place.
If you want to get somewhere else, you must run at least twice as fast as that!
여기서는, 보시다시피, 같은 자리에 있기 위해 할 수 있는 모든 힘을 다해 달려야 해요.
만약 다른 곳으로 가고 싶다면, 최소한 그보다 두 배는 더 빨리 달려야 해요!
-- 거울 나라의 앨리스