푸터 콘텐츠로 바로가기
Iron Academy Logo
C#과 AI

C# 개발을 위한 GitHub Copilot 이해하기

Tim Corey
35분 12초

이 글에서는 개발자를 위한 새로운 AI 기반 도구인 GitHub Copilot에 대한 Tim Corey의 견해를 살펴보겠습니다. Tim은 " GitHub Copilot 첫인상 및 개발자에게 미치는 영향 "이라는 제목의 영상에서 일반적인 우려 사항을 다루고 이 기술의 장단점에 대한 균형 잡힌 시각을 제공합니다. 이제 그의 분석을 자세히 살펴보고 GitHub Copilot이 개발자에게 어떤 의미를 갖는지 알아보겠습니다. 하지만 먼저 Copilot에 대해 간략히 소개하겠습니다.

GitHub Copilot 소개

GitHub 와 OpenAI가 개발한 AI 기반 코드 완성 도구인 GitHub Copilot은 지능적인 코드 제안과 반복적인 작업 자동화를 통해 코딩 경험을 혁신적으로 변화시킵니다. GitHub Copilot은 공개 GitHub 저장소의 방대한 학습 데이터를 활용하여 정확하고 관련성 높은 코드 완성 기능을 제공함으로써 생산성을 향상시키고 개발자가 프로젝트의 더욱 복잡한 측면에 집중할 수 있도록 지원합니다.

소프트웨어 개발, 버그 수정, 새로운 코딩 개념 탐구 등 어떤 작업을 하든 GitHub Copilot의 실시간 제안 및 인라인 채팅 기능은 개발 과정을 더욱 원활하고 직관적으로 만들어 줍니다. GitHub Copilot 구독을 통해 개발자는 이 혁신적인 도구의 모든 잠재력을 활용하여 코딩 워크플로를 혁신하고 소프트웨어 개발 수명주기를 한 단계 끌어올릴 수 있습니다.

GitHub Copilot 확장 프로그램에 액세스하세요.

GitHub Copilot 확장 프로그램은 Visual Studio 및 Visual Studio Code에 완벽하게 통합되는 강력한 도구로, 개발자가 코딩 경험을 크게 향상시킬 수 있도록 지원합니다. GitHub Copilot을 사용하려면 먼저 Visual Studio 마켓플레이스에서 설치해야 합니다. Copilot 확장 프로그램을 설치하면 GitHub Copilot의 AI 모델을 생성하고 활용하여 입력하는 동안 상황에 맞는 코드 제안을 제공함으로써 코딩 속도를 높이고 효율성을 향상시킵니다.

GitHub Copilot을 사용하려면 활성 GitHub Copilot 구독이 필요합니다. 구독 후에는 GitHub Copilot 채팅을 포함하여 Copilot의 모든 기능을 이용할 수 있습니다. GitHub Copilot 채팅을 통해 AI와 상호 작용하여 더욱 정확한 코드 제안 및 설명을 받을 수 있습니다. 이 채팅 기능은 복잡한 코드 조각을 이해하고 새로운 코딩 기술을 배우는 데 특히 유용합니다. 또한 GitHub Copilot을 개발 요구 사항 및 선호도에 맞게 사용자 지정하여 코드 제안이 코딩 스타일 및 프로젝트 요구 사항과 일치하도록 할 수 있습니다.

코드를 작성하는 동안 GitHub Copilot은 제안 사항을 생성하고 이를 개발 워크플로에 원활하게 통합합니다. GitHub 블로그는 GitHub Copilot이 지능형 코드 완성 기능을 제공하고 반복적인 코딩 작업을 지원함으로써 개발자들이 더 빠르고 더 나은 코드를 작성할 수 있도록 도와준다고 강조합니다. 소규모 프로젝트를 진행하든 더 큰 규모의 Copilot Enterprise의 일원으로 활동하든, GitHub Copilot의 AI 기반 지원은 소프트웨어 개발의 더욱 중요한 측면에 집중하고 생산성을 유지할 수 있도록 도와줍니다.

Tim의 관점에서 GitHub Copilot 이해하기

팀 코리는 GitHub Copilot을 소개하며 강연을 시작합니다. GitHub Copilot은 공개 저장소에서 학습한 패턴을 기반으로 코드 조각을 제안하고 코드를 완성하여 개발자를 지원하도록 설계된 AI 페어 프로그래머입니다. 팀은 이 도구가 상당한 도움이 될 것으로 기대되지만, 마케팅 과장과 현실을 구분하는 것이 중요하다고 강조합니다.

GitHub Copilot 확장 프로그램을 사용하면 개발자는 AI가 제공하는 소스 코드 및 코드 제안을 최대한 활용하여 효율적이고 시간을 절약하는 코드를 생성함으로써 코딩 방식을 혁신할 수 있습니다.

