AI-Assisted Programming 온라인 세미나1 – 1장. 개발자를 위한 새로운 세계
1장 제목 처럼 소프트웨어 개발자들에게 새로운 세계가 열립니다. 이 글에서 켄트벡이 이야기 하는 것 처럼, 소프트웨어 개발자들의 일은 놀랍게 바뀔 것입니다. 기존에 하던 90% 정도의 일은 생성형 AI가 할 것 입니다. 그렇다고 생성형 AI가 개발자를 대체하는 것은 아닙니다. 나머지 10% 정도는 사람이 해야 하니까요. 단순 반복 작업에서 벗어나 좀 더 의미있는 일에 시간과 노력을 사용한다는 것입니다.
켄트벡이 이야기 하는 것처럼 되려면 좋은 도구를 무기로 가져야 합니다. 소프트웨어 개발자가 다른 직군에 비해 좀 더 유리한 것은 무기를 만드는 것도 소프트웨어 개발자가 하기 때문입니다. 조직에서 지금도 큰 영향을 주고 있겠지만 앞으로는 더 큰 영향을 준다는 겁니다. 물론 무기를 잘 만들 수 있어야 겠죠.
챗 지피티와 같은 생성형 AI의 등장에 대해 안드레이 카파시는 “가장 핫 한 새 프로그래밍 언어는 영어입니다.”라고 했습니다. 농담 처럼 말했다고 하지만 보통 눈이 아닙니다. 영어를 자연어로 바꾸면 좋겠지만, 생성형 AI에서 자연어 중에 영어의 영향력을 반영했다고 할 수 있습니다.
프로그래밍 언어의 진화와 혁명의 핵심 주제는 ‘추상화’ 입니다. 개인적으로 제가 소프트웨어 모델링에 소프트웨어 개발자 인생의 대부분을 보냈던 것도 바로 이 ‘추상화’의 이끌림 때문이었죠. 생성형 AI 시대에 와서 자연어를 사용해서 프로그래밍 한다는 것은 머신에 있어서의 추상화의 끝이라고 할 수 있을 것 같습니다.
생성형 AI는 켄트벡이 이야기 한 것 처럼 아직 10%가 있어, 파일럿 자리에 앉지 못하고 코파일럿의 자리에 앉아 있습니다. 우리는 적극적으로 사람들과 협업 하듯이 AI 코파일럿들과 협력해야 합니다. 피해 갈 수 없으니 즐겨야겠죠.
마이크로 소프트 주도의 깃헙 코파일럿은 이름 부터 잘 지었습니다. 생성형 AI가 시키면 알아서 다 하는 게 아니라 인간 파일럿의 지도하에 일을 하는 것이니, 개발자들의 경계를 풀게 한 거죠. 이 책의 제목 처럼 AI가 주도하는 것이 아니라 AI가 보조한다는 느낌을 주는 거죠.
맥킨지의 연구는 실제로 AI 보조 프로그래밍 도구는 코드 품질에 약간의 개선을 가져왔으며, 이는 개발자들이 도구를 사용하여 반복 작업을 수행한 결과였습니다. 맥킨지는 다음과 같은 결론을 내렸습니다:
일상적인 업무 완화: 이러한 도구들은 코드 기능 자동완성, 실시간 코드 완성 지원, 코드 자동 문서화 등의 반복적인 작업을 처리하는 데 탁월합니다. 이를 통해 개발자들은 복잡한 비즈니스 문제에 집중하고 소프트웨어 기능을 신속하게 배포할 수 있습니다.
더 매끄러운 코드 초안 생성: 생성형 인공지능 도구를 사용하면 개발자들은 간단한 프롬프트로부터 코드 제안을 받아 창의적인 과정을 진행할 수 있습니다. 많은 개발자들이 이러한 인공지능 기반 제안을 통해 아무것도 없이 시작해야 하는 ‘빈 화면 문제’를 극복하고 더 빠른 속도로 코딩에 몰입하는 데 도움이 됩니다. 기존 코드에 대한 수정 가속화: 효과적인 프롬프트를 사용하면 개발자들은 기존 코드를 더 신속하게 적응시키고 개선할 수 있습니다. 예를 들어, 온라인 라이브러리에서 코드를 가져와 프롬프트에 입력하면, 인공지능이 지정된 기준에 따라 코드를 세련되게 조정할 수 있습니다. 개발자의 새로운 도전에 대한 준비 강화: 이 기술은 빠른 속도로 개발자들이 낯선 코딩 환경이나 언어에 적응할 수 있게 도와주는 입문 과정 역할을 합니다. 새로운 도전을 맞이할 때, 이 도구들은 경험이 많은 친구처럼 나서서 새로운 개념을 설명해주고, 다양한 코드 베이스를 분석하며, 프레임워크 사용에 대한 종합적인 안내를 제공합니다. 다양한 도구 활용: 연구에 따르면 여러 가지 도구를 함께 사용하면 더 효율적입니다. 상황을 이렇게 상상해 보세요: 한 개발자가 프롬프트나 채팅에 쓰는 도구를 사용하고, 코드베이스의 일부로서 자동완성 옵션과 제안 제공을 위해 다른 도구를 사용합니다. 개발자들은 첫 번째 도구가 대화형으로 질문을 처리하는 데 매우 능숙하다고 평가했으며, 특히 코드 리팩토링 시에 유용합니다. 반면, 두 번째 도구는 개발 환경과 잘 통합되면서 새로운 코드를 생성하는 데 효과적이었습니다. 이 두 인공지능 도구를 함께 사용해 작업할 때, 개발자들은 작업 시간이 1.5배에서 2.5배 정도 빨라진 것을 경험했습니다. |
프로그래밍을 보조하려면, 개발이 IDE를 완전히 벗어나지 않는 한 IDE와의 원활한 통합이 중요합니다. IDE 공급자들이 우위에 서 있고, 앞으로 IDE는 기본적으로 생성형 AI 기능이 포함될 것입니다. 이미 그렇게 하고 있고요.
이미 프로그래밍 보조 AI는 여럿 있습니다. 아직 이런 경험이 없으시다면 깃헙 코파일럿 사용해 보길 추천합니다.
생성형 AI를 프로그래밍 보조 도구로 개발 조직에서 사용하려고 한다면, 너무 큰 목표보다는 프로토타입 개발에 사용하라고 권하고 싶습니다. 그래야 과도한 기대나 실망으로 프로그래밍 보조 AI를 멀리 할 수도 있으니까요. 다시 한 번 강조하지만 소프트웨어 개발자에게 이건 선택이 아니라 필수 입니다. 멀리하고 비난 할 대상이 아니라 껴 안아야 할 대상입니다.
이 장에서 생성형 AI의 단점이나 문제점을 열거하고 있지만, 껴 안아야 할 시점에서는 너무 심각하게 받아들이지 말고 이런 게 있다 정도를 체크하고 넘어 갑니다.
제가 한 참 소프트웨어 개발을 열심히 할 때 40대 넘어선 개발자는 거의 보기 힘들었습니다. 지금은 저도 50대고 40대 이상은 많습니다. 생성형 AI 시대에 들어서면서 AI 코파일럿들과 협업 할 수 있는 경력이 풍부한 시니어 개발자들의 시대가 온게 아닌가 조심 스럽게 이야기 해 봅니다.
뉴테크 프라임에서는 이런 시대적 변화를 준비합니다. AIPilotSmarteasy를 무기로 장착한 시니어 개발자들의 커뮤니티 리부팅 라이브(Rebooting Live)를 만들 것입니다. 이를 위한 교육도 시작합니다. 40대 이상의 개발자들만 받습니다.
1장의 결론입니다.
인공지능 보조 프로그래밍 분명 소프트웨어 제작 모래상자에서 가장 반짝이는 장난감입니다. 기술이 계속 발전함에 따라, 이들은 효율성을 높이고, 지루한 작업을 처리하며, 개발자가 가장 중요한 영역, 예를 들어 고급 문제 해결에 몰두할 수 있게 할 것입니다.하지만 지적 재산권 문제, 오픈 소스 소프트웨어 라이선스의 미로, 편견의 가능성, 보안 위험 등 몇 가지 단점도 있습니다.
대부분의 경우 이러한 도구는 당신의 지식, 기술, 경험을 대체하는 것이 아니라 가상 비서의 역할을 합니다. 동시에 슈퍼히어로는 아닐지라도 개발자의 도구 상자를 채울 강력한 도구가 될 것입니다. |