AI가 프로그래머를 대체할 것인가?

AI가 프로그래머를 대체할 것인가?

g

아이허브는 최근 새로운 코드 생성 AI인 코파일럿을 발표했다. 불행하게도, 마이크로소프트 소유의 GitHub가 머신러닝 기반 소프트웨어를 작동시키는 데이터를 수집하고 사용하기 위해 사용한 방법은 잘해봐야 의문이다. AI를 사용하는 사람들이 소송에 휘말릴 수 있다는 것은 매우 나쁜 일이다.

그러나 GitHub는 코드 생성 소프트웨어를 만드는 유일한 회사와는 거리가 멀다. 예를 들어, 효소나 디빌드와 같은 스타트업들은 현재 사용자들이 만들고 싶은 것을 간단히 설명함으로써 코드를 생성할 수 있는 솔루션을 만들고 있다. 아직 일반 대중이 사용할 수 있는 제품이 없는 신생업체도 있지만, 이들이 보여 준 데모도 유망합니다.

앞으로 몇 년 안에 코드 생성 기술을 발표할 회사가 더 많아질 것이라는 데는 의심의 여지가 없습니다.

최근 폭발적인 코드 생성 소프트웨어의 원인은 자연 언어 처리 기술의 놀라운 발전으로 유명해진 OpenAI이다. OpenAI는 위에서 언급한 세 회사 모두에게 소프트웨어를 위한 기본 알고리즘을 제공하고 있습니다.

지난 여름, 저는 실제 인공지능 구현에 관한 책을 출판했습니다. 코드를 자율적으로 작성할 수 있는 다양한 형태의 머신러닝 소프트웨어가 등장하기 시작했다고 짧게 설명했습니다. 그러나 GitHub와 같은 거대 기술 기업이 솔루션을 시장에 얼마나 빨리 내놓을 수 있었는지에 대해 놀라움을 금치 못했습니다. 다른 거대 기술 기업들도 자체 제품을 준비하면서 의심할 여지 없이 코파일럿의 성공과 결함을 관찰하고 배우고 있습니다.

지금까지 살펴본 코드 작성 AI는 완벽하지 않지만, 이러한 툴은 완전히 새로운 것이며 빠른 속도로 향상될 것이라는 점을 유념해야 합니다. 그들이 이미 얼마나 능력이 있는지 고려해 볼 때, 그들이 5년 후, 20년 후, 50년 후 얼마나 강력해질지 상상해 보라.

젊은 개발자들이 그들의 일이 자동화될까 봐 걱정하는 것은 당연하다. 프로그래머들이 직업을 잃는 것을 두려워해야 할까? 학생들이 소프트웨어 개발 학위를 따는 것은 시간 낭비인가?

음, 그런 걱정은 좀 덜게 해주세요.

프로그래머들은 곧 교체되지 않을 것이다.

프로그래머가 되는 것의 복잡성

우선, 앞서 언급한 세 회사 중 어느 회사도 인간을 대신하는 제품으로 마케팅하고 있지 않다는 점을 분명히 하고 싶습니다. GitHub는 자사의 제품인 Copilot을 "AI 페어 프로그래머"라고 명확하게 설명했으며, Debuild의 CEO인 Sharliffe Shame은 기계가 프로그래머를 대체할 것이라는 생각에 동의하지 않는다고 밝혔습니다.

대신 코드 생성 AI는 개발자의 보조 역할을 하게 된다.

나는 어떤 사람들은 소프트웨어 개발자가 된다는 것의 복잡성을 과소평가하는 것이 빠르다고 생각한다. 코드를 쓰는 것 자체는 프로그래머들이 하는 일의 일부분일 뿐이다.

개발자는 다양한 작업을 수행합니다. 코드 작성 외에 다음과 같은 중요한 사항이 있습니다.

이해 관계자와 소통합니다.

이해 관계자와 소통합니다.

이해 관계자와 소통합니다.

이해 관계자와 소통합니다.

이해 관계자와 소통합니다.

이는 개발자에게 할당된 작업의 일부에 불과합니다. 다른 작업에는 설명서 작성, 코드 검토 및 티켓 업데이트가 포함됩니다.