인공지능 vs. 머신러닝

팀은 GitHub Copilot이 진정한 인공지능이 아니라고 명확히 밝혔습니다. 오히려 이는 머신러닝 범주에 속합니다. 그는 "인공지능은 의사 결정과 선택에 관한 것이고, 머신러닝은 패턴을 식별하고 그 패턴에 기반하여 행동을 제안하는 것"이라고 설명합니다. 팀은 이러한 차이점을 이해하는 것이 해당 도구가 할 수 있는 것과 할 수 없는 것에 대한 현실적인 기대를 설정하는 데 중요하다고 강조합니다.

GitHub Copilot 작동 방식

팀은 예시를 통해 GitHub Copilot이 댓글과 부분적으로 작성된 코드를 기반으로 코드를 제안하는 방법을 설명합니다. 그는 해당 도구가 감정 분석 코드를 생성하는 시나리오를 시연하며, 시간과 노력을 절약해주는 유용한 제안을 제공하는 능력을 보여줍니다. 하지만 그는 개발자들이 생성된 코드를 여전히 이해해야 한다고 경고합니다. 팀이 말했듯이, "그건 다른 사람이 작성한 코드이고, 당신은 그 코드가 무슨 역할을 하는지 알아야 합니다."

GitHub Copilot의 장점

Tim이 강조한 주요 이점 중 하나는 GitHub Copilot이 개발자들이 불필요한 중복 작업을 피하도록 도와준다는 점입니다. 기존 코드 패턴을 활용함으로써 개발자는 반복적인 코드를 작성하는 대신 더 높은 수준의 문제 해결에 집중할 수 있습니다. 팀은 "개발자로서 우리는 바퀴를 다시 발명할 필요가 없습니다."라고 덧붙였습니다. 누군가가 이미 한 번 잘 해냈다면, 왜 우리가 다시 해야 할까요?

GitHub Copilot의 한계점

GitHub Copilot은 여러 장점이 있지만 만능 해결책은 아닙니다. 팀은 이것이 완전히 새로운 문제를 처리할 수 있는 코드 생성기가 아니라고 경고합니다. 오히려 이 프로그램은 흔히 발생하는 코딩 문제에 대한 해결책을 제시하는 데 탁월합니다. "프로그램이 아무것도 없는 상태에서 메서드를 만들어주지는 않을 겁니다."라고 팀이 설명합니다. "이미 이루어진 것들을 살펴보고 그러한 패턴들을 제시하는 것입니다."

실질적인 고려 사항

Tim은 GitHub Copilot 사용 시 고려해야 할 실질적인 사항들을 공유합니다. 그는 해당 도구가 매우 유용한 도구가 될 수 있지만, 개발자들이 도구가 생성하는 코드를 이해하는 것이 필수적이라고 강조합니다. 코드를 제대로 이해하지 않고 맹목적으로 복사하는 것은 나중에 디버깅이나 수정이 필요할 때 문제를 일으킬 수 있습니다. "그 프로그램이 작성하는 코드를 이해해야 합니다."라고 팀은 강조합니다. "만약 고장이 났는데, 그게 어떻게 작동하는지 모른다면 큰일 나는 겁니다."

코딩 면접에 대한 시사점

팀은 GitHub Copilot이 코딩 면접에 어떤 영향을 미칠 수 있는지에 대해 논의합니다. 그는 GitHub Copilot이 코딩 평가를 몇 분 만에 완료한 내부 테스트 사례를 언급했습니다. 이는 기존 코딩 테스트의 타당성에 대한 의문을 제기합니다. 하지만 팀은 코드의 기본 논리를 이해하는 것이 여전히 중요하며, 코딩 면접은 개발자의 이해력과 문제 해결 능력을 평가해야 한다고 주장합니다. " GitHub Copilot이 코딩 테스트를 통과한다고 해서 개발자가 코드를 이해한다는 의미는 아닙니다."라고 Tim은 지적합니다.

견적 및 가정 평가

팀은 다양한 출처의 인용문을 검토하여 AI 기반 코딩 도구에 대한 일반적인 가정들을 강조합니다. 그는 GitHub Copilot이 구문 및 언어별 특성을 파악하는 데 도움이 될 수 있다는 점에는 동의하지만, 코드의 논리를 진정으로 이해하는 것이 필수적이라고 강조합니다. 개발자는 코드의 원리를 이해하지 못한 채 Copilot에만 의존해서는 안 됩니다. 팀은 "낯선 언어로 코딩을 배우면서 모든 걸 구글링하는 건 마치 회화집 하나만 들고 외국에서 길을 찾는 것과 같다"고 말합니다. " GitHub Copilot을 사용하는 것은 통역사를 고용하는 것과 같습니다."

