소프트웨어 엔지니어가 보는 생성형 AI의 미래와 가능성

소프트웨어 엔지니어가 보는 생성형 AI의 미래와 가능성
Cozy CodingPosted On Jul 6, 20243 min read

Generative AI 기술의 등장으로, 소프트웨어 전문가들 사이에서 가장 이슈가 되는 주제 중 하나는 이 기술이 그들의 직업에 어떤 영향을 미칠지에 대한 이야기입니다. 미래에는 AI가 동일한 일을 훨씬 빠르고 저렴하게 처리할 수 있기 때문에 인간 프로그래머들을 필요로 하지 않을 것이라는 추측이 만연하게 퍼지고 있습니다. devin.ai와 같은 제품을 출시하는 스타트업들이 "AI 소프트웨어 개발자"를 약속하며 소프트웨어 솔루션을 만들고 문제를 해결할 수 있다고 약속하고 있습니다. 아직 초기 단계에 있다고 하더라도 우리는 이미 AI가 소프트웨어를 작성할 수 있는 미래를 목도하고 있습니다.

나는 소프트웨어 전문가로서 이러한 새로운 현실을 인식하고 일상적인 업무에서 더 효율적으로 전략을 세워야 한다고 생각합니다. 이를 위한 한 가지 방법은 이러한 AI 도구를 학습하고 생산성을 향상시킬 수 있는 방법을 찾아보는 것입니다.

본 글은 최근 chatGPT와 같은 AI 도구를 사용하여 소프트웨어 엔지니어로서 생산성을 향상시킨 내 경험을 요약한 것입니다.

chatGPT에 대해 잘 알지 못한다면, 구글에서 간단한 검색을 하면 chatGPT가 무엇인지 설명하는 수많은 기사들이 나옵니다. 하지만 매우 간단히 설명하면, chatGPT는 Large Language Model(LLM)을 기반으로 한 채팅 응용 프로그램입니다. 이 응용 프로그램 뒤에 있는 다양한 GPT 모델은 인터넷에서 얻을 수 있는 방대한 양의 데이터로 훈련되어 있습니다. 그러므로 어떤 분야에서든 당신이 가진 질문에 대답할 수 있습니다. 구글이 검색 쿼리에 가장 관련성 높은 웹 링크를 제공하는 것과 비교하자면, chatGPT는 한 단계 더 나아가서 검색 쿼리의 질문에 구체적으로 답합니다.

소프트웨어 엔지니어로서, 이것은 가치가 있습니다. 이제 기술 논문과 문서를 살펴볼 시간을 아끼실 필요가 없습니다. 특히 당신이 요약 내용을 알고 싶을 때, 지식을 어떻게 적용할 수 있는지에만 관심이 있는 경우 매우 유용합니다. 이러한 데이터셋에서 이 모델을 훈련시킴으로써 질문에 효과적으로 대답할 수 있습니다. 이는 새로운 소프트웨어 프로젝트를 시작할 때 많은 시간을 절약해줍니다.

또 다른 용도는 이미 해당 프로그래밍 언어로 훈련되어 있는 경우, 선택한 언어로 작성된 코드를 얻을 수 있는 능력입니다. 우리는 종종 처음부터 무언가를 작성하고 싶을 때 반복적이고 보일러플레이트 코드를 작성하는 경향이 있습니다. 이는 자동 완성이나 POJO 클래스 생성 형태의 언어 프레임워크/IDE에 이미 존재하지만, 이러한 것들은 LLM 모델의 결과물처럼 정교하지 않습니다.

Image

다른 AI 도구 중 일부는 IDE에 통합되어 무료로 제공됩니다. 최근에 VSCode에서 업무 및 개인 프로젝트에 모두 사용하기 시작한 continue.dev와 같은 응용 프로그램이 있습니다. 이 도구의 장점은 인기 있는 LLM 기반 모델(GPT3.5,lama3, Mistral, Phi3 등)을 모두 통합할 수 있는 멋진 무료 확장 프로그램을 제공한다는 것입니다. 이러한 모델 중 일부는 심지어 로컬 PC에서 실행할 수 있어, 서드 파티 서비스로 코드 기반을 보내지 않고도 코드에 대한 분석을 얻을 수 있는 방법을 제공합니다.

모든 것이 항상 순조롭지는 않습니다. 이 모델들이 제시하는 해결책이 처음부터 작동하지 않는 경우가 많이 있어서 올바른 해결책을 얻기 위해 여러 번 시도해야 할 때가 많습니다. AI 세계에서 이를 "환각"이라고 부르며, 때로는 AI가 잘못된 답변을 확신하고 올바르다고 가정할 때가 있습니다. 그럼에도 더 큰 데이터셋으로 이 모델들이 훈련된다면 일부 환각은 줄어들지만, 여전히 결과가 그리 좋지 않은 영역이 있습니다. 그러나 더 고급화된 기계 학습(ML) 기술로 인해 이러한 모델의 품질은 날이 갈수록 향상되고 있습니다.

소프트웨어 전문가로서, 이러한 AI 도구에 대해 인식하고 본인의 성장을 위해 활용하여 생산성을 높이고 속도를 높이는 것이 중요하다고 생각합니다. 이는 항상 수요가 있게끔 만드는 요인이 될 것입니다.

마무리하며, 미래가 어떻게 전개될지 정확히 알 수는 없겠지만, 소프트웨어 전문가로서는 최신 도구와 기술에 대해 항상 숙지하고 있어야 하며, 수요가 많은 역할로 재기나 역량 강화를 할 수 있을 만큼 유연해야 합니다.

이러한 AI 도구를 배우고 활용하는 것은 경쟁이 아닌 협력 상황으로 볼 때 한 가지 유익한 방법일 것입니다. 따라서 이러한 도구들을 탐험해보는 것을 적극 추천합니다. 즐거운 학습되시길!