SlideShare uma empresa Scribd logo
1 de 23
Baixar para ler offline
페어코딩으로 클린코드와
테스팅 익히기
StudioXID Jongchan Kim
Nov 16, 2016
GDG Korea Campus
E-Mail: ace.jckim@gmail.com
Speaker Intro.
Jongchan Kim
StudioXID
Software Engineering Intern
Software Engineer (Android, IOS)
- 4284 Corp Lead of Android Develop Team, 2014 - 2016
- NAVER Developer Relations Intern (a.k.a D2 Program), 2014
- GDG Korea Android Organizer, 2014
- Software Maestro 4th Mentee, 2013 - 2014
Agile Practice
75%
IOS Development
35%
Android Development
90%
E-Mail: ace.jckim@gmail.com
3 min
TDD와 테스팅 알아보기
2
3 min
애자일은 무엇인가?
3
3 min
페어코딩 알아보기
1
15 min
실습으로 익히기
5
30 sec
마무리
8
3 min
사용 사례, 이걸 왜 배울까?
4
Agenda
페어코딩 알아보기
Two is strong more than one
GDG Korea Campus
백지장도 맞들면 낫다.
- 오래 전 한국 속담,
“
5
드라이버의 역할
직접 운전대를 잡고 운전을 하는 역할.
운전 중 현재 진행하는 것을 말로 표현하며 진행하며,

네비게이터와의 대화 역시 함께 진행해야한다.
네비게이터의 역할
전체 지도를 보며 목적지에 다다르는 길을 안내.

운전 중 의문이 드는 점이나 잘못 흘러가고 있는
상황에 대해 대화로 바로잡는다.
Rally Driving
Harmony of Driver and Navigator
6
코더의 역할
직접 키보드를 잡고 코딩을 진행하는 역할.
코딩 중 현재 진행하는 것을 말로 표현하며 진행하며,

조언자와의 대화 역시 함께 진행해야한다.
조언자의 역할
프로젝트의 요구사항과 전체 구조를 이해하고
현재 구현 중인 부분에 대한 솔루션 안내.

코딩 중 의문이 드는 점이나 잘못 흘러가고 있는
상황에 대해 대화로 바로잡는다.
Pair Programming
Harmony of Coder and Adviser
7
두 사람의 실력이 비슷하다면,


코더와 조언자는 주기마다 역할을 바꿀 수 있음.
프로젝트 상황 공유
해당 코드의 책임자가 자리를 비울때
페어를 진행했던 사람이 있기에
팀차원에서 리스크를 줄일 수 있음.



더불어 코드레벨로 정확히
팀의 상황을 공유 할 수 있음.
더 좋은 구현
함께 대화를 진행하며 프로젝트의 구조를
논하고 스펙에 대한 이야기를 나누면서 개발
하면 더 효율적인 구현이 나올 가능성이 큼.
개인마다의 개발 경험이 합쳐지면
더 넓은 스펙트럼의 시야가 생김.
전체 진행속도
각자가 따로 개발을 하는 것보다는
시간이 더 들어갈수 있음.

그러나 개발자의 딴짓(?)을 막을수 있어서
시간을 효율적으로 활용이 가능하기도 함.
Gradually, One step, Two step.
TDD와 테스팅 알아보기
GDG Korea Campus
개발에서 테스트 / 테스트 코드란
= 작성한 코드가 우리가 생각했던 의도대로 잘 작동하는지
검증하는 코드
11
2 실패하는 테스트 코드를 한번에 하나 이상 작성하지 않는다.
3
현재 실패하고 있는 테스트를 통과하기에 충분한 양을 넘는
제품 코드를 작성하지 않는다.
1 실패하는 테스트를 작성하기 전에는 제품 코드를 작성하지 않는다.TDD Principle
of Robert C. Martin
12
Result - 필요한 부분만 집중해서 구현하기 때문에 코드가 얽히지 않음.

- 최대한 역할을 나누고 기능을 세분화 시키면서 TDD를 진행하면

자연스럽게 클린코드의 원칙을 수행하게 됨.

- 제품 코드와 별개로 연습코드를 짤수 있는 이면지,

