tdd retro agile_korea_게시용

68
TDD 실천법과 도구 2년 뒤 아.. 난 몰라.. 2년 더 나이 먹었네… TDD practices & tools, two years later…

Upload: sangchel-hwang

Post on 05-Dec-2014

1.049 views

Category:

Documents


8 download

DESCRIPTION

 

TRANSCRIPT

Page 1: Tdd retro agile_korea_게시용

TDD 실천법과 도구

2년 뒤

아.. 난 몰라.. 2년 더 나이 먹었네…

TDD practices & tools, two years later…

Page 2: Tdd retro agile_korea_게시용

발표자소개

채수원 SUWON, CHAE

- NHN Open Publishing Team, nFORGE Dev.

- TDD실천법과 도구 저자

- Agile Coach

- node.js community octoberskyjs leader

- blog.doortts.com

- twitter.com/doortts

Page 3: Tdd retro agile_korea_게시용

무슨 이야기를?

- 지난 3년 동안의 이런저런 경험들

- 근원적인 고민, 정말 도움되나? TDD

- 배운 점, 바뀐 점, 느낀 점

- Last 3 years of agile coaching and TDD - Question about ‘TDD real world works?’ - What I have learned, changed in mind

topics

Page 4: Tdd retro agile_korea_게시용

얻어 갔으면 하는 것

- TDD를 어떻게 바라봐야 하나?

- (많은 비용을 치르고 얻은)

실패를 줄일수 있는 몇 가지 팁!

- 편하고 즐거운 20분

- 마음속에 작은 불씨 하나

- View of Real world TDD - TDD tips - small passions in your hearts

- my aims of this session

Page 5: Tdd retro agile_korea_게시용

안내!

듣다가 이상하더라도 다 이해해 주세요.

힘들어서 그런가 보다 하고 말에요…

저 나쁜 사람은 아니네요..

20분동안 68장의 PPT가 롤러코스터 처럼 지나갑니다!

Page 6: Tdd retro agile_korea_게시용

I have a question!

Page 7: Tdd retro agile_korea_게시용

우리끼리…

- TDD로 개발을 하고 있나요?

Are you using TDD?

let’s talk frankly…

Page 8: Tdd retro agile_korea_게시용

우리끼리…

- 팀 전체가 TDD 방식으로 개발을 한 적 있나요?

Does your team is using TDD?

let’s talk frankly…

Page 9: Tdd retro agile_korea_게시용

우리끼리…

- 주변 사람들을 몇 명쯤 변화 시켰나요?

Do you have a experience making a change other people?

let’s talk frankly…

Page 10: Tdd retro agile_korea_게시용

괜찮습니다. 저도 부끄러워서

어디 가서 뭐라 말 잘 못합니다.

It’s ok. I’m the same as you.

what a shame…

이미지출처: http://elgah.egloos.com/tag/%EC%AA%84%EC%A3%BD%EC%9D%BC%EC%83%9D%EA%B0%81%EC%9D%B4%EB%83%90/page/1

Page 11: Tdd retro agile_korea_게시용

지난 수 년 동안 배운점…

뭘.. 배웠을까나…

What I have learned for last few years ...

Page 12: Tdd retro agile_korea_게시용

생각보다 잘 안되더군요

-확산이 -함께 하는 것이 -그리고 주변 사람들을 변화시키는 것이

It is hard to… spread tdd practice, do together, and do change other people to do tdd

이미지출처: http://goo.gl/WFPfS

Page 13: Tdd retro agile_korea_게시용

대상이 없으니 감동이 적다

- TDD로 뭘 해결 할 수 있나?

- 신기함은 잠깐

- 감동도 잠깐

주객전도

At first, many developers are using TDD to do TDD. It make a man tired…

TDD is just a way to development, not a purpose

Page 14: Tdd retro agile_korea_게시용

재미가 없다!

- 커버리지의 압박! (수치로 체크)

no재미

became not a funny because of test coverage pressure