우리가 인간처럼 코드를 쓸 수 있는 AI를 발견했다고 가정해 보자. 소프트웨어 개발자의 작업이 자동화되려면 기계 학습 알고리즘이 다른 모든 작업도 수행할 수 있어야 합니다. 그들에 대해 이야기해 봅시다.

비즈니스 요구 사항 이해

이 일이 얼마나 복잡한지는 아무리 강조해도 지나치지 않다. 최종 사용자의 요구 사항, 사용자 인터페이스, 그리고 궁극적으로 코드를 이해하고 변환하는 것은 소프트웨어 개발에서 가장 어려운 단계 중 하나입니다.

제품 소유자, 프로젝트 관리자, 설계자, 개발자 및 사용자 모두가 원하는 시스템에 대해 서로 다른 이미지를 가지고 있습니다. 모든 사람은 요구 사항, 예산 범위, 프로세스 개선 방법을 명확히 이해하고 있습니다. 저는 스웨덴의 가장 큰 몇몇 조직을 위한 솔루션을 구축하기 위해 다양한 팀에서 소프트웨어 개발자로 일하면서 커뮤니케이션이 일반적으로 소프트웨어 개발의 가장 큰 과제라고 결론지었습니다. 저는 기술적 걸작이었던 시스템이 사양에 정확히 부합하는 것을 봐왔지만 최종 사용자의 실제 요구 사항을 해결하지는 못했습니다.

알고리즘은 말할 것도 없고, 사람들이 비즈니스 언어를 공유해서 의사소통하는 것도 충분히 어렵습니다. 또한 적절한 소프트웨어 개발 팀에서는 개발자와 제품 소유자가 서로 통신할 수 있어야 합니다. 제품 소유자는 숙련된 개발자가 응답할 수 있는 기능을 제안할 수 있습니다. "그럴 수도 있지만, 대신 이렇게 하는 게 어때요?"

제품을 구축할 때 가장 어려운 부분 중 하나는 비즈니스 요구 사항을 이해하고 이를 기술 사양으로 변환한 후 나중에 코드로 변환할 수 있다는 것입니다. 이 프로세스는 여러 이해 관계자를 거칩니다. 기계 학습 알고리즘에게 무엇을 해야 하는지 지시하는 것은 간단해 보일 수도 있다. 사실, 인간이 무엇을 해야 하는지 이해시키는 것은 충분히 어렵다.

대규모 기술 스택 연결

새로운 소프트웨어 개발자를 복잡한 프로젝트에 참여시키는 데는 몇 개월이 걸릴 수 있습니다. 대규모 소프트웨어 프로젝트의 복잡성은 믿지 못할 것입니다. 온라인 서점이 컨텐츠 관리 시스템(예: WordPress)에 연결되어 관리자가 새 컨텐츠를 추가할 수 있습니다. 또한 모든 주문 및 제품을 저장하는 ERP(엔터프라이즈 리소스 계획 시스템)와 통합될 수 있습니다. 웹 사이트는 서로 다른 라이브러리에 대한 종속성이 적은 프런트 엔드 프로그래밍 언어로, 그리고 백엔드 언어로 C#를 사용하여 구축될 수 있습니다.

응집력 있는 솔루션을 이해할 수 있는 알고리즘을 구축하는 일은 아무리 강조해도 지나치지 않습니다. 제품 소유자가 전자 상거래에 새로운 주문 흐름을 추가하기를 원한다고 가정해 보겠습니다. 이를 통해 고객은 자신의 책을 인쇄하고 출판할 수 있습니다. 알고리즘에 그걸 어떻게 지시하죠? 앞서 언급한 비즈니스 요구사항을 이해해야 하는 과제를 해결했더라도 이제 전체 기술 스택을 이해할 수 있는 알고리즘이 필요합니다. 또한 CMS에 새 섹션을 추가하고, ERP에 새 변수를 전송하고, React에 기록할 코드와 C#에서 생성할 코드를 파악해야 합니다.

자체 시스템을 갖춘 자체 출판 서적을 인쇄하여 현재 솔루션에 통합해야 하는 별도의 회사일 수도 있습니다. 이렇게 하면 복잡성이 가중됩니다. 시스템에 설명서가 없다면요? 우리는 그들의 API(애플리케이션 프로그래밍 인터페이스)가 어떻게 작동하는지 이해하기 위해 그들의 개발자들과 의사소통해야 합니다.