혹은 Playground가 존재한다고 생각 할 수 있다.

- 결국 테스트 코드에 남는 것들이 기능들의 종류를 대변하므로

테스트 코드 자체가 결과물의 문서 그 자체가 된다.
TDD의 기대 효과
Android Testing Session in Devcamp 2016 : https://goo.gl/oqm1HP
Between Tech and Culture.
애자일은 무엇인가?
GDG Korea Campus
요구사항은 항상 바뀌며, 한정된 시간안에 그럴듯한
결과물을 내야하는 상황. 그러면서 프로젝트의 견고함
은 유지되어야하고, 그러면서 프로젝트의 이슈를 효율
적으로 팀원들과 커뮤니케이션 해야하는게
우리 개발자들의 숙명 ㅠㅠ
변화를 인정하는 빠른 대응 방법
개발 -> 테스트 -> 릴리즈 -> 피드백 적용 -> 개발

위 사이클을 빠르게 진행하기
TDD를 이용한 점진적인 방법으로 필요한 기능들 위
주로 Feature들을 구현해나가기
결과물은 빌드 자동화와 지속적 통합을 활용해서
유저에게 전달될 산출물의 건강을 수시로 체크하기
Scrum
eXtreme
Programming
Lean

Startup
팀의 상태와 프로젝트의 상황을 빠른 주기로 공유하
고, 조직이 나아갈 방향을 실용주의적으로 결정
개발과 직접적으로 연관된
애자일을 배워볼수 있는 책
조직에 애자일을 쉽게
적용 할 수 있게하는 책
익스트림 프로그래밍
켄트 벡, 신시아 안드레스 저
김창준, 정지호 역
스크럼과 XP
S헨릭 크니버그 저
심우곤, 엄위상, 한주영 역 15
Trust using case.
사용 사례, 이걸 왜 배울까?
GDG Korea Campus
E-Mail: ace.jckim@gmail.com
17
수평 문화, 팀에 대한 신뢰
과감한 피드백 수용
빠른 실행력
페어 프로그래밍 적극 권장
빡센 테스팅을 통한
프로젝트의 견고함 유지
Company Using Case
실력 다음으로 조직문화에 잘 맞는 사람이 매력적인 것이 현실.
미리 배우고 경험해본다면 좋은 결과가 있지 않을까요?
18
Pair Programming & Testing
실습으로 익히기
GDG Korea Campus
Source Down : https://github.com/acious/PairProgramming-Testing-Seminar
E-Mail: ace.jckim@gmail.com
Java
조건, 반복, 객체 이해하는 분
Algorithm
모르셔도 됨. 모르면 좋겠음.
Coding Exp.
스스로가 경험이 없다고 생각하며,
실수해도 잃을게 없다고 생각하는 분
Who is front-runner?
Session Ending
마 무 리
GDG Korea Campus
E-Mail: ace.jckim@gmail.com
내일 부터 습관화!
학교 프로젝트, 공모전
본인이 속한 개발 팀
여러분이 문화를 만드세요.
페어 프로그래밍
부끄럽다고 생각하지말고
동료와 함께 생각하며 개발
TDD, 테스팅
한번에 많은 양을 짜서 승부를
보기보다는 점진적으로 필요
한 부분에 집중해서 구현하기.

클린코드를 실천하기 쉬움.
Conclusion
Thank You
Questions?
http://fb.com/ace.jckim
23@acious
Jongchan Kim
ace.jckim@gmail.com

Mais conteúdo relacionado

Mais procurados

칸반을 활용한 업무프로세스 혁신 실천법과 적용사례
칸반을 활용한 업무프로세스 혁신 실천법과 적용사례칸반을 활용한 업무프로세스 혁신 실천법과 적용사례
칸반을 활용한 업무프로세스 혁신 실천법과 적용사례철민 신
 
애자일을 실천하는 사람들이 겪는 어려움
애자일을 실천하는 사람들이 겪는 어려움애자일을 실천하는 사람들이 겪는 어려움
애자일을 실천하는 사람들이 겪는 어려움Bonna Choi
 
Tdd 실습&나머지
Tdd 실습&나머지Tdd 실습&나머지
Tdd 실습&나머지Jong Pil Won
 
