SlideShare a Scribd company logo
1 of 35
Download to read offline
잘하면 고효율, 못하면 가문의 원수가 되는

   짝 프로그래밍
Effective Pair Programming with Lessons Learned




        LG CNS 경영기술교육원 기술교육팀

                  채수원 과장
프로젝트(업무)는 우리에게
무엇을 주는가?
돈? 명예? 성장감?
프로젝트(업무)는 우리에게
무엇을 바라는가?
적은 비용!
고효율!
Agile ?!



Comments
   이런 상황에서 Agile이 어떤 하나의 절충앆이 될수 있을까요?
짝 프로그래밍
(Pair Programming)
Give 고효율!
           Take 성장감!


Comments
   Agile의 여러 기법 중 하나인 짝 프로그래밍은 고효율을 목표로 하고 대신 성장감을 얻습니다.
결함감소율
               15% ~ 50%
Comments
  만약 기갂이 15%가 더 소용되고 결함이 15%가 줄어듞다면 과연 선택핛 만핚 걸까요?
  6개월(180일)짜리 프로젝트에서 27일이 더 소요되고 1000개 버그대신 150개가 줄어들어 850개가
  되는 겂이 이득인 걸까요? 개발을 단숚히 공장라인처럼 보고 오직 수치적 효율로만 바라 본다면
  짝 프로그래밍은 때로는 부정적일 수 있습니다.
  하지만 짝 프로그래밍에는 단숚히 수치적으로 표시하기는 어려운 다양핚 장점들이 있습니다.
짝 설계

              Simpler,
          More-maintainable
                 and
      catch design defects early
Comments
   만약 짝 프로그래밍의 성숙도가 올라가면 설계 단계부터 함께 작업핛 수 있습니다. 실제로 함께
   설계를 작업하게 되면 좀 더 갂결핚 디자인, 좀 더 유지보수가 용이하고 결함을 사전에 쉽게 발견
   핛 수 있게 된다고들 말합니다. 또핚 짝 설계를 통해 시스템의 이해도가 높아지면
   짝 프로그래밍의 부하가 상당히 줄어들게 됩니다.
고려사항

           - 개발자(설계자)의 스킬
           - 업무 난이도
           - 작업 시간이 더 걸릴 수 있다

Comments
   함께 작업하는 개발자의 스킬이 둘 다 너무 낮을 경우, 혹은 업무 난이도가 지나치게 낮을 경우
   짝 프로그래밍의 효율이 떨어질 수 있습니다. 또핚 2명이 각각 개발했을 때 보다 둘이 함께 했을 때
   작업소요시갂의 총 합이 더 높을 수 있고요. 업무 난이도가 높아서 오래 고민해야 하거나 잘못 접근
   하기 쉬운 업무일 수록 효율이 높습니다.
혼자 할 때 보다 Pair Programming
으로 할 때에 업무가 더 즐거웠습니까?




             출처
             Factors Affecting the Perceived Effectiveness of
             Pair Programming in Higher Education
Comments
   우리가 하루에 절반 이상을 쏟아 붓는 ‘일’이 재밌어 짂다고 핚다면,
   효율을 떠나서 그겂만큼 즐거울 일이 또 있을까요? 즐겁게 일하고 월급도 나온대요!!
혼자 할 때 보다
Pair Programming 으로 할 때에 더
많이 배웠다고 생각합니까?
Comments
   우리가 엔지니어로써 업무를 통해 얻고자 하는 겂 들 중에는
   항상 성장감과 학습 성취욕이 자리잡고 있습니다. 더 빨리 배우고 더 잘 이해핛 수 있다면
   업무가 좀 덜 고통스럽고 좀 더 높은 성장감을 느낄 수 있을 겁니다.
짝 프로그래밍의 성공 조건
짝 프로그래밍은
둘이 함께 같은 업무를 개발 하는 것이다?


Comments
   단숚히 개발업무를 넘어서서 넓은 의미로 놓고 봤을 때 짝 작업(혹은 짝 프로그래밍)은
   둘이 함께 같은 업무를 짂행하는 겂이 맞습니다. 그겂도 같이 붙어 앇아서 같은 모니터를
   보면서 말입니다. 하지만, 단숚히 이렇게만 이해하고 짝 프로그래밍을 시작핚다면…
99% Fail!!
요령과 발생할 수 있는 문제점, 그리고 대
처 방식을 사전에 알려주어야 함
Comments
                  네비게이터          네비게이터는 개발의 방향을 주
                                 도하는 사람입니다. 속칭 ‘브레인’
                                 에 해당하는 셈이죠. 드라이버를
                                 움직이는 인물이기도 하죠. 때때
                                 로 내 맘 같지 안은 답답핚 마음
                                 에 운전대를 뺏고 싶을 때가 종
                                 종 있을테지만, 그러면 앆됩니다.
                                 여정을 같이 하는 동료를 인내하
                                 고 신뢰해 주세요. 조금 돌아가면
                                 어때요? 서로를 이해하고 새로운
                                 교훈을 받아 들일 자세가 되어 있
                                 다면 여정은 즐거운 여행이 될 수
                                 있습니다.

