hayu's 개발 일지

[WIL]240218 페어 프로그래밍 본문

항해99/회고

[WIL]240218 페어 프로그래밍

hayu00 2024. 2. 18. 11:38

페어 프로그래밍이란?

- 페어 프로그래밍은 동료 프로그래밍, 짝 프로그래밍이라고도 한다. 보통, 페어 프로그래밍은 2인이서 진행하는데 네이게이터(navigator)가 전략을 제시하고, 드라이버(driver)가 실제 코드를 작성한다. 그리고 이 역할을 번갈아 가며 수행한다. 

- 팀이 여러명인 경우도 존재하는데, 그럴 경우에는 짝수는 2명, 2명으로 나누고 홀수인 경우에는 2명, 3명으로 나누어 최대 3명이 넘지 않게 한다. 

- 3명으로 진행하는 경우에는 스펙테이터(spectator)가 존재한다. 스펙테이터는 네티게이터와 드라이버의 코드 구현을 관전하고, 코드 구현 중 어려움이 생기면 의견을 제시한다. 관전 후 본인이 구상했던 코드와 다르면 추가 의견을 제시하는 역할을 한다.

 

 

페어 프로그래밍 2인조

나의 경험

- 나의 경우, 팀의 인원이 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;
//    }


}

 

향상 방안

페어 프로그래밍은 프로그래밍 실력 향상에 도움을 준다. 그런데 이 페어 프로그래밍을 어떻게 사용하면 더 좋은 효과가 나타날까?

- 페어 그로그래밍 전에 나올 결과물에 대해 이야기 한다. 예를 들어, 어떤 사람은 코드가 작동되는 것에 초점을 맞추는 사람이 있으면 반면에 다른 사람은 코드도 작동되고 최대한 간결한 코드를 사용하고 싶을 수 있다. 그런 부분에 대해 의견 조율을 해야 한다.

- 페어 프로그래밍 전에 문제에 대한 파악과 어떻게 풀어야 할지를 생각해 둔다. 

- 페어 프로그램에 대한 시간 배분을 한다. 한 문제에 너무 많은 시간을 사용하면, 효율면에서도 좋지 않다. 

- 자신있게 의견을 내고 수용하는 자세가 필요하다. 잘못된 접근으로 문제와 맞지 않은 의견을 내더라도 그것을 들어주고, 개선해나가는 방향으로 가는 것이 좋을 것 같다. 

 

회고

- 알고리즘을 풀 때, 페어 프로그래밍이 나에게 많은 도움이 되었다. 어떤 식으로 진행해야 하는지와 방향을 잡아주기 때문이다. 

- 개인적으로 페어 프로그래밍은 알고리즘 문제를 조금은 풀어본 사람이 진행을 하는 것이 좋은 것 같다. 한번도 알고리즘을 풀어보지 않은 상태에서 하기에는 힘들 것이라고 생각한다. 

- 페어 프로그래밍을 진행하면서 나의 실력이 많이 부족하구나를 깨닫고 제시하는 방향에 의견을 더하면서 진행하였다. 잘 하지못해도 의견을 제시하고 도전해보는 것이 중요한 것 같다.