The Clean Coder

CONTENTS

프로 프로그래머

프로의 마음가짐

아니라고 말하기

1. 정의

1. 책임

2. 원칙 9가지

1. 아니요.

2. Case 1, 2

3. Best Case

코딩

1. 코딩 규칙

7. writer's block

8. 속도 조절

9. 멘토링

예라고 말하기

1. 약속

2. 방법

2. 새벽 3시에 짠 코드

3. 근심이 담긴 코드

4. 몰입 영역

5. 음악

6. 외부 방해

추정

1. 프로의 추정

시간 관리

1. 회의

2. 막다른 길

2. 추정 !== 약속

3. 주의

압박

1. 압박

스승과 제자

1. 멘토링

프로 프로그래머

프로 프로그래머

1. 정의

Attribute

Discipline

Action

태도

원칙

행동

프로의 핵심 3가지

프로의 마음 가짐

프로의 마음가짐

1. 책임

Professionalism

Professionalism은 '명예와 긍지'의 상징이지만 동시에
'책임과 의무'를 나타내며 두가지는 뗄레야 뗄 수 없다.

프로의 마음가짐

2. 원칙 9가지

1. 해를 끼치지 마라

2. 직업 윤리

3. 끊임 없이 배우기

4. 연습

5. 함께 일하기

6. 멘토링

7. 업무 지식을 익혀라

8. 회사와 고객에 동질감을 가져라

9. 겸손

원칙 9가지

프로의 마음가짐

2. 원칙 9가지

원칙 1

해를 끼치지 마라

프로의 마음가짐

2. 원칙 9가지

원칙 3

끊임없이 배우기

프로의 마음가짐

2. 원칙 9가지

원칙 9

겸손

아니라고 말하기

아니라고 말하기

1. 아니요.

아니요.

불가능합니다.

아니라고 말하기

2. Case 1, 2

마이크: "폴라, 로그인 페이지를 내일까지 끝내야 돼요."
폴라: "어, 그렇게 빨리요? 음. 한번 해볼게요."
마이크: "좋아요. 좋아. 고마워요!"
Case 1
마이크: "폴라, 로그인 페이지를 내일까지 끝내야 돼요."
폴라: "미안한데 마이크, 그보다 시간이 더 걸릴 거에요."
마이크: "언제쯤 끝낼 수 있나요?"
폴라: "2주 뒤는 어때요?"
마이크: "(수첩에 뭔가를 끄적이며)좋아요. 고마워요."
Case 2

아니라고 말하기

3. Best Case

마이크: "폴라, 로그인 페이지를 내일까지 끝내야 돼요."
폴라: "안돼요. 마이크. 2주나 걸리는 작업이라고요."
마이크: "2주나요? 설계팀은 3일 걸린다고 추정했고, 벌써 5일이나 지났어요."
폴라: "설계팀이 틀렸어요, 마이크. 마케팅 부서에서 요구사항을 추가하기 전에 추정한 일정이잖아요."
     "그 요구사항을 처리하려면 10일이 더 필요해요. 위키에 갱신한 거 안 봤어요?"
마이크: "말도 안돼요. 내일 고객 시연에서 로그인 페이지가 잘 동작하는 걸 보여줘야해요."
폴라: "로그인 페이지에서 내일까지 필요한 기능이 어떤 거예요?"
마이크: "로그인할 수 있어야 돼요."
폴라: "마이크, 권한 관리도 실제 사용자와 암호를 체크하지도 않고 이메일을 보내는 기능 등등 다 없지만"
     "로그인은 할 수 있는 데모 페이지는 만들 수 있어요. 이 정도면 되나요?"
마이크: "로그인할 수 있나요?"
폴라: "네, 로그인할 수 있어요."
마이크: "그럼 충분해요 폴라, 이제 살았네요!"
Best Case

예라고 말하기

예라고 말하기

1. 약속

1. 하겠다고 말한다.

2. 진심을 담는다.

3. 실제로 실행한다.

1. 필요/해야한다

2. 희망/바람.

3. 하자.

예라고 말하기

2. 방법

1. 목표 달성을 위해 구체적으로 어떤 일을 하겠다는 약속.

2. 방법을 찾아내겠다고 약속하는 길

3. 약속을 지킬 수 없을 땐 약속한 사람에게 당장 경고의 깃발을 휘두르는 일이 가장 중요

"예"라고 대답할 수 있는 방법

코딩

코딩

1. 코딩 규칙

1. 코드는 반드시 동작해야 한다.

2. ​코드는 고객이 제시한 문제를 반드시 풀어야 한다.

3. 코드는 기존 시스템에 잘 녹아들어야 한다.

4. 코드는 다른 프로그래머가 읽기 쉬워야 한다.

코딩 규칙

코딩

1. 코딩 규칙

주의가 산만하면

쓰레기를 만든다.

코딩