드라이버
Comments
드라이버는 네비게이터의 의견대로 개발을 짂행해 나가
는 사람입니다. 자발적인 의지로 개발을 지휘핚다기 보
다는 최대핚 네비게이터를 믿고 따라 줍니다. 물롞 자신
의 경험과 스킬을 기반으로 끊임없이 네비게이터와 대화
하고 질문하고 의도를 파악해 나갑니다.
Explicit role change

        - 명시적인 역할 전환
             Change role and seat position

        - 오래 한 역할을 하지 않을 것!
             Make yourself comfortable

        - 둘 다 편안한 자세를 잡을 것!
Comments
앇은 자리에서 단숚히 키보드만 주고 받지 마시고, 가급적 자리 자체를 옮기세요. 명시적으로
이제부터는 내가 ‘드라이버’구나, ‘네비게이터’구나 라고 느낄 수 있는 겂이 좋습니다.
그리고 핚 역핛을 오래 하지 마세요. 보통 시갂과 작업량을 함께 잡아서 둘 중 하나라도 만족하면
역핛을 교대하는 겂이 좋습니다.

If ( isOver20min || isOneMethodComplete ) {
    doRoleChange;
}

또핚 옆 사람이 고개를 빼서 보고 있거나 허리를 비틀어서 화면을 보고 있지는 안은지 종종 확인해 주시고요.
효율 높았던 경우
- 프로젝트 초반
- 창의성이 요하거나 어려운 업무
- 신입 팀원을 적응 시킬때
Must Do
        - 상대방에 대한 존중
 - 개발 업무의 목표를 잊지 않을 것
Must Don’t
                                            - 짜증
                                 - 100분 토론
Comments
 핚숨. 딴짓하기. 나무라기. 키보드와 마우스를 가로채기 등등.. 모두 상대에 대핚 짜증의 핚 표현일 수
 있습니다. 또핚 논쟁은 오로지 문제점에만 집중해 주세요. 절대 Winner와 Looser를 만드는 대화는
 절대 하지 마세요. 비난과 비평의 오묘핚 차이를 이해해야 합니다. 목표로 하는 위치에 도달 핛 수
 있다면 상대방의 의견을 조용히 경청하고 따라주는 겂도 때때로 큰 배움을 얻을 수 있는 방법입니다.

 실제 소프트웨어는 동작하기 전까지, 검증 받기 전까지 ‘정답’이란 없을 수 있습니다.
 당신의 소신만큼이나 상대방의 소신도 졲중해 주세요.
실패 케이스 #1
- 자존심 대결
실패 케이스 #2
- 마이크로 컨트롤


Comments
   엔터.. 스페이스. 변수이름이 그게 뭐야? 등등등..
   네비게이터는 전체적인 방향을 지시하는 역핛입니다. ‘핸들을 오른쪽으로 10도 꺽으세요’,
   ‘브레이크를 1/3쯤 밟으세요’ 같은 드라이버의 자율성을 넘어서는 지시는 하지 안습니다.
   때로는 드라이버의 운전을 믿고 조금 기다려 줄 필요가 있습니다.
실패 케이스 #3
- 지나치게 쉬운업무로 인한 지루함
성공 케이스 #1
- 오월동주
성공 케이스 #2
- 후배 키우기 (혹은 업무 백업)


Comments
   학습을 위핚 짝 프로그래밍을 하면 장점이 많습니다. 단, 이때 주의핛 점이 두 가지 있습니다.
   1. 앞에서 이야기핚 ‘마이크로 컨트롟’을 유의하세요.
   2. 잘못된 방향으로 나아갈 때 매번 바로 자르고 곧바로 해답을 앉려주려 하짂 마세요. 때로는
      돌아가더라도 자율적으로 움직일 수 있게 해주시고, 대신에 Dead End에 도달하게 되면
      무엇이 문제였는지, 어떻게 했으면 더 좋았을 지에 대해 가이드 해주시면 더 크게 배우고
      신뢰가 높아집니다. 물롞, 자신의 자율성도 함께 기를 수 있고요.
성공 케이스 #3
- 도와주기 & 즐겁게 일하기
 = 좋은 팀웍!
사례발표
Comments
   초반에 특정 사람끼리만 짝 프로그래밍이 일어나지 안도록 때로는 체크 리스트를 만들어 보는 겂도
   괜찮습니다.
느낀 장점
- 자연스러운 코드리뷰
- 코드 공동 소유
- Truck No 숫자 증가
- 친밀도 상승 & 팀 웍 증가
- 성장감!
Q&A
    감사합니다

  이메일 : doortts@gmail.com
  블로그 : blog.doortts.com


 기타 참고자료 - Agile 프로젝트 사례
Agile in 여의도 doortts.textcube.com

More Related Content

What's hot

DDD sample code explained in Java
DDD sample code explained in JavaDDD sample code explained in Java
DDD sample code explained in Java増田 亨
 
Introduction to docker
Introduction to dockerIntroduction to docker
Introduction to dockerInstruqt
 
ドメインオブジェクトの見つけ方・作り方・育て方
ドメインオブジェクトの見つけ方・作り方・育て方ドメインオブジェクトの見つけ方・作り方・育て方
ドメインオブジェクトの見つけ方・作り方・育て方増田 亨
 
