게으름에 대한 찬양

지훈진·2022년 2월 7일
1

BetterProgrammer

목록 보기
15/17

제목은 행복 철학으로 유명한 버드런트 러셀의 다른 저서의 제목에서 차용했다. 게으름은 개발자에게 가장 필요한 덕목이라 생각한다. 귀찮은 단순 반복적인 일을 안하려면 머리를 쓰는 거 말고 방법이 없기 때문이다. 남에게 시키기도 방법이지만 여기서는 논의하지 말자.

31장. '더 열심히'보다는 '더 현명하게'

문제를 해결할 때 하나의 도구나 한 가지 방법에 지나치게 몰입하는 건 언제나 위험하다.

수능 때는 어느정도 연습이 되어 그러지 않았겠지만, 수많이 봤던 모의고사를 기억해보자. 수리영역 시간에 한 문제에 막혀서 그것만 풀다가 끝나버려서 3번으로 몰빵을 찍어본 경험이 한 번 쯤은 있으리라 생각한다. 책의 문구처럼 한 가지 방법에 몰입하는 것도 위험하고 한 가지 문제에만 몰입하는 것도 위험하다. 시간은 한정되어 있지만 최선의 결과를 내어야 한다. 해결되지 않는 문제에 지나치게 몰입하여 시간과 체력을 소비하지 말고, 다른 일을 처리하고 리프레시 한 뒤에 다시 보자. 그 사이에 새로운 인사이트가 생길 수 있다.

좋은 프로그래머는 경험으로 축적된 무기고를 가지고 있어서, 정확한 방법을 찾아낼 수 있고 여러 해결 방법을 돌아 볼 수 있다.

장애든 뭐든 온갖 일을 겪어보는 것이 좋다. 다른 사람들의 문제를 보고 그것을 해결하는 과정을 보는 것도 중요하다. 이런 저런 문제들을 해결하며 진흙탕을 구르다보면, 어느샌가 인사이트가 생긴다. 뭐라고 설명하긴 어려운데, 원인을 찾는 과정이 빨라지고 긴급처방 방법과 근본적 해결 방법에 다가가는 방법을 알게 된다. 종종 돈으로 때우는 게 맞다는 처방도 할 수 있다.

현명하게 재사용하라.

자동차를 만든다고 할 때, 바퀴는 사오자. 이더리움 입출금 코드를 만들 때 RPC 스펙보면서 다 구현하지 말고 web3 라이브러리를 쓰자...

몇 시간에 걸친 어리석은 업무로 자신을 불태우지 말라.

아저씨의 원빈처럼 오늘만 살 거 아니다. 가능한 한 업무시간을 준수하도록 해야한다. 물론 회사가 야근을 요구할 수는 있지만... 그렇다면 업무 텐션을 적절히 조절하자... 더불어 이직 준비도 하자. 과도한 양의 업무를 요구하면 이야기해서 업무를 줄여야한다. 받아들여지지 않는다면 마찬가지로 이직을 준비하자.

열심히 일하지 말라는 것은 아니다.

급여생활자로서 업무에 충실해야 함은 당연하다. 다만 어떻게 해야 더 효율적일지 생각해야 한다. 안 그러면 저기 저 일 안하고 졸고 있는 아저씨랑 똑같은 거다.

32장. 끝나야 끝나는 것

커다란 작업을 더 작고 잘 아는 일로 나누라. 더 정확하게 진행 상황을 판단할 수 있을 것이다.

우리는 머지 소트에 대해 배웠다. 작게 쪼개서 정렬하면 시간 복잡도가 줄어든다. 업무도 마찬가지로 쪼개면 덜 복잡해진다.

필요 이상으로 많은 작업을 수행하지 말라. '완료' 상태까지만 작업하라. 그런 뒤에는 중지하라.

작업을 하다보면 리팩토링하고 싶어 손이 근질거리는 코드들을 수 없이 만나게 된다. 리팩토링하지 말라는 것이 아니다. 새로운 작업으로 리팩토링을 만들고 새로운 브랜치에서 새로운 작업을 하면 된다. 하던 업무는 하던 업무로 끝내야 한다.

33장. 교훈 얻기

"잠깐만, 지금 뭐가 문제인지 알아낸 것 같아. 이번엔 고쳐볼게."

라고 팀원이 말하고 실패한다면, 나가서 커피를 마시며 문제에 대해 이야기를 해보자. 본인이 이렇게 이야기하고 실패했다면, 이 문제에 대해 이야기할 수 있는 아무나 데리고 나가도 괜찮다. 문제와 지금까지 시도했던 방법들에 대해 이야기하다보면 번뜩이는 무언가를 깨달을 수도 있다. 지나친 몰입의 함정에 빠졌을 때 잘 빠져나오도록 도와줘야하고, 본인도 잘 해야한다.

profile
집사없는 개발 고양이

0개의 댓글