주위를 둘러보면 많은 직원들이 개발할 때 ChatGPT를 적극 활용하고 있습니다. 그러나 ChatGPT를 사용하여 코드를 작성할 때는 명확한 장단점이 존재합니다. 따라서 ChatGPT를 통해 프로그래밍을 어떻게 하면 더 효율적으로 진행할 수 있을지 함께 알아보겠습니다.
ChatGPT를 사용한 코딩의 장단점
대규모 언어 모델(LLM)을 활용해 코드를 작성할 때 가장 큰 장점은 코드 작성 시간을 단축하고 새로운 아이디어를 쉽게 얻을 수 있다는 점입니다. 과거에는 단순하고 반복적인 코드를 직접 함수화해 재사용성을 높이기도 했지만, 일부에서는 비슷한 코드를 반복적으로 작성해야 했습니다. 하지만 이제는 반복적인 코드나 특정 예시를 ChatGPT에게 제공해 대량으로 생산하게 하고, 그 시간에 다른 작업을 진행할 수 있습니다. 또한, 복잡한 코드를 작성할 때 예전에는 비슷한 문제를 해결한 다른 사람들의 코드를 일일이 찾아봤지만, 이제는 프롬프트에 요구사항을 입력하기만 하면 됩니다. ChatGPT가 제안하는 코드를 그대로 사용할 수는 없더라도, 문제 해결의 실마리를 얻을 수 있지요.
그러나 이러한 장점들은 다른 측면에서 단점으로 작용할 수 있습니다. 반복적인 코드를 ChatGPT로부터 생성하더라도 이를 검토하는 것은 결국 사람이 해야 합니다. 대량으로 생성된 코드를 검토 없이 적용하면, 오히려 버그가 발생해 수정하는 데 더 많은 시간이 소요될 수 있습니다. 또 다른 단점은 ChatGPT를 통해 새로운 아이디어를 얻는 것은 좋지만, 이로 인해 생각하는 시간을 줄이려는 경향이 생길 수 있다는 점입니다. 이렇게 되면 점차 ChatGPT에 의존하게 되고, ChatGPT가 해결하지 못하는 문제를 만났을 때 큰 어려움에 직면할 수 있습니다.
결론적으로, ChatGPT는 시간 단축과 아이디어 획득에 유용하지만, 코드 검토 시간 증가와 사고력 저하라는 단점도 함께 존재합니다. 그렇다면 ChatGPT의 장점을 극대화하고 단점을 줄이기 위해서는 어떻게 해야 할까요? 해결해야 할 문제를 최대한 세분화해 하나씩 ChatGPT에 전달하고, 결과를 철저히 검토하는 것이 중요합니다. 생성된 코드를 그대로 사용하기보다는 이를 참고해 자신의 코드로 재작성하는 것이 좋습니다. 또한, 프롬프트를 너무 많이 사용하는 것도 피해야 합니다. 질문이 꼬리를 물수록 원하는 답에서 점점 멀어질 수 있기 때문입니다. 이제, 이러한 문제들을 해결하기 위한 구체적인 방법으로 기본적인 프롬프트 작성법과 효과적인 질문 방법에 대해 알아보겠습니다.
프롬프트 언어 문법
프롬프트 언어인 ChatGPT나 Gemini 등에서 명확한 문장 작성에 대한 공통된 문법은 존재하지 않습니다. 그러나 코드와 명령 문장을 구분하는 것은 큰 도움이 됩니다. 저는 코드 부분을 백틱(```) 세 개로 구분하는 방식을 사용합니다. (Mac에서는 Option + \ 키로 입력 가능합니다.)
예시:
ChatGPT 문법(출처: ChatGPT)
예를 들어, 명령어 작성 시 백틱 세 개를 연속으로 사용해 코드 시작을 알리고, 다시 백틱 세 개를 사용해 코드 작성이 완료되었음을 표시할 수 있습니다.
만약 동일한 기능을 가진 코드라면 하나의 코드 블록으로 묶을 수 있지만, 문법이 다른 코드(예: HTML, SCSS)나 목적이 다른 코드(예: 여러 함수) 일 경우 각각 별도의 코드 블록으로 작성하는 것을 권장합니다.
GPT 사용 가이드
(출처: https://platform.openai.com/docs/guides/prompt-engineering/strategy-write-clear-instructions)
명령어 입력 전 기본세팅
코드 입력이나 명령어 작성 전에, 먼저 GPT에게 어떤 언어를 사용할 것인지 알려주는 것이 좋습니다. 예를 들어, 제가 홈페이지 제작을 위해 HTML, SCSS, JS를 사용할 때, 첫 명령으로 "이제부터 웹사이트 제작을 위해 HTML, SCSS, JS 관련 질문을 할 거야."라고 입력합니다.
이렇게 하는 이유는 GPT가 사용자가 입력한 코드를 해석하고 적절한 코드를 출력할 수 있지만, 때로는 혼란을 겪어 잘못된 결과를 낼 수 있기 때문입니다. 이러한 번거로움을 줄이기 위해, 어떤 목적으로 어떤 언어를 사용할 것인지 명확히 언급한 후 사용하는 것을 권장드립니다.
GPT 사용 가이드
(출처: https://platform.openai.com/docs/guides/prompt-engineering/strategy-write-clear-instructions)
간단하고 단순 반복적인 코드 생성 방법
서비스를 실제로 공개하기 전에 개발 속도에 맞춰 가끔 더미 데이터를 생성해 화면 테스트나 DB 테스트를 진행할 때가 있습니다. 예전에는 단순히 기존 코드를 복사한 후 일부 값만 바꿔 사용하곤 했습니다. 하지만 이제는 간단한 명령어만으로 다양한 값의 더미 데이터를 자동으로 생성할 수 있습니다.
GPT는 더미 데이터를 작성할 때 기본적으로 더미 데이터를 생성하는 함수를 만들고, 매개변수로 값을 조정할 수 있게 합니다. 이렇게 하는 이유는 GPT의 출력 결과를 도출하는 데 사용되는 토큰 수가 제한되어 있기 때문입니다. 만약 함수가 아닌 값을 직접 복사하고 싶다면, 명령어에 "코드가 아닌 변수로 만들어."를 추가하면 됩니다.
ChatGPT 더미 데이터 생성(출처: 인코에듀 프로그래밍 강의)
사진을 보면 교복과 관련된 데이터 모델 클래스를 생성하기 위해 여러 값을 지정해야 합니다. 이를 위해 ChatGPT에게 다음과 같이 명령했습니다: "UniformModel이라는 이름으로 Swift 모델 클래스를 만들 거야. 변수로 와이셔츠(Int), 바지(Int), 넥타이(Int), 허리띠(Bool), 신발(Int), 카디건(Int), 외투(Int), 양말(Int)을 선언해 줘."
이 명령어를 분석해 보면, 클래스 이름, 사용할 언어, 변수의 타입을 명확히 지정했습니다. 이 세 가지 정보만 입력하면 원하는 더미 데이터를 쉽게 생성할 수 있습니다. 그럼, 결과는 어떻게 나왔을까요?
ChatGPT 더미 데이터 생성 결과 코드(출처: 인코에듀 프로그래밍 강의)
결과적으로, 한 번에 원하는 코드를 생성할 수 있었습니다.
간단한 함수 생성 방법
ChatGPT의 큰 장점 중 하나는 다양한 문제를 해결할 수 있는 아이디어를 제공한다는 점입니다. 이제 간단한 문제를 살펴보겠습니다.
문제: 0에서 10,000 사이의 랜덤한 수를 선언하고, 그 수의 자릿수에 맞게 10부터 1,000까지 차이나는 수를 나열하는 배열을 리턴하는 함수를 작성하시오. (예: 랜덤 값이 549일 경우, [0, 100, 200, 300, 400, 500, 600, 700, 800, 900, 1000]이 생성되는 배열)
그렇다면, 이 문제를 ChatGPT를 통해 어떻게 해결할 수 있을까요?
여기서 가장 중요한 개념은 "희망하는 답을 먼저 ChatGPT에게 제공하면 정확도가 높아진다."와 "ChatGPT는 문맥을 기억하므로, 이전 코드를 언급하며 피드백을 줄 수 있다."는 점입니다.
첫 번째 질문: "100개 미만의 랜덤한 숫자가 있으면 0부터 100까지 10씩 차이나는 배열을 만들어줘. 1,000개 미만이면 100씩, 10,000개 미만이면 1,000씩 차이나는 배열을 만들어주는 함수를 Swift 코드로 작성해 줘."
두 번째 질문: "위와 비슷한 함수를 생성할 건데, 1부터 10,000까지가 아니라 1부터 무한대에 가까운 숫자 중 랜덤하게 10개를 생성하고, 그 자릿수에 따라 10, 100, 1,000씩 차이가 나는 10개의 인덱스를 가지는 배열을 Swift로 작성해 줘."
세 번째 질문: "1부터 무한대에 가까운 랜덤한 값을 선택하여 자릿수를 계산한 후, 아래 예시처럼 값을 리턴하는 함수를 Swift로 만들어줘. (예: 랜덤 값이 50이면 [0, 10, 20, 30, 40, 50, 60, 70, 80, 90, 100], 랜덤 값이 58,492이면 [0, 10,000, 20,000, 30,000, 40,000, 50,000, 60,000, 70,000, 80,000, 90,000, 100,000])"
ChatGPT 예시 데이터 입력 가이드
(출처: https://platform.openai.com/docs/guides/prompt-engineering/strategy-write-clear-instructions)
ChatGPT 피드백 전략 가이드
(출처: https://platform.openai.com/docs/guides/prompt-engineering/strategy-write-clear-instructions)
이 세 가지 과정을 거치며 ChatGPT의 답변에 피드백을 제공했습니다. 첫 번째와 두 번째 질문에서는 제가 원하는 답이 나오지 않았지만, ChatGPT는 문맥을 파악하여 점차 제가 원하는 답으로 수정해 나갔습니다. 만약 원하는 답이 나오지 않았다면, "방금 대답한 코드를 수정할 거야" 혹은 "방금 작성한 코드에서"와 같은 문구를 사용해 문맥을 활용하는 ChatGPT의 성능을 극대화할 수 있습니다.
가장 중요한 부분은 세 번째 질문에서 제가 원하는 답을 명확하게 제시한 점입니다. 이는 매우 효과적인 질문 방식입니다. 꼭 시도해 보시길 바랍니다.
정리하자면, ChatGPT의 문맥 이해 능력을 활용해 피드백과 함께 원하는 답을 명시하면, 몇 번의 의사소통만으로도 원하는 코드를 생성할 수 있습니다. 하지만 중요한 것은 ChatGPT가 작성한 코드를 반드시 이해하고, 그대로 사용하기보다는 이를 바탕으로 자신만의 코드를 작성하는 것입니다.
마치며
ChatGPT를 꾸준히 사용하면서 든든한 조수를 얻은 듯한 느낌이 들었습니다. 하지만, 지금으로서는 ChatGPT가 저의 업무를 완전히 대신할 수는 없습니다. (미래에는 잘 모르겠지만요,) 프로그래밍은 문제를 해결하는 복잡한 과정이기 때문에, 이 과정에서 일부 문제를 해결하는 아이디어를 얻는 데 활용하는 것이 가장 바람직합니다.
그 이유는, 자신이 완벽히 이해하지 못한 코드를 프로젝트에 적용하면, 이후 문제가 발생했을 때 그 원인을 제대로 파악하기 어려울 수 있기 때문입니다. ChatGPT를 통해 얻은 간단한 팁들을 활용하여 더 효율적인 코드 작성을 기대하며 이 글을 마칩니다. 긴 글 읽어주셔서 감사합니다.
추천 강의
- 인코에듀 프로그래밍 강의: https://edu.insilicogen.com/edu/course/148
EDITOR
구태훈
FLEX Dept. · Developer
'STORAGE' 카테고리의 다른 글
활력의 아이콘 비타민 C (0) | 2024.09.24 |
---|---|
무한스크롤(Inifinite Scroll)이 뭐야? (0) | 2024.08.26 |
사이버 보안의 중요성: 보안 위협 유형 (0) | 2024.07.18 |
[LabStory] 성균관대학교 윤환수 교수님 편 (0) | 2024.07.08 |
데이터 육종 스토리 (0) | 2024.06.25 |
댓글