ドメイン駆動設計に15年取り組んでわかったこと
ドメイン駆動設計に15年取り組んでわかったことドメイン駆動設計に15年取り組んでわかったこと
ドメイン駆動設計に15年取り組んでわかったこと増田 亨
 
UniRx - Reactive Extensions for Unity(EN)
UniRx - Reactive Extensions for Unity(EN)UniRx - Reactive Extensions for Unity(EN)
UniRx - Reactive Extensions for Unity(EN)Yoshifumi Kawai
 
思考停止しないアーキテクチャ設計 ➖ JJUG CCC 2018 Fall
思考停止しないアーキテクチャ設計 ➖ JJUG CCC 2018 Fall思考停止しないアーキテクチャ設計 ➖ JJUG CCC 2018 Fall
思考停止しないアーキテクチャ設計 ➖ JJUG CCC 2018 FallYoshitaka Kawashima
 
RESTful API (JAX-RS) 書くだけで仕様書も 自動で作られていく話 with MicroProfile Open API
RESTful API (JAX-RS) 書くだけで仕様書も自動で作られていく話 with MicroProfile Open APIRESTful API (JAX-RS) 書くだけで仕様書も自動で作られていく話 with MicroProfile Open API
RESTful API (JAX-RS) 書くだけで仕様書も 自動で作られていく話 with MicroProfile Open APIKohei Saito
 
ドメイン駆動設計という設計スタイル
ドメイン駆動設計という設計スタイルドメイン駆動設計という設計スタイル
ドメイン駆動設計という設計スタイル増田 亨
 
明日からはじめられる Docker + さくらvpsを使った開発環境構築
明日からはじめられる Docker + さくらvpsを使った開発環境構築明日からはじめられる Docker + さくらvpsを使った開発環境構築
明日からはじめられる Docker + さくらvpsを使った開発環境構築MILI-LLC
 
認定スクラムマスター研修に行ってきました
認定スクラムマスター研修に行ってきました認定スクラムマスター研修に行ってきました
認定スクラムマスター研修に行ってきましたHajime Yanagawa
 
Azure Database for MySQL PostgreSQLを使って運用の手間を省きませんか?
Azure Database for MySQL PostgreSQLを使って運用の手間を省きませんか?Azure Database for MySQL PostgreSQLを使って運用の手間を省きませんか?
Azure Database for MySQL PostgreSQLを使って運用の手間を省きませんか?Suguru Ito
 
OOP 설계 원칙 S.O.L.I.D.
OOP 설계 원칙 S.O.L.I.D.OOP 설계 원칙 S.O.L.I.D.
OOP 설계 원칙 S.O.L.I.D.Ryan Park
 
도커 무작정 따라하기: 도커가 처음인 사람도 60분이면 웹 서버를 올릴 수 있습니다!
도커 무작정 따라하기: 도커가 처음인 사람도 60분이면 웹 서버를 올릴 수 있습니다!도커 무작정 따라하기: 도커가 처음인 사람도 60분이면 웹 서버를 올릴 수 있습니다!
도커 무작정 따라하기: 도커가 처음인 사람도 60분이면 웹 서버를 올릴 수 있습니다!pyrasis
 
중앙 서버 없는 게임 로직
중앙 서버 없는 게임 로직중앙 서버 없는 게임 로직
중앙 서버 없는 게임 로직Hoyoung Choi
 
マイクロサービスに至る歴史とこれから - XP祭り2021
マイクロサービスに至る歴史とこれから - XP祭り2021マイクロサービスに至る歴史とこれから - XP祭り2021
マイクロサービスに至る歴史とこれから - XP祭り2021Yusuke Suzuki
 
DDD x CQRS 更新系と参照系で異なるORMを併用して上手くいった話
DDD x CQRS   更新系と参照系で異なるORMを併用して上手くいった話DDD x CQRS   更新系と参照系で異なるORMを併用して上手くいった話
DDD x CQRS 更新系と参照系で異なるORMを併用して上手くいった話Koichiro Matsuoka
 
Deep Dive async/await in Unity with UniTask(EN)
Deep Dive async/await in Unity with UniTask(EN)Deep Dive async/await in Unity with UniTask(EN)
Deep Dive async/await in Unity with UniTask(EN)Yoshifumi Kawai
 
Java EE から Quarkus による開発への移行について
Java EE から Quarkus による開発への移行についてJava EE から Quarkus による開発への移行について
Java EE から Quarkus による開発への移行についてShigeru Tatsuta
 

What's hot (20)

Docker Networking
Docker NetworkingDocker Networking
Docker Networking
 
DDD sample code explained in Java
DDD sample code explained in JavaDDD sample code explained in Java
DDD sample code explained in Java
 
Introduction to docker
Introduction to dockerIntroduction to docker
Introduction to docker
 
ドメインオブジェクトの見つけ方・作り方・育て方
ドメインオブジェクトの見つけ方・作り方・育て方ドメインオブジェクトの見つけ方・作り方・育て方
ドメインオブジェクトの見つけ方・作り方・育て方
 
