Clean Coders 책 챕터 3 - Saying Yes 좋은 문장들
A language of Commitment
“말을 했으면, 해야한다.”
“무언가를 하겠다고 말한 사람들 중, 실제로 그것을 진짜 해내는 사람을 정말 많이 없다.”
What does commitment sound like?
“진짜 ‘하겠다’는 건 이렇게 표현할 수 있다. 1. 언제까지, 2. 어떻게, 3. …하겠습니다.”
“정확히 무엇을 하겠다는건지, 정확히 언제까지 하겠다는지를, ‘네가’ 하겠다는 것을 fact로써 표현을 한것이다”.
“여기에는 ‘아마’ 라던지, ‘이쯤에’ 라던지, ‘해보겠습니다’ 같이 모호한 표현은 끼어들 곳이 없다.”
Learning how to say “Yes”
The other side of “Try”
매니저: “금요일까지 엔진 개발 마칠 수 있어요?”
개발자: “그때까지 해볼게요.”
“‘~해볼께요’ 라는 말에는 무슨 뜻이 숨겨져있을까? 아마 될수도, 안될수도 있다는 뜻이다.”
매니저: “금요일까지 엔진 개발 마칠 수 있어요?”
개발자: “그 작업은 도큐먼트도 적어야해서 앞으로 8시간 정도 더 필요해요. 그러니 월요일까지는 끝낼 수 있을 것 같습니다. 늦어도 화요일에는 결과물이 나옵니다.”
매니저: “아뇨, 금요일에 끝나는지가 중요한 건이라서요. 금요일까지 할 수 있어요?”
개발자: “그렇게 말씀하시면 불가능하다고 말씀드릴게요. 확신할 수 있는건, 화요일에는 도큐먼트까지 해서 다 끝날 예정입니다.”
“위 방법이 그나마 좀 더 솔직하고 좋다. 매니저에게 스케줄 변동의 위험성을 알게 되고, 해당 위험성에 대해 대처를 할 수 있기 때문이다.”
…
매니저: “아뇨, 금요일에 끝나는지가 중요한 건이라서요. 금요일까지 할 수 있어요?”
개발자: “그렇게 말씀하시면 불가능하다고 말씀드릴게요. 확신할 수 있는건, 화요일에는 도큐먼트까지 해서 다 끝날 예정입니다.”
매니저: “화요일은 진짜 안됩니다. 월요일부터 금요일까지 다음 파트에서 작업을 하기로 했는데, 그쪽 팀도 일정을 더 미룰 수 없을만큼 타이트해요. 고객사 데드라인에 맞추려면 꼭 금요일에 끝나야해요. 어떻게 방법이 없을까요? 도큐먼트를 먼저 끝낸다던지?”
개발자: “그건 안돼요. 이 코드 수정 작업이 끝나야 도큐먼트를 작성할 수 있는걸요.”
매니저: “하… 어떻게든 금요일까지 코드 수정도 끝내고 도큐먼트도 적을 방법이 없을까요? 진짜 중요한 건이란 말이에요. 월요일 아침까지 꼭 필요합니다.”
“위와 같은 상황처럼 꼭 금요일에 끝나야하는 상황에는 어떻게 해야하는가? 이러한 상황에서 개발자는 결정을 내려야한다. 기능 개발의 일부분을 포기할 수도 있고, 야근이나 주말출근처럼 초과근무를 해서 작업량을 달성할 수도 있다.”
“여기서 개발자는 여러 유혹에 빠져들게 된다. 테스트를 적지 않으면 더 빨리 개발할 수 있지 않을까? 리팩토링을 하지 않으면 더 빨리 개발할 수 있지 않을까? Regression 테스트를 전부 거치지 않으면 결과를 더 빨리 볼 수 있지 않을까?”
“여기서 프로들은 단번에 알 수 있을 것이다. 1. 테스트를 적지 않는다고 개발이 빨라지지는 않는다. 2. 리팩토링을 하지 않는다고 개발이 빨리지지 않는다. 3. Regression 테스트를 하지 않는다고 개발이 빨라지지는 않는다. 프로들은 수년의 경험을 통해, 이 ‘룰’들을 깨면 결국 느려질 수 밖에 없다는 걸 알고 있다.”
“그리고 속도만 문제인게 아니다. 프로라면, 자신의 코드를 테스트 했을 것이고, 유지보수 가능한 코드를 작성했을 것이다. 고객들도 그러한 코드를 기대하고 있을 것이다. 고객이 원하는 수준에 미치지 못하는 코드를 주는건 계약 위반이며, 프로답게 행동하지 못했다는 것이다.”
“초과근무에 대해서도 고려해볼 부분이 있다. 개발자는 초과근무를 하기 전, 본인의 스태미나와 여분 에너지에 대해 솔직하게 판단해야한다. ‘제가 하겠습니다’라고 말하는건 굉장히 쉽다. 진짜로 해내는건 주중에 평소 컨디션으로 해내는 것 보다 훨씬 더 많은 에너지를 소요하고 훨씬 더 어렵다. ‘내가 해내고 말거야!’ 같은 생각으로 오판을 내렸을 때, 돌아오는 대가는 크다. 프로들은 자기자신의 한계를 정확하게 안다.”
…
매니저: “하… 어떻게든 금요일까지 코드 수정도 끝내고 도큐먼트도 적을 방법이 없을까요? 진짜 중요한 건이란 말이에요. 월요일 아침까지 꼭 필요합니다.”
개발자: “알겠습니다. 그러면 일단 저는 집에 전화를 해서 가족들과의 일정을 좀 미뤄볼게요. 가족들이 괜찮다고 하면, 월요일 아침까지 초과근무를 해서 개발 완료 해놓겠습니다. 월요일 아침에도 출근해서 다음 파트의 팀원들에게 넘기는 것도 문제 없이 되도록 해드릴게요. 그 대신 수요일까지 휴가를 약속해주셨으면 합니다. 주말동안 쓴 에너지를 다시 채워와야 다음 스케줄을 할 수 있어요.”
“이러한 요구는 정당하다”