I cannot feel any joy of tdd

Page 15: Tdd retro agile_korea_게시용

감동도 잠깐..

“님아.. 지금 제 현실이 녹록치 않아염..”

현실은 시궁…

first impression of tdd is just a moment. we forget the emotion very soon…

“I know the benefit of tdd, but I’m living in the real world. we can afford it..”

Page 16: Tdd retro agile_korea_게시용

왜 안될까?

- TDD를 꼭 써야 하나?

- TDD가 안되는 이유?

- 개발이 잘 안되는 이유?

- 프로젝트가 실패하는 이유?

- 나만 잘 안 되는 것 같은 이유? (으응??)

Reason why?

Why is it so hard?

Page 17: Tdd retro agile_korea_게시용

한 달 안에 20년 산 포도주와 동일한 맛의 포도주를 만드는 방법은?

Do you know the way to make a normal wine’s to 20 years old wine?

Page 18: Tdd retro agile_korea_게시용

???

Page 19: Tdd retro agile_korea_게시용

원래 안 되는 것이 있습니다…?

Basically, it is impossible to do, except cheating other people. It’s very natural. but we easily think ‘There must be a way to do that’. If it can be, it’s unfair! We have to admit and accept it.

Page 20: Tdd retro agile_korea_게시용

정말? ほんとうに? Are you sure?

Page 21: Tdd retro agile_korea_게시용

XXX 방식 도입 실패의 이유..

우리 함께 생각해 보아요

Let’s think about why xxx methodology fails?

Page 22: Tdd retro agile_korea_게시용

그럼 반대로

in the contrary…

Page 23: Tdd retro agile_korea_게시용

XXX 방식 도입 성공의 이유..

우리 함께 생각해 보아요

Let’s think about it. why xxx methodology success? What is the differences?

Page 24: Tdd retro agile_korea_게시용

동일환 환경이 아니다! 문맥이 다르다! 신은 같은 사다리를 두 번 쓰지 않는다.. 등등등…

It depends on context! But we usually use same shovels in different contexts , and fails..

Page 25: Tdd retro agile_korea_게시용

몇 가지 이유들 그리고 배운 점...

what I have learned…

Page 26: Tdd retro agile_korea_게시용

밥 아저씨..

우리 함께 생각해 보아요

“젝일.. 내가 그리면 오징어가 된다..”

Type A Bob ross

He draws very easily, but I couldn’t. why?

Page 27: Tdd retro agile_korea_게시용

밥 아저씨..

“젝일.. 내가 그리면 오징어가 된다..”

우리 함께 생각해 보아요 Type B

Bob ross

Page 28: Tdd retro agile_korea_게시용

기술이 없어서 TDD를 못하는 경우는 없더라!

Problem depends on habit and attitude, not technic.

Page 29: Tdd retro agile_korea_게시용

HIGH LOW

HIGH

LOW

밀린다…

1 2

3

Importance

Urgency Tipping force

Most of people’s todo choice order

Page 30: Tdd retro agile_korea_게시용

그리고 대부분은 그렇게 살다가 간다… (어딜? 집에?)

It’s ok! It’s our ‘life’

Page 31: Tdd retro agile_korea_게시용

그런데 한편으로는...

By the way…

Page 32: Tdd retro agile_korea_게시용

이왕지사 축구로 밥 벌어 먹고 살기로 작성했다면 박지성 같은 축구선수가 한번 돼보자! 싶은 생각이 들기도 한다.

Become a Jisung Park

Page 33: Tdd retro agile_korea_게시용

박지성이 되는 방법/맨유를 만드는 방법

1. TFT를 구성해서 박지성 양성계획을 세운다

2. 히딩크를 불러 하루 8시간짜리 집중교육 코스를

3일간 받는다.

3. 교육 내용을 실천에 옮기고 전파 교육을 하라고

한다.

4. 박지성(=핵심인재) 양성 KPI를 수립한다.