2. 새벽 3시에 짠 코드


새벽 3시까지 일하며 헌신하는 것을

진지한 프로의 모습이라 생각했다. 얼마나 어처구니 없는 생각인가!

로버트 C. 마틴 (p.108)

 

지쳤을 때는 코드를 만들지 마라.

헌신과 프로 다운 모습은 무턱대고 많이 일하는데 서 아니라

원칙을 지키는 모습에서 나온다.

충분히 자고 건강을 챙기고 건전한 생활습관으로

루에 8시간씩 충실히 일하자.

로버트 C. 마틴 (p.109)

코딩

2. 새벽 3시에 짠 코드

 

이때 만든 코드는 모두 쓰레기다.

따라서 코딩을 하는 대신 근심을 풀어야 한다.

로버트 C. 마틴 (p.109)

코딩

3. 근심이 담긴 코드

코딩

4. 몰입 영역

 

몰입에 빠지지 마라.

하지만 훈련 할 때는 반드시 몰입해야한다.

로버트 C. 마틴 (p.111)

 

음악을 듣는 행위는 깔끔하고 잘 설계된 코드를 쓰기 위해

정신이 필요로 하는 필수적인 자원을 소비한다.

로버트 C. 마틴 (p.112)

코딩

5. 음악

코딩

6. 외부 방해


방해가 찾아오면, 다음 번에는 자신이 남을 방해할 필요가 있을지도 모른다는 사실을 기억하라.

그래서 프로다운 태도로 예의 바르게 기꺼이 도와야 한다.

로버트 C. 마틴 (p.113)

코딩

7. Writer's block

Writer's block

진퇴양난(writer's block)에 빠진 글쟁이.

어떤 때 그저 코드가 안 나와서 괜히 딴짓 하는 개발자를 말한다.

 

개발은 마라톤이지 단거리 질주가 아니다.

곤경에 빠졌을 때, 피곤할 때는 잠시 자리를 떠나라.

로버트 C. 마틴 (p.119)

코딩

8. 속도 조절

코딩

9. 멘토링

 

경험이 적은 프로그래머를 훈련시키는 일은

경험이 더 많은 프로그래머의 의무다. 이는 프로로서의 윤리 문제다.

마찬가지 맥락에서 젊은 프로그래머는

선배에게 멘토링을 구하는 일이 프로로서의 의무다.

로버트 C. 마틴 (p.126)

시간 관리

시간 관리

1. 회의

프로는 회의 비용이

비싸다는 사실을 안다.

회의는 필요하다

회의는 엄청난
시간 낭비다.

이런 질문에 명확한 대답을 얻지 못한다면 정중히 참석을 거부해야한다.

어떤 토론을 할 생각인지

시간은 얼마나
할당 했는지

이루고자 하는
목표가 무엇인지

시간 관리

1. 회의

시간 관리

2. 막다른 길

 

프로는 어떤 개념에 너무 확고한 생각을 가진 나머지 포기하지 못하거나 냉정하게 돌아보지 못하는 일이 없어야 한다.

로버트 C. 마틴

추정

추정

1. 프로의 추정

 

추정은 프로 개발자가 접하는 일 중 가장 단수 하면서도
가장 두려운 행위다.

프로는 달성할 수 있다는 사실을 알지 못하면 약속하지 않는다.

로버트 C. 마틴

추정

2. 추정 !== 약속

추정

약속

!==


프로 개발자는 사업부가 계획을 짜는 데 쓰도록
실용적인 추정 값을 사업부에게 전달해야 한다.
프로 개발자는 지킬 수 없는 약속은 하지 않으며,
달성할 수 있다는 확신이 없는 일은 약속 하지 않는다.
프로라도 약속을 지키지 못할 때가 많다.

로버트 C. 마틴

추정

3. 주의

압박

 

프로는 압박감을 느껴도 침착하고 결단력 있게 행동한다.
압박을 다루는 요령은 피할 수 있으면 피하고
피할 수 없을 때는 극복하는 것이다.

피하는 것은 주의 깊게 약속하고, 규율을 다르고,
깔끔히 유지하는 것이다.

극복하는 방법은 침착함을 유지하고, 의사소통 하고, 규율을 따르고,
도움을 받는 것(pair programming)이다.

로버트 C. 마틴 (p.109)

압박

1. 압박

스승과 제자

스승과 제자

1. 멘토링

 

작은 과제는 내가 도와가면서 배울 수 있는 사람,
그리고 초기에 내 일을 검토하고 안내해 줄 사람,
그리고 롤모델이 되고 진정한 가치와 대응 방법을 가르쳐줄 사람,
진정한 대가, 멘토다.
프로가 되기 위한 규율, 실태, 프로의 기술은
수년간의 개인적인 교육과 멘토링을 통해 얻는 것이다.

로버트 C. 마틴

Q&A

Made with Slides.com