개발자는 인공지능에 대체될까?
A. 개발자가 인공지능에 대체될 가능성은 있지만, 그렇다고 모든 개발자가 인공지능에 의해 대체될 것은 아닙니다. 인공지능 기술은 계속 발전하고 있지만, 아직까지는 인공지능이 모든 개발 업무를 수행할 수 있는 수준에 이르지 못했습니다. 따라서 개발자의 역할은 여전히 매우 중요합니다.
또한, 인공지능은 정교한 알고리즘과 기술이 필요한 분야에서 특히 효과적입니다. 그러나 실제로 사용자와 상호작용하는 인터페이스나 새로운 기술을 개발하는 등 창의성과 사고력이 필요한 분야에서는 여전히 인간 개발자가 필요합니다.
그러나 기술이 발전함에 따라 인공지능 기술이 개발자의 역할을 대체하는 경우도 있을 수 있습니다. 예를 들어, 코드 생성 및 테스트 자동화, 알고리즘 개발, 데이터 분석 및 예측, 시스템 유지 보수 등에서 이미 일부 기능이 자동화되고 있습니다. 따라서 개발자는 항상 새로운 기술과 역량을 습득하여 적극적으로 대처해야 합니다.
- ChatGPT
이 글을 쓰기에 앞서 이야기하자면. 이 주제는 아주 민감하다. 단순하게 개발자는 인공지능에 대체된다, 아니다는 식의 흑백논리로 접근할 생각은 전혀 없다. 그러나 한 번쯤은 생각해 볼 만한, 혹은 개발자 개개인에게 미래를 고민할 만한 주제거리는 충분하다고 생각되어 이 글을 써보게 되었다. 이 글은 좋은 방향이든 나쁜 방향이든, 어쩌면 당신의 미래에 영향을 주게 되는 시발점이 될지도 모른다. 개발을 그만두고 새로운 길을 택할 수도 있고, 또 다른 방법을 선택할 수도 있다. 책임감 없이 근거 없는 의견을 제시할 생각은 없다.
사람이 아닌 기계에 의해 내가 몸담고 있는 직업이 수년 이내에 대체될 가능성이 있다고 생각하는 것은 최악의 시나리오 중 하나이며 지금 당장 코딩을 멈추고 다른 것을 배워도 이상하지 않을 지경이다. 단순한 해프닝이 아니고, 그저 웃고 넘어갈만한 주제도 아니다. 만약 내가 그림을 그리는 사람이었다면, 그림 AI 가 유행할 때 다른 관점으로 의견을 제시했을지도 모른다.
사람이 사람으로 대체되는 것과 기계에 대체되는 것은 너무나도 다른 이야기다. 과거 산업혁명이 일어나면서 기존에 있던 직업은 사라지고 새로운 직업이 등장한 것처럼, 인공지능의 무서운 발전속도는 지금 존재하는 수많은 직업들을 대체하고 새로운 직업들을 탄생하게 할 수 있는 힘을 가지고 있다. 나를 중심으로 생각하고 있으면 세상은 정말 느리게 흐르고 있는 것 같지만, 최근 AI 에 대한 이야기가 많이 나오면서 사실은 과거에 비해 굉장히 빠른 속도로 진보하고 있었음을 새삼 실감한다. ChatGPT 는 쐐기를 박는 결정적인 사유가 되었다.
한 가지 덧붙이자면, 난 AI 의 원리뿐만 아니라 만드는 방법도 모르는 문외한이다.
현재
지금의 나는 코딩할 때 깃허브 코파일럿을 사용하고, 때때로 ChatGPT 를 쓴다. ChatGPT 에 대한 기초적인 이야기는 이미 너무나도 많은 사람들이 글과 영상을 통해 이야기하고 있으므로 뒷북이니까 생략하기로 하고, 조금 더 중요한 얘기를 해볼까 한다.
깃허브 코파일럿은 공개 깃허브 레포지토리를 기반으로 학습된 AI 이며 자주 사용되는 코드를 추천해 주는 것은 물론, 긴가민가하지만 현재 작성 중인 프로젝트의 코드도 일정 부분 학습하는 것으로 보인다. 그래서 어떤 코드를 쓸 것임을 생각은 하고 있었지만, 그게 프로젝트와 관련된 코드여서 AI 에게 큰 기대를 하지 않았음에도 추천을 하는 모습에 종종 놀랄 때가 많다. 사용해 본 느낌상 지금 사용되는 페어 프로그래밍을 위한 코딩 AI 는 설계 같은 숲보다는 특정 기능이나 구현에 해당하는 작은 나무 영역을 조금 더 잘한다. 이 뜻은 또 다른 의미가 담겨 있다.
ChatGPT 를 사용할 때는 깃허브 코파일럿은 잘해주지 못하거나 애초에 기대하지 않는 사항을 질문한다. 비즈니스 조건과 시나리오 등을 되도록 자세하게 설명하고 코드를 던져 다음과 같이 질문하곤 한다. "이 코드에 어떤 개선점이 있을지 추천해 줘". "이 코드에 대한 테스트 케이스를 작성해 줘" 테스트 케이스를 제시하면, 더 나은 테스트 시나리오를 추천해주기도 한다.
ChatGPT 가 제시하는 의견은 대체로 타당하고 합리적이다. 한 마디로, ChatGPT 는 실질적인 기술사수로서의 역할뿐만 아니라 잔소리를 하지 않는 동료 개발자로 여겨도 상관 없어지는 것이다. 다만 재잘거리는 깃허브 코파일럿과는 다르게 내가 질문하지 않으면 말을 하지 않는 소심쟁이라 그렇지. ChatGPT 를 사용할 때는 설명이 명료하면 기대하는 응답을 얻을 수 있다. 기본적으로 ChatGPT 를 사용하기 위한 기본적이고 본질적인 전제라고 볼 수 있다.
코딩테스트는 무의미해진다
이전에 이야기했듯이, 지금의 AI 는 넓은 숲보다는 나무 영역, 즉 소규모 기능의 설계와 코드 레벨의 구현을 꽤나 잘해준다. 이 뜻은, 어느 정도가 되면 더 이상 사람이 짜는 코드 수준보다 더 나은 코드를 작성할 가능성이 커진다는 뜻이다. 과거 알파고의 등장으로 현재의 바둑이 어떤 식으로 바뀌었는지를 알면 대략적으로 예측이 가능한 범위라고 볼 수 있다.
코딩테스트는 문제에 대한 유형이 있고, 카테고리화가 되어있으며 어떤 문제에 어떤 패턴과 자료구조를 써야 할지 대략적으로 분리되어 있다. 키 포인트라면, AI 는 분류되어 있고, 정형화되어 있는 데이터를 다룰 때 아주 탁월한 성능을 보인다는 것이다. 문제의 유형과 패턴이 일정하면 AI 는 당연히 빠른 속도로 학습을 할 것이고 문제에서 원하는 대답을 도출할 가능성이 아주 커진다.
또 한 가지, AI 가 제시하는 코드가 자칫하면 '정답' 이 되어버릴 수도 있는 가능성이 발생한다. 실제로 그렇게 될 가능성이 높다고 여긴다. 내가 이전에 개발에 대한 회의감을 느끼면서 적었던 글 중에 다음과 같은 말이 있다.
내가 코딩을 때려치우지 않는 이유는 코딩에는 정답과 정석이라는 것이 없이 다양한 방법으로 구현하는 재미가 있기 때문이다.
AI 가 정답을 제시하는 순간 이 이야기는 전부 허사가 된다. 갑과 을이 바뀌는 것이다. AI 가 만든 코드를 사람이 평가하고 개선하는 것이 아니라 사람이 AI 가 만든 코드와 얼마나 비슷한 코드를 작성하는가에 따라 개발자의 실력이 평가되는 날이 올 수도 있다. AI 가 문제를 내고, 채점도 AI 가 한다.
작금의 코딩테스트는 코드 자체를 정답으로 하는 것이 아니라 코드의 '결과' 에 따라 처리한다. 구현된 코드가 어떤 방법을 사용하든지 간에 기대하는 결과만 나오면 어찌 되었든 일단 정답으로 인정한다. 사람마다 작성하는 코드가 다르기 때문에 코드의 품질을 비롯한 복잡도가 모두 다르다. 이 때문에 코딩테스트가 조금은 의미 있는 것이다. 다만 결과만 같으면 모두 정답으로 인정하는 방식으로 코드의 품질과 관계없이 이분법적으로만 처리한다면 딱히 의미가 없겠지만 말이다. 다른 관점에서 보자면 구현 방법에는 구애받지 않는 방법론의 자유를 보장해 주는 것이기도 하다.
ChatGPT Passes Google Coding Interview For Level 3
하지만, 이제는 결과를 내기 위한 방법을 의미하는 '코드' 마저도 정답이 정해질 수도 있다. AI 는 작은 문제에 대처할 수 있는 가장 효율적인 코드를 제시하게 될 것이고, 그 코드가 정답이 된다. 이는 상당히 소름 돋는 일이다. 코드에서 나오는 개발자의 코딩 스타일의 의미가 사라지는 것이라 볼 수 있다. 선례로, 바둑에서는 이미 AI 를 상대로 연습하고, 그들이 만든 기보를 익히고, 인공지능이 두는 바둑과 비슷하게 두는 바둑기사가 좋은 성적을 거두고 있다. 인공지능이 두는 바둑이 '정답' 이라고 여겨지는 것이다. 바둑기사마다 다르던 기세와 기풍이라는 말은 이제 옛말일지도 모른다.
대중이라는 방패
AI 가 빠른 속도로 특정 영역에서 위세를 떨치기 위해서는 성능만이 전부는 아니고, 다른 조건도 필요하다. 바로 대중이 AI 를 대하는 인식이다. 각 분야마다 대중이 AI 를 받아들일 수 있는 인식은 너무나도 다르다. 만약 AI 를 조금이라도 쉽게 받아들일 수 있는 분야라면 그 분야는 빠른 속도로 대체될 가능성이 커진다. 대중의 인식에 대해 몇 가지 예를 들어보자.
알파고가 세상에 나온 이후 바둑 AI 는 발전을 거듭했음에도 바둑은 여전히 사람과 사람끼리 승부한다. 연습은 AI 와 하더라도 승부는 두 사람이 한다. 주목해야 하는 점은 바둑은 스포츠라는 것이다. 스포츠는 사람과 사람끼리의 대결에서 그려지는 과정에서 의미와 가치를 발휘한다. 스포츠에서 기계와의 승부는 사실상 의미가 없다. 자동차가 발명되었다고 해도 여전히 올림픽에서 사람끼리 육상대결을 하는 것과 마찬가지다. 그래서 우리는 바둑이라는 분야가 AI 에게 정복당했다고는 해도 여전히 스포츠라는 이름으로 받아들일 수 있는 것이다. 바둑보다도 한 참 전에 정복당한 체스도 그렇다. 스포츠라는 카테고리는 AI 로부터의 공격을 지켜주는 일종의 방패이다.
또 하나의 문제는 감정이다. 그림 AI 를 예를 들어보자. 그림은 예술이기 때문에 AI 가 그린 그림에는 화가의 고뇌와 감정, 시대적인 배경이 드러나 있지 않아 불편한 감정을 느끼게 된다. 비전문가가 보았을 때 어떤 그림을 두고서 AI 가 그렸다는 사실을 모르고 봤을 때는 구분이 안 갈 수도 있는데, 그 사실을 아는 순간, 사람이 그린 그림에 조금 더 가치를 두게 된다. 그림을 업으로 하는 작가가 AI 를 써서 작품을 공개한다면 큰 논란에 휩싸이는 것은 AI 가 예술의 영역에 접근하려는 것에 대한 무의식적인 거부감과 불편함, 그림을 그리는 작가인데 그림을 AI 에게 그리게 한 괘씸함 때문이다. 그림 자체를 잘 그렸는가, 못 그렸는가의 문제는 아니다. 어린아이가 막 그린 그림이라도 그 가치는 있다.
프로그래밍에는 대중적으로 그런 감정이 없다. 개발자가 직접 코딩하지 않고 코드를 AI 가 작성했다고 해서 대중은 전혀 거부감을 보이지 않는다. 오히려 반대로 AI 라는 도구를 잘 활용하여 가치 있는 서비스를 만든 개발자가 더욱 실력 있는 개발자로 인정받을 수도 있다. 즉, 그림과 코딩을 대하는 잣대가 너무 다르다. AI 가 작성한 코드가 더 효율적이고 사용자에게 더 나은 가치를 제공한다면 기업은 가차 없이 개발자가 아닌 코딩 AI 를 사용하게 될 것이다. 코드에는 그 어떠한 감정도 없다. 개발자가 더 나은 코드를 고민하고 사유하는 과정에서 겪는 고뇌가 예술가가 느끼는 그것과 같을지라도 정작 대중의 인식은 그렇지 않다. 사용자는 이 서비스를 AI 가 만든 것이든, 사람이 만든 것이든 크게 상관하지 않는다. 이 문제는 현실적으로 코딩 분야에서 대중의 감정이 AI 의 공격으로부터 방어막이 되어주지 못한다는 이야기가 된다.
아이디어를 실현하고, 서비스를 구현하기에 앞서서 코딩은 도구일 뿐이고 코딩이라는 '기능' 을 수행하기 위한 존재가 사람이든 기계든 전혀 문제가 되지 않는다. 냉정하게 따져보면 그림은 그 자체로 가치가 있지만 '코딩' 이라는 과정을 통해 작성된 코드 자체로는 가치가 없다. 나는 이에 대해 '기술에는 감정이 없다' 고 표현한다. 대중이 특정 분야에서 AI 를 경계하는 감정은 그 분야가 AI 의 공격으로부터 일정 부분 방어할 수 있는 보이지 않는 방패로 작용한다. 하지만 코딩은 지켜줄 만한 방패가 사실상 없다.
또 하나의 예
AI 얘기는 아니지만, 직전에 대중의 인식이 방패로써 작용하여 무산된 것이 있는데, 바로 블록체인이다. 블록체인과 AI, 이 둘은 대중의 인식이 너무나도 다르다. 블록체인은 기존의 화폐를 대체할 것이라는 야심에 찬 목적을 가지고 등장한 기술이다. 하지만 블록체인 기술의 부산물로 생겨난 코인이 실질적인 화폐로써의 역할을 하지 못했던 이유 중 하나는, 대중이 코인이라는 새로운 것에 대한 거부감이 너무 심하기 때문이다. 이미 오랜 과거로부터 우리는 화폐에, 그 이전에는 금에 가치를 두었다. 하지만, 코인은 어떤가?
코인이 뿌리 깊은 역사와 대중의 인식을 가지고 있는 작금의 화폐 패러다임을 바꾼다는 것은 절대 쉬운 일이 아니다. 더군다나 금융과 같이 대중과 가까이 있고, 치명적이며, 부를 축적한 기성세대가 자리 잡고 있는 보수적인 분야는 더욱 그렇다. 그들은 새로운 존재가 기존의 가치를 훼손하는 것을 가만히 두고보지 않는다. 코인은 다양한 분야에 있는 사람들의 반대와 회의론, 제도 등 넘어야 할 벽이 너무나도 많았다. 비트코인으로 블록체인이 대중에게 처음 알려질 때, 블록체인 기술과 코인이 다르다는 것을 인지하는 사람은 거의 없었으며 도박으로 접근하기 그지 없었다. 사실 기술자가 아니라면 그 차이를 이해하기도 버거운 것이다. 이미 첫 인상부터가 망가졌다.
대중의 인식을 깨부수지 못하면 코인이 화폐로써 가치를 인정받는 것은 사실상 불가능에 가까운데, 그 시도가 NFT 등 상당수 있었지만, 투기의 재료만 되었을 뿐 실질적으로 결과는, 다들 알다시피 좋지는 않았다. 다만, 이는 지금까지의 결과일 뿐 아직 모른다. 미래에 코인이 대중의 인식을 깨고 화폐로 인정받을 수 있을지 없을지는 앞으로도 두고보아야 할 문제다.
미래
AI 와 페어 프로그래밍을, 특히 다른 것보다도 ChatGPT 를 사용하면서 느낀 점은, 이제 더 이상 기능의 구현이나 작은 설계는 사람이 AI 를 이길 수 없는 수준까지 도달하는 것이 얼마 남지 않았다는 것이며 코딩보다 더 중요한 것은 비즈니스를 명확하게 이해하고 문제의 본질을 파악하고, 더 나아가 AI 에게 명확한 설명하는 능력이라는 것이다. 이 일은 기술을 전혀 모르더라도 할 수 있다. 문과의 유쾌한 반격이 시작되는가? 많은 이들이 내가 원하는 것을 적는 건 되게 쉬운 일 아니야? 라고 여겨질 수도 있지만, 의외로 많은 사람들은 자기가 원하는 것을 말이나 글로 풀어쓰는 것을 못하는 일이 많다.
생각보다 가까운 미래에는 '사람이 직접 코드를 작성했다고?' 라고 여기게 될 세대가 나오게 될 것이다. 어느 순간부터는 사람이 직접 코드를 쓴다는 것이 자동차와 달리기 시합하는 것과 똑같이 생각된다는 뜻이다. 수십 년이 지난 먼 미래의 이야기일까? 난 아니라고 생각한다. 이는 어떤 사람이 코딩을 잘할까? 에서 이야기한 문제의 본질을 파악하는 것에 확장하는 이야기이며, 더 나아가 비즈니스의 요구사항과 아이디어, 기능을 AI 에게 명령하고 생성된 결과물을 잘 써먹는 것이 천재가 아닌 흔한 개발자가 살아남을 수 있는 길이 되지 않을까 예상해 본다.
아직까지는 인공지능이 개발자를 완전히 대체할 것이라고 속단하기에는 이르다고 판단한다. 현실세계의 다양한 문제를 파악하고 글로 표현하고 지시하는 일은 여전히 사람이 하는 일이기 때문이다. 큰 틀은 사람이 하되 세세한 일은 AI 에게 지시하는 형태로 나아갈 것 같다. 그러나 사람이 하는 일은 점차 줄어들 것이라는 점은 명백하게 예상할 수 있는 일이다. 문제를 파악하는 일은 코딩이라는 '기능' 보다 한 단계 고차원 수준에 있는 것이므로 만약 개발자로서 '코딩' 을 가장 많이 하고 있다면 대체될 가능성은 커진다. 코딩은 AI 가 잘하는 것이기 때문이다. 개발자는 대체되지 않겠지만 코드는 대체 될 가능성이 농후하다.
한때 그림 AI 에 대한 문제가 논의되고 그림의 미래에 대한 회의적인 기운이 돌려고 할 때, 다른 관점을 가진 화가들은 "실력 있는 화가가 되면 AI 가 그린 그림을 개선하고 리터칭 하여 더 나은 작품을 만들 것이니 실력을 키워라" 는 의견을 제시하곤 했다. 개발자도 그럼, AI 가 만든 코드를 더 개선하고 발전시킬 수 있는 실력이 뛰어난 개발자가 되면 되지 않을까? 일리 있는 의견이다. 부정하지 않는다. 그래서 내가 제시하는 다른 하나의 길은 'AI 가 만든 코드를 개선할 정도의 개발자로 성장하는 것' 이다.
한계
이 글을 쓰는 시점의 ChatGPT 는 여러모로 한계가 있는데, 가장 큰 문제는 사실이 아닌 것도 사실이라고 주장하는 일이 있다. 과거의 데이터가 갱신되지 않아서 생기는 문제라고 치부하기에는 역사적인 사건도 잘못 이야기해주기도 한다. 이 이야기는 사람이 지식을 가지지 않은 상태에서 AI 에게 의존하면 잘못된 지식과 인식이 머릿속에 주입될 수 있다는 것이고, 더 나아가 세뇌까지 할 수 있다는 이야기가 된다. 사람이 더 멍청해질 수 있는 가능성이 커졌다. 결론만을 받아들이는 순간 바보가 되는 것이다.
서구권 대학에서는 이미 ChatGPT 에 대해 금지령까지 내린 상황이다. 과제나 에세이 작성에 사용되기 때문이다. 당장은 귀찮은 과제를 대신해주니 좋겠지만, 쌓이고 쌓이다보면 미래에는 더 큰 문제가 발생하게 될 것이다. 과제라는 것은 스스로 연구하고, 고민하며 성찰하는 그 과정이 중요한 것이지 결론은 중요하지 않다. 결론을 내릴 때는 왜 그렇게 생각했는지, 어떠한 과정을 거쳤는지 이해하고 있어야한다. 하지만, AI 가 내려준 결론을 그대로 받아들여서 고민하는 과정을 모두 생략해버리면 한국의 주입식 교육의 문제점과 똑같아진다.
AI 가 등장함으로 인해 공부를 해야 할 필요성이 더 줄어들었다고 생각이 될 수도 있지만, 반대로 가짜 정보를 걸러내기 위해서는 공부를 더 해야 할 필요성이 생겼다. 멍청해지면 선동과 날조에 동화되는 것이다. AI 가 대중화될 수록 AI 를 사용하여 만들어진 출처와 사실관계 확인이 안 된 불명확한 정보는 많아질 것이고, 그 정보를 어떻게 받아들여서 사용할 지는 사람의 몫이 된다. 지금도 웹은 정보의 바다라고 불리는 판에 AI 가 생성한 정보까지 더해지면 넘치다 못해 쏟아질 될 것이다. 바보가 될 수록 진짜와 가짜는 구별이 안 될 것이다. 뇌가 받아들이고 처리할 수 있는 수준은 한계가 있으므로 자신에게 필요한 정보만을 필터링할 수 있는 힘이 필요하다.
활용
ChatGPT 를 활용할 수 있는 방법은 분야별로 다양하다. ChatGPT 는 언어 모델이고, 언어를 기반으로 하는 일은 대부분 도움을 받을 수 있다. 코딩 또한 사람의 언어로 하기 때문에 활용할 수 있다. 개발자가 서비스를 구현할 때 AI 를 활용할 수 있는 방법으로는 코드의 개선점을 리뷰하고 평가, 마크업 퍼블리싱, 테스트 케이스 작성, 소규모 서비스와 기능의 설계, 구현방법이 떠오르지 않는 기능에 대한 아이디어 질의 등이 있다. 적어도 현 시점에서는 AI 가 코드를 작성해준다고 해서 이를 그대로 쓰면 바보같은 행동이 된다. AI 가 작성해준 코드를 제대로 활용하려면 개발자가 그 코드를 해석하고 이해할 수 있는 능력을 가지고 있어야만 한다. 지금, GPT-3 버전에 한해서지만, 미래에는 그 필요성마저 사라질 가능성도 염두해두고 있다.
내가 ChatGPT 에게 질문하고 있는 영역은 깃허브 코파일럿에게 했던 것처럼 대체로 작은 나무 영역에 속한다. AI 가 가지고 있는 가능성은 무궁무진하므로 설계를 어디까지 할 수 있을지는 나도 잘 모른다. 문외한이기 때문이다. 이는 결국, 아무리 똑똑한 AI 라고 할지라도 질문자의 질문 범위가 좁으면 AI 도 그에 따라 응답을 해줄 수밖에 없다는 뜻이 된다. 범위를 살짝 넓혀서 단순 코드 레벨의 구현뿐만 아니라 기능에 대한 설계를 부탁할 때도 꽤나 괜찮은 방향성을 가지고 제시한다. AI 는 쓰기 나름이라는 것을 증명한다고 볼 수 있다.
결론
결론적으로 내 선택은 뭐냐고 물어볼 수도 있다. AI 보다 나은 코드를 작성하고 개선할 수 있을 정도로 실력을 키워서 대체되지 않으려 시도할 것 인가. 그게 아니라면 AI 가 가진 능력과 강점을 인정하여 더는 그들과 경쟁하려 들지 않고, 기술이라는 영역에서 벗어나 세상을 바라보는 시야를 넓히고 서비스와 제품을 생성하려고 할 것인가. 나는 여기서 그 어떠한 선택도 강요하지 않는다. 단지, 나는 후자를 선택하고자 한다.
이 글에서 이야기한 것들이 내년에 당장 일어날 문제는 당연히 아니다. 내일 당장 코딩을 그만두어야 한다는 것은 더더욱 아니다. 하지만, 너무 먼 이야기도 아니다. 조금 더 미래를 보면서 개발자에서 다른 직업으로 2차 전직할 준비를 해보는 것도 나쁘지 않다는 의견을 던지고 싶다.