[NDC13] 70명이 커밋하는 라이브 개발하기 (해외 진출 라이브 프로젝트의 개발 관리) - 송창규
[NDC13] 70명이 커밋하는 라이브 개발하기 (해외 진출 라이브 프로젝트의 개발 관리) - 송창규[NDC13] 70명이 커밋하는 라이브 개발하기 (해외 진출 라이브 프로젝트의 개발 관리) - 송창규
[NDC13] 70명이 커밋하는 라이브 개발하기 (해외 진출 라이브 프로젝트의 개발 관리) - 송창규ChangKyu Song
 
플리토 코드리뷰 - Code Review in Flitto
플리토 코드리뷰 - Code Review in Flitto플리토 코드리뷰 - Code Review in Flitto
플리토 코드리뷰 - Code Review in FlittoYongjun Kim
 
Sk planet 이야기
Sk planet 이야기Sk planet 이야기
Sk planet 이야기종범 고
 
개발자들 오리엔테이션
개발자들 오리엔테이션개발자들 오리엔테이션
개발자들 오리엔테이션Park JoongSoo
 
소프트웨어 개발 프로세스 개선
소프트웨어 개발 프로세스 개선소프트웨어 개발 프로세스 개선
소프트웨어 개발 프로세스 개선Jung Dohyun
 
초보 개발자를 위한 웹 프론트엔드 개발 101
초보 개발자를 위한 웹 프론트엔드 개발 101초보 개발자를 위한 웹 프론트엔드 개발 101
초보 개발자를 위한 웹 프론트엔드 개발 101Chang W. Doh
 
[Atlassian in 부산]해외 자동차 업체 b사의 agile 적용 사례_모우소프트
[Atlassian in 부산]해외 자동차 업체 b사의 agile 적용 사례_모우소프트[Atlassian in 부산]해외 자동차 업체 b사의 agile 적용 사례_모우소프트
[Atlassian in 부산]해외 자동차 업체 b사의 agile 적용 사례_모우소프트Atlassian 대한민국
 
애자일활용사례
애자일활용사례애자일활용사례
애자일활용사례Dexter Jung
 
Kakao agile 2nd story
Kakao agile 2nd storyKakao agile 2nd story
Kakao agile 2nd story호정 이
 
Scrum - Agile Development Process
Scrum - Agile Development ProcessScrum - Agile Development Process
Scrum - Agile Development ProcessKook Maeng
 
Deview nhn애자일개발 ci
Deview nhn애자일개발 ciDeview nhn애자일개발 ci
Deview nhn애자일개발 ciNAVER D2
 
애자일 코치
애자일 코치애자일 코치
애자일 코치영기 김
 
애자일 S/W 개발
애자일 S/W 개발애자일 S/W 개발
애자일 S/W 개발영기 김
 
Non-IT 기업에서 애자일을 시작하는 방법
Non-IT 기업에서 애자일을 시작하는 방법Non-IT 기업에서 애자일을 시작하는 방법
Non-IT 기업에서 애자일을 시작하는 방법Seungbin Cho
 
테스트 주도 개발 By googletest 1장 다중 통화를 지원하는 money 객체
테스트 주도 개발 By googletest   1장 다중 통화를 지원하는 money 객체테스트 주도 개발 By googletest   1장 다중 통화를 지원하는 money 객체
테스트 주도 개발 By googletest 1장 다중 통화를 지원하는 money 객체Mickey SJ Lee
 

Mais procurados (18)

칸반을 활용한 업무프로세스 혁신 실천법과 적용사례
칸반을 활용한 업무프로세스 혁신 실천법과 적용사례칸반을 활용한 업무프로세스 혁신 실천법과 적용사례
칸반을 활용한 업무프로세스 혁신 실천법과 적용사례
 
애자일을 실천하는 사람들이 겪는 어려움
애자일을 실천하는 사람들이 겪는 어려움애자일을 실천하는 사람들이 겪는 어려움
애자일을 실천하는 사람들이 겪는 어려움
 
Tdd 실습&나머지
Tdd 실습&나머지Tdd 실습&나머지
Tdd 실습&나머지
 
