위기의 SW 개발자들, AI의 물결에 올라탈 것인가 휩쓸릴 것인가?

November 9, 2023 황준호 조회수 2,705

우리의 업무 방식을 변화시키고, 상상력을 확장시켜 줄 Gen AI에 대해, 연구/기술적인 측면에 대한 이야기가 아닌 Gen AI의 소비자, 사용자의 입장에서의 제 경험과 생각에 대해서 이야기를 나누어 보고자 합니다.

들어가며

안녕하세요. VD 사업부 Service SW Lab의 황준호입니다.


지난 2016년, 알파고와 이세돌의 대결이라는 세계적인 빅 이벤트가 있었고 큰 화제를 모았지만, 당시에는 AI가 우리의 피부에 와닿을 만큼 크게 느껴지지는 않았습니다. 하지만 작년 11월, 본격적으로 세상에 등장한 ChatGPT를 시작으로 지금 이 시간에도 수많은 다양한 Gen AI 기반의 제품과 솔루션이 나오고 있습니다. 이전과 달리 이제는 AI 세계가 우리의 일상 속 깊숙이 들어오고 있는 것을 피부로 체감할 수 있습니다.



글을 쓰고 있는 이 순간에도 수많은 제품들이 나오고 있습니다.[1]


그러면서 자연스럽게 이런 이야기들이 나오기 시작했습니다. 바로 ‘인간의 일자리를 위협하는 AI’, ‘AI시대 속에 살아남을 직업은?’과 같이, AI가 사람을 대체하는 시대가 온다는 이야기입니다.


SW 개발 업계도 예외는 아닙니다. 특정 패턴과 규칙을 찾아내 무한하게 반복하고 재생산하는 영역에서 뛰어난 능력을 발휘하는 인공 지능이 ‘프로그래밍’을 아주 잘할 수 있다는 이야기는 사실이기에 예외가 아니라는 말로는 부족할지도 모르겠습니다. 항간에는 몇 분 만에 게임을 만들어 내는, ChatGPT를 직원으로 둔 회사를 차렸다는 이야기도 나오고, 개발자가 아닌 일반인이 Gen AI를 사용해 게임을 만들었다는 이야기도 나오고 있습니다.



中 칭화대 "챗GPT로 7분만에 게임개발"…회사 차렸다 - ZDNet korea[2]


현재 진행형으로 도래하고 있는 AI 시대는 SW 개발자들에게 큰 위기일까요? AI가 우리의 일자리를 빼앗고 있으니, 지금이라도 현대판 러다이트 운동(Luddite Movement)이라도 해야 할까요?AI는 인간이 배척해야 할 대상일까요?

저도 이에 대한 걱정 반 기대 반으로 동료와 이야기를 나누기도 하고 Gen AI를 사용해 봤는데, 다음과 같은 결론에 이르렀습니다.


어쩌면 언젠가 저와 같은 SW 개발자는 대체가 될지도 모르겠습니다. 다만 Gen AI에 의해 대체되는 것이 아닌 Gen AI를 활용할 수 있는 다른 개발자에 의해 대체될 수 있을 것 같습니다. 지금부터 제가 왜 이런 생각을 하게 되었는지에 대해서 이야기해 보도록 하겠습니다.

본론

소프트웨어 개발 업무의 근본은 코딩이라고 할 수 있습니다. 하나의 소프트웨어가 만들어지고 유지 보수가 되는 과정은 여러 활동으로 이뤄집니다. 그 모든 과정은 중요하지만, 필요에 따라 생략하거나 간소화할 수 있습니다. 하지만 코딩은 그렇지 않습니다. 코딩은 소프트웨어 개발에 있어서 생략될 수 없고, 아주 근본적인 소프트웨어 개발 활동이라고 볼 수 있을 만큼 가장 중요한 활동이며 개발자들이 가장 많은 노력과 시간을 들이는 활동입니다.



간략하게 표현한 소프트웨어 개발 과정


저는 이 중요한 ‘코딩’이라는 활동을 Gen AI로부터 도움받을 수 있다는 점에 주목했습니다.


Github Copilot과 AWS CodeWhisperer로 대표되는 코딩 어시스턴트 도구들이 그것들인데요. 물론 Gen AI에서 가장 잘 알려진 ChatGPT와 같은 대화형 Gen AI 또한 개발 과정에서 개발자에게 큰 도움을 줄 수 있습니다. Gen AI가 분명 코딩도 하니 도움이 되긴 할 텐데.. 어떻게, 얼마나 도움이 될까요? 이러한 AI들이 실제로 어떻게 도움을 주는지에 대해 몇 가지 실제 사례를 통해 소개하겠습니다. 다음 요구사항을 만족하는 SW를 개발한다고 생각해 봅시다.


  • 매달 나오는 카드 명세서의 각 매출 항목에 대한 분류를 수행해야 한다.
  • 분류된 데이터를 기반으로 카테고리별 금액, 퍼센티지를 볼 수 있어야 하고, 분류 결과 파일을 Extract할 수 있어야 한다.
  • 한번 분류되었던 매출 항목에 대해서, 이전에 분류한 데이터를 기반으로 자동으로 분류가 될 수 있어야 한다.