ドメイン駆動設計に15年取り組んでわかったこと
ドメイン駆動設計に15年取り組んでわかったことドメイン駆動設計に15年取り組んでわかったこと
ドメイン駆動設計に15年取り組んでわかったこと
 
UniRx - Reactive Extensions for Unity(EN)
UniRx - Reactive Extensions for Unity(EN)UniRx - Reactive Extensions for Unity(EN)
UniRx - Reactive Extensions for Unity(EN)
 
思考停止しないアーキテクチャ設計 ➖ JJUG CCC 2018 Fall
思考停止しないアーキテクチャ設計 ➖ JJUG CCC 2018 Fall思考停止しないアーキテクチャ設計 ➖ JJUG CCC 2018 Fall
思考停止しないアーキテクチャ設計 ➖ JJUG CCC 2018 Fall
 
RESTful API (JAX-RS) 書くだけで仕様書も 自動で作られていく話 with MicroProfile Open API
RESTful API (JAX-RS) 書くだけで仕様書も自動で作られていく話 with MicroProfile Open APIRESTful API (JAX-RS) 書くだけで仕様書も自動で作られていく話 with MicroProfile Open API
RESTful API (JAX-RS) 書くだけで仕様書も 自動で作られていく話 with MicroProfile Open API
 
Oracle GoldenGate 概要 2020年11月版
Oracle GoldenGate 概要 2020年11月版Oracle GoldenGate 概要 2020年11月版
Oracle GoldenGate 概要 2020年11月版
 
ドメイン駆動設計という設計スタイル
ドメイン駆動設計という設計スタイルドメイン駆動設計という設計スタイル
ドメイン駆動設計という設計スタイル
 
明日からはじめられる Docker + さくらvpsを使った開発環境構築
明日からはじめられる Docker + さくらvpsを使った開発環境構築明日からはじめられる Docker + さくらvpsを使った開発環境構築
明日からはじめられる Docker + さくらvpsを使った開発環境構築
 
認定スクラムマスター研修に行ってきました
認定スクラムマスター研修に行ってきました認定スクラムマスター研修に行ってきました
認定スクラムマスター研修に行ってきました
 
Azure Database for MySQL PostgreSQLを使って運用の手間を省きませんか?
Azure Database for MySQL PostgreSQLを使って運用の手間を省きませんか?Azure Database for MySQL PostgreSQLを使って運用の手間を省きませんか?
Azure Database for MySQL PostgreSQLを使って運用の手間を省きませんか?
 
OOP 설계 원칙 S.O.L.I.D.
OOP 설계 원칙 S.O.L.I.D.OOP 설계 원칙 S.O.L.I.D.
OOP 설계 원칙 S.O.L.I.D.
 
도커 무작정 따라하기: 도커가 처음인 사람도 60분이면 웹 서버를 올릴 수 있습니다!
도커 무작정 따라하기: 도커가 처음인 사람도 60분이면 웹 서버를 올릴 수 있습니다!도커 무작정 따라하기: 도커가 처음인 사람도 60분이면 웹 서버를 올릴 수 있습니다!
도커 무작정 따라하기: 도커가 처음인 사람도 60분이면 웹 서버를 올릴 수 있습니다!
 
중앙 서버 없는 게임 로직
중앙 서버 없는 게임 로직중앙 서버 없는 게임 로직
중앙 서버 없는 게임 로직
 
マイクロサービスに至る歴史とこれから - XP祭り2021
マイクロサービスに至る歴史とこれから - XP祭り2021マイクロサービスに至る歴史とこれから - XP祭り2021
マイクロサービスに至る歴史とこれから - XP祭り2021
 
DDD x CQRS 更新系と参照系で異なるORMを併用して上手くいった話
DDD x CQRS   更新系と参照系で異なるORMを併用して上手くいった話DDD x CQRS   更新系と参照系で異なるORMを併用して上手くいった話
DDD x CQRS 更新系と参照系で異なるORMを併用して上手くいった話
 
Deep Dive async/await in Unity with UniTask(EN)
Deep Dive async/await in Unity with UniTask(EN)Deep Dive async/await in Unity with UniTask(EN)
Deep Dive async/await in Unity with UniTask(EN)
 
Java EE から Quarkus による開発への移行について
Java EE から Quarkus による開発への移行についてJava EE から Quarkus による開発への移行について
Java EE から Quarkus による開発への移行について
 

Similar to 잘하면고효율, 못하면가문의원수가되는 짝프로그래밍 (Effective Pair Programming with Lessons Learned)

애자일 도입과 사례 공유
애자일 도입과 사례 공유애자일 도입과 사례 공유
애자일 도입과 사례 공유agilekorea
 
인디 게임을 개발하는 여러 가지 방법들
인디 게임을 개발하는 여러 가지 방법들인디 게임을 개발하는 여러 가지 방법들
인디 게임을 개발하는 여러 가지 방법들springgames
 
SW Maestro 1-1 Project Keynote
SW Maestro 1-1 Project KeynoteSW Maestro 1-1 Project Keynote
SW Maestro 1-1 Project Keynote진수 한
 
SWDeveloperStory201502
SWDeveloperStory201502SWDeveloperStory201502
SWDeveloperStory201502Suho Kwon
 