[NDC13] 70명이 커밋하는 라이브 개발하기 (해외 진출 라이브 프로젝트의 개발 관리) - 송창규
[NDC13] 70명이 커밋하는 라이브 개발하기 (해외 진출 라이브 프로젝트의 개발 관리) - 송창규[NDC13] 70명이 커밋하는 라이브 개발하기 (해외 진출 라이브 프로젝트의 개발 관리) - 송창규
[NDC13] 70명이 커밋하는 라이브 개발하기 (해외 진출 라이브 프로젝트의 개발 관리) - 송창규
 
플리토 코드리뷰 - Code Review in Flitto
플리토 코드리뷰 - Code Review in Flitto플리토 코드리뷰 - Code Review in Flitto
플리토 코드리뷰 - Code Review in Flitto
 
Sk planet 이야기
Sk planet 이야기Sk planet 이야기
Sk planet 이야기
 
개발자들 오리엔테이션
개발자들 오리엔테이션개발자들 오리엔테이션
개발자들 오리엔테이션
 
소프트웨어 개발 프로세스 개선
소프트웨어 개발 프로세스 개선소프트웨어 개발 프로세스 개선
소프트웨어 개발 프로세스 개선
 
초보 개발자를 위한 웹 프론트엔드 개발 101
초보 개발자를 위한 웹 프론트엔드 개발 101초보 개발자를 위한 웹 프론트엔드 개발 101
초보 개발자를 위한 웹 프론트엔드 개발 101
 
[Atlassian in 부산]해외 자동차 업체 b사의 agile 적용 사례_모우소프트
[Atlassian in 부산]해외 자동차 업체 b사의 agile 적용 사례_모우소프트[Atlassian in 부산]해외 자동차 업체 b사의 agile 적용 사례_모우소프트
[Atlassian in 부산]해외 자동차 업체 b사의 agile 적용 사례_모우소프트
 
애자일활용사례
애자일활용사례애자일활용사례
애자일활용사례
 
Kakao agile 2nd story
Kakao agile 2nd storyKakao agile 2nd story
Kakao agile 2nd story
 
Scrum - Agile Development Process
Scrum - Agile Development ProcessScrum - Agile Development Process
Scrum - Agile Development Process
 
Deview nhn애자일개발 ci
Deview nhn애자일개발 ciDeview nhn애자일개발 ci
Deview nhn애자일개발 ci
 
애자일 코치
애자일 코치애자일 코치
애자일 코치
 
애자일 S/W 개발
애자일 S/W 개발애자일 S/W 개발
애자일 S/W 개발
 
Non-IT 기업에서 애자일을 시작하는 방법
Non-IT 기업에서 애자일을 시작하는 방법Non-IT 기업에서 애자일을 시작하는 방법
Non-IT 기업에서 애자일을 시작하는 방법
 
테스트 주도 개발 By googletest 1장 다중 통화를 지원하는 money 객체
테스트 주도 개발 By googletest   1장 다중 통화를 지원하는 money 객체테스트 주도 개발 By googletest   1장 다중 통화를 지원하는 money 객체
테스트 주도 개발 By googletest 1장 다중 통화를 지원하는 money 객체
 

Semelhante a Learning Unit Testing with Pair Programming

프로젝트 Xxx에 적용하고 싶은 개발방법
프로젝트 Xxx에 적용하고 싶은 개발방법프로젝트 Xxx에 적용하고 싶은 개발방법
프로젝트 Xxx에 적용하고 싶은 개발방법도형 임
 
TDD: Test Driven Development 첫번째 이야기
TDD: Test Driven Development 첫번째 이야기TDD: Test Driven Development 첫번째 이야기
TDD: Test Driven Development 첫번째 이야기Ji Heon Kim
 
꿀밋업시리즈3탄_Spring Boot를 활용한 마이크로서비스 개발과 페어프로그래밍(TDD)
꿀밋업시리즈3탄_Spring Boot를 활용한 마이크로서비스 개발과 페어프로그래밍(TDD)꿀밋업시리즈3탄_Spring Boot를 활용한 마이크로서비스 개발과 페어프로그래밍(TDD)
꿀밋업시리즈3탄_Spring Boot를 활용한 마이크로서비스 개발과 페어프로그래밍(TDD)VMware Tanzu Korea
 