공대생이 이별에 대처하는 방식... 같은..

Page 34: Tdd retro agile_korea_게시용

박지성이 안 되는 이유/맨유를 못 만드는 이유

1. 공을 좀 차 봤는데 골대에 잘 안 들어 간다. 잘 안되니까 왠지 차기 싫다.

2. 경기 없을 때나 시간 날 때 살짝 연습을 해 봤는데 맨유팀이나

박지성이니까 되는 거지 현실(우리팀)은 그렇지 않다 싶다.

3. 사장이 아무래도 컨설턴트에게 속은 것 같다. 원래 국내에선 안 되는 것

일거다.

4. KPI를 위해 우선 현재 우리가 잘하고 있음을 표현하기 위해 '득점

낌새율'이라는 새로운 항목을 만들어 표현한다.

5. 내년에는 득점율이 꽤 높아질 거라는 예상 보고서를 쓴다.

6. 감독이 바뀐다.

Page 35: Tdd retro agile_korea_게시용

으응?

이미지출처: http://sketchpan.com/?lsw0360=110186

Page 36: Tdd retro agile_korea_게시용

연습을 안한다 연습 할 시간을 안준다 포기가 빠르다 현실 타협 자기 합리화

그런데 어쩌라고, 원래 나란 인간… 태생이 그리 생겨 먹은걸.. 인간은 나약한 존재…

Page 37: Tdd retro agile_korea_게시용

無智: 문제가 무엇인지 알지 못한다.

無試: 변화를 시도하지 않는다.

無持續: 시도를 지속하지 않는다.

無改善: 개선하지 않는다.

Why we fail?

그래도 열심히 고민해 보면 실패의 과정이란…

- don’t know what is the problem - don’t try - don’t keep going - don’t make improvement

Page 38: Tdd retro agile_korea_게시용

사실 나의(=우리의) 고민은…

- in fact, our most important problem is…

Page 39: Tdd retro agile_korea_게시용

좋은 개발자/엔지니어가 되고 싶다

좋은 소프트웨어를 만들고 싶다.

좋은 개발자를 양성하고 싶다.

그리고 그 좋은 개발자들이

좋은 소프트웨어를 만들어 줬으면 싶다.

개인

회사

Page 40: Tdd retro agile_korea_게시용

다시 뒤로, 근원적인 부분으로 돌아가 보자…

Page 41: Tdd retro agile_korea_게시용

TDD가 도움이 되는게 맞나?

잘 안 되는데,

걍 하지 말까…

이런 것 안 해도 잘 만드는 경우가 많지 않나?

TDD is really work and do good?

It’s so hard!

TDD is uncomfortable. I prefer not to do tdd.

My comrade doesn’t use tdd, but he is a good programmer!

Page 42: Tdd retro agile_korea_게시용

당연히 본인의 경험에서 얻은 결론은

그 외의 많은 인터뷰, 사례, 질문, 아티클

등을 놓고 봤을 때 도움이 되는 건

맞는 것 같다.

TDD가 SW개발에 도움이 되나?

Page 43: Tdd retro agile_korea_게시용

잘하는 사람

관찰하기… Watching the expertise

Page 44: Tdd retro agile_korea_게시용

목표는

포인트 발견,

그리고 해당 포인트의 재현과 확산!

Page 45: Tdd retro agile_korea_게시용

우선.. 나는 어떠한가?

Page 46: Tdd retro agile_korea_게시용

원래 해야 하는 걸로 아는 사람들

이를테면…

- 협력업체 직원

- 신입사원

+ 그런거라고 내가 속인 사람들

Page 47: Tdd retro agile_korea_게시용

주의!!

잘 하는 것 처럼 보이는

위험한 캐러…

우리팀 1등 개발자!

Page 48: Tdd retro agile_korea_게시용
Page 49: Tdd retro agile_korea_게시용

그리고.. 다음과 같은 조건을 가진 사람이 잘하더라

Experience - 장점을 기억, 실패를 경험

