![Search icon](https://hackernoon.imgix.net/search-new.png?w=19&h=19)
몇 달 전에 몇 가지 깔끔한 ChatGPT 기능을 다루었음에도 불구하고 저는 Github의 AI 코딩 지원 도구인 Copilot을 사용해 보기 위한 다음 논리적 단계를 밟지 않았습니다. 하지만 지난주에 동료가 AI 생성 테스트 스위트의 스크린샷을 공유하면서 관심이 촉발되었습니다.
프롬프트는 합리적으로 간단했고 생성된 테스트 사례는 관련성이 있었습니다. GC 무료 체험판을 구독하고 특이점 이벤트의 도래에 기여하고 싶을 만큼 충분합니다.
Copilot이 할 수 있는 것과 할 수 없는 것을 자세히 다루지는 않겠습니다. 다른 사람들은 이미 저를 충분히 예상하고 있었습니다. 나에게 흥미로운 부분은 이 새로운 기술을 어떻게 받아들일 수 있는가 하는 것입니다.
이 게시물에서는 Github Copilot을 벤치마크로 사용하여 오늘날 "코딩용 AI"가 무엇을 할 수 있는지 추론해 보겠습니다. 이 분야의 최첨단 기술을 대표한다고 생각하기 때문입니다.
소프트웨어 영역에서 AI에 대해 생각할 때 많은 자발적인 질문이 떠오릅니다.
유용합니까? 위험합니까? 우리 일자리가 필요할까요? 가장 중요한 것은 네오루디스트든 유토피아적 기술 애호가든, 제한된 사고방식으로 우리 자신을 몰아붙이고 우리의 감정이 AI에 대한 이상한 이야기를 만들어내도록 허용하지 않는 것입니다.
대신에 저는 다른 유형의 질문이 더 흥미롭고 대답하기 훨씬 더 쉽다고 생각합니다. 이러한 질문은 "예" 또는 "아니오" 응답을 암시하지 않고 일반적으로 "무엇", "언제", "어디"로 시작합니다.
예를 들어 Copilot을 일상 업무에 어떻게 통합할 수 있나요? 어떤 작업을 촉진하며 어떤 개인 기술이 필요합니까?
우리 작업에서 AI의 가치는 대부분 소프트웨어 엔지니어에게 분명합니다. 그럼에도 불구하고 나는 다른 계층의 사람들이 가능성이 무엇인지 크게 잘못 판단할 수 있다는 것을 이해합니다. 특히 많은 콘텐츠 제작자나 언론인이 재앙적인 시나리오를 제안하여(또는 이제 누구나 소프트웨어 구축에 접근할 수 있다고 약속함으로써) 시선을 끌기를 좋아하기 때문입니다.
예, GPT-3(그리고 최근에는 GPT-4) 기반 도구가 코드를 작성할 수 있다는 것은 사실입니다. 예, 생성되는 코드는 종종 컴파일되어 예상되는 작업을 수행합니다.
그러나 코드 작성은 소프트웨어 엔지니어가 실제로 하는 일이 아니기 때문에 이것이 반드시 내 직업 안정에 즉각적인 위협이 되는 것은 아닙니다. 좀 더 자세히 설명하겠습니다.
우리의 임무는 텍스트 편집기에 코드를 입력하는 것이 아닙니다. 우리는 속기사가 아닙니다. 작업은 무엇을 코딩할지 결정하는 것입니다. 사실, 소프트웨어를 설계하고 마침내 IDE에 무언가를 입력하기 시작할 때마다 나는 다음 코드 조각이 어떻게 될지 이미 마음속에 품고 있습니다.
이 시점에서 AI는 단지 점들을 연결하여 비자발적인 오타나 기타 명백한 실수를 제외하고 내가 의도한 방법이나 데이터 구조를 즉시 생성하는 것입니다.
AI가 일부 코드 베이스의 80% 이상에 기여할 수 있더라도 적절한 프롬프트(초기 20%)를 제공하는 것은 필수적입니다 . 왜냐하면 GC가 올바르게 작동하는 데 필요한 막대한 정보를 전달하기 때문입니다. 그리고 키보드 뒤에 엔지니어가 없으면 초기 메시지를 받을 수 없습니다.
나는 비행기 자동 조종 장치와 좋은 비교가 될 수 있다고 믿습니다. AFCS(Auto-Flight Control System)는 비행 경로 조정, 공항 접근, 착륙 등 다양한 비행 작업을 완벽하게 수행할 수 있습니다.
나는 여전히 사람의 감독 없이 상업용 비행기에 뛰어드는 것을 꿈도 꾸지 않습니다.
컴퓨터가 비행기를 제어할 수 있다는 사실이 조종사가 조종실에서 한가로이 앉아 있다는 의미는 아닙니다.
아직 해야 할 일이 많습니다. 앞으로의 날씨를 확인하고, 항공 교통 관제소와 통신하고, 대체 경로를 계획하고, 가장 중요한 것은 자동 조종 장치를 감독하고 필요한 경우 고삐를 잡는 것입니다.
그러므로 우리는 조종사가 여전히 비행기를 조종하는 사람임을 알 수 있습니다.
마찬가지로 AI는 소프트웨어를 개발하는 것이 아니라 엔지니어가 개발합니다 . AI는 도구이다. 엔지니어는 자동화를 사용하여 작업 흐름을 간소화하도록 교육을 받았지만 항상 도구가 수행하는 작업을 모니터링합니다. 의도한 대로 작동하지 않으면 엔지니어가 개입하여 상황을 바로잡습니다.
이것이 제가 Copilot을 사용할 때 갖는 사고방식입니다. 사소한 작업은 기꺼이 위임하되, 그 동안에는 어떤 결과가 나올지 경계합니다.
아시다시피 Copilot의 기본 ML 알고리즘은 GPT-3이라고 하며 생성될 가능성이 가장 높은 토큰 시퀀스를 예측합니다. 생성된 코드는 일반적으로 구문적으로 정확하지만 도구는 사양이 무엇인지, 생성된 코드가 유효한지 여부를 인식하지 못합니다.
가능한 대응책은 신속한 엔지니어링으로 GC를 돕는 것입니다. 예를 들어 다음 스니펫의 기능을 설명하는 주석을 작성하는 것은 AI를 돕는 강력한 기술입니다.
더 좋은 점은 처음 몇 단어를 입력한 후에 댓글이 자동 생성될 수도 있다는 것입니다.
그러나 가장 이상적인 조건에서도 Copilot은 항상 유용한 제안을 제공하지 않으며, 그럴 경우 전혀 제안을 제공하지 않습니다. GC는 꽤 놀랍지만 코딩 도구로서는 여전히 매우 불완전하다고 생각합니다.
지금은 Copilot을 내 도구 세트에 완전히 통합할지 여부를 결정하지 않았습니다. 제안의 적중 여부가 때로는 방해가 될 수 있습니다.
어쨌든, 나는 모든 사람이 발을 담그고 적어도 한 번 시도해 볼 것을 제안하고 싶습니다. 구문 강조 표시 또는 즐겨 사용하는 IDE의 자동 완성 기능과 같은 유틸리티 도구로 생각하십시오.
Github Copilot에 대해 어떻게 생각하시나요? 그것을 일상 업무에 포함시켰습니까, 아니면 어려운 일이었습니까? 부끄러워하지 말고 댓글로 알려주세요!
여기에도 게시됨