testing for agile?, agile for testing
testing for agile?, agile for testingtesting for agile?, agile for testing
testing for agile?, agile for testingSangIn Choung
 
애자일과 애자일 테스트 소개 (테스트기본교육 3장 2절)
애자일과 애자일 테스트 소개 (테스트기본교육 3장 2절)애자일과 애자일 테스트 소개 (테스트기본교육 3장 2절)
애자일과 애자일 테스트 소개 (테스트기본교육 3장 2절)SangIn Choung
 
TDD - 테스트 주도로 개발하기
TDD - 테스트 주도로 개발하기TDD - 테스트 주도로 개발하기
TDD - 테스트 주도로 개발하기현승 배
 
애자일 게임 개발: 최전선의 이야기(Gamefest 2006)
애자일 게임 개발: 최전선의 이야기(Gamefest 2006)애자일 게임 개발: 최전선의 이야기(Gamefest 2006)
애자일 게임 개발: 최전선의 이야기(Gamefest 2006)Kay Kim
 
애자일 하라
애자일 하라애자일 하라
애자일 하라진수 허
 
익스트림 프로그래밍(Xp)
익스트림 프로그래밍(Xp)익스트림 프로그래밍(Xp)
익스트림 프로그래밍(Xp)영기 김
 
Testing & refactoring
Testing & refactoringTesting & refactoring
Testing & refactoringLim Hosung
 
개발자, 성장하는 '척' 말고, 진짜 성장하기
개발자, 성장하는 '척' 말고, 진짜 성장하기개발자, 성장하는 '척' 말고, 진짜 성장하기
개발자, 성장하는 '척' 말고, 진짜 성장하기Donghyun Cho
 
홍성우, 게임 프로그래머는 어떻게 가르치나요?, NDC2018
홍성우, 게임 프로그래머는 어떻게 가르치나요?, NDC2018홍성우, 게임 프로그래머는 어떻게 가르치나요?, NDC2018
홍성우, 게임 프로그래머는 어떻게 가르치나요?, NDC2018devCAT Studio, NEXON
 
부스트캠프 웹・모바일 8기 설명회 (2023년)
부스트캠프 웹・모바일 8기 설명회 (2023년)부스트캠프 웹・모바일 8기 설명회 (2023년)
부스트캠프 웹・모바일 8기 설명회 (2023년)CONNECT FOUNDATION
 
TDD&Refactoring Day 02: TDD
TDD&Refactoring Day 02: TDDTDD&Refactoring Day 02: TDD
TDD&Refactoring Day 02: TDDSuwon Chae
 
실전 애자일 게임 개발 (Agile Game Agile Game Development From The Trenches)
실전 애자일 게임 개발 (Agile Game Agile Game Development From The Trenches)실전 애자일 게임 개발 (Agile Game Agile Game Development From The Trenches)
실전 애자일 게임 개발 (Agile Game Agile Game Development From The Trenches)Kay Kim
 
EMOCON 2015 - 품질과 테스트는 다르다
EMOCON 2015 - 품질과 테스트는 다르다EMOCON 2015 - 품질과 테스트는 다르다
EMOCON 2015 - 품질과 테스트는 다르다이상한모임
 
손코딩뇌컴파일눈디버깅을 소개합니다.
손코딩뇌컴파일눈디버깅을 소개합니다.손코딩뇌컴파일눈디버깅을 소개합니다.
손코딩뇌컴파일눈디버깅을 소개합니다.Kwangsung Ha
 
애자일 개발 프로세스를 이용한 고품질 소프트웨어 개발
애자일 개발 프로세스를 이용한 고품질 소프트웨어 개발애자일 개발 프로세스를 이용한 고품질 소프트웨어 개발
애자일 개발 프로세스를 이용한 고품질 소프트웨어 개발Jaehoon Oh
 
애자일 도입과 사례 공유
애자일 도입과 사례 공유애자일 도입과 사례 공유
애자일 도입과 사례 공유agilekorea
 

Semelhante a Learning Unit Testing with Pair Programming (20)

