일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 | 29 | 30 |
- GIT
- HTML
- 면접(java
- 배열
- 코딩공부
- ArrayList
- 항해99
- 코딩문제
- github
- CS
- 정렬 알고리즘(sort algorithm)
- 코딩
- 99클럽
- aop
- wil
- Spring
- css
- Grafana
- 코딩테스트 준비
- 프로그래머스
- cs 공부)준비
- Entity
- 자바
- Java
- 메서드
- 이진 탐색(binary search)
- 개발자 취업
- 자료구조
- Til
- 회고
- Today
- Total
hayu's 개발 일지
[WIL]240218 페어 프로그래밍 본문
페어 프로그래밍이란?
- 페어 프로그래밍은 동료 프로그래밍, 짝 프로그래밍이라고도 한다. 보통, 페어 프로그래밍은 2인이서 진행하는데 네이게이터(navigator)가 전략을 제시하고, 드라이버(driver)가 실제 코드를 작성한다. 그리고 이 역할을 번갈아 가며 수행한다.
- 팀이 여러명인 경우도 존재하는데, 그럴 경우에는 짝수는 2명, 2명으로 나누고 홀수인 경우에는 2명, 3명으로 나누어 최대 3명이 넘지 않게 한다.
- 3명으로 진행하는 경우에는 스펙테이터(spectator)가 존재한다. 스펙테이터는 네티게이터와 드라이버의 코드 구현을 관전하고, 코드 구현 중 어려움이 생기면 의견을 제시한다. 관전 후 본인이 구상했던 코드와 다르면 추가 의견을 제시하는 역할을 한다.

나의 경험
- 나의 경우, 팀의 인원이 4명이었기 때문에 2명씩 나누어 진행했다. 첫날에는 드라이버를 맡았고, 둘째 날에는 또 다른 팀원과 함께 했는데 번갈아 가며 진행했다.
- 알고리즘 문제를 푸는 것이 익숙하지 않아 힘들기도 했는데, 그럴 때 마다 팀원이 방향을 제시해줬고 그 덕에 정답을 찾아갈 수 있었다.
- 이 후, 팀원 한분이 추가되어 3명으로 진행했고 한분이 스펙테이터를 맡아 진행하였다.
- 2명이 팀을 진행하는 것과는 달랐고, 문제를 풀고 난 후, 또 다른 방법을 제시하는 것에서 문제에 대한 다양한 접근이 가능했다.
스펙테이터와 3인으로 진행한 후 코드
public class q31 {
/**
* 문제
* 이상한 문자 만들기
* <p>
* 문자열 s는 한 개 이상의 단어로 구성되어 있습니다. 각 단어는 하나 이상의 공백문자로 구분되어 있습니다.
* 각 단어의 짝수번째 알파벳은 대문자로, 홀수번째 알파벳은 소문자로 바꾼 문자열을 리턴하는 함수, solution 을 완성하세요.
* 제한 사항
* 문자열 전체의 짝/홀수 인덱스가 아니라, 단어(공백을 기준)별로 짝/홀수 인덱스를 판단해야합니다.
* 첫 번째 글자는 0번째 인덱스로 보아 짝수번째 알파벳으로 처리해야 합니다.
*/
public String solution(String s) {
String answer = "";
String[] strArr = s.split("");
int idx = 0;
for (int i = 0; i < strArr.length; i++) {
if (strArr[i].equals(" ")) {
idx = 1;
}
answer += idx % 2 == 0 ? strArr[i].toUpperCase() : strArr[i].toLowerCase();
idx++;
}
return answer;
}
// 다른 풀이
// public static String solution(String s) {
// String answer = "";
// StringTokenizer st = new StringTokenizer(s, " ", true);
// // test00test00
// // test,0,0, test,0,0
// StringBuilder sb = new StringBuilder();
//
// while (st.hasMoreElements()) {
// String str = st.nextToken();
// if (str.equals(" ")) {
// sb.append(str);
// continue;
// }
//
// for (int i = 0; i < str.length(); i++) {
// if (i % 2 == 0) {
// sb.append(Character.toUpperCase(str.charAt(i)));
// } else {
// sb.append(Character.toLowerCase(str.charAt(i)));
// }
// }
//
// }
//
// answer = sb.toString();
//
// return answer;
// }
}
향상 방안
페어 프로그래밍은 프로그래밍 실력 향상에 도움을 준다. 그런데 이 페어 프로그래밍을 어떻게 사용하면 더 좋은 효과가 나타날까?
- 페어 그로그래밍 전에 나올 결과물에 대해 이야기 한다. 예를 들어, 어떤 사람은 코드가 작동되는 것에 초점을 맞추는 사람이 있으면 반면에 다른 사람은 코드도 작동되고 최대한 간결한 코드를 사용하고 싶을 수 있다. 그런 부분에 대해 의견 조율을 해야 한다.
- 페어 프로그래밍 전에 문제에 대한 파악과 어떻게 풀어야 할지를 생각해 둔다.
- 페어 프로그램에 대한 시간 배분을 한다. 한 문제에 너무 많은 시간을 사용하면, 효율면에서도 좋지 않다.
- 자신있게 의견을 내고 수용하는 자세가 필요하다. 잘못된 접근으로 문제와 맞지 않은 의견을 내더라도 그것을 들어주고, 개선해나가는 방향으로 가는 것이 좋을 것 같다.
회고
- 알고리즘을 풀 때, 페어 프로그래밍이 나에게 많은 도움이 되었다. 어떤 식으로 진행해야 하는지와 방향을 잡아주기 때문이다.
- 개인적으로 페어 프로그래밍은 알고리즘 문제를 조금은 풀어본 사람이 진행을 하는 것이 좋은 것 같다. 한번도 알고리즘을 풀어보지 않은 상태에서 하기에는 힘들 것이라고 생각한다.
- 페어 프로그래밍을 진행하면서 나의 실력이 많이 부족하구나를 깨닫고 제시하는 방향에 의견을 더하면서 진행하였다. 잘 하지못해도 의견을 제시하고 도전해보는 것이 중요한 것 같다.
'항해99 > 회고' 카테고리의 다른 글
[WIL]240303 항해99 주특기 2주차 회고 (0) | 2024.03.03 |
---|---|
[WIL]240225 항해99 주특기 1주차 회고 & HTTP (0) | 2024.02.25 |
[WIL]240211 객체지향 프로그래밍 / 항해99 회고 (1) | 2024.02.11 |
[WIL]240204 항해99 회고 (0) | 2024.02.04 |
[회고] 항해99 사전트랙 및 입학시험 후기 (2) | 2024.01.30 |