주니어 개발자가 직면하는 위험

팀은 GitHub Copilot을 사용하는 초보 개발자들이 겪을 수 있는 중요한 위험, 즉 자신의 코드를 제대로 이해하지 못하는 위험성을 강조합니다. 그는 신입 개발자가 Copilot을 사용하여 이메일 유효성 검사를 위한 정규 표현식을 생성하는 시나리오를 제시합니다. 생성된 코드가 초기 테스트를 통과하고 실제 운영 환경에서 작동할 수도 있지만, 개발자는 해당 코드의 기능이나 잠재적인 결함을 제대로 이해하지 못할 수 있습니다. 이러한 이해 부족은 특히 개발자들이 한 프로젝트에서 다른 프로젝트로 빠르게 이동하는 급변하는 환경에서 위험한 실수로 이어질 수 있습니다.

이점과 단점의 균형

Tim은 GitHub Copilot의 긍정적인 측면, 예를 들어 JavaScript 와 같은 언어의 미묘한 차이를 가르쳐주는 기능을 인정합니다. 그는 코파일럿이 개발자들에게 익숙하지 않을 수 있는 새로운 기술과 패턴을 소개할 수 있다는 점을 높이 평가합니다. 하지만 그는 개발자들이 제안을 맹목적으로 받아들이기보다는 이해하고 배우는 것이 중요하다고 강조합니다.

단위 테스트 강화

Tim은 Copilot의 특히 흥미로운 기능 중 하나인 단위 테스트 지원 기능을 강조합니다. 그는 Copilot이 누락된 테스트를 감지하고 작성하라고 제안한 사례를 공유합니다. 이 기능은 개발자가 예외적인 상황과 잠재적인 버그를 포착하는 데 도움이 되어 코드 품질을 향상시킬 수 있습니다. 팀은 코파일럿이 페어 프로그래머 역할을 하면서 사각지대를 지적하고 테스트의 견고성을 향상시키는 데 열정적입니다.

코드 품질 이해 및 개선

Tim은 Python 함수를 사용한 벤치마크 테스트를 기반으로 GitHub Copilot의 성능에 대해 논의합니다. 이 모델은 첫 시도에서 43%, 10번 시도 후에는 57%의 정확도로 함수 본문을 채웠습니다. Tim은 Copilot의 제안이 상당 부분 틀릴 수 있으므로 개발자가 생성된 코드를 이해하는 것이 중요하다고 강조합니다.

개발 도구의 진화

팀은 개발 도구의 진화를 되짚어보며, 코파일럿을 인텔리코드나 스택 오버플로우 같은 소스에서 코드 조각을 가져오던 초기 플러그인과 같은 이전 발전 과정과 비교합니다. 그는 이러한 진화의 각 단계가 이전 개발자들의 작업을 기반으로 구축되어 인간의 감독과 이해에 대한 필요성을 대체하지 않으면서도 개발 효율성을 높인다고 주장합니다.

개발자의 역할

팀은 AI가 개발자를 대체할 것이라는 우려에 대해 언급합니다. 그는 코파일럿과 같은 도구가 개발자들을 쓸모없게 만들지는 않을 것이라고 주장합니다. 대신, 이러한 도구들은 구문과 미세한 논리를 지원하는 역할을 하며, 개발자는 애플리케이션의 전반적인 논리와 구조에 대한 책임을 계속해서 져야 합니다. 그는 이를 숙련된 개발자의 필요성을 없애지 않으면서 개발 과정을 간소화하는 사전 구축된 라이브러리와 프레임워크를 사용하는 것에 비유합니다.

결론

GitHub Copilot은 AI 기반 코딩 분야에서 상당한 진전을 나타내며 C# 개발자에게 수많은 이점을 제공합니다. 하지만 팀 코리가 영상 에서 조언했듯이, 이 도구를 현명하게 사용하여 코딩 실력을 저해하는 것이 아니라 향상시키는 데 활용해야 합니다. 더 자세한 정보와 실습 자료를 원하시면 팀 코리의 유튜브 채널을 방문하세요.

Hero Worlddot related to C# 개발을 위한 GitHub Copilot 이해하기
Hero Affiliate related to C# 개발을 위한 GitHub Copilot 이해하기

사랑하는 것을 공유하여 더 많은 수익을 얻으세요

당신은 .NET, C#, Java, Python, 또는 Node.js를 다루는 개발자를 위한 콘텐츠를 만드나요? 당신의 전문성을 추가 수입으로 전환하세요!

아이언 서포트 팀

저희는 주 5일, 24시간 온라인으로 운영합니다.
채팅
이메일
전화해