요구사항을 받았으니, 개발자의 시선에서 요구사항을 분석하여 개발에 필요한 내용을 도출해 봅니다. Use case diagram 과 같은 UML 작성은 생략하고 아래와 같이 간략하게 개발해야 할 내용을 도출합니다.


  • 이 프로그램은 월별 카드 명세서 엑셀 파일을 읽어야 한다.
  • 명세서 파일의 내용을 분류 가능하도록, 데이터 모델 형태로 변환한다.
  • 각 사용 항목별로 분류하는 과정을 진행하며, 자동 분류 기능을 적용해야 한다.
  • 분류 작업 완료 이후 카테고리별 금액, 퍼센티지를 보여주고 분류 결과물을 csv 파일로 저장한다.
  • 분류 결과 및 자동화를 위한 데이터를 확인하고 수정할 수 있도록 한다.


거창한 개발이 아니지만, 대략적인 코드 구조를 잡기 위해 Class diagram을 작성하여 아주 간단한 설계를 진행해 봅니다. 분류 작업에 사용되는 카드 데이터를 A, B 카드 명세서로 가정하고 설계하겠습니다.



간단히 만든 class diagram


자 이제 설계까지 끝났으니 코딩을 해서 실제 프로그램을 진행할 일만 남았습니다. 첫 번째로 개발해야 할 내용은 “입력으로 주어질 월별 카드 명세서 엑셀 파일을 읽는다”입니다.


여러분들이라면 개발을 시작해야 하는 단계에서 무엇부터 하실 것 같나요? “아니 코딩한다면서 이게 무슨 소리야?”라는 생각을 하신다면 이 글을 읽는 당신은 높은 확률로 개발자가 아닐지도 모르겠습니다. 만약 SW 개발자라면 이렇게 대답하실 것 같아요.


“당연히 구글링해야죠. 엑셀 파일을 어떻게 읽어야 하는지부터 찾아야죠!”



바로 이렇게요!


그렇습니다. 우리가 코딩을 한다고 해서 실제로 ‘코딩’만 하는 것은 아닙니다. 신이 아닌 이상 이 세상의 모든 것을 알 수 없기에 모르는 내용은 찾아봐야 합니다. 그것이 특정 알고리즘에 대한 것일 수도 있고 내가 사용하는 개발 언어의 특정 API에 대한 명세서일 수도 있습니다. 이러한 것을 일명 ‘구글링’이라고 대표되는 검색 활동을 통해 찾아보고 실험해 보고 실제 코드에 적용하게 됩니다. Gen AI를 사용하기 전의 저였다면 위와 같이 구글링을 하는 것으로 코딩을 시작했을 겁니다.


하지만 만약 제 옆에 마치 신과 같이 이 세상에 대해 아주 많이 알고 있는 존재가 있다면 이렇게 해볼 수도 있지 않을까요?


“입력으로 주어지는 excel file을 읽는 코드를 작성해 줘.”


세상의 거의 모든 코드가 모여있다는 코드 저장소 github에 있는 코드들을 학습한 AI라면 코딩에 대해 거의 모든 것을 알고 있는 ‘코딩의 신’과 같은 존재라고 생각해 볼 수 있지 않을까요? 한번 실험해 봅시다.



Excel 파일을 읽는 코드를 작성해 줘!


기존에는 먼저 구글링을 통해 관련 내용을 찾고, 개발자가 이를 검증하고, 실제 코딩했어야 했던 내용이 Gen AI를 이용했더니 내가 원하는 내용을 알려주고 지시하는 것만으로 코드를 짜줍니다.


아래처럼 간단한 for문 작성 또한 Gen AI가 대신 코딩한 덕분에 기존에 약 15줄을 작성해야 했던 것을 1줄만으로 완성할 수 있게 되었습니다.



간단한 for문 작성도 간편하게!


최근 선보인 코딩 어시스턴트 제품들을 사용해 코딩을 해보면 AI가 코드의 전반적인 문맥을 이해하고 개발자가 원하는 내용을 스스로 파악해 자동으로 완성해 주는 수준에까지 진화했음을 알 수 있습니다.


예를 들어 아래와 같이 ‘카테고리 예측을 위한 데이터 편집’을 위한 새로운 진입 메뉴를 만들고자 화면에 안내 문구를 출력하는 코드를 작성합니다.



5번 입력을 추가합니다!


이후 실제 로직 동작부 내용을 작성하기 위한 if문을 작성하는 순간, AI가 제가 뭘 원하는지 알아차리고 스스로 대용량의 코드를 작성합니다.