Divide & Conquer <- 정신적으로 힘들다…고 생각하게 된다.

Co-operation

Page 50: Tdd retro agile_korea_게시용

TDD 할 때는 묻지 말고 지키자!

- 설계 먼저 하기

- Given/When/Then

no 질문, just do it!

Page 51: Tdd retro agile_korea_게시용

given/when/then

Page 52: Tdd retro agile_korea_게시용

가장 중요하면서도 괴로운 질문

"지금 작성하려고 하는 코드에서 테스트를 작

성할 수 있는 가장 간단한 것은?"

끊임 없는 질문과 접근사고의 변화가 필요

Page 53: Tdd retro agile_korea_게시용

Somebody Help me~~~

“누가 쫌 도와주면 좋겠어염!”

Page 54: Tdd retro agile_korea_게시용

코드리뷰 하자!!

Page 55: Tdd retro agile_korea_게시용

코드리뷰 하자!!

업무코드 테스트 코드

Page 56: Tdd retro agile_korea_게시용

여기 이 괄호하고 세미콜론들이 Tom의 코드를 완전히 엉망으로 만들고 있네요

Sally는 코드리뷰를 할 때 누굴 부르면 안되는 지에 대한 중요한 교훈을 하나 배웠다.

Page 57: Tdd retro agile_korea_게시용

짝으로 시키니 훨~씬 낫다!

Page 58: Tdd retro agile_korea_게시용

짝 프로그래밍 (Pair Programming)

58

Page 59: Tdd retro agile_korea_게시용

여전히 심란한 부분들...

Page 60: Tdd retro agile_korea_게시용

하면 좋긴 한데 힘들다..

안 그래도 일도 힘든데 해야 하나?

단위테스트 잘 만들면 조으다! 하지만..

안해도 잘 짜는 사람 많고, 잘 돌아가는 프로그램 많더라..?

60

흠….

Page 61: Tdd retro agile_korea_게시용

외국 소스들은 안그렇던데?

없으면 defect report도 의심함

기능추가 해도 테스트 코드 없으면 pull 안 받아 주더라..

61

외쿡!

Page 62: Tdd retro agile_korea_게시용

정리 TD;LR

Page 63: Tdd retro agile_korea_게시용

TDD !!

- 확실히 좋은 SW만드는데 도움이 된다!

- 결과적인 비용을 줄이는데도 도움이 된다!

- 개발 기법/테크닉은 TDD를 지속적으로

해 나가는데 있어 크게 중요한 요소는 아님

Page 64: Tdd retro agile_korea_게시용

잘 하려면 결국

- 습관만이 살길

- 느끼지 못하면 지속되지 않는다

기타..

- 선배의 사랑으로(=때려서) 가르치는 방법도 있…

Page 65: Tdd retro agile_korea_게시용

- 큰 고민 안하고 주어진 일 성실히 하며 게 사는 것도

정신 건강한 직장인(=피고용인)의 한 자세일 수 있다!

(모두가 다 제갈공명, 유비, 관우가 되야 할 필요는 없다)

- 하지만 현재 자신의 일에서 성취와 성장을

하려면 그만큼의 노력이 필요하다.

- 사람마다 소재와 소질이 다르기 때문에

당연히 동일 수준에 다다르기 위한 연습량은

다르다는 걸 이해해야 한다.

Page 66: Tdd retro agile_korea_게시용

만일 당신이 때때로 실패하지 않는다면, 그건 안이하게 살고 있다는 확실한 증거이다. - Woody Allen If you're not failing every now and again, it's a sign you're not doing anything very innovative.

Page 67: Tdd retro agile_korea_게시용

시간이 된다면 한 가지만 더!

Page 68: Tdd retro agile_korea_게시용

본인 살기도 힘든건 알지만 후배들도 챙기자

후배가 없으면 동기좀 챙기자

선배랑도 잘 지내며 선배도 챙기자

업계 선배들의 책임