반응형
페어 프로그래밍 (Pair Programming)
정의
애자일 소프트웨어 개발 방법에 속하며, 하나의 컴퓨터로 두 프로그래머가 짝을 이루어 2교대로 작업한다.
- 코드를 작성하는 사람(진행자, driver)
- 관찰자(observer, navigator)
- 관찰자는 코드 검토(code review)를 담당한다.
- 관찰자는 진행자가 코딩하는 부분을 같이 보며 자신이 떠올린 방향, 좋은 아이디어, 해결법 등을 제시하여 호율을 증대시킨다.
- 보통 25 ~ 30분 코딩 + 5 ~ 10분 휴식 주기를 반복한다.
장단점
👍🏻 장점
- 다른 사람의 코딩 스타일 방향을 맞추는 등 협동성을 기를 수 있다.
- 숙련자 - 초보자 뿐만 아니라 비슷한 능력자끼리도 가능하다.
- 페어의 관점까지 보면서 사고를 넓힐 수 있다.
- 마찬가지로 몰랐던 내용에 대해 페어에게 배울 수 있고 나도 알려줄 수 있다.
- 실시간 코드 리뷰가 가능하다.
- 페어가 지켜보고 있기 때문에 업무에 집중할 수 있다.
- 오류가 최소화된다.
👎🏻 단점
- 혼자 작업을 할 경우 다른 사람의 동의를 구할 필요가 없기 때문에 어떠한 생각이 나면 바로 실행해 볼 수 있지만 페어 프로그래밍을 할 경우 상대의 동의를 구해야 하는 작업이 있기 때문에 이러한 개인적 시도를 바로하기에 어려움이 있을 수 있다.
- 더 잘하는 사람이 주도권을 갖게 되어 한 사람은 방관만 하게 될 수 있다.
- 페어가 생각할 여지를 남겨두지 않고 지시를 계속한다면 그것은 페어에게 좌절감을 주는 경험이 될 수 있다. "지금 변수 a를 선언하세요", "console.log를 찍어보세요"와 같이 코드 한줄 한줄 읊어주거나 지시하지 않아야한다. 진행자가 관찰자의 가이드 안에서 스스로 생각하여 코드를 작성 할 수 있도록 해야 한다.
버블 정렬 구현하기
with 진언님
코드
# 버블 정렬 함수 정의
def bubbleSort(arr):
# 임시 변수 선언
temp = 0
# 리스트 길이만큼 반복
for j in range(len(arr)):
# (리스트 길이) -1 -j 까지 반복
for i in range(len(arr)-1-j):
# 현재 요소가 다음 요소보다 클 때 swap
if (arr[i] > arr[i+1]) :
temp = arr[i]
arr[i] = arr[i+1]
arr[i+1] = temp
# 정렬된 리스트 반환
return arr
# 입력값
arr = [5, 4, 3, 2, 1]
# 출력
print(bubbleSort(arr))
후기
처음은 내가 진행자, 진언님이 관찰자를 담당하였다.
2명이 한 알고리즘을 검토하면서 어긋나는 로직을 바로잡아나갈 수 있어서 좋았다.
이후 5분이 지나고 역할을 바꿔서 해보았다.
나의 논리를 다른 사람이 알아들을 수 있게 연습할 수 있었다.
자주 하다보면 말하는 연습도 될 것 같다!
참고
반응형
'기타' 카테고리의 다른 글
모놀리식 아키텍처(MA) vs 마이크로서비스 아키텍처(MSA) (2) | 2024.05.16 |
---|---|
[AWS] IAM (Identity and Access Management) (0) | 2024.05.10 |
[Gradle] build.gradle dependencies import keywords (0) | 2024.04.30 |
[페어 프로그래밍] 선택 정렬(Selection Sort) 구현하기 (0) | 2024.04.29 |
[방법론] 폭포수 vs 애자일 (0) | 2024.04.15 |