AI pair programming
- 전통적인 페어 프로그래밍: 애자일 개발 방법론 중의 하나로 하나의 개발 가능한 PC 에서 두 명의 개발자가 함께 작업하는 것을 말한다. 네비게이터(navigator)가 전략을 제시하고 드라이버(driver)가 실제 코드를 작성하며, 이 역할을 각자 번갈아가며 수행한다. 짝 프로그래밍이라고도 함.
(출처: 매스프레소 블로그)
- 깃허브 코파일럿: 깃허브와 오픈AI 기술이 결합된 AI 기반 페어 프로그래밍 도구. 개발자가 코드를 더 빠르고 효율적으로 작성할 수 있도록 설계.
🚀 01 AI 페어 프로그래밍의 세계로
AI 페어 프로그래밍 시대에 갖춰야 할 무기
개발자로서 우리는 '문제를 정의하고 해결하는 능력'을 가진 사람이 되어야 합니다. 몽고디비가 뭔지를 아는 게 중요한 게 아니라 내가 풀려고 하는 문제에 몽고디비가 잘 맞는 솔루션인지 판단하고, 혹은 또 다른 대안점이 있다면 어떤 솔루션이 더 우리 상황에 적합한지를 판단하는 능력이 더 중요한 시대가 되었습니다 - P23
🚀 02 프롬프트 엔지니어링 이해
왜 중요한가
- 품질 일관성을 유지할 수 있기 때문
- 보안/윤리적 이슈 : 유해하거나 오해의 소지가 있는, 혹은 편향적인 콘텐츠를 생성하지 않도록 제어할 수 있다.
- 토큰의 경제성: 적은 인풋으로 더 유용한 결과물을 생성할 수 있다.
프롬프트 엔지니어링 가이드
https://www.promptingguide.ai/kr
🚀 04 게임 만들며 코파일럿 체험하기
tic-tac-toe 게임 만들기
오목과 아주 유사한 형태인 추상전략 보드 게임. 일종에 삼목. 판 크기는 3x3의 정사각형인 2인 전용 게임이다. 가로 세로 대각선 중 어느 한 방향으로라도 3개가 이어지면 이긴다.
출처: 나무위키
1. 구현하기
- pygame을 이용하여 tic-tac-toe 게임을 만들어 달라고 코파일럿에 요청하면 코드를 작성한다.
- 실행해 보면 마우스로 클릭하여 o, x를 번갈아가며 놓을 수 있다.
- 3개가 이어진 순간 게임 끝.
2. 코파일럿 단축키
| 윈도우단축키 |
---|
코파일럿 챗뷰 열기 | Alt+Ctrl+I |
코파일럿 인라인 챗 열기 | Ctrl+I |
코파일럿 퀵 챗 열기 | Ctrl+Shift+I |
인라인 제안 수락 | Tab |
인라인 제안 닫기 | Esc |
다음 인라인 제안 표시 | Alt+} |
인라인 제안 트리거 | Alt+\ |
깃허브 코파일럿 열기(별도창) | Ctrl+Enter |
🚀 07 DB 스키마 설계, 퀴리 생성, 시각화 하기
- 데이터 ERD(Entity Relationship Diagram)
- mermaid 사용하기: 책과 동일한 머메이드 코드를 사용해 출력함
- https://gist.github.com/
- gist란? 별도의 리포지터리가 없더라도 바로 코드를 공유하고 바로 저장소에 저장할 수 있는 서비스
-
Gist를 사용해 ERD 시각화하기
- Entity Realationship Diagram
- gist 접속
- 코파일럿으로 생성한 머메이드 코드 붙여넣기
- readme.md 발행
-
Gist를 사용해 DFD 시각화하기
- Data Flow Diagram
- gist 접속
- 코파일럿으로 생성한 머메이드 코드 붙여넣기
- readme.md 발행
시나리오에 대한 DFD level 0 다이어그램을 그리는 mermaid 코드를 제공해주세요.
'ddl.sql'파일을 참고해 주시고 markdown에 쓰일 예정입니다.
- Gist를 사용해 시퀀스 다이어그램으로 시각화하기
- gist 접속
- 머메이드 코드로 시퀀스 다이어그램 요청
- readme.md 발행
🚀 08 리팩터링하기
코드 가독성을 높게 그리고 재사용성을 높여 유지보수를 쉽게 만드는 과정
chatGPT를 사용해 리팩터링 단계별 진행하기
- 코드 준비
- chatGPT 프롬프트 입력
파이썬 경험이 풍부한 시니어 개발자입니다.
아래와 같은 코드가 있을 때 리팩터링하여 가독성과 코드 재사용성을 높이고자 합니다.
클래스를 TypeSafe로 만들고 함수를 가독성 있게 수정해주세요.
한꺼번에 하지 말고 한 단계씩 진행해주세요.
또한 각 단계에서 개선된 점을 설명하고
다음 단계에서 개선할 수 있는 점을 다시 생각해보세요.
- 결과 출력
- 다음 단계 진행(결론 나올 때까지)
알고리즘 최적화
- 프롬프트 입력
당신은 파이썬 시니어 개발자이십니다.
저희는 다음 알고리즘 문제를 해결하려고 합니다.
먼저 브루트포스 방식으로 해결하세요. 파이썬으로 해결해주세요
- 문제 / 예시 -
#두 수의 합
정수 배열 nums와 하나의 목표값 target이 주어집니다.
배열 nums 내의 서로 다른 두 숫자를 찾아 그 합이 target이 되도록 하는 두 숫자의 인덱스를 반환하세요.
정답이 여러 개일 경우, 그 중 하나만 반환하면 됩니다.
반드시 정확히 하나의 정답이 존재한다고 가정합니다.
예제
입력: nums = [2, 7, 11, 15], target =9
출력: [0, 1]
설명: nums[0] + nums[1]= 2+7= 9이므로, 인덱스 0과 1을 반환합니다.
⌛Brute Force -> O(N2)
- 첫 코드의 시간복잡도 문의, 개선 방안 요청
결과: HashMap으로 시간복잡도 O(N) 출력함.
내 코드에 디자인 패턴 적용하기 (🤔 더 알아보기 나~중에)
디자인패턴: 소프트웨어 설계 중 발생하는 일반적인 문제들을 해결할 목적으로 재사용 가능한 형태로 정의한 규칙. 단순한 코드 조각이나 알고리즘이 아니라, 특정 상황에서 발생할 수 있는 문제에 대한 개념적인 해결책을 제공한다.
- 생성패턴(Creational patterns): 객체 생성 과정을 캡슐화 하는 패턴. 객체 생성을 유연하게 하고 코드의 유지보수성 및 확장성 향상
- 구조패턴(Structural patterns): 클래스나 객체를 조합하여 더 큰 구조를 만드는 방법을 제공하며, 애플리케이션의 전체 구조를 개선하고 인터페이스와 구현의 분리를 지원
- 행위패턴(Behavioral patterns): 객체 간의 통신과 책임 분배에 초점을 맞추어 객체 간 협력과 태스크 분배를 효율적으로 하도록 도움,
🚀 11 AI로 스터디하기
내 코드 코드리뷰하기
- 동작하는 코드 하나 고르기
2-1. 코파일럿 챗에 코드리뷰 요청
@workspace 코드를 전체적으로 살펴보고 전반적인 코드에서
버그의 위험성이 있거나 성능 측면에서 개선할 부분은 없는지,
혹은 보안 이슈로 보이는 것이 없는지, 가독성 측면 혹은
코딩 스타일에서 수정은 필요하지 않는지 확인하고 개선 방향을 알려줘.
2-2. chatGPT에 코드리뷰 요청
동일한 프롬프트 입력 → 개선된 코드를 전체 코드로 반환해주세요.
코딩테스트 문제도 해결할 수 있을까?
------------------------ YES
leetcode
- Description을 복사해서 VScode에 붙여넣는다. -> 주석 처리
- solution 함수를 복사 붙여넣기 하고 함수 끝에 엔터를 치면 코드 제시.
- 프로그래머스도 가능
- 하지만, 답을 바로 도출하지 않을 수도 있다. 계속 수정하면서 완성해야 함.
@workspace /explain
→ 코드 설명
- 시간복잡도 개선도 가능함.
- 스스로 먼저 생각해보고 코파일럿의 답변을 확인한다.
자신의 의견과 비교하는 습관이 중요하다.
🚀 12 데이터분석하기
- 책에서는 claude를 소개하는데, 아래는 chatGPT-4o 결과다.
- 추가 분석
앞서 호텔 리뷰 데이터에서 추출한 긍정적, 부정적 키워드 분석 결과를
바탕으로 고객 만족을 이끄는 주요 요인과 본 호텔에 대한 불만족을
유발하는 주요 요인을 정리해 주시기 바랍니다.
그리고 호텔 서비스 개선을 위한 제안을 해주세요.
🤔 프롬프트 정말 잘 입력해야 한다..
🔸고객 만족을 이끄는 주요 요소
- 객실 품질: 객실의 편안함과 청결도에 대한 긍정적인 평가입니다.
- 전반적인 경험: "훌륭하다", "좋다", "좋다"와 같은 단어는 전반적으로 만족스러운 경험을 나타냅니다.
- 숙박: 숙박에 대한 긍정적인 언급은 전반적인 만족도를 강조합니다.
🔸고객 불만족의 주요 요인
- 직원 서비스: 직원 상호 작용 및 서비스 품질에 대한 부정적인 피드백입니다.
- 객실 문제: 객실 상태나 특정 문제에 대한 불만 사항입니다.
- 전체 숙박: 숙박과 관련된 부정적인 경험은 불만족을 강조합니다.
🔸호텔 서비스 개선을 위한 제안
- 직원 교육 개선: 모든 직원이 직원에 대한 부정적인 피드백을 처리할 수 있도록 고객 서비스에 대한 교육을 잘 받았는지 확인합니다.
- 객실 품질 유지: 객실을 정기적으로 검사하고 유지하여 고객의 기대에 부응하는지 확인합니다. 보고된 문제를 즉시 해결하십시오.
- 전반적인 고객 경험 향상: 일반적인 불만 사항을 해결하고 고객이 선호하는 기능을 향상하여 고객에게 긍정적인 경험을 제공하는 데 중점을 둡니다.