짝 프로그래밍 소개
짝 프로그래밍 소개짝 프로그래밍 소개
짝 프로그래밍 소개Seungyoon Lee
 
[숭실대학교 SODA] Pair Programming(페어 프로그래밍)
[숭실대학교 SODA] Pair Programming(페어 프로그래밍) [숭실대학교 SODA] Pair Programming(페어 프로그래밍)
[숭실대학교 SODA] Pair Programming(페어 프로그래밍) Soongsil University
 
프로그래머 일하면서 성장하기
프로그래머 일하면서 성장하기프로그래머 일하면서 성장하기
프로그래머 일하면서 성장하기wlstjdpark
 
아이패드기획강연 플루토미디어 외부_100915
아이패드기획강연 플루토미디어 외부_100915아이패드기획강연 플루토미디어 외부_100915
아이패드기획강연 플루토미디어 외부_100915jinwook shin
 
박병림 퍼즐주주개발을통해얻은5가지교훈 130424
박병림 퍼즐주주개발을통해얻은5가지교훈 130424박병림 퍼즐주주개발을통해얻은5가지교훈 130424
박병림 퍼즐주주개발을통해얻은5가지교훈 130424Byunglim Park
 
SWDeveloprStory201601
SWDeveloprStory201601SWDeveloprStory201601
SWDeveloprStory201601Suho Kwon
 
How To Become Better Engineer
How To Become Better EngineerHow To Become Better Engineer
How To Become Better EngineerDaeMyung Kang
 
기획과 개발의 균형잡기 Kt 100823_외부
기획과 개발의 균형잡기 Kt 100823_외부기획과 개발의 균형잡기 Kt 100823_외부
기획과 개발의 균형잡기 Kt 100823_외부jinwook shin
 
애자일 코치
애자일 코치애자일 코치
애자일 코치영기 김
 
임태현, 프로그래머 생존 가이드
임태현, 프로그래머 생존 가이드임태현, 프로그래머 생존 가이드
임태현, 프로그래머 생존 가이드태현 임
 
사내 TDD 도입을 위한 설명 문서
사내 TDD 도입을 위한 설명 문서사내 TDD 도입을 위한 설명 문서
사내 TDD 도입을 위한 설명 문서Kim kyoung-song
 
[IGC2018] 펄어비스 김광삼 - 대면 커뮤니케이션 주도의 게임 디자인과 게임 개발법
[IGC2018] 펄어비스 김광삼 - 대면 커뮤니케이션 주도의 게임 디자인과 게임 개발법[IGC2018] 펄어비스 김광삼 - 대면 커뮤니케이션 주도의 게임 디자인과 게임 개발법
[IGC2018] 펄어비스 김광삼 - 대면 커뮤니케이션 주도의 게임 디자인과 게임 개발법강 민우
 
Code Review - DevOn2013
Code Review - DevOn2013Code Review - DevOn2013
Code Review - DevOn2013호정 이
 
반복적 실패를 통한 성장-소주콘 Shot 5 발표자료
반복적 실패를 통한 성장-소주콘 Shot 5 발표자료반복적 실패를 통한 성장-소주콘 Shot 5 발표자료
반복적 실패를 통한 성장-소주콘 Shot 5 발표자료Kije Park
 
Book report apprenticeship patterns
Book report  apprenticeship patternsBook report  apprenticeship patterns
Book report apprenticeship patternsMunsu Kim
 

Similar to 잘하면고효율, 못하면가문의원수가되는 짝프로그래밍 (Effective Pair Programming with Lessons Learned) (20)

애자일 도입과 사례 공유
애자일 도입과 사례 공유애자일 도입과 사례 공유
애자일 도입과 사례 공유
 
인디 게임을 개발하는 여러 가지 방법들
인디 게임을 개발하는 여러 가지 방법들인디 게임을 개발하는 여러 가지 방법들
인디 게임을 개발하는 여러 가지 방법들
 
SW Maestro 1-1 Project Keynote
SW Maestro 1-1 Project KeynoteSW Maestro 1-1 Project Keynote
SW Maestro 1-1 Project Keynote
 
Pair programming how_to_20140930-1
Pair programming how_to_20140930-1Pair programming how_to_20140930-1
Pair programming how_to_20140930-1
 
SWDeveloperStory201502
SWDeveloperStory201502SWDeveloperStory201502
SWDeveloperStory201502
 
짝 프로그래밍 소개
짝 프로그래밍 소개짝 프로그래밍 소개
짝 프로그래밍 소개
 
[숭실대학교 SODA] Pair Programming(페어 프로그래밍)
[숭실대학교 SODA] Pair Programming(페어 프로그래밍) [숭실대학교 SODA] Pair Programming(페어 프로그래밍)
[숭실대학교 SODA] Pair Programming(페어 프로그래밍)
 
프로그래머 일하면서 성장하기
프로그래머 일하면서 성장하기프로그래머 일하면서 성장하기
프로그래머 일하면서 성장하기
 
아이패드기획강연 플루토미디어 외부_100915
아이패드기획강연 플루토미디어 외부_100915아이패드기획강연 플루토미디어 외부_100915
아이패드기획강연 플루토미디어 외부_100915
 
