from �문서버 위키.
PairProgramming ìž�ì²´ì—� 대해 조금 설명ì�„ 드리ìž�ë©´, ìš°ì„ ì�´ê±´ Driver와 Observer로 ì—í• ë¶„ë‹´ì�´ ë�˜ëŠ”ë�° ì •í•´ì§„ 게 ì•„ë‹ˆê³ , 계ì†� ë°”ë€�니다. ìš´ì „í•˜ëŠ” 사람ì�´ ìžˆê³ , 옆ì—�서 코치하는 사람ì�´ 있는 ê±°ì£ . ì‹¤ì œë¡œ 타ì�´í•‘ì�„ 하는 사람ì�€ 타ì�´í•‘ì�´ëž€ 작업ì—� 몰ë‘�하ëŠ�ë�¼ ì§€ë ¥ì�„ 좀 빼앗ê¹�니다. ëŒ€ì‹ ì�´ê±¸ 관찰하는 사람ì�€ ì—¬ìœ ê°€ 있으므로 ì�´ê²ƒ ì €ê²ƒ ê°�ê´€ì �ì�¸ 코치를 해줄 가능성ì�´ ë†’ì£ . 그런ë�°, 예를 들어, Driverê°€ 코딩ì�„ 하다가 Observerê°€ "그게 ì•„ëƒ� ì�´ë ‡ê²Œ 하면 ë�” 좋아"하면서 설명ì�„ 하는ë�° 잘 ì�´í•´ë¥¼ ëª»í•˜ê² ë‹¤ 싶으면 키보드를 밀어주며 "니가 í•´ë´�"ë�¼ê³ ë§�합니다. ì—í• ë°”ê¾¸ê¸°ê°€ ë�˜ëŠ” ê±°ì£ . ì�´ê²Œ 아니ë�”ë�¼ë�„, 가능하면 ë‘� 사람ì�´ ì§€ì†�ì �으로 ì—í• ë°”ê¾¸ê¸°ë¥¼ 하면 좋습니다. (ExtremeProgrammingì—�ì„ íƒ€ì�´ë¨¸ë¥¼ ì�´ìš©í•´ì„œ ì •í•´ì§„ 시간ì�´ ë�˜ë©´ ì—í• ë°”ê¾¸ê¸°ë¥¼ 하는 예ë�„ 있습니다) ë� ì–´ì°Œë�˜ì—ˆê±´, 피곤하다 싶거나 지금 머리가 잘 안ë�Œì•„간다 싶으면 옆 사람ì—�게 키보드를 넘기면 ë�˜ì£ .
ê·¸ë¦¬ê³ ì „ë¬¸ê°€ì™€ ë¹„ìˆ™ë ¨ìž�ê°€ pairingì�„ í•´ë�„, ì „ë¬¸ê°€í•œí…Œë�„ ë�„움ì�´ ë§Žì�´ ë�©ë‹ˆë‹¤. 예를 들어 변수ì�´ë¦„ ê°™ì�€ 것ì�€ ì „ë¬¸ê°€ë�„ ì‹¤ìˆ˜í• ìˆ˜ ìžˆì£ . ì�´ê±¸ 지켜보ë�˜ ë¹„ìˆ™ë ¨ìž�ê°€, "ì–´ë�¼.. 아까는 PrinterStatusë�¼ê³ 치ë�”니 지금ì�€ PrintersStatusë�¼ê³ 치시네요..."ë�¼ê³ 하면, 'ì•„ì°¨!'하는 ê±°ì£ . ë˜� ë¹„ìˆ™ë ¨ìž�ê°€ 코드를 ì�´í•´ë¥¼ 못해서 설명ì�„ 해주게 ë�˜ë©´, ì „ë¬¸ê°€ 스스로ë�„ ë§Žì�€ 공부를 하게 ë�˜ê³ , ì„¤ë ¹ ê·¸ 사람ì�´ ê·¸ 설명ì�„ ì�´í•´ë¥¼ 못해ë�„, "ì•„ ì�´ëŸ° 부분ì�€ ì�´í•´ë¥¼ 잘 못하는구나. 앞으로 ì�´ê±´ ë�” 쉽게 ì„¤ëª…í•´ì•¼ê² êµ°"í•˜ê³ ìž˜ëª»ì�„ 스스로ì—�게 구하면서, ë˜� 학습ì�´ ë°œìƒ�í•˜ì£ .
PairProgramming ìž�ì²´ì—� 대해서는 http://www.pairprogramming.com 를 ì°¸ì¡°í•˜ì‹œê³ , IEEE Softwareì—� ì‹¤ë ¸ë�˜, 로리 윌리엄스 êµ�수ì�˜ 글ì�„ ì�½ì–´ë³´ì„¸ìš” http://www.cs.utah.edu/~lwilliam/Papers/ieeeSoftware.PDF. 다ì�Œì�€ UncleBobê³¼ Rob Kossì�˜ ì‹¤ì œ PairProgrammingì�„ 기ë¡�한 대본입니다. http://www.objectmentor.com/publications/xpepisode.htm
시간ì�´ 없어서 대충 간략하게 ì�¼ëŠ”ë�°, ëª¨ë¥´ê² ëŠ” 부분ì�€ 질문해 주세요.
--김창준
PPì—� 대해서는 체계ì �으로는 잘 ëª¨ë¥´ê² ì§€ë§Œ.. (íŒŒê³ ë“¤ë ¤ë©´ XP ì—�서부터 íŒŒê³ ë“¤ì–´ì•¼ í• ê²ƒ 같아서요.) 그냥 ì—¬ê¸°ì €ê¸° ìž�료들 얻어서 ì�½ì–´ë³´ê³ , ì„ ë°°ë‹˜ 글ë�„ ì�½ì–´ë³´ë©´ì„œ '효과ì �ì�¸ ì§€ì‹�ì „ë‹¬ë°©ë²•ì�´ ë� 수 ìžˆê² êµ¬ë‚˜.' 특히 1기 -> 2기 ì�¸ìˆ˜ì�¸ê³„ì‹�으로 기존ì�˜ 프로그램들ì�„ ì�´í•´ì‹œí‚¤ëŠ”ë�°ì—�ë�„ 괜찮ì�€ 방법ì�´ë�¼ ëŠ�ë�¼ê³ 있습니다.
한편, 보통 ìˆ™ë ¨ìž�/ë¹„ìˆ™ë ¨ìž� ê°€ pairing í• ë•ŒëŠ” 한쪽 방향으로 프로그래ë°� 스타ì�¼ 등ì�˜ 무게가 치우ì³�지기 ì‰½ë‹¤ê³ ìƒ�ê°�하는ë�°ìš”. 보통 ë¹„ìˆ™ë ¨ìž�ì�¸ 사람ì�´ 수ë�™ì �ì�¸ 입장ì�„ 취하는 경우가 많기 때문ì—�.. 다른 한편, ìˆ™ë ¨ìž�ì�¸ 사람ì�´ 마ì�Œì�˜ ë²½ì�„ 넘지 못하는 우를 ë²”í• ë•Œì—�ë�„ ë¹„ìˆ™ë ¨ìž�ì�¸ 사람ì�´ 'ë‚´ê°€ ì € 사람보다 잘 모르니까...' ì‹�으로 ë�Œë ¤ê°€ëŠ” 경우가 있ì�„수 ìžˆë‹¤ê³ ë´…ë‹ˆë‹¤. (ì‹¤ì œë¡œ ê°€ë�” ì œê°€ 'ì„¤ëª…í• ìˆ˜ 없는 부분ì�€ 혼란시켜ë�¼' ë�¼ëŠ” ë§�ì�„ 실천ì—� 옮기는 경우가 종종 ë°œìƒ�한다는.. -_-;;) -- ê°•ì„�천
좀 시ê°�ì�„ ë„“íž� 필요가 있ì�„ ê²�니다. "ì „ì²´ 팀"ê³¼ "ì „ì²´ 개발 프로ì �트"ë�¼ëŠ” ê´€ì �ì�´ì£ .
겉으로 보기엔, 왕초보/왕ë�„사ì�˜ ì§�ì�€ ìƒ�당히 비효율ì �ì�¼ 것 같지요. PairProgrammingì�„ í•œë‹¤ê³ í•´ë�„, 왕ë�„사가 키보드를 ê±°ì�˜ ë�…ì°¨ì§€í•˜ê³ , 왕초보가 간간히 ë�˜ì§€ëŠ” ë©�ì²í•œ 질문ì�€ 둘(ì •í™•ížˆëŠ” 왕ë�„사)ì�˜ 프로그래ë°� ì†�ë�„를 늦출 것ì�´ê³ ìš”. ë˜�, 아무것ë�„ ëª»í•˜ê³ ë©�ì²ížˆ 지켜ë´�야만 하는 왕초보 ì—시 ë‹µë‹µí• ê²�니다. 괜히 질문했다가는 핀잔받기 ì�¼ìˆ˜ì�´ê³ . 둘 다 ì§œì¦�나는 ìƒ�황ì�´ì£ .
ì�´ëŸ° ìƒ�황ì—�서는 SoloProgrammingì�´ 낫다는 ë§�ì�„ í•˜ê³ ì‹¶ì�„ ê²�니다. 왕초보는 왕초보대로 ì§œê³ , 왕ë�„사는 ë˜� ìž�기 마ì�ŒëŒ€ë¡œ(full-speed로) ì§œê³ . 하지만, ì�´ê±´ 기본ì �으로 잘못ë�œ ê´€ì �ì—�서 오는 ë¬¸ì œìž…ë‹ˆë‹¤. ì œëŒ€ë¡œ ë�œ PairProgrammingì�€ ì „ì²´ 팀ì�€ ë¬¼ë¡ ê°� ê°œì�¸ì—�게ë�„ 모ë‘� ì�´ë“�ì�„ ì¤�니다.
조금 장기ì �ì�¸ ë©´ì—�서 ê·¸ë¦¬ê³ íŒ€ì�˜ 수준ì—�서 ìƒ�ê°�í•´ 보세요. ë¬¸ì œë§Žì�€ 코드만 만들어내는 사람과, 남들ì�´ ì�´í•´í•˜ê¸° íž˜ë“ ì½”ë“œë§Œ 만들어내는 사람ì�´ ê°�ìž� 나름ì�˜ 코드를 만들어내는 팀ì�˜ ì „ì²´ 효율과, í•ìƒ� 왕ë�„사ì�˜ 코치를 받는 왕초보와, 왕초보ì�˜ ì�´í•´ë�„ì—� 맞추기 위해 ë…¸ë ¥í•˜ëŠ” 왕ë�„사로 ì�´ë£¨ì–´ì§„ 팀(왕초보/왕ë�„사 모ë‘� "ë”ê°€ 학습"하는 것ì�´ 있게ë�˜ì£ )ì�˜ ì „ì²´ 효율. 어떨까요? ë�”군다나, ê·¸ 둘ì�´ PairProgrammingì�„ 하면 í• ìˆ˜ë¡� 왕초보는 왕ë�„사 수준ì—� ê·¼ì ‘í•©ë‹ˆë‹¤ -- ì—„ì²ë‚˜ê²Œ ë¹ ë¥¸ 성장ì�„ ëª©ê²©í• ìˆ˜ ìžˆì£ . êµ³ì�´ 초기 단계ì�˜ 비용ì�´ ìžˆë‹¤ê³ ì³�ë�„, 그건 ì�¼ì¢…ì�˜ 투ìž�로 ë´�야 í• ê²�니다. --김창준
PairProgramming ì�„ 위해 특별히 필요한 ì§€ì‹�ì�´ 있는지 ê¶�금합니다. (주로 ìž�연스럽게 ë”°ë�¼ì˜¤ëŠ” 것들ì�´ XP ê´€ë ¨ìª½ ì�´ì•¼ê¸°ì—¬ì„œ.. XPì—� 대한 구체ì �ì�¸ ì§€ì‹�ì�´ 필요한지 ê¶�금합니다.)
XP 방법 중ì—�서 가장 ì†�쉽게, 곧바로 ì �ìš©í• ìˆ˜ 있는 것 중 하나가 PairProgramming입니다. ë¬¼ë¡ ì—¬íƒ€ì�˜ XP 방법들과 마찬가지로 ìµœê³ ì�˜ 효과를 위해서는 다른 실행법ì�„ 함께 수행해야 합니다만, ì�´ê²ƒ 하나만ì�´ë�¼ë�„ ì œëŒ€ë¡œ 하면 가시ì �ì�¸ ì°¨ì�´ë¥¼ ëŠ�ë‚„ 것입니다. 특별히 ì–´ë–¤ ì§€ì‹�보다는 마ì�Œ ìž�세와 태ë�„ê°€ ë�” 중요합니다. --김창준
Strengthening the Case for Pair-Programming(Laurie Williams, ...)ë§Œ ì�½ì–´ë³´ê³ 쓰는 글입니다. 위ì—� 있는 왕ë�„사와 왕초보 사ì�´ì—�서 Pair-Programmingì�„ 하는 경우 ìƒ�ê°�ë§Œí�¼ 좋ì�€ 성과를 거둘 수 ì—†ì�„ 것ì�´ë�¼ê³ ìƒ�ê°�합니다. 문서ì—�서는 Pair-Programmingì—�서 가장 중요한 것ì�„ pair-analysis와 pair-designì�´ë�¼ê³ ë³´ê³ ë§�í•˜ê³ ìžˆìŠµë‹ˆë‹¤.(좀 í�° 프로ì �트를 í•´ 본 사람ì�´ë�¼ë©´ 당연히 가장 ì¤‘ìš”í•˜ë‹¤ê³ ëŠ�ë�¼ì‹¤ 수 있ì�„ 것입니다.) ë¬¼ë¡ pair-implementationë�„ ì¤‘ìš”í•˜ë‹¤ê³ ëŠ” ë§�í•˜ê³ ìžˆìœ¼ë‚˜ 앞서 언급한 ë‘�가지ì—� 비하면 íƒ�ë�„ 없지요. 그러니 왕ë�„사와 왕초보와ì�˜ ê²°í•©ì�€ 아주 미미한 수준ì�˜ ì�´ì �ë§Œ 있ì�„ë¿� ì‹¤ì œ Pair-Programmingì�´ 주창하는 Performance는 낼 수 ì—†ë‹¤ê³ ìƒ�ê°�ë�©ë‹ˆë‹¤. ë�”군다가 ì�´ 경우는 왕ë�„사ì�˜ Performanceì—� ì˜�í–¥ì�„ 주어 Time dependent jobì�˜ 경우 ì˜¤ížˆë ¤ ì†�실ì�„ ê°€ì ¸ì˜¤ì§€ 않ì�„까 ìƒ�ê°�ì�´ ë�©ë‹ˆë‹¤. Performance보다는 왕초보를 왕ë�„사로 만들기 위한 목ì �ì�´ë�¼ë©´ 왕초보와 왕ë�„사와ì�˜ Pair-Programmingì�´ 약간ì�˜ ë�„움ì�´ ë�˜ê¸°ëŠ” í• ê²ƒ 같습니다. 그러나 우리가 현재 하는 ë°©ì‹�ì—� 비해서 얼마나 효율ì�´ 있ì�„까는 ì œê³ í•´ë´�야 í• ê²ƒ 같습니다. - 김수ì˜�
Pair í• ë•Œì�˜ 장ì �으로 ì €ëŠ” ì�¼í• 때ì�˜ 집중ë�„ì—� ìžˆë‹¤ê³ ë³´ê³ ìžˆìŠµë‹ˆë‹¤. (ë¬¼ë¡ ìƒ�ê°�ì�˜ ê³µìœ ì™€ 버그ì�˜ ìˆ˜ì •, 시ê°�ì�˜ ì°¨ì�´ 등ë�„ ìžˆê² ì§€ë§Œìš”.) 왕ë�„사/왕초보 Pair 시ì�˜ ë¬¸ì œì �ì�€ 왕ë�„사가 초보ìž�ê°€ coding 때ì—� ì�´ë¯¸ 해야 í• ì�¼ì�„ ì�´ë¯¸ ì•Œê³ ìžˆëŠ” 경우 집중ë�„ê°€ 떨어지게 ë�œë‹¤ëŠ” ì �ì—� 있습니다. Pair ì�˜ 기간ì�´ 길어지면서 초보쪽ì�´ ì¤‘ê³ ê¸‰ìœ¼ë¡œ 올ë�¼ê°€ëŠ” ë�™ì•ˆ ê·¸ ë¬¸ì œë“¤ì�´ í•´ê²°ì�´ ë� 것 ê°™ì�€ë�°, 아쉬운 ì �ì�€ Pair 를 긴 기간ì�„ ë‘�ê³ í”„ë¡œê·¸ëž˜ë°�ì�„ 한 ì �ì�´ 없다는 ì �입니다. (하나ì�˜ 프로ì �트를 ë��내본 ì—사가 ê±°ì�˜ 없다는.)
XP 를 í• ë•Œ ì�´ì•¼ê¸°ë�˜ëŠ” 것중 하나가 XP 로 궤ë�„ì—� 올리는 기간ì—� 관한 ë¬¸ì œì�¸ë�°.. (아무래ë�„ 팀ì›�들ì�´ 해당 ì§€ì‹�들ì�„ 알아야 하니까..) ì•„ì§� ì�´ë¶€ë¶„ì—� 대해서는 ì €ëŠ” 머리가 안굴러가네요. (ì•„ì§� 경험ì�´.. í��.) --ì„�천
ps. 로코즌ì—�ì„ ê°€.. XP를 ì �ìš©í•˜ê³ ìžˆë‹¤ê³ í•˜ëŠ”ë�°, 어떻게 ì �ìš©ë�˜ê³ 있는지 ê¶�금해지네요.
그냥 프로그래머 ì°¨ì›�ì�¸ 걸로 ì•Œê³ ìžˆìŠµë‹ˆë‹¤. (지금ì�€ 바뀌었나?) 로코즌 ì‚¬ëžŒë“¤í•˜ê³ ìŠ¤í„°ë””ë�„ í•´ë³´ê³ í–ˆëŠ”ë�°, 솔ì§�히 ë§�하면 그쪽 사람들ì�€ 대다수가 ìš°ì„ ìž�ì‹ ì�˜ 그릇ì�„ 비우지 않ì�€ 경우가 ë§Žì�€ 듯 해서 좀 안타ê¹�습니다. ë¦¬íŒ©í† ë§�ì�´ë‚˜ ìœ ë‹›í…ŒìŠ¤íŠ¸ 등ì�„ ë§�하지만 ì œê°€ 보기ì—�는 XPì �ì�´ì§€ 못한 게 ë§Žì•„ 실ë§�ì�„ 하게 ë�˜ë�”êµ°ìš”. 공부는 ì—„ì²ë‚˜ê²Œ í•˜ì‹ ë¶„ë“¤ì�´ì§€ë§Œ, 달보다 ìž�ì‹ ì�˜ ì†�ê°€ë�½ì—� 치우치는 우를 범했지 않나 싶습니다. --김창준
왕ë�„사와 왕초보 사ì�´ì—�서 Pair-Programmingì�„ 하는 경우 ìƒ�ê°�ë§Œí�¼ 좋ì�€ 성과를 거둘 수 ì—†ì�„ 것ì�´ë�¼ê³ ìƒ�ê°�합니다.
ì�´ 세ìƒ�ì—�서 PairProgrammingì�„ 하면서 억지로 "왕ë�„사 왕초보"ì§�ì�„ 맺으러 찾아다니는 사람ì�€ ê·¸ë ‡ê²Œ í�”치 않습니다. ì„¤ë ¹ ê·¸ë ‡ë‹¤ê³ í•´ë�„ Team Learning, Building, Knowledge Propagationì�˜ 효과를 ë¬´ì‹œí• ìˆ˜ 없습니다. 장기ì �ì�´ê³ 거시ì �ì�¸ 안목ì�´ 필요합니다.
문서ì—�서는 Pair-Programmingì—�서 가장 중요한 것ì�„ pair-analysis와 pair-designì�´ë�¼ê³ ë³´ê³ ë§�í•˜ê³ ìžˆìŠµë‹ˆë‹¤.(좀 í�° 프로ì �트를 í•´ 본 사람ì�´ë�¼ë©´ 당연히 가장 ì¤‘ìš”í•˜ë‹¤ê³ ëŠ�ë�¼ì‹¤ 수 있ì�„ 것입니다.) ë¬¼ë¡ pair-implementationë�„ ì¤‘ìš”í•˜ë‹¤ê³ ëŠ” ë§�í•˜ê³ ìžˆìœ¼ë‚˜ 앞서 언급한 ë‘�가지ì—� 비하면 íƒ�ë�„ 없지요.
ì�´ ë§�ì�€ ìž�칫하면 사람들ì�„ 호ë�„í• ìˆ˜ ìžˆë‹¤ê³ ë´…ë‹ˆë‹¤. í• ë ¤ë©´ ì •í™•í•˜ê²Œ ë ˆí�¼ëŸ°ìŠ¤ë¥¼ í•˜ê³ ì�¸ìš©ë¶€í˜¸ë¥¼ ë‹¬ê³ ìž�ì‹ ì�˜ ì�˜ê²¬ì�€ 분리를 하세요. pair-implementationì�´ "앞서 언급한 ë‘�가지ì—� 비하면 íƒ�ë�„ 없다"는 ë§�ì�€ ì–´ë””ì—� 나오는 ë§�입니까? 그냥 ìž�ì‹ ì�˜ ìƒ�ê°�입니까? ê·¸ë¦¬ê³ , XPì—�서는 implementation timeê³¼ analysis, design timeì�´ 따로 분리ë�˜ì§€ 않는 경우가 많습니다. 코딩ì�„ 해나가면서 designí•´ 나갑니다. Pair로 ë§�ì�´ì£ .
그러니 왕ë�„사와 왕초보와ì�˜ ê²°í•©ì�€ 아주 미미한 수준ì�˜ ì�´ì �ë§Œ 있ì�„ë¿� ì‹¤ì œ Pair-Programmingì�´ 주창하는 Performance는 낼 수 ì—†ë‹¤ê³ ìƒ�ê°�ë�©ë‹ˆë‹¤. ë�”군다가 ì�´ 경우는 왕ë�„사ì�˜ Performanceì—� ì˜�í–¥ì�„ 주어 Time dependent jobì�˜ 경우 ì˜¤ížˆë ¤ ì†�실ì�„ ê°€ì ¸ì˜¤ì§€ 않ì�„까 ìƒ�ê°�ì�´ ë�©ë‹ˆë‹¤.
ì œê°€ 여러번 강조했다시피 넓게 보는 안목ì�´ 필요합니다. ì œê°€ ì“´ http://c2.com/cgi/wiki?RecordYourCommunicationInTheCode 나 http://c2.com/cgi/wiki?DialogueWhilePairProgramming 를 ì�½ì–´ë³´ì„¸ìš”. ê·¸ë¦¬ê³ ì‚¬ì‹¤ ì •ë§� 왕초보는 ì–´ë–¤ ë°©ë²•ë¡ , ì–´ë–¤ 프로ì �트ì—�ë�„ 팀ì—�게 ì�´ë“�ì�´ ë�˜ì§€ 않습니다. 하지만 ì�´ 왕초보를 ì“°ì§€ 않으면 프로ì �트가 ë§�하는 (아주 í�¬ê·€í•˜ê³ 괴로운) ìƒ�황ì—�서 XPê°€ 가장 효율ì �ì�´ ë� 수 ìžˆë‹¤ê³ ë´…ë‹ˆë‹¤.
Performance보다는 왕초보를 왕ë�„사로 만들기 위한 목ì �ì�´ë�¼ë©´ 왕초보와 왕ë�„사와ì�˜ Pair-Programmingì�´ 약간ì�˜ ë�„움ì�´ ë�˜ê¸°ëŠ” í• ê²ƒ 같습니다.
약간ì�˜ ë�„움ì�´ë�¼. 왕초보가 왕ë�„사와 한번ì�´ë�¼ë�„ Pair를 í•´ë³´ë©´ ê·¸ 경험ì�€ 경천ë�™ì§€í• ë§Œ 합니다. ì–´ë–¤ ìž�성ì � 깨달ì�Œì�„ 얻기ë�„ 합니다. ë¬´ìˆ ì�˜ ê³ ìˆ˜ê°€ 파리 잡는 것ì�„ ë³´ê³ ë�„ 깨달ì�Œì�„ 얻는다는ë�° ë§�ì�´ì£ .
--김창준
ì�´ ë§�ì�€ ìž�칫하면 사람들ì�„ 호ë�„í• ìˆ˜ ìžˆë‹¤ê³ ë´…ë‹ˆë‹¤. í• ë ¤ë©´ ì •í™•í•˜ê²Œ ë ˆí�¼ëŸ°ìŠ¤ë¥¼ í•˜ê³ ì�¸ìš©ë¶€í˜¸ë¥¼ ë‹¬ê³ ìž�ì‹ ì�˜ ì�˜ê²¬ì�€ 분리를 하세요. pair-implementationì�´ "앞서 언급한 ë‘�가지ì—� 비하면 íƒ�ë�„ 없다"는 ë§�ì�€ ì–´ë””ì—� 나오는 ë§�입니까? 그냥 ìž�ì‹ ì�˜ ìƒ�ê°�입니까? ê·¸ë¦¬ê³ , XPì—�서는 implementation timeê³¼ analysis, design timeì�´ 따로 분리ë�˜ì§€ 않는 경우가 많습니다. 코딩ì�„ 해나가면서 designí•´ 나갑니다. Pair로 ë§�ì�´ì£ . (ì°½ì¤€ì„ ë°°ë‹˜ì�´ ì“´ 글중)
pair-anaysis와 pair-designì�˜ 중요성ì�„ 문서ì—�서는 "Unanimously, pair-programmers agree that pair-analysis and pair-design is critical for their pair success." ì�´ì™€ ê°™ì�´ ë§�í•˜ê³ ìžˆìŠµë‹ˆë‹¤. ë˜� 다시 보시면 ì•„ì‹œê² ì§€ë§Œ.. ì œê°€ ì“´ 문장ì�€ "ë¬¼ë¡ pair-implementationë�„ ì¤‘ìš”í•˜ë‹¤ê³ ëŠ” ë§�í•˜ê³ ìžˆìœ¼ë‚˜ 앞서 언급한 ë‘�가지ì—� 비하면 íƒ�ë�„ 없지요."입니다. íƒ�ë�„ 없다는 표현ì�€ 당연히 ì œ ìƒ�ê°�ì�´ë�¼ëŠ” 것ì�´ 나타나 ìžˆë‹¤ê³ ìƒ�ê°�ë�˜ëŠ”ë�°....
위ì�˜ 글ì�€ ì œê°€ ì“´ 글ì�´ 오해ì�˜ 소지가 ì �다는 ë§�ì�„ í•˜ê³ ì‹¶ì–´ì„œ ì“´ 것ì�´êµ¬ìš”..ì œ ìƒ�ê°�ì�„ 다시 ì �ì–´ ë³´ê² ìŠµë‹ˆë‹¤.
ì €ëŠ” PairProgrammingì�˜ í�¬ë§�ì�„ 왕ë�„사와 왕ë�„사가 ê°™ì�´ í–ˆì�„ 때 ì •ë§� ê·¸ 힘ì�´ 발휘ë� 것ì�´ë�¼ëŠ” 것ì—�서 ì°¾ê³ ì‹¶ìŠµë‹ˆë‹¤. 형ì�´ ë§�하는 왕ë�„사와 왕초보 그룹ì�€ í•™êµ�나 ì œìž�를 ê¸°ë¥´ê³ ì‹¶ì�€ 왕ë�„사ì—�게 해당하는 사í•ì�´ ì•„ë‹�까요? ì‹¤ì œ 사회ì—�서 왕ë�„사와 왕초보 그룹ì�´ 얼마나 효용성ì�´ 있ì�„까요?
안목ì�„ 넓혀서 ë³¸ë‹¤ê³ í•´ë�„ ì €ëŠ” í�° ë§¤ë ¥ì�´ ëŠ�껴지지 않습니다. 무협 ì˜�화를 ë³´ë©´ ì�¼ë°˜ì �으로 ì œìž�는 대부분 스승ì�„ ë”°ë¥´ê³ ì„¬ê¹�니다. 하지만 현대 사회ì—� 와서는 ì�´ê²ƒì�€ 극히 ì�¼ë¶€ì�˜ 사람들ì—�게만 해당하는 ë‚´ìš©ì�´ê³ 대부분ì�€ ê°œì�¸ì �ì�¸ 성향ì�´ 훨씬 강합니다. ì�´ëŸ° ìƒ�황ì—�서 과연 왕ë�„사가 미래를 내다보며 왕초보를 ê°€ë¥´ì¹ ê²ƒì�¸ê°€ë¥¼ ìƒ�ê°�í•´ë´�야 í• ê²ƒìž…ë‹ˆë‹¤. ë¬¼ë¡ êµ�육ì�„ 목표로 살아가는 왕ë�„사ë�¼ë©´ 왕초보를 ê°€ë¥´ì¹ ìˆ˜ 있ì�„ì§€ 모르나 ê·¸ 효용 범위는 겨우 몇 왕초보ì—�게만 주어지는 기회가 ì•„ë‹�까요? 다른쪽으로 ë¹ ì§ˆë ¤êµ¬ 하네요..
ê²°êµ ì œê°€ ë§�í•˜ê³ ì‹¶ì�€ 것ì�€ PairProgrammingì�€ 왕ë�„사와 왕ë�„사 그룹ì�´ í• ìˆ˜ 있는 최ìƒ�ì�˜ 해법(ì œ ìƒ�ê°�입니다만)ì�´ë�¼ëŠ” 것입니다.. ëª¨ë“ ë°©ë²•ë¡ ì�´ ëª¨ë“ ê²½ìš°ì—� ì �합하지는 않ì�€ 것ì�„ ìƒ�ê°�해본다면 PairProgrammingì�´ 왕ë�„사와 왕초보 그룹ì�´ 아닌 왕ë�„사와 왕ë�„사 그룹ì—� 가장 ì �합한 것ì�´ ì•„ë‹�까 ìƒ�ê°�해봅니다.
안목ì�„ 넓혀서 ë³¸ë‹¤ê³ í•´ë�„ ì €ëŠ” í�° ë§¤ë ¥ì�´ ëŠ�껴지지 않습니다. 무협 ì˜�화를 ë³´ë©´ ì�¼ë°˜ì �으로 ì œìž�는 대부분 스승ì�„ ë”°ë¥´ê³ ì„¬ê¹�니다. 하지만 현대 사회ì—� 와서는 ì�´ê²ƒì�€ 극히 ì�¼ë¶€ì�˜ 사람들ì—�게만 해당하는 ë‚´ìš©ì�´ê³ 대부분ì�€ ê°œì�¸ì �ì�¸ 성향ì�´ 훨씬 강합니다. ì�´ëŸ° ìƒ�황ì—�서 과연 왕ë�„사가 미래를 내다보며 왕초보를 ê°€ë¥´ì¹ ê²ƒì�¸ê°€ë¥¼ ìƒ�ê°�í•´ë´�야 í• ê²ƒìž…ë‹ˆë‹¤. ë¬¼ë¡ êµ�육ì�„ 목표로 살아가는 왕ë�„사ë�¼ë©´ 왕초보를 ê°€ë¥´ì¹ ìˆ˜ 있ì�„ì§€ 모르나 ê·¸ 효용 범위는 겨우 몇 왕초보ì—�게만 주어지는 기회가 ì•„ë‹�까요? 다른쪽으로 ë¹ ì§ˆë ¤êµ¬ 하네요..
ê²°êµ ì œê°€ ë§�í•˜ê³ ì‹¶ì�€ 것ì�€ PairProgrammingì�€ 왕ë�„사와 왕ë�„사 그룹ì�´ í• ìˆ˜ 있는 최ìƒ�ì�˜ 해법(ì œ ìƒ�ê°�입니다만)ì�´ë�¼ëŠ” 것입니다.. ëª¨ë“ ë°©ë²•ë¡ ì�´ ëª¨ë“ ê²½ìš°ì—� ì �합하지는 않ì�€ 것ì�„ ìƒ�ê°�해본다면 PairProgrammingì�´ 왕ë�„사와 왕초보 그룹ì�´ 아닌 왕ë�„사와 왕ë�„사 그룹ì—� 가장 ì �합한 것ì�´ ì•„ë‹�까 ìƒ�ê°�해봅니다.
-- 김수�
pair-implementationê³¼ pair-design, analysisì—� 대해서는 ì›�래 논문ì�„ 꼼꼼히 다시 ì�½ì–´ë³´ê¸¸ ë°”ëž�니다. 특히 ê°�ê°�ì�´ 구체ì �으로 무엇ì�„ ì§€ì¹í•˜ëŠ”ê°€ë¥¼ 주ì�˜ê¹Šê²Œ ì�½ì–´ì£¼ê¸¸ ë°”ëž�니다. ë˜�, XPì—�서처럼, 만약 세가지가 잘 구분ì�´ ë�˜ì§€ ì•Šê³ ë³„ë�„ì�˜ design/analysis 세션ì�´ ì—†ê³ , 코딩하는 ìž�리ì—�서 ì�´ 세가지가 ë�™ì‹œì—� 벌어진다면 어떻게 ë� ì§€ ìƒ�ê°�í•´ 보세요.
왕ë�„사와 왕초보를 어떻게 ì •ì�˜í•˜ëŠ�ëƒ�ì—� ë”°ë�¼ 좀 다를 수 ìžˆê² ìŠµë‹ˆë‹¤. ì œê°€ 늘 ë§�하듯ì�´ "ì „ë¬¸ê°€"ë�¼ë¦¬ì�˜ PairProgrammingì�€ ì�¼ë°˜ì �으로 성공ì �ì�¼ í™•ë¥ ì�´ 높습니다. 하지만 ì „ë¬¸ê°€ì�¼ìˆ˜ë¡� ìž�ì‹ ì�˜ 프ë�¼ì�´ë“œì™€ ì—�ê³ ê°€ 강하기 때문ì—� PairProgrammingì�˜ 장ì �ì�„ 충분히 ì�´ìš© 못하는 경우ë�„ 있습니다.
ë˜�한, ëª¨ë“ ë¶„ì•¼ì—� 있어 ì „ë¬¸ê°€ëŠ” 존재하지 않습니다. ê·¸ë ‡ë‹¤ê³ í•´ì„œ, ìž�ì‹ ì�˜ ì „ë¬¸ ì˜�ì—ë§Œ ì�¼ì�„ 하면 ê·¸ 프로ì �트는 좌초하기 쉽습니다. (ì�´ ë§�ì�´ ì�´í•´ê°€ ë�˜ì§€ 않으면 Pete McBreenì�˜ Software Craftsmanshipì�„ ì�½ì–´ë³´ì‹œê¸¸) ê·¸ 사람ì�´ ë¹ ì ¸ë‚˜ê°€ 버리면 아무ë�„ ê·¸ 사람ì�˜ ìž�리를 매꿔주기가 ì–´ë µê¸° 때문입니다. ë”°ë�¼ì„œ PairProgrammingì�„ 통해 ì§€ì‹� ê³µìœ ì™€ 팀 빌딩ì�„ 합니다. 서로 배우는 것, ì�´ê²ƒì�´ PairProgrammingì�˜ 핵심입니다. 그런ë�° "배운다는 것"ì�€ ê¼ ì‹¤ë ¥ì�˜ ë¶ˆê· í˜• ìƒ�태ì—�서 ìƒ�대ì �으로 "ì �게 아는 사람" 쪽ì—�서만 ë°œìƒ�하는 것ì�´ 아닙니다.
ê·¸ë¦¬ê³ íŒ€ ë‚´ë¶€ì—� ìƒ�대ì �으로 ì‹¤ë ¥ì�´ 부족한 사람ì�´ 있ì�„ 경우 XPì—�서는 ì�´ 사람ì�„ 내보낼 것ì�¸ì§€ 아니면 그대로 쓸 것ì�¸ì§€ 여러면(ì�´ë“�/비용)ì—�서 íŒ�단ì�„ 합니다. 만약 그대로 ì�¨ì•¼í•˜ëŠ” ìƒ�황ì�´ë�¼ë©´ PairProgrammingì�´ 아주 핵심ì �ì�¸ 요소가 ë�©ë‹ˆë‹¤.
만약 ëª¨ë“ ë¶„ì•¼ì—� 왕초보ë�¼ë©´ 그런 사람ì�€ 업계ì—�서 쓸 ì�´ìœ ê°€ 없습니다. 그런 사람ì�„ 팀 구성ì›� 중 하나로 ì•‰í˜€ë†“ê³ ì™•ê³ ìˆ˜ê°€ 함께 PairProgrammingì�„ í•´ì•¼í• ìƒ�ì‹�ì � ì�´ìœ ê°€ ì „í˜€ 없습니다. XPì—�서 ì�´ëŸ° 걸ì�„ ë§�하는 것ì�´ 아님ì�„ ìƒ�기해 주길 ë°”ëž�니다.
--김창준
See Also PairProgrammingForGroupStudy