프로젝트 Xxx에 적용하고 싶은 개발방법
프로젝트 Xxx에 적용하고 싶은 개발방법프로젝트 Xxx에 적용하고 싶은 개발방법
프로젝트 Xxx에 적용하고 싶은 개발방법
 
애자일의 모든것
애자일의 모든것애자일의 모든것
애자일의 모든것
 
TDD: Test Driven Development 첫번째 이야기
TDD: Test Driven Development 첫번째 이야기TDD: Test Driven Development 첫번째 이야기
TDD: Test Driven Development 첫번째 이야기
 
꿀밋업시리즈3탄_Spring Boot를 활용한 마이크로서비스 개발과 페어프로그래밍(TDD)
꿀밋업시리즈3탄_Spring Boot를 활용한 마이크로서비스 개발과 페어프로그래밍(TDD)꿀밋업시리즈3탄_Spring Boot를 활용한 마이크로서비스 개발과 페어프로그래밍(TDD)
꿀밋업시리즈3탄_Spring Boot를 활용한 마이크로서비스 개발과 페어프로그래밍(TDD)
 
testing for agile?, agile for testing
testing for agile?, agile for testingtesting for agile?, agile for testing
testing for agile?, agile for testing
 
애자일과 애자일 테스트 소개 (테스트기본교육 3장 2절)
애자일과 애자일 테스트 소개 (테스트기본교육 3장 2절)애자일과 애자일 테스트 소개 (테스트기본교육 3장 2절)
애자일과 애자일 테스트 소개 (테스트기본교육 3장 2절)
 
TDD - 테스트 주도로 개발하기
TDD - 테스트 주도로 개발하기TDD - 테스트 주도로 개발하기
TDD - 테스트 주도로 개발하기
 
애자일 게임 개발: 최전선의 이야기(Gamefest 2006)
애자일 게임 개발: 최전선의 이야기(Gamefest 2006)애자일 게임 개발: 최전선의 이야기(Gamefest 2006)
애자일 게임 개발: 최전선의 이야기(Gamefest 2006)
 
애자일 하라
애자일 하라애자일 하라
애자일 하라
 
익스트림 프로그래밍(Xp)
익스트림 프로그래밍(Xp)익스트림 프로그래밍(Xp)
익스트림 프로그래밍(Xp)
 
Testing & refactoring
Testing & refactoringTesting & refactoring
Testing & refactoring
 
개발자, 성장하는 '척' 말고, 진짜 성장하기
개발자, 성장하는 '척' 말고, 진짜 성장하기개발자, 성장하는 '척' 말고, 진짜 성장하기
개발자, 성장하는 '척' 말고, 진짜 성장하기
 
홍성우, 게임 프로그래머는 어떻게 가르치나요?, NDC2018
홍성우, 게임 프로그래머는 어떻게 가르치나요?, NDC2018홍성우, 게임 프로그래머는 어떻게 가르치나요?, NDC2018
홍성우, 게임 프로그래머는 어떻게 가르치나요?, NDC2018
 
부스트캠프 웹・모바일 8기 설명회 (2023년)
부스트캠프 웹・모바일 8기 설명회 (2023년)부스트캠프 웹・모바일 8기 설명회 (2023년)
부스트캠프 웹・모바일 8기 설명회 (2023년)
 
TDD&Refactoring Day 02: TDD
TDD&Refactoring Day 02: TDDTDD&Refactoring Day 02: TDD
TDD&Refactoring Day 02: TDD
 
실전 애자일 게임 개발 (Agile Game Agile Game Development From The Trenches)
실전 애자일 게임 개발 (Agile Game Agile Game Development From The Trenches)실전 애자일 게임 개발 (Agile Game Agile Game Development From The Trenches)
실전 애자일 게임 개발 (Agile Game Agile Game Development From The Trenches)
 
EMOCON 2015 - 품질과 테스트는 다르다
EMOCON 2015 - 품질과 테스트는 다르다EMOCON 2015 - 품질과 테스트는 다르다
EMOCON 2015 - 품질과 테스트는 다르다
 
