일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | ||||||
2 | 3 | 4 | 5 | 6 | 7 | 8 |
9 | 10 | 11 | 12 | 13 | 14 | 15 |
16 | 17 | 18 | 19 | 20 | 21 | 22 |
23 | 24 | 25 | 26 | 27 | 28 |
- pair programming
- 미니미프로젝트
- ComponentScan
- Execution Engine
- DB
- 클린코드
- Solid
- 마이크로서비스디자인패턴
- Java 22
- Spring/JAVA 서적
- G1GC
- hateoas
- testdrivendevelopment
- RESAPI
- TDD
- 완벽이해
- 부모객체
- 자식객체
- Runtime Area
- 도커
- M:N
- Self Descript Message
- Be
- KPT
- GC
- ATDD
- 트랜잭션 격리 수준
- docker
- java
- 스프링으로하는마이크로서비스구축
- Today
- Total
Programming Summary
방법론) 페어 프로그래밍이란? 본문
들어가기 전에
오늘은 KPT 회고를 활용하여 작성해보려 한다.
KPT 회고란?
- KPT 회고는 다양한 회고 방법론 중 하나이다. Keep, Problem, Try의 약자로 회고 내용을 세 가지 관점으로 분류하여 회고를 진행하는 방식이다. 이를 통해 3가지 관점에서 회고를 진행하여, 꼼꼼하고 효율적인 회고가 이루어질 수 있게 된다.
Pair Programming이란?
페어 프로그래밍은 애자일 소프트웨어 개발 방법론 중 하나로, 하나의 컴퓨터에서 두 사람의 프로그래머가 작업하는 방법이다.
위키 백과에는 이렇게 적혀있다. 페어 프로그래밍은 코드를 작성하는 사람이 진행자(driver)가 되고 다른 한 사람이 관찰자(observer, navigator)가 되어 코드 검토(code review)를 하며 프로그래밍을 작성한다. 두 프로그래머는 수시로 역할을 바꾼다. 일반적으로 5~10분 간격으로 전환을 한다.
이를 통해 다음과 같은 이점을 얻을 수 있다.
1. 집중력 향상
2. 버그 감소
3. 성장
다 너무 좋긴 하지만.. 너무 정신 없을 것 매일 하기는 힘들 것 같다..
아무튼 페어 프로그래밍의 역사를 간단히 살펴보면 페어 프로그래밍은 1998년 "Chrysler goes to Extremes"에서 Extreme Programming
의 핵심 실천 방법 중 하나로 소개되었고, 나중에 XP
의 원래 "12 가지 실천 방법"으로 공식화되었다. 그리고 나와 짝꿍은 이 페어 프로그래밍을 활용하여 (반강제적으로) Bubble Sort
에 관한 코드를 작성하였다.
페어 프로그래밍 코드
Main.java
import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.InputStreamReader;
import java.io.OutputStreamWriter;
import java.util.StringTokenizer;
public class Main {
public static int[] input() throws Exception{
BufferedReader bufferedReader = new BufferedReader(new InputStreamReader(System.in));
int n = Integer.parseInt(bufferedReader.readLine());
int[] arr = new int[n];
StringTokenizer st = new StringTokenizer(bufferedReader.readLine());
for(int i=0; i<n; i++){
arr[i] = Integer.parseInt(st.nextToken());
}
return arr;
}
public static void output(int[] arr) throws Exception {
BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(System.out));
bw.write("************\n");
for(int num : arr) {
bw.write(num + " ");
}
bw.write("\n************");
bw.flush();
bw.close();
}
public static void main(String[] args) throws Exception {
BubbleSort bubbleSort = new BubbleSort(input());
bubbleSort.sort();
int[] arr = bubbleSort.getArr();
output(arr);
}
}
BubbleSort.java
public class BubbleSort {
private final int[] arr;
public BubbleSort(int[] arr){
this.arr = arr;
}
public void sort() {
for(int i = 0; i < arr.length; i++) {
for(int j = i; j < arr.length; j++) {
if(arr[j] < arr[i]) {
int temp = arr[i];
arr[i] = arr[j];
arr[j] = temp;
}
}
}
}
public int[] getArr() {
return arr;
}
}
음! 급조해서 짠 거 치고는 생각보다 마음에 드는 코드가 만들어진 것 같다. 이를 KPT 회고를 통해 회고 해보도록 하자.
KPT 회고
Keep
- 팀원이 굉장히 잘 짰다.
- 책임에 맞게 메서드 분리를 잘했다.
Problem
- 변수명, 메서드 명이 애매하다.
- BufferedReader는 bufferedReader, BufferedWriter는 bw로 되어있다.
- output, input은 명사형이라 메서드 이름이 되기에 애매한 것 같다.
Try
- 리팩토링 하기
- VIew 클래스를 만들어 입/출력을 담당하게 하기
느낀점
페어 프로그래밍과 KPT 회고에 대해 배울 수 있었다. KPT 회고는 적용해볼만 하지만 페어 프로그래밍은 서로의 생각과 코드 스타일을 알거나, 아이스 브레이킹..? 하는데는 매우 좋을 것 같으나 매일 지속하기에는 생산성과 스트레스 측면에서 좋을 것 같지 않다. 코드 리뷰가 나와 더 적합할 것 같다는 생각을 하게 되었다.
참고
'프로 디지털 아카데미 4기' 카테고리의 다른 글
JAVA) SOLID 원칙이란? (0) | 2024.07.16 |
---|---|
미니미 프로젝트) KPT 회고 (0) | 2024.07.15 |
방법론) TDD를 할까? 말까? (0) | 2024.07.12 |
Java) 나는 왜 자바를 좋아하는가? (0) | 2024.07.12 |
논의) 상속을 고민해볼 수 있는 3가지 질문 (0) | 2024.07.04 |