23
페어코딩으로 클린코드와 테스팅 익히기 StudioXID Jongchan Kim Nov 16, 2016 GDG Korea Campus

공사꾼 개발부장 김종찬_페어코딩으로 테스팅 배우기_ausg_20170824

Embed Size (px)

Citation preview

Page 1: 공사꾼 개발부장 김종찬_페어코딩으로 테스팅 배우기_ausg_20170824

페어코딩으로 클린코드와 테스팅 익히기

StudioXID Jongchan Kim

Nov 16, 2016

GDG Korea Campus

Page 2: 공사꾼 개발부장 김종찬_페어코딩으로 테스팅 배우기_ausg_20170824

E-Mail: [email protected]

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 Practice75%

IOS Development 35%

Android Development90%

Page 3: 공사꾼 개발부장 김종찬_페어코딩으로 테스팅 배우기_ausg_20170824

E-Mail: [email protected]

3 min

TDD와 테스팅 알아보기

2

3 min

애자일은 무엇인가?

3

3 min

페어코딩 알아보기

1

15 min

실습으로 익히기

5

30 sec

마무리

8

3 min

사용 사례, 이걸 왜 배울까?

4

Agenda

Page 4: 공사꾼 개발부장 김종찬_페어코딩으로 테스팅 배우기_ausg_20170824

페어코딩 알아보기Two is strong more than one

GDG Korea Campus

Page 5: 공사꾼 개발부장 김종찬_페어코딩으로 테스팅 배우기_ausg_20170824

백지장도 맞들면 낫다.

- 오래 전 한국 속담,

“5

Page 6: 공사꾼 개발부장 김종찬_페어코딩으로 테스팅 배우기_ausg_20170824

드라이버의 역할 직접 운전대를 잡고 운전을 하는 역할. 운전 중 현재 진행하는 것을 말로 표현하며 진행하며, 네비게이터와의 대화 역시 함께 진행해야한다.

네비게이터의 역할 전체 지도를 보며 목적지에 다다르는 길을 안내.운전 중 의문이 드는 점이나 잘못 흘러가고 있는 상황에 대해 대화로 바로잡는다.

Rally Driving Harmony of Driver and Navigator

6

Page 7: 공사꾼 개발부장 김종찬_페어코딩으로 테스팅 배우기_ausg_20170824

코더의 역할 직접 키보드를 잡고 코딩을 진행하는 역할. 코딩 중 현재 진행하는 것을 말로 표현하며 진행하며, 조언자와의 대화 역시 함께 진행해야한다.

조언자의 역할 프로젝트의 요구사항과 전체 구조를 이해하고 현재 구현 중인 부분에 대한 솔루션 안내.코딩 중 의문이 드는 점이나 잘못 흘러가고 있는 상황에 대해 대화로 바로잡는다.

Pair Programming Harmony of Coder and Adviser

7

두 사람의 실력이 비슷하다면, 코더와 조언자는 주기마다 역할을 바꿀 수 있음.

Page 8: 공사꾼 개발부장 김종찬_페어코딩으로 테스팅 배우기_ausg_20170824

프로젝트 상황 공유

해당 코드의 책임자가 자리를 비울때 페어를 진행했던 사람이 있기에 팀차원에서 리스크를 줄일 수 있음.

더불어 코드레벨로 정확히 팀의 상황을 공유 할 수 있음.

더 좋은 구현

함께 대화를 진행하며 프로젝트의 구조를 논하고 스펙에 대한 이야기를 나누면서 개발하면 더 효율적인 구현이 나올 가능성이 큼.

개인마다의 개발 경험이 합쳐지면 더 넓은 스펙트럼의 시야가 생김.

전체 진행속도

각자가 따로 개발을 하는 것보다는 시간이 더 들어갈수 있음.

그러나 개발자의 딴짓(?)을 막을수 있어서 시간을 효율적으로 활용이 가능하기도 함.

Page 9: 공사꾼 개발부장 김종찬_페어코딩으로 테스팅 배우기_ausg_20170824

Gradually, One step, Two step.

TDD와 테스팅 알아보기

GDG Korea Campus

Page 10: 공사꾼 개발부장 김종찬_페어코딩으로 테스팅 배우기_ausg_20170824

개발에서 테스트 / 테스트 코드란

= 작성한 코드가 우리가 생각했던 의도대로 잘 작동하는지검증하는 코드

Page 11: 공사꾼 개발부장 김종찬_페어코딩으로 테스팅 배우기_ausg_20170824

11

2 실패하는 테스트 코드를 한번에 하나 이상 작성하지 않는다.

3현재 실패하고 있는 테스트를 통과하기에 충분한 양을 넘는 제품 코드를 작성하지 않는다.

1 실패하는 테스트를 작성하기 전에는 제품 코드를 작성하지 않는다.TDD Principle of Robert C. Martin

Page 12: 공사꾼 개발부장 김종찬_페어코딩으로 테스팅 배우기_ausg_20170824

12

