마인드셋
- 레버리지 = 생산한 효과 / 투자한 시간. 레버리지를 효과성의 측정 기준으로 삼고 레버리지가 높은 활동에 집중하라
- 성장 마인드셋을 갖춰라
- 자신의 학습률에 투자하라. 학습은 이자처럼 복리로 계산된다.
- “회사가 근무 시간에 도전적이지 않은 편한 업무를 시키고 지급한 급여는 훨씬 낮은 지적 성장률을 수용한 대가로 주는 돈입니다.”
- 자신의 성장에 투자하려면 스스로 20%의 시간을 개척해야 한다.
“훨씬 낮은 지적 성장률을 수용한 대가로 주는 돈”
이 문장이 나를 참 좌절하게 하고, 크게 부끄럽게 만들었다. 내가 쌓아온 연차에 대해 다시 되돌아보게 되고, 되돌아봤을 때 그냥 익숙하고 편한 업무를 많이 수행했었던 시간들이 참 후회되었다.
어떻게보면 “회사 일”을 잘하게 될 수도 있지만, 막상 그건 진짜 “일”도 아니고, 개발도 아닌, 그저 그 회사에만 국한된 어떤 잡무였을수도 있겠다는 생각이 들었다.
학습은 이자처럼 복리로 계산된다고 하는데, 게으름도 복리로 계산되어 나를 주저앉힐 것이라는 압박감이 들었다.
우선순위
- 효과적으로 우선순위를 정하는 첫번째 단계는 해야할 모든 업무를 목록으로 정리하는 것이다.
- 모든 것을 하려고 하지 마라. 중요한 것에 집중하라.
- 주의하지 않으면 인간은 기본적으로 밀려드는 모든 긴급한 문제에 즉시 반응하며, 일상적인 방해 요소가 우선 과제를 제치고 제멋대로 일정을 휘두르게 된다.
- 끊임없는 맥락의 전환은 어느 하나의 활동에도 제대로 집중하지 못하게 방해하고 전체적인 성공 가능성을 감소시킨다.
내가 개발하지도 않은 부분을 쉽게 수정할 수 있다는 것 자체가 굉장히 작은 티켓이었다는 것이고, 그런 티켓들을 수십개 처리하는 것보다 큰 문제를 해결하는게 더 유의미할 것 같다.
또한 함께 읽었던 ‘원씽’과 주요한 내용이 비슷하다. 컨텍스트 스위칭을 경계하고, 나만의 우선순위를 구축해야겠다.
자동화
- 하루에 일할 수 있는 시간에는 한계가 있으므로 더 많이 노력하는 것으로는 영향력을 높이는 데 한계가 있다. 도구는 근무 시간의 한계 너머로 영향력을 키울 수 있게 해주는 승수
- 현재 문재를 재현하기 위해 어떤 조치를 취할 수 있는지 의식하며 줄일 만한 단계가 있을지 생각
- 좋아하는 텍스트 에디터와 IDE를 능숙하게 다루기
- 수동 작업흐름을 자동화
- 자신의 권한 내에 있는 프로세스는 사전에 고치려 하고, 자신의 통제를 벗어나는 영역에 속하는 문제는 가능한 한 회피하려 노력한다.
- 큰 기업에서는 자신의 권한 밖에 있는 병목을 발견했을 때 피하는 것이 최선이다.
생산성에 대해 크게 고민하지 않고 살았었는데, 작게는 단축키에서부터 크게는 생산성 툴까지 얼마나 많은 차이가 벌어질 수 있는지 인지하게 되었다. 일할 수 있는 시간은 정해져있으므로, 그 시간을 어떻게 컴팩트하게 보낼 수 있을지 많은 고민을 해야겠다.
큰 기업에서는 자신의 권한 밖에 있는 병목이 많다는게 공감이 되었다.
그런 병목에 너무 스트레스 받지 않고, 잘 회피하는 방법도 배우고 어떻게하면 최종 검토 단계에 빠르게 진입할 수 있을지 고민해보자!
피드백
- 가장 위험한 부분을 먼저 이해하면 사전에 계획을 업데이트해서 모든 노력이 허사가 될 위험을 피할 수 있다.
- 피드백을 개방적으로 수용하라. 피드백과 비판을 개인적인 공격이 아닌 발전의 기회로 보라.
- 코드를 일찍, 자주 커밋하라.
- 코드 리뷰를 철저한 비평가에게 부탁하라.
- 최대한 팀원들과 맥락을 공유할 수 있게 프로젝트를 구조화하라. 여러 프로젝트를 병렬로 각자 진행하지 않고 협업을 늘릴 수 있게 팀 프로젝트를 연속으로 진행하면 학습 면에서도 유리하다.
가장 위험한 부분을 먼저 해결하고, 이해하는 방식으로 작업하는 게 중요한 것 같다. 논란이 될만한 여지가 있으면 초반부터 미리 공유해서 방향을 잡는 게 좋은 것 같다.
또한, 큰 PR에 피로감을 많이 느낀다… 어디서 들은 말인데 10줄의 코드는 매우 많은 리뷰를 받지만 1000줄의 코드는 그냥 LGTM이라는 말이 있다.
최대한 짧게 짧게 쳐서 올리고, 서로 논의하는 게 참 중요한 것 같다.
그리고 병렬적으로 일하지말고 함께 협업하는 방식으로 연속적으로 일하라는 말이 참 좋았다. 서로가 서로가 하는 일을 모른다면 정말 비효율적인 커뮤니케이션이 많이 일어난다.
소프트웨어 품질
- 근무 시간이 늘어나면 시간당 생산성이 떨어진다.
- 초과 근무에는 대개 그와 동일한 시간을 들여 근로자들이 자신의 생활을 정상화하는 보상적 언더타임이 뒤따른다.
- 기한을 향한 전력 질주 때문에 기술 부채가 유발된다.
- 올바른 추상화를 선택하면 프로그래밍이 설계부터 자연스럽게 흘러간다.
- 어려운 문제를 한 번 해결하면 그 해결책을 여러 번 사용할 수 있다.
- 좋은 추상화의 특징
- 배우기 쉽다
- 문서가 없어도 사용하기 쉽다
- 확장하기 쉽다
- 요구조건을 충족할 정도로 충분히 강력하며 대상 사용자에게 적합하다
- 올바르지 않은 코드에 들이는 시간은 부채에 대한 이자로 간주된다.
- 더 효과적인 개발자가 되려면 기한에 맞춰 업무를 완료해야 할 때는 어쩔 수 없이 기술 부채를 만들지만, 대신 주기적으로 그 부채를 상환해야 한다.
나의 거대한 기술부채를 최대한 빨리 상환해야하는데.. 라는 마음을 굳게 먹으면 꼭 일이 또 밀려온다. 이자만 갚다가 원금을 상환하지 못하고 있다. 정말 악덕대부코드 그 자체다.
훌륭한 엔지니어링 문화의 특징
- 개발 주기 반복 속도를 최적화한다.
- 끊임없이 자동화를 추구한다.
- 올바른 소프트웨어 추상화를 구축한다.
- 코드 리뷰를 활용해서 높은 코드 품질을 유지하는 데 집중한다.
- 서로 존중하는 근무 환경을 유지한다.
- 코드 소유권을 공유한다.
- 자동 테스트에 투자한다.
- 20%의 시간이나 해커톤을 통해 실험할 시간을 준다.
- 학습하고 꾸준히 발전하는 문화를 조성한다.
- 최고의 개발자를 고용한다.
나는 정말 숨쉬듯이 자기 객관화와 자기 비판, 자기 검열을 한다. 아마 나의 개발인생이 끝날 때까지 나는 불안하고, 그 불안감을 기반으로 계속 공부하고 자기계발을 할 것같다.
이런 불안감에 대해 팀장님과 얘기한 적이 있었는데, 팀장님은 잘하고 있는 사람들이 자신을 채찍질 하는 것을 많이 보았고 본인도 그러셨다고 하셨다. 그게 삶을 갉아먹기 때문에 안타깝고 그러지 않았으면 좋겠다고 하셨는데.. 사실 그게 어느정도의 원동력인 것 같기도 해서 어떻게 내려놔야 할지는 모르겠다.
2023년에 썼던 서평을 다시 읽으며 내가 중요하게 생각했던 문장들도 다시 되돌아보고, 그 때의 생각과 달라진 점들을 걸러내보았다. 1년 사이에도 참 많은 가치관의 변화가 생기는구나 라는 생각이 든다.