바야흐로 대 AI 시대이다. 해외 빅테크 기업들은 AI 개발자들에게 파격적인 연봉을 지급하며 인력 채용에 힘쓰고 있다. 비단 AI 개발자뿐만 아니라 서비스 개발자에게도 기회의 시기가 아닌가 싶다. 과거에 AI 서적(좀 더 정확히는 ML)을 보면 온통 AI의 원리에 대해 이야기하는 내용이 많았다. 복잡한 수식도 가득한 누가 봐도 어려운 내용이었다. 도통 알 수가 없어서 이런 기술들을 누군가 열심히 연구할 테니 추후에 이 기술이 적용되는 서비스가 나오면 그걸 잘 사용하도록 하자는 생각을 했다. 아니나 다를까 요즘은 ChatGPT를 잘 활용하는 방법과 같은 책이 쏟아져 나온다.

 

AI 개발자들은 AI를 만드는 일을 하겠지만, 서비스 개발자들은 AI를 어떻게 만드는지 몰라도 된다. 대신 AI를 활용해서 서비스를 만들 수 있는 정도면 충분하다고 생각한다. 이런 시기가 오리라는 것은 자명했다. 마치 자동차를 만들 줄 몰라도 운전은 할 수 있는 것과 다를 바 없다고 생각한다. 자동차를 만드는 사람보다 운전을 더 잘하는 운전자는 얼마든지 있을 수 있다. 잘 만들어진 AI 기술로 사용자에게 어떤 가치 있는 서비스를 제공할 수 있을지 고민이 필요한 시기인 것 같다. 물론 이전부터 많은 사람들이 고민했고 또 여러 서비스들이 나오기도 했지만 아직까지도 늦지 않은 것 같다. 대표적인 AI 서비스가 ChatGPT가 아닐까?

 

개인적으로는 ChatGPT 열풍에도 크게 동요하지 않았고 잘 활용하지도 않았다. 정확히는 동요하지 않은 것이 아니라 아마 잘 활용할 줄 몰라서 동요하지 못한 것이 아닐까 싶기도 하다.

 

 

 

 

이러한 점으로 미뤄 보았을 때 AI 시대를 개발자는 두 가지 관점으로 바라봐야 할 것 같다. 첫 번째는 Development with AI이다. ChatGPT와 같은 AI를 도구로 사용하여 개발하는 것이다. 두 번째는 AI based service이다. AI를 활용한 서비스를 개발하는 것이다. 이런 두 가지 관점을 합치면 AI를 사용해서 AI를 활용한 서비스를 개발하는 것이 된다. 이것이 현시점에 어떤 좋은 기회인 것 같으나 당장 구체적인 아이디어를 떠올리긴 어렵다.

 

그래서 일단은 with AI에 집중해 보려고 한다. 이 부분도 이미 늦은 감이 있지만 지금이라도 AI를 잘 활용하는 방법에 대한 고민은 해야 할 것 같다. 과거 검색을 잘하는 능력이 중요했던 것처럼 이제 AI 활용 능력이 그 포지션을 대체할 것이라는 생각이 든다.

 

 


 

 

믿을 수 없었던 AI

 

 

 

 

GPT 3.5 버전의 ChatGPT를 사용한 경험을 돌이켜보면 믿을 수 없는 출처불명의 정보를 주는 경우가 허다했다. 틀린 내용도 많았다. 대답한 내용이 맞는지 다시 검증하는 시간이 적잖게 소모되었다. 그나마 아는 분야는 해당 정보의 정확성 여부에 대한 판별이 가능하지만 모르는 분야라면 혼란만 가중되지 않을까 걱정이 되었다. 정보에 대한 신뢰성이 없다면 차라리 직접 검색 엔진에서 검색하는 편이 낫지 않을까? 이 경우 적어도 신뢰할 수 있는 출처를 선택할 수 있기 때문이다.

 

나의 경우 AI를 주로 사용하는 순간은 개발 관련 도움이 필요할 때다. 어떤 개념에 대해서 학습할 때 어떤 순서로 어떤 내용을 배우면 좋을지에 대해서 물어보곤 했다. 그러면 목차를 만들어 주는데 종종 참고할 만한 키워드를 발견하기도 한다. 그러면 해당 키워드에 대한 설명을 요청해 본다. 그러면 틀린 정보가 쏟아지는 경우가 있었다. ‘그건 아닌 것 같고 이런 것 아니야?’라고 되물으면 사과를 하면서 정정하는데 그 정정한 정보조차 틀리는 경우도 많았다. 즉 믿을 수 있는 정보가 아니었다.

 

코드도 마찬가지다. 한 번에 제대로 동작하는 코드를 제공받는 경우가 드물었다. 그걸 참고하여 수정해서 사용할 수도 있겠지만 그 코드가 마음에 들지도 않았고 코드를 읽고 수정하는 작업에 소모되는 시간을 생각하면 장기적으로 봤을 때 그냥 새로 작성하는 것이 낫겠다고 생각했다.

 

이러한 문제점은 GTP 3.5 버전을 사용했기 때문일 가능성이 크다. 3.5와 4.0의 차이는 굉장히 큰 것으로 알고 있다. AI는 점점 발전했고 최근에는 Gemini와 Copilot을 잘 활용하고 있다. 이전보다는 좀 더 올바른 정보와 쓸만한 코드를 제공한다. 그럼에도 유료화됐을 때 사용할 정도는 아니라고 생각했다. 그만큼의 유용함을 느끼지 못했다. 좀 더 검색을 편리하게 해주는 정도의 도구라고 생각되었다. (생성형 AI 덕분에 포스팅에 쓸 이미지를 생성하는 재미는 있었다. 특히 Windows 사용자라면 Copilot이 내장되어 있어서 접근성이 좋다.)

 

 

 

 


 

 