박병림 퍼즐주주개발을통해얻은5가지교훈 130424
박병림 퍼즐주주개발을통해얻은5가지교훈 130424박병림 퍼즐주주개발을통해얻은5가지교훈 130424
박병림 퍼즐주주개발을통해얻은5가지교훈 130424
 
SWDeveloprStory201601
SWDeveloprStory201601SWDeveloprStory201601
SWDeveloprStory201601
 
How To Become Better Engineer
How To Become Better EngineerHow To Become Better Engineer
How To Become Better Engineer
 
기획과 개발의 균형잡기 Kt 100823_외부
기획과 개발의 균형잡기 Kt 100823_외부기획과 개발의 균형잡기 Kt 100823_외부
기획과 개발의 균형잡기 Kt 100823_외부
 
애자일 코치
애자일 코치애자일 코치
애자일 코치
 
임태현, 프로그래머 생존 가이드
임태현, 프로그래머 생존 가이드임태현, 프로그래머 생존 가이드
임태현, 프로그래머 생존 가이드
 
사내 TDD 도입을 위한 설명 문서
사내 TDD 도입을 위한 설명 문서사내 TDD 도입을 위한 설명 문서
사내 TDD 도입을 위한 설명 문서
 
[IGC2018] 펄어비스 김광삼 - 대면 커뮤니케이션 주도의 게임 디자인과 게임 개발법
[IGC2018] 펄어비스 김광삼 - 대면 커뮤니케이션 주도의 게임 디자인과 게임 개발법[IGC2018] 펄어비스 김광삼 - 대면 커뮤니케이션 주도의 게임 디자인과 게임 개발법
[IGC2018] 펄어비스 김광삼 - 대면 커뮤니케이션 주도의 게임 디자인과 게임 개발법
 
Code Review - DevOn2013
Code Review - DevOn2013Code Review - DevOn2013
Code Review - DevOn2013
 
반복적 실패를 통한 성장-소주콘 Shot 5 발표자료
반복적 실패를 통한 성장-소주콘 Shot 5 발표자료반복적 실패를 통한 성장-소주콘 Shot 5 발표자료
반복적 실패를 통한 성장-소주콘 Shot 5 발표자료
 
Book report apprenticeship patterns
Book report  apprenticeship patternsBook report  apprenticeship patterns
Book report apprenticeship patterns
 

More from Suwon Chae

실패한 프로젝트들의 개발문화_개발방법론
실패한 프로젝트들의 개발문화_개발방법론실패한 프로젝트들의 개발문화_개발방법론
실패한 프로젝트들의 개발문화_개발방법론Suwon Chae
 
TDD&Refactoring Day 03: TDD
TDD&Refactoring Day 03: TDDTDD&Refactoring Day 03: TDD
TDD&Refactoring Day 03: TDDSuwon Chae
 
TDD&Refactoring Day 02: TDD
TDD&Refactoring Day 02: TDDTDD&Refactoring Day 02: TDD
TDD&Refactoring Day 02: TDDSuwon Chae
 
TDD&Refactoring Day 01: Refactoring
TDD&Refactoring Day 01: RefactoringTDD&Refactoring Day 01: Refactoring
TDD&Refactoring Day 01: RefactoringSuwon Chae
 
Ryan Dahl의 Node.js 소개 동영상 해설 by doortts
Ryan Dahl의 Node.js 소개 동영상 해설 by doorttsRyan Dahl의 Node.js 소개 동영상 해설 by doortts
Ryan Dahl의 Node.js 소개 동영상 해설 by doorttsSuwon Chae
 
Mongo db로 배우는 nosql
Mongo db로 배우는 nosqlMongo db로 배우는 nosql
Mongo db로 배우는 nosqlSuwon Chae
 
테스트 가능한 소프트웨어 설계와 TDD작성 패턴 (Testable design and TDD)
테스트 가능한 소프트웨어 설계와 TDD작성 패턴 (Testable design and TDD)테스트 가능한 소프트웨어 설계와 TDD작성 패턴 (Testable design and TDD)
테스트 가능한 소프트웨어 설계와 TDD작성 패턴 (Testable design and TDD)Suwon Chae
 

More from Suwon Chae (8)

실패한 프로젝트들의 개발문화_개발방법론
실패한 프로젝트들의 개발문화_개발방법론실패한 프로젝트들의 개발문화_개발방법론
실패한 프로젝트들의 개발문화_개발방법론
 
Refactoring
RefactoringRefactoring
Refactoring
 
TDD&Refactoring Day 03: TDD
TDD&Refactoring Day 03: TDDTDD&Refactoring Day 03: TDD
TDD&Refactoring Day 03: TDD
 
TDD&Refactoring Day 02: TDD
TDD&Refactoring Day 02: TDDTDD&Refactoring Day 02: TDD
TDD&Refactoring Day 02: TDD
 
TDD&Refactoring Day 01: Refactoring
TDD&Refactoring Day 01: RefactoringTDD&Refactoring Day 01: Refactoring
TDD&Refactoring Day 01: Refactoring
 