일부 소프트웨어 프로젝트는 사람이 이해하기 어려우며 알고리즘이 이해하기가 더 쉽지 않을 것입니다.

잘못된 코드 디버깅

개발자는 디버깅에 많은 시간을 소비합니다. 새 코드를 작성하는 것보다 코드를 디버깅하는 데 더 많은 시간을 들인 날이 분명히 있었습니다. 향후 언젠가는 AI 생성 코드를 디버깅해야 할 것입니다.

아까 말씀드렸던 온라인 서점의 예를 다시 들어보겠습니다. 사용자 데이터가 10분마다 CMS와 ERP 시스템 간에 동기화된다고 상상해 보십시오. 갑자기, 이 정기 작업이 작동을 멈추거나, 개발자들이 말하는 것처럼, "오류를 던진다". 오류 메시지는 단순히 "예상치 못한 오류가 발생했습니다"라는 일반적인 내용을 나타냅니다.

이 문제를 디버깅하는 알고리즘은 어떻게 얻습니까? 알고리즘은 어디서 시작되죠? 정기적 데이터 전송이 설정될 수 있는 CMS와 관련된 문제입니까? 아니면 ERP 시스템에서 발생한 변화와 관련이 있습니까? 또는 일부 사용자가 제대로 처리되지 않은 손상된 데이터를 가지고 있을 수 있습니다. 그 알고리즘은 믿을 수 없을 정도로 다재다능해야 할 것이다.

대규모 애플리케이션의 디버깅은 매우 복잡할 수 있습니다. 그리고 만약 여러분이 코드를 쓰는 알고리즘을 원하는 것과 인공지능에서 생성된 코드를 디버깅하는 사람을 원한다면, 디버깅 세션은 더 길어질 것입니다.

소프트웨어 업데이트

비개발자들은 때때로 소프트웨어 라이브러리를 최신 버전으로 업데이트하는 것이 얼마나 복잡한지 상상조차 할 수 없을 것이다. 스마트폰을 업데이트할 때 버튼만 누르면 됩니다. 정말 사소한 일이에요, 그렇죠?

기술 스택에 따라 소프트웨어 개발에서 훨씬 더 복잡할 수 있습니다.

온라인 서점을 다시 가져오겠습니다. 유용한 새로운 기능과 중요한 보안 패치를 제공하는 새로운 버전의 CMS를 사용할 수 있습니다. 업데이트해야 해요 물론 그러자마자 많은 백엔드 기능이 더 이상 사용되지 않으며 업데이트해야 한다는 것을 알게 되었습니다. CMS를 통해 주문 확인 이메일을 보내는 데 사용하는 설정을 처음부터 다시 구성해야 합니다.

소프트웨어 종속성은 골칫거리입니다. 라이브러리 A 버전 2.0.3은 라이브러리 B 버전 4 이상의 버전에 종속되어 있지만 최신 버전의 라이브러리 B와 아직 호환되지 않습니다.

새 기능을 확보하고 보안 결함을 패치하기 위해 소프트웨어를 업데이트하는 것은 사소한 것처럼 들릴 수 있지만 상당히 복잡한 문제일 수 있습니다. 알고리즘은 한 라이브러리를 업데이트하면 다른 라이브러리에 어떤 영향을 미칠 수 있는지 이해해야 합니다.

이해관계자와의 소통

저는 이미 이 점에 대해 부분적으로 언급했지만, 몇 마디 더 언급하기에 충분합니다. 의사소통은 복잡한 만큼 중요하다.

개발자로서 다양한 어휘와 기술을 사용하여 다양한 이해 관계자들과 소통해야 합니다. 팀의 다른 개발자와 이야기할 때는 기술적 용어와 복잡한 용어를 사용할 수 있지만, 제품 소유자에게 비기술적이고 구체적인 방식으로 기능을 설명해야 합니다. 고객과 교류할 때는 자신감 있고 겸손해야 하며, 대화보다는 경청하는 데 더 많은 시간을 할애해야 합니다. 나는 그들의 걱정을 듣고 이해할 필요가 있다.

