책소개
개발자가 시대를 만든다
AI가 개발에 미치는 영향을 다루며, 개발자가 AI를 잘 활용하는 방법과 미래에 대비할 전략을 제시한다. AI 시대에서 개발자의 역할과 가치가 어떻게 변화하는지를 탐구하고, AI와 함께하는 개발의 미래를 그려본다. 생성형 AI는 소프트웨어 개발에서 코드 작성, 디버깅, 리팩터링, 문제 해결 등 다양한 과정에서 개발자들의 업무를 크게 효율화하고 있다. 매킨지의 보고서에 따르면 많은 기업들이 AI를 도입해 비용을 절감하고, 매출을 증대시키고 있으며, 개발자들은 AI 도구를 활용하여 생산성을 높이고 있다. AI의 빠른 발전은 개발자들에게 도전과 기회 모두를 제공한다. 생성형 AI가 발전할수록 더 많은 코드를 자동으로 작성할 수 있으며, 이는 개발자들이 단순한 코딩 작업에서 벗어나 창의적이고 복잡한 문제 해결에 집중할 기회를 제공한다. 그러나 AI의 발전이 개발자의 자리를 위협할 수도 있다는 우려도 존재한다. 따라서 미래의 개발자는 AI의 강점을 이해하고, 이를 창의적으로 활용하여 효율성을 극대화하는 동시에, AI에 대체되지 않는 고유한 인간적 능력을 더욱 강화해야 한다.
200자평
AI 활용을 통해 개발자가 어떻게 효율성을 높이고, 창의성을 발휘할 수 있을지 살핀다. 생성형 AI는 코드 작성, 디버깅 등에서 개발자들의 업무를 효율화하며, 기업의 비용 절감과 매출 증대에 기여하고 있다. AI의 발전은 개발자에게 기회와 도전 모두를 제공한다.
지은이
조정호
주식회사 업스테이지에서 대형 언어 모델 및 다중 모달 대형 언어 모델의 연구 개발을 수행한다. 포스텍에서 IT융합공학 석사 학위를 받았다. 미국 오라클 본사에서 자연어를 통해 상호작용하는 데이터베이스를 연구했다(2019). 넷마블 본사에서 모바일 게임에 탑재되는 인공지능을 연구했다(2018). 대형 언어 모델 최적화 프레임워크 vLLM 프로젝트에서 오픈소스 기여자로 활동하고 있다. “Table Search System: Text-to-SQL system with graphical and interactive user interface”(2021) 등의 논문을 발표했다.
차례
AI가 가져온 개발 혁신
01 AI, 경쟁과 활용 사이
02 지능형 소프트웨어 공학
03 AI가 설명하는 코드
04 AI 활용 개발과 자동화
05 코드 품질 향상을 위한 AI
06 지능형 테스트
07 AI와 보안
08 제품으로서의 AI
09 프롬프트 엔지니어로서 개발자
10 AI 시대의 창의력
책속으로
인공지능의 성능만 놓고 보자면 정말 인공지능이 사람을 대체할 날이 얼마 남지 않은 것으로 느껴지기도 한다. 하지만 그 실상을 조금만 들춰 보면 아직도 명확한 한계가 있다. 대부분의 벤치마크는 간단한 함수나 모듈 수준의 구현만을 확인하며, 구현하고자 하는 코드에 대한 명확한 설명이 존재한다. 이는 실제 개발자가 업무를 하는 환경과는 큰 괴리가 있다. 개발자의 업무는 단순한 프로그래밍 문제를 푸는 것을 넘어 훨씬 광범위하다. 많은 개발자가 명확하지 않은 요구 사항 아래에서 많은 소통과 시행착오를 겪으며 프로그램을 개발한다. 또한, 거대한 프로젝트의 일부분을 담당하거나 심지어는 프로젝트 전체를 구현해야 하는 일도 비일비재하다. 그렇기에 아직은 인공지능이 개발자 한 명을 온전히 대체하기에는 무리가 있다.
-01_“AI, 경쟁과 활용 사이” 중에서
생성형 인공지능이 코드를 이해하기 위해서는, 먼저 생성형 인공지능에 현재의 코드를 보여 줄 필요가 있다. 예를 들어 깃허브 코파일럿 서비스의 경우, 현재 개발 중인 파일과 관련된 다양한 파일들을 참고하여 사용자와 상호작용을 한다. 즉, 자동으로 필요한 코드들을 보고 이해하며, 사용자에게 유의미한 설명을 할 수 있는 것이다. 반면 챗지피티 서비스를 활용하고자 하는 경우에는, 직접 관련된 코드들, 예를 들어, 현재 보고 있는 함수가 사용되는 부분이나 현재 함수에서 사용하는 다른 함수 등을 채팅을 통해 잘 전달할 필요가 있다. 또한 프롬프트를 통해, 해당 코드들을 참고하여 현재 보고 있는 코드에 대한 설명을 잘 요청하여야 한다.
-03_“AI가 설명하는 코드” 중에서
코드의 버그를 예측하는 가장 간단하면서도 어려운 방법은 코드의 동작을 직접 머릿속에서 시뮬레이션해 보는 것이다. 어떠한 입력이 들어왔을 때, 구현된 알고리즘에 따라 어떤 연산이 이루어지고, 그 결과로 어떤 결과가 출력될지를 상상해 볼 수 있다. 실제로 간단한 프로그램에서는 이 과정을 통해 사소한 버그들을 발견하고 수정할 수 있으며, 이를 통해 더 효율적으로 업무를 수행할 수 있다. 그러나 코드가 복잡해지거나 연산해야 하는 양이 많아지는 경우에는 사람의 머리만으로는 시뮬레이션이 어렵다.
-06_“지능형 테스트” 중에서
프롬프트 개선 없이 문제 정의만 제공했을 때, 코파일럿 서비스는 166건의 문제 중 79건(약 48%)을 해결할 수 있었으며, 프롬프트 엔지니어링을 통해 해결하지 못한 87건 중 53건(약 61%)을 추가로 해결할 수 있었다. 이때 프롬프트에는 알고리즘에 대한 직접적인 힌트 등이 포함되었다. 대형 언어 모델을 이용해 코드를 생성하는 상황이라면, 이러한 연구를 참고하여 프롬프트를 개선함으로써 더 양질의 도움을 받을 수 있을 것이다.
-09_“프롬프트 엔지니어로서 개발자” 중에서