Result - 필요한 부분만 집중해서 구현하기 때문에 코드가 얽히지 않음.

- 최대한 역할을 나누고 기능을 세분화 시키면서 TDD를 진행하면 자연스럽게 클린코드의 원칙을 수행하게 됨.

- 제품 코드와 별개로 연습코드를 짤수 있는 이면지, 혹은 Playground가 존재한다고 생각 할 수 있다.

- 결국 테스트 코드에 남는 것들이 기능들의 종류를 대변하므로테스트 코드 자체가 결과물의 문서 그 자체가 된다.

TDD의 기대 효과

Android Testing Session in Devcamp 2016 : https://goo.gl/oqm1HP

Page 13: 공사꾼 개발부장 김종찬_페어코딩으로 테스팅 배우기_ausg_20170824

Between Tech and Culture.

애자일은 무엇인가?

GDG Korea Campus

Page 14: 공사꾼 개발부장 김종찬_페어코딩으로 테스팅 배우기_ausg_20170824

요구사항은 항상 바뀌며, 한정된 시간안에 그럴듯한 결과물을 내야하는 상황. 그러면서 프로젝트의 견고함은 유지되어야하고, 그러면서 프로젝트의 이슈를 효율적으로 팀원들과 커뮤니케이션 해야하는게 우리 개발자들의 숙명 ㅠㅠ

변화를 인정하는 빠른 대응 방법

개발 -> 테스트 -> 릴리즈 -> 피드백 적용 -> 개발 위 사이클을 빠르게 진행하기

TDD를 이용한 점진적인 방법으로 필요한 기능들 위주로 Feature들을 구현해나가기

결과물은 빌드 자동화와 지속적 통합을 활용해서 유저에게 전달될 산출물의 건강을 수시로 체크하기

Scrum

eXtremeProgramming

Lean Startup

팀의 상태와 프로젝트의 상황을 빠른 주기로 공유하고, 조직이 나아갈 방향을 실용주의적으로 결정

Page 15: 공사꾼 개발부장 김종찬_페어코딩으로 테스팅 배우기_ausg_20170824

개발과 직접적으로 연관된애자일을 배워볼수 있는 책

조직에 애자일을 쉽게적용 할 수 있게하는 책

익스트림 프로그래밍 켄트 벡, 신시아 안드레스 저 김창준, 정지호 역

스크럼과 XP

S헨릭 크니버그 저 심우곤, 엄위상, 한주영 역 15

Page 16: 공사꾼 개발부장 김종찬_페어코딩으로 테스팅 배우기_ausg_20170824

Trust using case.

사용 사례, 이걸 왜 배울까?

GDG Korea Campus

Page 17: 공사꾼 개발부장 김종찬_페어코딩으로 테스팅 배우기_ausg_20170824

E-Mail: [email protected]

17

수평 문화, 팀에 대한 신뢰 과감한 피드백 수용

빠른 실행력 페어 프로그래밍 적극 권장

빡센 테스팅을 통한 프로젝트의 견고함 유지

Company Using Case

Page 18: 공사꾼 개발부장 김종찬_페어코딩으로 테스팅 배우기_ausg_20170824

실력 다음으로 조직문화에 잘 맞는 사람이 매력적인 것이 현실.

미리 배우고 경험해본다면 좋은 결과가 있지 않을까요?

18

Page 19: 공사꾼 개발부장 김종찬_페어코딩으로 테스팅 배우기_ausg_20170824

Pair Programming & Testing

실습으로 익히기

GDG Korea Campus

Source Down : https://github.com/acious/PairProgramming-Testing-Seminar

Page 20: 공사꾼 개발부장 김종찬_페어코딩으로 테스팅 배우기_ausg_20170824

E-Mail: [email protected]

Java 조건, 반복, 객체 이해하는 분

Algorithm 모르셔도 됨. 모르면 좋겠음.

Coding Exp. 스스로가 경험이 없다고 생각하며, 실수해도 잃을게 없다고 생각하는 분

Who is front-runner?

Page 21: 공사꾼 개발부장 김종찬_페어코딩으로 테스팅 배우기_ausg_20170824

Session Ending

마 무 리

GDG Korea Campus

Page 22: 공사꾼 개발부장 김종찬_페어코딩으로 테스팅 배우기_ausg_20170824

E-Mail: [email protected]

내일 부터 습관화!

학교 프로젝트, 공모전 본인이 속한 개발 팀

여러분이 문화를 만드세요.

페어 프로그래밍

부끄럽다고 생각하지말고 동료와 함께 생각하며 개발

TDD, 테스팅 한번에 많은 양을 짜서 승부를 보기보다는 점진적으로 필요한 부분에 집중해서 구현하기.클린코드를 실천하기 쉬움.

Conclusion

Page 23: 공사꾼 개발부장 김종찬_페어코딩으로 테스팅 배우기_ausg_20170824

Thank YouQuestions?

http://fb.com/ace.jckim

23@acious

Jongchan Kim [email protected]