나는 정기적으로 진보를 전달해야 한다. 문제가 생기면 공유해야 합니다. 기능이 구축되는 데 걸리는 시간에 대한 견적을 제공해야 하는 경우 이를 제공해야 합니다.

알고리즘이 이 모든 것을 할 수 있어야 할 것이다.

요약하면

기계 학습 알고리즘이 프로그래머를 대체하려면 다음을 수행할 수 있어야 합니다.

다양한 이해 관계자와 소통합니다. 수신자에 따라 다양한 수준의 추상화와 디테일을 가진 기능을 설명할 수 있어야 합니다. 그것은 솔선수범할 수 있어야 하고 또한 인간의 관심사를 이해해야 한다.

다양한 이해 관계자와 소통합니다. 수신자에 따라 다양한 수준의 추상화와 디테일을 가진 기능을 설명할 수 있어야 합니다. 그것은 솔선수범할 수 있어야 하고 또한 인간의 관심사를 이해해야 한다.

다양한 이해 관계자와 소통합니다. 수신자에 따라 다양한 수준의 추상화와 디테일을 가진 기능을 설명할 수 있어야 합니다. 그것은 솔선수범할 수 있어야 하고 또한 인간의 관심사를 이해해야 한다.

다양한 이해 관계자와 소통합니다. 수신자에 따라 다양한 수준의 추상화와 디테일을 가진 기능을 설명할 수 있어야 합니다. 그것은 솔선수범할 수 있어야 하고 또한 인간의 관심사를 이해해야 한다.

다양한 이해 관계자와 소통합니다. 수신자에 따라 다양한 수준의 추상화와 디테일을 가진 기능을 설명할 수 있어야 합니다. 그것은 솔선수범할 수 있어야 하고 또한 인간의 관심사를 이해해야 한다.

소프트웨어 개발자의 일은 단순히 코드를 작성하는 것 그 이상이다. 복잡해요. 그것은 다양한 기술을 필요로 한다.

이제, 우리가 위에서 언급한 모든 일들을 인간처럼 실제로 할 수 있는 AI를 갖게 될 가능성이 절대적으로 있다. 실제로 모든 작업을 자동화할 때 발생할 수 있는 문제에 대해 이전에 쓴 적이 있습니다. 그러나 위의 모든 작업을 수행할 수 있는 AI가 생성될 때까지 거의 모든 다른 작업도 자동화된다는 점을 기억해야 합니다.

소프트웨어 개발은 자동화되는 마지막 작업 중 하나가 될 것입니다.

그렇긴 하지만 코드를 쓰는 AI 소프트웨어가 계속 증가할 것으로 예상하지만, 이것은 개발자들을 대체하는 것이 아니라 개발자들에게 힘을 실어주기 위해 계속 사용될 것이다. 기계 학습 알고리즘은 작고 독립적인 기능을 만드는 데 유용합니다. 개발자에게 Twitter에서 트윗을 가져오는 기능이 필요한 경우, 개발자는 해당 개별 기능을 생성하기 위한 알고리즘을 요청할 수 있습니다.

개발자들에게는 코드 생성 AI가 주로 스택 오버플로우의 미화된 대체물 역할을 할 것이라고 예상하지만, 그들은 더 나은 코드를 쓰기 위한 훌륭한 제안도 할 수 있을 것이다. 그리고 솔직히, 나는 그것을 꽤 고대하고 있다.

비개발자의 경우, 코드 생성 AI는 간단한 웹사이트를 자율적으로 구축할 수 있지만, 이미 워드프레스, 짐도, 스퀘어스페이스와 같은 서비스를 통해 웹사이트를 만들 수 있기 때문에 기본 웹사이트의 판도를 바꿀 수는 없을 것 같습니다. 그러나 이러한 툴은 시스템 자체에 통합되어 다소 더 나은 사용자 지정이 가능할 수 있습니다.

어쨌든, 결론은 프로그래머들이 조만간 교체될 것에 대해 걱정할 필요가 없다는 것이다.

이 기사를 좋아하셨다면, 실제 인공지능에 관한 비기술적인 제 책을 좋아하실 겁니다.

또한 GitHub의 코드 작성 AI 부조종사에 대한 제 기사를 확인해 보십시오.

from http://devcloset.tistory.com/235 by ccl(A) rewrite - 2021-07-14 03:25:05