Upload
jaewon-choi
View
161
Download
6
Embed Size (px)
Citation preview
KeyValuePair 첫모임!XP와 Pair programming
발표자
•최재원
•아주대학교컴공, 수학전공
• (주)펜타큐브인턴
•관심분야:• System software
• Big data infrastructure
• GPGPU
2016. 6. 7. 2016 C++ study 2
반갑습니다!
•드디어첫모임!
•진행순서는다음과같습니다.• 유명한사람들이말하는 XP
• 발표자가말하는 XP
• 우리가해볼 XP
• 참고문헌
XP(eXtremeProgramming) 란?
XP란?
•철학이란뭔가요?• 임마누엘칸트, “철학은가르칠수없다. 다만철학함을가르칠수있을뿐이다.”
• XP란뭔가요?• 켄트백, “XP란사회적변화에관한것이다.”
• 그래서 XP가뭔가요…
XP란?
•오래되고효과가없는사회적습관들을버리고효과있는새로운습관을채택하는것.
•오늘내가기울인모든노력에대해자신을인정해주는것.
•내일은좀더잘해보려고애쓰는것.
XP란?
•팀전체가공유하는목표에내가얼마나기여했는지를잣대로자신을평가하는것.
•소프트웨어개발을하는중에도여러분의인간적욕구가운데일부를채우겠다고요구하는것.
XP의핵심아이디어
• **잦고효과적인의사소통을지향하자**
•내가, 네가, 우리가사람임을인정하자
•아기의걸음처럼: 작은보폭으로, 우선순위가높은기능부터
•깨끗한소프트웨어를만들기위한여러노력• 페어프로그래밍
• 빠른릴리즈주기
• 단위테스트, 기능테스트, 그리고테스트자동화
XP가대처할수있는것들
•비용문제• 일정밀림
• 시스템이상
• 결함비율
• 이름뿐인풍부한기능
XP가대처할수있는것들
•커뮤니케이션문제• 비지니스에대한오해
• 비지니스의변화
• 직원교체
내가경험한 XP방법론으로써의 XP
방법론으로써의 XP –짝코딩
•건초염이옴.
•어쩔수없이키보드를못치는상태.
•회사이사님께서하신제안,• “이렇게된거, 짝프로그래밍으로간다!”
•이렇게된거, 회복하는한달동안매일짝코딩을하게되는데…
•켄트백은 ”출시를위한코드는페어프로그래밍을꼭하라” 라고주장.
방법론으로써의 XP –짝코딩
•우리가세운원칙 : “네비게이터” 와 “드라이버”를결정
•네비게이터• 옆에서이래라저래라하는역할
• 현재작업의방향성을결정• 단, 전체적인방향성, “이시간에무슨일을할까?”는함께정한다.
• 드라이버의작업에세세한실수를보정, 같이토론
• 아이디어나추상적인생각에여유를가지고작업
방법론으로써의 XP –짝코딩
•우리가세운원칙 : “네비게이터” 와 “드라이버”를결정
•드라이버• 네비게이터의노예
• 네비게이터의방향성대로코딩
• 네비게이터의방향성에대한피드백
• 코드에더집중한구체적인아이디어를내기좋음
방법론으로써의 XP –짝코딩
•실제적용
•손이아프던내가네비게이터, 이사님이드라이버를잡으심(죄송합니다)
•저원칙이외에특별한원칙을갖지않았지만,효과는확실했다.
•효율이실제로뛰어나서건초염이낫고도한동안은페어프로그래밍• 드라이버로전직하게된건안비밀…
방법론으로써의 XP –짝코딩
•실제적용
•안좋았던점• 처음에익숙해지는시간필요
• “굉장한”피로감.
• 한명이정신이나가면도움이안됨• 특히네비게이터가정신이나가면안됨!!
방법론으로써의 XP –짝코딩
•실제적용
•좋았던점• 서로에게배운다. 아주사소한것부터, 통찰력까지.
• 기쁨은나누면배가되고고통은나누면반이된다
• 내가힘들떄믿고의지할사람이있음
• 개발자끼리친해짐
• 가장중요한, “실제효율이증가!”
방법론으로써의 XP – CI
•실제 Jenkins를이용한개발은잘안해봄
•하지만, github을이용한 (부분적인) 지속적인통합은효과를많이봄!
•네이버 D2 FEST를출전하면서본격적으로익힘.
•질문: git은잘쓰시나요?
• Keyword: issue, pull request, wiki
방법론으로써의 XP – TDD
• Test Driven Development
•소프트웨어장인이라는책을읽고뽐뿌를받아시작
•원칙: 테스트를먼저작성하고, 그테스트에맞는코드를작성하라!
방법론으로써의 XP – TDD
•실제적용:
•현재 MFER 라는의학파형데이터인코더/디코더를 TDD를통해작성중
•단점:• 수련이필요함
• 하지만,켄트백과함께라면우린최고야!
• 적용이안되는분야도있음• AI, Interactive한 UX, Multithreading 상황등…
•장점:• 나머지다• 장난이고…
방법론으로써의 XP – TDD
•실제적용:
•장점:• Test가자동으로되기때문에느껴지는안정감
• 이제내가자유롭게수정해도상관없겠구나
• **잦은리팩토링이일어나므로코드질상승**• 코드는계속고민하고건드릴수록발전
• “쓸함수”를가정하므로코드질상승
• 쓰지않을함수를만들지않으므로생산성향상
내가경험한 XP가치로써의 XP
가치로써의 XP: 인간임을인정
•문제가있을수있음을인정한다.
•고로피드백을수용하고, 적극적으로제안한다.
•상대방을존중한다.
•차카게살자
가치로써의 XP: 인간임을인정
•실제사례:
•현재회사에서는내가의견을내면굉장히경청해주는편
•꼭내문제가아니더라도의견을낼수있게해주고, 실제로방향성을그에맞춰서가는경우도많았음.
•덕분에이사님들이나에게조언을하시더라도피드백으로느껴질뿐, 꼰대질로안느껴짐.
가치로써의 XP: 인간임을인정
•실제사례:
•항상실패하는경우는• 내가오만에가득찰때
• 커뮤니케이션이부족할때.
•실패해도된다: 회고하고반성하고그실수가나온요인을해결하면된다.
•항상대화하고문제를미리부각시킴으로써효과적으로풀어야하는문제를풀자!
가치로써의 XP: 가치의실현
•가장첫질문: “어떤가치를실현할까?
•모든선택이전에고민해볼것
•토론은일어날수밖에없다. 이때결정은권위나떼쓰는것이아니고, “우리의공통가치에부합하는가?”
•이게가능하려면항상모두가공통의가치를깊게공감해야한다.
•가치와상관없는기능은가감없이뺴버리자.
•커뮤니케이션이필요하다!
우리의 XP
어떻게할것인가 - 가치
•같이재밌게공부하고대화하자.
•내가생각하는우리모임의제 1 가치:
• “재미있게발전하자!”
•재미를침해하는것을배격하고, 어떻게하면재밌을수있을지
•발전을침해하는것을배격하고, 어떻게하면발전할수있을지
어떻게할것인가 - 방법
•함께할수있는것을하자,
• ”Pair Programming!”
•기본적인원칙은한번토론해봅시다.
•우리의가치를실현할수있는여타방법론의도입도해봅시다.
•애자일에대해서글을읽어봅시다.
왜 KeyValuePair인가?
• … 사실 slack url을뭔가정해야해서개발오덕스러운 “Pair”가들어가는단어를쓴것
• ”TDD를적용할수없다면, 어떻게하나요?” 에대한소프트웨어장인의대답: PP를하세요.
•어쩌면핵심가치를창출할수있는가장도입하기쉽고빠르고중요한방법론이 Pair Progrmaming이아닌가…
•그래서 “핵심가치를창출하는짝궁” 이라는의미의 KeyValuePair가됨.
참고문헌
•켄트백• Extreme Programming Explained
• Test Driven Development by example
•그외• 소프트웨어장인
• 클린코드를위한파이썬을이용한테스트주도개발