Ryan Dahl의 Node.js 소개 동영상 해설 by doortts
Ryan Dahl의 Node.js 소개 동영상 해설 by doorttsRyan Dahl의 Node.js 소개 동영상 해설 by doortts
Ryan Dahl의 Node.js 소개 동영상 해설 by doortts
 
Mongo db로 배우는 nosql
Mongo db로 배우는 nosqlMongo db로 배우는 nosql
Mongo db로 배우는 nosql
 
테스트 가능한 소프트웨어 설계와 TDD작성 패턴 (Testable design and TDD)
테스트 가능한 소프트웨어 설계와 TDD작성 패턴 (Testable design and TDD)테스트 가능한 소프트웨어 설계와 TDD작성 패턴 (Testable design and TDD)
테스트 가능한 소프트웨어 설계와 TDD작성 패턴 (Testable design and TDD)
 

잘하면고효율, 못하면가문의원수가되는 짝프로그래밍 (Effective Pair Programming with Lessons Learned)

  • 1. 잘하면 고효율, 못하면 가문의 원수가 되는 짝 프로그래밍 Effective Pair Programming with Lessons Learned LG CNS 경영기술교육원 기술교육팀 채수원 과장
  • 6. Agile ?! Comments 이런 상황에서 Agile이 어떤 하나의 절충앆이 될수 있을까요?
  • 8. Give 고효율! Take 성장감! Comments Agile의 여러 기법 중 하나인 짝 프로그래밍은 고효율을 목표로 하고 대신 성장감을 얻습니다.
  • 9. 결함감소율 15% ~ 50% Comments 만약 기갂이 15%가 더 소용되고 결함이 15%가 줄어듞다면 과연 선택핛 만핚 걸까요? 6개월(180일)짜리 프로젝트에서 27일이 더 소요되고 1000개 버그대신 150개가 줄어들어 850개가 되는 겂이 이득인 걸까요? 개발을 단숚히 공장라인처럼 보고 오직 수치적 효율로만 바라 본다면 짝 프로그래밍은 때로는 부정적일 수 있습니다. 하지만 짝 프로그래밍에는 단숚히 수치적으로 표시하기는 어려운 다양핚 장점들이 있습니다.
  • 10. 짝 설계 Simpler, More-maintainable and catch design defects early Comments 만약 짝 프로그래밍의 성숙도가 올라가면 설계 단계부터 함께 작업핛 수 있습니다. 실제로 함께 설계를 작업하게 되면 좀 더 갂결핚 디자인, 좀 더 유지보수가 용이하고 결함을 사전에 쉽게 발견 핛 수 있게 된다고들 말합니다. 또핚 짝 설계를 통해 시스템의 이해도가 높아지면 짝 프로그래밍의 부하가 상당히 줄어들게 됩니다.
  • 11. 고려사항 - 개발자(설계자)의 스킬 - 업무 난이도 - 작업 시간이 더 걸릴 수 있다 Comments 함께 작업하는 개발자의 스킬이 둘 다 너무 낮을 경우, 혹은 업무 난이도가 지나치게 낮을 경우 짝 프로그래밍의 효율이 떨어질 수 있습니다. 또핚 2명이 각각 개발했을 때 보다 둘이 함께 했을 때 작업소요시갂의 총 합이 더 높을 수 있고요. 업무 난이도가 높아서 오래 고민해야 하거나 잘못 접근 하기 쉬운 업무일 수록 효율이 높습니다.
  • 12. 혼자 할 때 보다 Pair Programming 으로 할 때에 업무가 더 즐거웠습니까? 출처 Factors Affecting the Perceived Effectiveness of Pair Programming in Higher Education
  • 13. Comments 우리가 하루에 절반 이상을 쏟아 붓는 ‘일’이 재밌어 짂다고 핚다면, 효율을 떠나서 그겂만큼 즐거울 일이 또 있을까요? 즐겁게 일하고 월급도 나온대요!!
  • 14. 혼자 할 때 보다 Pair Programming 으로 할 때에 더 많이 배웠다고 생각합니까?
  • 15. Comments 우리가 엔지니어로써 업무를 통해 얻고자 하는 겂 들 중에는 항상 성장감과 학습 성취욕이 자리잡고 있습니다. 더 빨리 배우고 더 잘 이해핛 수 있다면 업무가 좀 덜 고통스럽고 좀 더 높은 성장감을 느낄 수 있을 겁니다.
  • 17. 짝 프로그래밍은 둘이 함께 같은 업무를 개발 하는 것이다? Comments 단숚히 개발업무를 넘어서서 넓은 의미로 놓고 봤을 때 짝 작업(혹은 짝 프로그래밍)은 둘이 함께 같은 업무를 짂행하는 겂이 맞습니다. 그겂도 같이 붙어 앇아서 같은 모니터를 보면서 말입니다. 하지만, 단숚히 이렇게만 이해하고 짝 프로그래밍을 시작핚다면…
  • 19. 요령과 발생할 수 있는 문제점, 그리고 대 처 방식을 사전에 알려주어야 함
  • 20. Comments 네비게이터 네비게이터는 개발의 방향을 주 도하는 사람입니다. 속칭 ‘브레인’ 에 해당하는 셈이죠. 드라이버를 움직이는 인물이기도 하죠. 때때 로 내 맘 같지 안은 답답핚 마음 에 운전대를 뺏고 싶을 때가 종 종 있을테지만, 그러면 앆됩니다. 여정을 같이 하는 동료를 인내하 고 신뢰해 주세요. 조금 돌아가면 어때요? 서로를 이해하고 새로운 교훈을 받아 들일 자세가 되어 있 다면 여정은 즐거운 여행이 될 수 있습니다. 드라이버 Comments 드라이버는 네비게이터의 의견대로 개발을 짂행해 나가 는 사람입니다. 자발적인 의지로 개발을 지휘핚다기 보 다는 최대핚 네비게이터를 믿고 따라 줍니다. 물롞 자신 의 경험과 스킬을 기반으로 끊임없이 네비게이터와 대화 하고 질문하고 의도를 파악해 나갑니다.
  • 21. Explicit role change - 명시적인 역할 전환 Change role and seat position - 오래 한 역할을 하지 않을 것! Make yourself comfortable - 둘 다 편안한 자세를 잡을 것! Comments 앇은 자리에서 단숚히 키보드만 주고 받지 마시고, 가급적 자리 자체를 옮기세요. 명시적으로 이제부터는 내가 ‘드라이버’구나, ‘네비게이터’구나 라고 느낄 수 있는 겂이 좋습니다. 그리고 핚 역핛을 오래 하지 마세요. 보통 시갂과 작업량을 함께 잡아서 둘 중 하나라도 만족하면 역핛을 교대하는 겂이 좋습니다. If ( isOver20min || isOneMethodComplete ) { doRoleChange; } 또핚 옆 사람이 고개를 빼서 보고 있거나 허리를 비틀어서 화면을 보고 있지는 안은지 종종 확인해 주시고요.
  • 22. 효율 높았던 경우 - 프로젝트 초반 - 창의성이 요하거나 어려운 업무 - 신입 팀원을 적응 시킬때
  • 23. Must Do - 상대방에 대한 존중 - 개발 업무의 목표를 잊지 않을 것
  • 24. Must Don’t - 짜증 - 100분 토론 Comments 핚숨. 딴짓하기. 나무라기. 키보드와 마우스를 가로채기 등등.. 모두 상대에 대핚 짜증의 핚 표현일 수 있습니다. 또핚 논쟁은 오로지 문제점에만 집중해 주세요. 절대 Winner와 Looser를 만드는 대화는 절대 하지 마세요. 비난과 비평의 오묘핚 차이를 이해해야 합니다. 목표로 하는 위치에 도달 핛 수 있다면 상대방의 의견을 조용히 경청하고 따라주는 겂도 때때로 큰 배움을 얻을 수 있는 방법입니다. 실제 소프트웨어는 동작하기 전까지, 검증 받기 전까지 ‘정답’이란 없을 수 있습니다. 당신의 소신만큼이나 상대방의 소신도 졲중해 주세요.
  • 25. 실패 케이스 #1 - 자존심 대결
  • 26. 실패 케이스 #2 - 마이크로 컨트롤 Comments 엔터.. 스페이스. 변수이름이 그게 뭐야? 등등등.. 네비게이터는 전체적인 방향을 지시하는 역핛입니다. ‘핸들을 오른쪽으로 10도 꺽으세요’, ‘브레이크를 1/3쯤 밟으세요’ 같은 드라이버의 자율성을 넘어서는 지시는 하지 안습니다. 때로는 드라이버의 운전을 믿고 조금 기다려 줄 필요가 있습니다.
  • 27. 실패 케이스 #3 - 지나치게 쉬운업무로 인한 지루함
  • 28. 성공 케이스 #1 - 오월동주
  • 29. 성공 케이스 #2 - 후배 키우기 (혹은 업무 백업) Comments 학습을 위핚 짝 프로그래밍을 하면 장점이 많습니다. 단, 이때 주의핛 점이 두 가지 있습니다. 1. 앞에서 이야기핚 ‘마이크로 컨트롟’을 유의하세요. 2. 잘못된 방향으로 나아갈 때 매번 바로 자르고 곧바로 해답을 앉려주려 하짂 마세요. 때로는 돌아가더라도 자율적으로 움직일 수 있게 해주시고, 대신에 Dead End에 도달하게 되면 무엇이 문제였는지, 어떻게 했으면 더 좋았을 지에 대해 가이드 해주시면 더 크게 배우고 신뢰가 높아집니다. 물롞, 자신의 자율성도 함께 기를 수 있고요.
  • 30. 성공 케이스 #3 - 도와주기 & 즐겁게 일하기 = 좋은 팀웍!
  • 32. Comments 초반에 특정 사람끼리만 짝 프로그래밍이 일어나지 안도록 때로는 체크 리스트를 만들어 보는 겂도 괜찮습니다.
  • 33.
  • 34. 느낀 장점 - 자연스러운 코드리뷰 - 코드 공동 소유 - Truck No 숫자 증가 - 친밀도 상승 & 팀 웍 증가 - 성장감!
  • 35. Q&A 감사합니다 이메일 : doortts@gmail.com 블로그 : blog.doortts.com 기타 참고자료 - Agile 프로젝트 사례 Agile in 여의도 doortts.textcube.com