손코딩뇌컴파일눈디버깅을 소개합니다.
손코딩뇌컴파일눈디버깅을 소개합니다.손코딩뇌컴파일눈디버깅을 소개합니다.
손코딩뇌컴파일눈디버깅을 소개합니다.
 
애자일 개발 프로세스를 이용한 고품질 소프트웨어 개발
애자일 개발 프로세스를 이용한 고품질 소프트웨어 개발애자일 개발 프로세스를 이용한 고품질 소프트웨어 개발
애자일 개발 프로세스를 이용한 고품질 소프트웨어 개발
 
애자일 도입과 사례 공유
애자일 도입과 사례 공유애자일 도입과 사례 공유
애자일 도입과 사례 공유
 

Learning Unit Testing with Pair Programming

  • 1. 페어코딩으로 클린코드와 테스팅 익히기 StudioXID Jongchan Kim Nov 16, 2016 GDG Korea Campus
  • 2. E-Mail: ace.jckim@gmail.com Speaker Intro. Jongchan Kim StudioXID Software Engineering Intern Software Engineer (Android, IOS) - 4284 Corp Lead of Android Develop Team, 2014 - 2016 - NAVER Developer Relations Intern (a.k.a D2 Program), 2014 - GDG Korea Android Organizer, 2014 - Software Maestro 4th Mentee, 2013 - 2014 Agile Practice 75% IOS Development 35% Android Development 90%
  • 3. E-Mail: ace.jckim@gmail.com 3 min TDD와 테스팅 알아보기 2 3 min 애자일은 무엇인가? 3 3 min 페어코딩 알아보기 1 15 min 실습으로 익히기 5 30 sec 마무리 8 3 min 사용 사례, 이걸 왜 배울까? 4 Agenda
  • 4. 페어코딩 알아보기 Two is strong more than one GDG Korea Campus
  • 5. 백지장도 맞들면 낫다. - 오래 전 한국 속담, “ 5
  • 6. 드라이버의 역할 직접 운전대를 잡고 운전을 하는 역할. 운전 중 현재 진행하는 것을 말로 표현하며 진행하며,
 네비게이터와의 대화 역시 함께 진행해야한다. 네비게이터의 역할 전체 지도를 보며 목적지에 다다르는 길을 안내.
 운전 중 의문이 드는 점이나 잘못 흘러가고 있는 상황에 대해 대화로 바로잡는다. Rally Driving Harmony of Driver and Navigator 6
  • 7. 코더의 역할 직접 키보드를 잡고 코딩을 진행하는 역할. 코딩 중 현재 진행하는 것을 말로 표현하며 진행하며,
 조언자와의 대화 역시 함께 진행해야한다. 조언자의 역할 프로젝트의 요구사항과 전체 구조를 이해하고 현재 구현 중인 부분에 대한 솔루션 안내.
 코딩 중 의문이 드는 점이나 잘못 흘러가고 있는 상황에 대해 대화로 바로잡는다. Pair Programming Harmony of Coder and Adviser 7 두 사람의 실력이 비슷하다면, 
 코더와 조언자는 주기마다 역할을 바꿀 수 있음.
  • 8. 프로젝트 상황 공유 해당 코드의 책임자가 자리를 비울때 페어를 진행했던 사람이 있기에 팀차원에서 리스크를 줄일 수 있음.
 
 더불어 코드레벨로 정확히 팀의 상황을 공유 할 수 있음. 더 좋은 구현 함께 대화를 진행하며 프로젝트의 구조를 논하고 스펙에 대한 이야기를 나누면서 개발 하면 더 효율적인 구현이 나올 가능성이 큼. 개인마다의 개발 경험이 합쳐지면 더 넓은 스펙트럼의 시야가 생김. 전체 진행속도 각자가 따로 개발을 하는 것보다는 시간이 더 들어갈수 있음.
 그러나 개발자의 딴짓(?)을 막을수 있어서 시간을 효율적으로 활용이 가능하기도 함.
  • 9. Gradually, One step, Two step. TDD와 테스팅 알아보기 GDG Korea Campus
  • 10. 개발에서 테스트 / 테스트 코드란 = 작성한 코드가 우리가 생각했던 의도대로 잘 작동하는지 검증하는 코드
  • 11. 11 2 실패하는 테스트 코드를 한번에 하나 이상 작성하지 않는다. 3 현재 실패하고 있는 테스트를 통과하기에 충분한 양을 넘는 제품 코드를 작성하지 않는다. 1 실패하는 테스트를 작성하기 전에는 제품 코드를 작성하지 않는다.TDD Principle of Robert C. Martin
  • 12. 12 Result - 필요한 부분만 집중해서 구현하기 때문에 코드가 얽히지 않음.
 - 최대한 역할을 나누고 기능을 세분화 시키면서 TDD를 진행하면
 자연스럽게 클린코드의 원칙을 수행하게 됨.
 - 제품 코드와 별개로 연습코드를 짤수 있는 이면지,
 혹은 Playground가 존재한다고 생각 할 수 있다.
 - 결국 테스트 코드에 남는 것들이 기능들의 종류를 대변하므로
 테스트 코드 자체가 결과물의 문서 그 자체가 된다. TDD의 기대 효과 Android Testing Session in Devcamp 2016 : https://goo.gl/oqm1HP
  • 13. Between Tech and Culture. 애자일은 무엇인가? GDG Korea Campus
  • 14. 요구사항은 항상 바뀌며, 한정된 시간안에 그럴듯한 결과물을 내야하는 상황. 그러면서 프로젝트의 견고함 은 유지되어야하고, 그러면서 프로젝트의 이슈를 효율 적으로 팀원들과 커뮤니케이션 해야하는게 우리 개발자들의 숙명 ㅠㅠ 변화를 인정하는 빠른 대응 방법 개발 -> 테스트 -> 릴리즈 -> 피드백 적용 -> 개발
 위 사이클을 빠르게 진행하기 TDD를 이용한 점진적인 방법으로 필요한 기능들 위 주로 Feature들을 구현해나가기 결과물은 빌드 자동화와 지속적 통합을 활용해서 유저에게 전달될 산출물의 건강을 수시로 체크하기 Scrum eXtreme Programming Lean
 Startup 팀의 상태와 프로젝트의 상황을 빠른 주기로 공유하 고, 조직이 나아갈 방향을 실용주의적으로 결정
  • 15. 개발과 직접적으로 연관된 애자일을 배워볼수 있는 책 조직에 애자일을 쉽게 적용 할 수 있게하는 책 익스트림 프로그래밍 켄트 벡, 신시아 안드레스 저 김창준, 정지호 역 스크럼과 XP S헨릭 크니버그 저 심우곤, 엄위상, 한주영 역 15
  • 16. Trust using case. 사용 사례, 이걸 왜 배울까? GDG Korea Campus
  • 17. E-Mail: ace.jckim@gmail.com 17 수평 문화, 팀에 대한 신뢰 과감한 피드백 수용 빠른 실행력 페어 프로그래밍 적극 권장 빡센 테스팅을 통한 프로젝트의 견고함 유지 Company Using Case
  • 18. 실력 다음으로 조직문화에 잘 맞는 사람이 매력적인 것이 현실. 미리 배우고 경험해본다면 좋은 결과가 있지 않을까요? 18
  • 19. Pair Programming & Testing 실습으로 익히기 GDG Korea Campus Source Down : https://github.com/acious/PairProgramming-Testing-Seminar
  • 20. E-Mail: ace.jckim@gmail.com Java 조건, 반복, 객체 이해하는 분 Algorithm 모르셔도 됨. 모르면 좋겠음. Coding Exp. 스스로가 경험이 없다고 생각하며, 실수해도 잃을게 없다고 생각하는 분 Who is front-runner?
  • 21. Session Ending 마 무 리 GDG Korea Campus
  • 22. E-Mail: ace.jckim@gmail.com 내일 부터 습관화! 학교 프로젝트, 공모전 본인이 속한 개발 팀 여러분이 문화를 만드세요. 페어 프로그래밍 부끄럽다고 생각하지말고 동료와 함께 생각하며 개발 TDD, 테스팅 한번에 많은 양을 짜서 승부를 보기보다는 점진적으로 필요 한 부분에 집중해서 구현하기.
 클린코드를 실천하기 쉬움. Conclusion