새로운 개발 트렌드

 

 

최근에는 IDE에 탑재된 Copilot Chat을 사용하고 있는데 만족도가 꽤 높다. 회사에서 유료 버전 지원을 해줘서 사용하게 되었지만 개인적으로 결제를 해서라도 쓸 의사가 있을 만큼 마음에 든다. 처음에는 평소 신뢰하지 않던 AI가 IDE 내부에 탑재되는 것만으로 뭐 그리 큰 변화가 있을까 싶었다. 하지만 IDE에서 바로 사용할 수 있으니 일단 접근성이 너무 좋았다. 그러니 자연스럽게 사용 빈도가 많아졌다. 코드에 대한 질문을 할 때 복사하고 붙여 넣는 과정이 불필요한 것 또한 큰 편리함을 제공해 주었다.

 

 

 

 

무엇보다 강력한 점은 특정 파일을 열어놓은 상태에서 ‘지금 보고 있는 코드에 대해서 설명해 줘.’와 같은 대화가 가능하다는 것이다. 아니면 ‘xxx클래스를 리팩터링 하고 싶어.’라고 말해도 된다. 외부에 있는 AI를 사용할 때와 다른 방식으로 접근이 가능한 것이다. 프로젝트 전체를 인지하고 결과를 주기 때문에 짧은 질문으로 고퀄리티 답변을 받을 수 있다. 예를 들어 ‘이 프로젝트에 ooo패턴이 잘 적용되었는지 확인해 줄래?’라고 물으면 프로젝트 구조와 각 클래스를 전체적으로 검토한다. (실제로는 설명해 줘, 확인해 줘 보다는 궁금해요, 자세히 알고 싶어요 와 같은 키워드를 더 자주 쓴다. ~하려고 합니다. 도와주실래요? 와 같은 말도 많이 쓴다.)

 

특히 리팩터링 같은 경우는 정말 편리하다. 간단한 예로 함수 분리를 신경 쓰지 않고 막 구현한 뒤에 리팩터링을 요청하면 알아서 함수 분리를 해준다. 그리고 이미 좋은 방식으로 알려진 형태의 구현 방법이나 패턴도 정말 잘 적용해 준다. 정형화된 코드 작성은 AI가 잘할 수 있는 분야라고 생각한다. 많은 개발자들이 이걸 잘 활용하면 전체적인 코드 품질이 향상될 것으로 기대된다.

 

오류를 해결할 때도 도움이 된다. 현재 이런 오류가 발생 중인데 어떻게 해결할 수 있을지 질문하면 해결법을 바로 알려주는 경우도 있고 중요한 실마리를 제공하기도 한다. 특히 초보자 입장에서 마주칠 수 있는 수준의 오류를 해결하는 데에는 큰 도움이 된다. 이 또한 코드의 단편적인 부분만 보는 것이 아니라 제시한 오류 상황에 대해 프로젝트 전체적인 관점에서 살펴보기 때문이다. 마치 든든한 동료와 페어 프로그래밍을 하는 듯하다.

 

테스트 코드를 작성할 때도 틀을 잡는 데 도움이 된다. 이 정도만 해도 충분히 활용 가치가 있다.

 

 


 

 

개발자의 미래

 

 

그렇다 보니 앞으로 개발자라는 직업이 사라지는 것은 아닐까 하는 우려의 목소리도 들린다. 멀고 먼 미래에는 그럴 수도 있겠지만 당장은 쉽게 대체되기 어렵다고 생각한다. 여전히 AI가 완벽하지 않기 때문이다. 개발자는 AI가 생성한 코드를 검증해야 한다. 그렇기 때문에 여전히 개발 능력이 있어야 한다.

 

또한 하는 일의 성격이 변경될 가능성이 크다. 아마도 코딩 중심에서 프롬프트 엔지니어링 쪽으로 바뀌지 않을까 싶다. (근본적인 목표가 문제 해결이라는 것에는 변함이 없을 것이다.) 프롬프트 엔지니어라고 별도로 부르기도 하지만 추후에는 개발 분야에 특화된 프롬프트 엔지니어를 개발자라고 하지 않을까 싶다. AI와의 협업으로 생산성이 크게 증가된다면 그로 인해 전체 개발자 수가 감소할 가능성은 있을 것 같다.

 

여담 1) 이 글의 제목은 AI에게 부탁해서 정한 것이다. 어그로 없이 딱딱한 제목이라 조금 별로지만 이런 제목은 어떤 반응이 있을지 궁금하기도 하다.

여담 2) 최근 Gemini가 탑재된 안드로이드 스튜디오 Jellyfish 버전이 정식 릴리즈 되었다. Copilot Chat과 비슷한 형태라 궁금해서 간단히 테스트를 해봤는데 아직 Gemini가 프리뷰 버전이라 그런지 버그가 있었다. 생성된 코드를 단순히 복사를 했을 때는 잘 되는데 Insert at Cursor 기능을 이용해서 코드를 입력하면 생성된 코드와 조금 다른 코드가 입력된다. 이해가 되지 않는 버그이긴 한데 이틀 후에 다시 해보니 정상적으로 동일한 코드가 입력되었다.

 

생성된 코드와 입력된 코드가 다르다.

 


서준수님의 브런치에 게재한 글을 편집한 뒤 모비인사이드에서 한 번 더 소개합니다.

모비인사이드의 뉴스레터를 구독해보세요