작년 전사적으로 일정 이슈가 많았을 때여서, 코로나에 걸렸는데도 tile processor 구현 일정에 스트레스를 받고 있을 때 소프트웨어 원칙 만들기 에서 "프로그래머에게 요구되는 것은 100점이 아닌 80~90점짜리 프로그램을 기한 내에 완성하는 일이다.” 글을 읽고 많은 부분을 공감하였다.
이 말이 나온 책이 윈도우 95의 프로그래머이신 "나카지마 사토시" 님이 저자인 <오늘, 또 일을 미루고 말았다.> 이고, 이 책을 읽고 중요하다고 생각한 부분을 남기고 중간중간 떠오른 생각을 정리했다.
책의 내용은
인용 박스
로 구분하였다.
0. Intro. 시간 관리의 필요성.
독일의 문호 괴테는 말했다. “아는 것만으로는 충분하지 않다. 활용해야 한다. 의욕만으로는 충분하지 않다. 실행해야 한다.”
그는 갑자기 치고 들어오는 일이 생길 가능성이나 이메일 답장 같은 잡다한 작업에 필요한 시간을 계산에 넣지 않았고, 일을 끝내지 못하는 경우가 점차 늘어갔다.
결국 A는 마감 직전만 되면 “죄송합니다, 다 끝내지 못했습니다” 하며 매번 사과를 하는 지경에 이르렀다.
A는 일을 못하는 직원이 아니었다. 오히려 우수한 편에 속했다. 하지만 시간 배분에는 유난히 서툴렀다. 아무리 업무량을 줄여도 소용없는 것은 바로 그 때문이었다. 그 후로도 A는 나에게 여러 번 주의를 받았다. 그럼에도 전혀 개선이 되지 않았기에 1년 뒤, 담당 부서에서 그를 내보낼 수밖에 없었다. 유감스러웠지만 더는 내 능력 밖이었다.
A의 문제는 일처리에 필요한 시간이 어느 정도인지 예측하지 못한다는 점이다. 그렇다면 업무 처리 시간을 어떻게 예측할 수 있을까?
이 책에서도 여러 노하우를 말해주지만 결국은 ‘연습’인 것 같다. 회사에 ClickUp이라는 task management tool이 도입된 이후 일정 산정과 deadline 설정이 명시적이게 되면서 이를 연습해나가니 조금씩 감이 생기는 걸 느끼기 때문이다.
문제는 여유가 없는 상태가 만성적으로 계속되면 생산성과 효율성이 떨어진다는 점이다
그런 사람들은 분명 더 효율적인 방법이 있는데도 눈치채지 못하고 일에 쫓기게 된다. 잘못된 방향으로 가고 있는지도 모른 채 캄캄한 터널 속을 행진하는 것처럼. 이런 상태를 《결핍의 경제학》에서는 ‘터널링tunneling’이라고 부른다. 터널링에 빠진 사람의 업무 처리 능력은 급격히 떨어진다. 게다가 출구가 보이지 않으니 지쳐버리고 결국 일을 끝내지 못한다.
이건 개인의 일정 산정 능력이나 시간 관리 능력의 부족함 때문일 수도 있지만, 한정된 인력에 과도한 업무를 주는 사측의 문제도 분명히 있다고 생각한다. 애초부터 하루 14시간을 일해도 도저히 끝낼 수 없는 업무량이라던지..
“속도를 우선시하면 일의 질이 떨어질 수밖에 없어. 그게 더 큰 문제가 되지 않을까?”
혹자들은 이렇게 말한다. 그들의 말이 틀리지는 않다. 속도를 우선시하면 일의 질이 떨어지는 것은 사실이다. 속도와 질의 문제는 트레이드오프 관계(trade off relation, 하나를 얻으면 하나를 잃게 되는 관계)라고 볼 수 있다.
그러나 나는 일의 질을 추구하다가 마감 기한을 넘기는 것은 본말전도라고 생각한다. 일정에 여유가 있다면 상관없다.
일정 안에서 무턱대고 결과물의 질을 높이기 위해 시간을 쏟아붓는 것은 큰 문제다
《손자병법》에 이르기를 ‘교지불여졸속巧遲不如拙速’이라고 했다. ‘교묘하나 늦은 것은 서툴러도 빠른 것만 못하다’라는 뜻으로, 일을 잘하려다 늦어지는 것보다 미흡한 부분이 생기더라도 빨리 해치우는 게 낫다는 이야기다.
빌은 제시간을 지키지 못하는 사람이 변명하는 것을 세상에서 제일 싫어했다. 특히 그 변명이 논리적일수록 질색했다.
대부분의 사람들은 약속 장소에 10시까지 도착할 수 있는 지하철에 타는 것을 당연하게 생각한다. 하지만 진짜 본질은 10시까지 약속 장소에 도착하는 것이다.
자신이 해야 할 일이 무엇인지 정의하는 작업은 매우 중요하다.
"프로그래머에게 요구되는 것은 100점이 아닌 80~90점짜리 프로그램을 기한 내에 완성하는 일이다.”
1. 실질적인 시간 관리 방법
1. 프로토타입, 디자인 설계 문서 의 중요성
마이크로소프트는 ‘베이퍼웨어vaporware 전략’이 특기다. 이는 아직 완성되지 않은 제품을 미리 발표해 경쟁사를 견제하는 마케팅 전략을 뜻한다. 당시에 나는 미처 몰랐지만, 컨퍼런스와 제품 시연의 목적은 바로 그 이유에서였다.
어떤 기획을 구체적으로 형상화시켜나가면, 기회는 어김없이 찾아온다. 나처럼 미국에 온지 얼마 지나지 않은 프로그래머가 마이크로소프트에서 활약할 수 있었던 것은, 머릿속에 있는 기획을 눈으로 볼 수 있게끔 형상화한 프로토타입을 만들었기 때문이다.
프로토타입은 설령 완성도는 떨어지더라도 한정된 시간에 제품의 본질을 눈으로 보여주기 위한 최고의 방법이다.
이 얘기와 완전히 동일한 얘기는 아니지만 재작년에 서버 auto scaler를 구현 하고 나서 CTO님께 ‘디자인 문서의 부재’가 아쉽다는 피드백을 받았다.
’어떻게 구현할 것이다’라는 디자인 설계 문서를 준비하지 않고, 문서나 공유를 위한 자료 없이 바로 키보드에 손부터 올렸으니 당연히 설계에 대한 리뷰나 피드백을 받지 않았고, 그래서 결과적으로 1. 시간도 오래 걸리고, 2. 결과물에 아쉬움도 보였다.
어떤 기능이나 프로그램을 만들 때 ‘한정된 시간에 제품의 본질을 눈으로 보여주기’가 매우 중요하고, 이의 형태는 프로토타입 이나 설계 문서 아니면 dummy program 등 여러가지가 될 수 있다고 생각한다.
2. 로켓 스타트 시간 관리법
로켓 스타트 라는 이름이 다소 유치하게 들릴 수 있겠지만, 이만큼 어울리는 이름은 없다고 자부한다.
이 방식은 ‘언제나 마감을 지킬 수 있는 방식으로 일하는 것’이다.
팀을 이루어 일을 하다 보면 업무들 간에 긴밀한 관계가 생긴다. 어떤 한 사람이 맡은 일에 문제가 생기면 다른 사람의 일에도 영향을 미치게 되고, 그 때문에 전체 일정이 늦어질 수 있다. 소프트웨어 개발 현장에서는 실제로 종종 일어나는 일이다.
이런 사태를 막으려면 프로젝트와 관련된 직원 모두가 각자 맡은 업무를 끝내고자 하는 강한 의지를 가져야 한다. 상사와 약속한 데드라인 안에 일을 마치는 것을 철칙으로 삼아야 하는 것이다.
1) 소요시간의 20%시간 내에 동안 총 업무량의 80%를 끝내는 것
‘로켓 스타트 시간 관리법’의 첫 단계는 ‘2일 동안 총 업무량의 80%를 끝내는 것’이다.
여기서 말하는 2일이란 전체 기간에 따라 달라진다. 전체 기간이 10일이면 2일, 5일이면 1일, 3일이면 반나절, 하루면 세 시간으로 전체의 20%로 잡으면 된다. 중요한 건 기간이 아니라 일을 시작하자마자 로켓 스타트를 실천하는 것이다.
왜 이렇게 힘들게 스타트 대시를 하냐고 묻는다면, 나는 당신의 라스트 스퍼트 지향성을 교정하기 위해서라고 대답하겠다. 인생을 바꾸고 싶다면 지금부터는 로켓 스타트 시간 관리법을 철저하게 실천해나가야 한다. 덧붙여 로켓 스타트를 실천할 때의 요령은 ‘일단 시작’하는 것이다. 업무가 결정되면 바로 착수해야 한다.
일단 10일 동안 해야 할 업무라는 가정 하에, 10일의 20%인 2일 동안 총 업무량의 80%를 끝내는 것을 목표로 로켓 스타트를 시작한다. 나는 보통 이때 소프트웨어의 기본 설계를 완성한다. 기획서를 작성해야 한다면 이때 기획서의 큰 틀을 만들어라.
일을 빨리 끝내겠다는 욕심보다도, 일을 꾸준히 여유 있게 한다는 점에 초점을 맞춘다면 ‘로켓 스타트 시간 관리법’의 진정한 의미를 깨달을 수 있을 것이다.
2) 내가 가장 집중할 수 있는 시간 ( = 보통 새벽, 이른 아침임)에 빡집중한다.
여유 있게 일을 하는 3일째부터 나는 오전 4시 경에 일어나 일을 시작한다. 세수만 하고 곧장 업무에 착수한다. 한순간도 낭비하지 않고 일에 몰두하는 것이다. 그리고 오로지 중요 업무에만 손을 댄다.
6시 30분이 되면 가족들이 일어나는 시간에 맞춰 아침 식사를 한다. 이렇게 하면 오전 4시부터 6시반까지 2시간반 동안은 누구에게도 방해받지 않고 일에 집중할 수 있다. 이 2시간반 동안 10배 계양권을 사용한다.
처음 2일 동안 이미 20배 계양권을 사용했으므로 3일째부터 10배 정도로 조절한다.
이때 중요한 건, 이 2시간 30분 동안 하루 업무량의 80%를 처리하는 것이다. 나는 이때 커피도 마시지 않고 화장실도 가지 않는다. 그야말로 ‘숨 쉴 틈 없이’ 계속 일만 한다.
오전 시간대 중에서도 4시라는 이른 시간에 일어나 로켓 스타트를 하는 이유는 무엇일까? 크게 세 가지 이유가 있다.
- 시간제한을 할 수 있다.
- 이메일을 체크할 필요가 없다.
- 잡담을 할 필요가 없다.
시간제한을 할 수 있다는 건 ‘자신만의 마감 시간’을 정할 수 있다는 것이다. 아침 6시 30분 가족과 식사하는 시간이 내게 있어서는 데드라인이다. 이런 시간 제한은 일의 원동력이 된다.
나도 이런 경험을 한 적이 있다. 전 날 꼭 끝내고 싶은 일이 있었는데 너무 잠이 오고 피곤해서 어쩔 수 없이 일찍 잤던 날, 그 다음 날 그 일에 대한 생각으로 눈이 떠지고 오전 5시반부터 일을 시작했다.
그리고 나서 오전 9시 운동 수업 전까지 해당 일을 했는데, 대략 3시간이라는 시간 동안 그 전 날 끝내지 못했던 일을 다 끝냈다.
- 1. 잠을 자고 일어난 직후라서 피곤하지 않고 컨디션은 개운 + 최상이며
- 2. 고요한 새벽시간은 집중이 잘 되었고
- 3. 9시라는 내적 마감 시간이 있어서 그 시간내에 끝내야 한다는 원동력을 가질 수 있었다.
- 4. 그리고 5시반에 출근했으니 오후 3시 반에 퇴근할 수 있다! 라는 기쁨이 있어서 즐거운 기분으로 일을 하게 된다. 이건 정말이지… 하루를 2배로 사는 것 같은 기분이다.
3) 낮잠자도 괜찮다.
나는 점심 식사를 마치고 꼭 낮잠을 잔다. 짧게라도 눈을 붙이면 뇌에 쌓인 피로물질이 해소되어서 오후 업무 효율도 높아지고, 새로운 아이디어도 떠오른다.
내 낮잠 시간은 18분이다. 이는 수없이 많은 시행착오를 겪으며 시도한 끝에 찾아낸 마법의 숫자다.
4) 오후에는 여유롭게 일한다.
낮잠을 잔 뒤에는 여유를 가지고 편안하게 일을 진행하자. 쌓인 이메일과 부재중 전화의 확인, 스케줄 조정, 그 외의 서류 정리나 자료 수집 등의 사소한 업무는 전부 이때 처리하라. 멀티태스킹은 절대 금지다. 모든 것을 하나씩 차례대로 해야 한다.
나에게 맞는 스케줄표를 만들어보면
- 5시 반 ~ 8시 반 → 10배 계양권 : 이 시간까지 하루 업무량의 80%를 처리한다 ⇒ 하루 업무량의 80%라는 건 어떻게 측정하는가? 뒤에 적겠지만 1. 일정 산정, 2. 매일 아침 만드는 체크리스트 로 할 수 있다.
- 8시 반 ~ 10시 → 아침 식사 및 운동 수업
- 10시 ~ 14시 → 2배 계양권: 이 시간까지 하루 업무를 마무리한다.
- 14시 ~ 15시 → 점심시간 및 낮잠
- 15시 반 ~ 22시 → 여유롭게 일한다. : 이메일 답장, 회의 참석, 기타 잡무 및 퇴근 후 개인 공부 등.
- 22시 반에는 자야 한다.
2. 여러 프로젝트를 동시에 진행하고 있을 때
여러 프로젝트를 동시에 진행하고 있을 때 로켓 스타트 시간 관리법 적용하기
복수의 업무를 동시에 진행하는 경우에는 하루를 작은 단위로 쪼개면 된다. 하루에 열두 시간을 일을 한다고 가정해보자. 한 가지 이상의 중요 업무를 담당하는 사람은 그만큼의 시간이 필요할 것이다.
중요한 업무 몇 가지를 동시에 진행하는 경우, 아래의 그림처럼 하루를 오전, 오후, 밤으로 3등분 한다. 그리고 총 업무 시간 열두 시간을 쪼개 각각 네 시간씩 할당한다.
오전에는 A책을 편집하고 오후에는 B책을, 그리고 밤에는 C책을 편집하는 식으로 일하는 것이다.
한 가지 주의할 점이 있다. 여전히 멀티태스킹은 금지라는 사실을 잊지 말자.
A 업무를 하고 있을 때 B업무나 C업무에 대해서 생각하지 말아야 한다. 지금 붙잡고 있는 일에만 집중하자. 그렇게 하지 않으면 먼저 시작한 일을 끝낼 수 없다.
사실 동시에 처리하기에는 세 가지 일도 많다고 생각한다.
복수의 업무가 주어진다면, 상사에게 기간 연장을 요청해 가능한 한 겹치는 기간을 줄이는 것도 방법이다. 하지만 가장 이상적인 업무 형태는 한 가지 업무를 진해하고 마무리한 뒤에 다음 업무를 시작하는 것이다.
3. 시간은 인생의 모든 부분과 연결되어 있다.
시간은 인생의 모든 부분과 긴밀히 연결되어 있다. 노하우 하나만을 몸에 익히는 것은 시간의 일부만을 아는 것이다.
정말 하고 싶은 일이 있다면, 그리고 그 일을 끝까지 포기하지 않고 해낼 수 있다면, 망설이지 말고 뛰어들어라. 반드시 길이 열릴 것이다. 내 경험으로 미루어보면, 참여하고 싶은 프로젝트나 개발하고 싶은 새 기술이 있을 때는 2~3일 정도의 시간을 투자해 눈에 보이는 결과물을 만든 후 상사에게 직접 보여주는 것이 효과적이었다.
시간을 지배하는 사람이 인생을 지배한다. 현재의 생활이 만족스럽지 않다면 자신이 시간에 지배당하고 있다는 사실을 깨달아야 한다.
결국 이 책은 <시간 관리에 대한 노하우> 보다는 <자신이 정말 원하는 인생, 행복한 인생을 살기 위해 인생을 이루는 ‘시간’을 어떻게 보낼 것인가>에 대한 책인 것 같다.
저자가 프로토타입을 보여주라고 한 것도 ‘짧은 시간’내에 ‘내가 진정으로 원하는 일’을 얻어내는 방법, 해내는 방법 중 하나이기 때문이다.
4. 소프트웨어 엔지니어에게 일의 즐거움, 원동력이란
기존 제품과 서비스에 대해 ‘불편한 점은 무엇인가? 마음에 들지 않는 점은 무엇인가?’라는 의문을 품은 것 뿐이다. 이 질문에 대한 답을 찾았다면 다음에 할 일은 간단하다. ‘그렇다면 불편한 점을 편리하게 바꾸고 마음에 들지 않는 부분을 개선하려면 어떻게 해야 할까?’를 생각해 실현시키면 되는 것이다.
여전히 내( = 저자는 엔지니어였고, 이후 회사를 창업했다.)게 회사 경영은 수수께끼였다.
그러자 퍼뜩 이런 의문이 들었다.
‘마이크로소프트에 있을 때는 어째서 모든 일이 순조로웠나?’
‘그때는 왜 소프트웨어를 내놓기만 하면 성공했을까?’
얼마 후 나는 그 모든 성과가 윈도우95의 개발을 주도했던 시카고 팀 덕분이었다는 결론을 내렸다. 당시 우리 시카고 팀은 일에만 몰두했다.
카이로 팀의 개발을 위해 이미 많은 예산이 소모되었다는 사실이나 회사 내부에서 벌어지는 알력 다툼 같은 건 염두에 없었다. 중요한 건 ‘빨리 윈도우95를 출시해서 애플을 앞지르자’ ‘IBM을 이기자’, ‘전 세계에 우리의 힘을 증명하자’라는 목표를 향해 달려가는 것밖에 없었다. 모두가 한 방향을 바라보고 있었고, 모두가 같은 생각을 했다. 그랬기에 그 무엇도 힘들지 않았다. 하루에 열일곱 시간씩 일을 해도 아무렇지 않았다.
만약 우리의 목표가 서로 달랐다면 주말까지 회사에 나올 생각은 하지 않았을 것이다. 그럼에도 그 무렵의 나는 하루하루가 즐겁기만 했다.
규모가 작은 회사에서는 개발자가 ‘일에만 몰두’ 하는 것이 더욱 쉽지 않은 것 같다. (물론 나는 아직 3년차 개발자 어린이일 뿐이고, 겪어본 회사도 많지 않아서 내 이런 생각이 틀린 것일 수도 있다.) 내가 겪은 바로는 그렇다. 규모가 작다보니 여러 소식을 빨리 접할 수 있고, 정보가 투명하게 공개되는게 또 장점이기도 하다.
그래서 회사의 자금 상황 등에 대해서 구체적이진 않지만 ‘분위기’는 느낄 수 있고, 예산 소모나 투자 유무, 매출 정도에 따른 회사 분위기가 개발자에게 바로바로 느껴지기도 한다.
그래서 ‘개발에만 몰두할 수 있는 경험’이 궁금하고 부럽기도 하다.
’모든 성과가 윈도우95의 개발을 주도했던 시카고 팀 덕분이었다는 결론을 내렸다. 당시 우리 시카고 팀은 일에만 몰두했다.
카이로 팀의 개발을 위해 이미 많은 예산이 소모되었다는 사실이나 회사 내부에서 벌어지는 알력 다툼 같은 건 염두에 없었다.’ 라는 저자의 말이 너무 부럽다.
시카고 팀에서의 일을 떠올린 덕분에, 나는 내 의문에 대한 답을 발견했다. 기업을 성공으로 이끄는 일은 힘든 게 당연하다. 100% 반드시 성공하는 상품은 없다.
당연히 업무상의 실수도 생기고, 함께 일하던 동료가 그만두기도 하며, 자금 문제를 겪기도 한다. 그런 상황 속에서도 목표를 향해 전진하는 사람만이 성공하는 것이다. 구글조차 초창기에는 매출이 없었다.
그럼 성공한 사람들은 어떻게 목표를 향해 전진할 수 있었던 걸까? 아주 간단하다. 그들이 그 일을 하고 싶었기 때문이다. 돈 때문에 모인 사람들은 그 일이 새각만큼 돈이 되지 않는다고 파악한 순간 흩어진다. 하지만 어떤 일을 실현시키고 싶다고 생각하는 사람들이 모이면 목표를 향해 계속 전진할 수 있다. 나는 그 사실을 뒤늦게 깨달은 것이다.
하나의 목표를 바라보는 사람들에게 누군가가 그만뒀거나, 자금이 부족하다거나 하는 문제는 전혀 상관 없는 일이다. 거꾸로 말해서, 그렇지 않은 사람들은 앞으로 나아가지 못한다는 뜻이기도 하다.
어떻게 하면 비즈니스 실적을 올릴 수 있을지, 자금을 어떻게 융통할지, 사람을 얼마나 늘릴지 같은 것들은 사소한 일에 지나지 않는다. 중요한 것은 하나의 목표를 바라보는 사람들이 모였느냐 아니냐의 여부다. 이로 인해 팀의 전원이 계속 앞으로 전진할 수 있느냐 없느냐, 성공할 수 있으냐 없느냐가 결정된다. 그리고 행복한 인생을 살 수 있는지의 문제는 자기가 좋아하는 일을 하느냐, 그 일을 계속할 수 있느냐 없느냐에 달려 있다.
지금은 회사를 경영하기 위해서는 기업 문화가 가장 중요하다는 사실을 알고 있지만, 유아이에볼루션을 설립한 직후에는 그렇지 못했다. 내가 열심히 일하는 모습을 모여주면 충분하다고 생각했다. 결국 어떤 기업 문화를 가진 회사를 어떻게 만들어갈 것인지가 직원들에게 전혀 전해지지 않았다.
그래 예산 소모나 투자 유무, 매출 정도를 알아차리고 신경이 쓰이는 것 까지는 좋다. 오히려 클라우드 비용 최적화등 비용이나 비지니스에 대해 알아볼 수 있는 기회가 되기도 하니까 말이다. 그런데 가장 힘들게 하는 건 ‘공통 목표의 부재, 기업 문화를 신경쓰지 않고 비전 제시를 하지 않는 리더’ 이다. ’모두가 한 방향을 바라보고 있었고, 모두가 같은 생각을 했다. 그랬기에 그 무엇도 힘들지 않았다. 하루에 열일곱 시간씩 일을 해도 아무렇지 않았다.‘ 라는 글이 슬프게 들리기도 하는 요즘이다.
5. 삶의 태도
당신에게 묻고 싶다. 지금까지 살면서 아무 일도 하지 않았는데 무언가 바뀐 적이 있는가? 당연히 없을 것이. 이제 결단하고 행동할 때다. 인생을 바꾸고 싶다면 그 정도의 각오는 필요하다. 갑작스럽겠지만 오늘부터 당장 해야 할 일이 있다. 자기 전에 내일 할 일에 대한 체크 리스트를 만드는 것이다. 절대 나중으로 미뤄서는 안 된다.
이 책을 읽는 독자 중에는 미래에 대한 불안감을 느끼는 사람, 혹은 더 좋은 환경에서 자신의 능력을 발휘하고 싶은 사람들도 꽤 있지 않을까 싶다. 단 한 번밖에 없는 인생이다.
절대 꿈을 포기해서는 안 된다. 그리고 그 꿈을 공유하는 동료를 만나 스스로의 일에 완전히 몰두하길 바란다. 왜냐하면 미래 사회는 그런 이들이 만들어가는 것이기 때문이다.
'Today I.. > Today I Read' 카테고리의 다른 글
[리팩터링 2판] 스터디 모집 및 시작. Chapter 1. 리팩터링: 첫 번째 예시 (0) | 2022.07.24 |
---|---|
[오브젝트] Chapter 1. 객체, 설계 (0) | 2022.05.10 |
[Clean code] Chapter 12. Emergence (창발적 설계로 깔끔한 코드 구현하기) (0) | 2022.03.06 |
[Clean code] Chapter 11. System (0) | 2022.03.02 |
[Clean code] Chapter 09. Unit test (0) | 2022.02.19 |