Memo
책 <개발자 원칙>
팅리엔
2023. 3. 19. 13:15
<개발자 원칙>
박상철 외 8인 지음
- 어떤 일을 시작할 때면 그 일을 해야 할 개인적인 의미를 찾아 가능한 강한 내적 동기를 가지고 일하려고 의식적으로 노력했다. 정 동기가 찾아지지 않으면 일부러 내가 하고 싶은 일을 그 과제에 섞어넣기도 했다.
- 오류가 발생하면 소스 코드 레벨에서 이해하자. 해당 오류를 스택오버플로우에서 검색하면 대부분은 손쉽게 해결책을 얻을 수 있다. 여기서 끝내버리면 깊은 지식을 얻기 어렵다. 해당 툴의 소스 코드를 확인하면 어떻게 해야하는지 깊은 지식을 얻을 수 있고, 파생되거나 비슷한 문제를 예방할 수도 있게 된다.
- 좋은 정보를 뇌에 입력하는 것도 좋지만, 제대로 이해하고 있는지 확인받는 것도 중요하다. 아예 모르는 것보다 잘못 아는 것이 위험하다. 가급적이면 결과물을 공개해 다른 사람의 조언을 들을 기회로 삼아보라.
- 배워야 할 지식을 현재 업무랑 관련된 것에 50%, 앞으로 관련될 것에 30%, 관련 없지만 관심 있는 것에 20% 정도만 시간을 투자해보라.
- 의도적으로 익숙한 방식을 멀리하고, 의도적으로 낯선 방식을 선택해보라. 익숙한 것을 반복하면 더 오래 기억할 수는 있게 되지만 성장하지는 못한다.
- 개구리를 해부하지 말고, 직접 만들어라. 개구리를 더 잘 이해하려면 개구리 해부보다는 개구리와 똑같다고 부를 수 있는 개구리를 직접 만들어봐야 한다.
- 목표 세우기: Specific, Measurable, Actionable, Realistic, Time-related
- 프로덕트 중심으로 목표를 정리하라. "플러터를 공부해야겠다"가 아니라 "플러터로 여행 기록용 모바일 어플을 만들겠다".
- 프로그래머에게 요구되는 것은 100점이 아닌 80~90점짜리 프로그램을 기한 내에 완성하는 일이다.
- 동시대를 살아가는 개발자들의 흐름을 놓치지 말아야 한다. 독자적인 스타일은 양날의 검처럼 갈라파고스화가 될 위험도 있기 때문이다.
- Make it work, make it right, make it fast.
- 일관성 있는 코드가 읽기 좋다. 기존 코드가 에러 응답으로 null을 반환한다면 새로 만든 코드도 그렇게 해야 한다. 예외를 던지는 것이 더 좋다면 동료들을 설득해서 기존 코드도 모두 바꿔야 한다.
- 코멘트 없는 코드가 읽기 좋다. 그러나 다른 개발자가 다른 시점에 코드를 해석하는 데 필요한 컨텍스트는 꼭 필요한 코멘트이다. 대부분의 경우 코멘트보다 테스트 케이스가 더 유용한다.
- 규칙 1, 하지마라. 규칙 2, 아직 하지마라. 성능이 좋은 코드는 대부분 이해하기 어렵다. 그 코드는 아마 성능을 최적화할 필요가 없을 것이다.
- 유연성이 있고 어려운 코드보다는 유연성이 없더라도 쉬운 코드가 더 좋은 코드다. 중고급 개발자들의 직업병 - if문을 극단적으로 배제하고, Factory를 과도하게 사용하고, 클린 코드와 SOLID를 숭배한다. 이것들은 도구일 뿐 목표가 아니다.
- 레거시를 물려받았다면 어떤 것이 자산이고 어떤 것이 부채인지 식별해야 한다. 부채 청산의 시작은 자동화된 테스트를 확보하는 것이다. 먼저 E2E 테스트를 작성하고, 이를 기반으로 단위 테스트가 가능한 코드로 천천히 조금씩 리팩토링해나가야 한다.
- 코드를 읽을 때는 처음부터 끝까지 빠르게, 여러 번 반복해서 읽어야 한다. 글쓴이의 의도와 배경을 포함한 문장 해석에 필요한 부가적인 정보인 컨텍스트를 이해해야 한다.
<왜 일하는가>
이나모리 가즈오 지음
- 노동은 자기가 맡은 일을 달성하고 실적을 내는 것뿐만 아니라 개인의 내면을 완성하는 과정이다.
- 자신이 좋아하는 일을 찾는 건 손에 잡히지 않는 파랑새를 쫓아다니는 것과 다를 바 없다.
- '내가 만든 제품을 끌어안고 싶다!' 나는 제품을 개발하면서 항상 이런 생각을 한다.
- 일을 원활히 처리하기 위해서는 어떤 일이든지 열정적으로 임하는 사람이 필요하다. 그 사람은 자기가 중심이 되어 마치 상승기류가 치고 올라가듯 전 구성원을 이끌고 조직을 역동적으로 움직이게 한다. 그렇게 자신이 먼저 적극적으로 일에 임하고 주변 사람들에게 동기를 부여해 일을 활기차게 진행하는 사람은 '소용돌이의 중심에서 일하는 사람'이다.
- 조직에는 남에게 부탁받지 않아도 무언가를 시도하려고 먼저 말을 꺼내는 사람이 반드시 필요하다. 이는 경력과 직급과는 아무런 관련이 없다.
- 불평불만을 일삼거나, 어둡고 우울한 기분에 젖어 있다거나, 더 나아가 다른 사람에 대한 원망, 증오, 시기 같은 감정을 품어선 안 된다. 이런 생각을 하는 것 자체가 인생을 어둡게 만든다.
- "어떻게 해야 훗날을 대비해 여유 있는 경영을 할 수 있는지, 그 구체적인 방법을 가르쳐주시지 않겠습니까?" 질문인지 항의인지 모를 발언이었다. 마쓰시타 회장은 잠시 당혹스러운 표정을 지으며 생각에 잠겼다. 그리고는 혼잣말처럼 "그렇게 하려고 마음먹으면 되지" 하고 중얼거리더니 그대로 아무 말이 없었다.
- 대담함과 세심함은 서로 모순된다. 하지만 이 둘을 모두 갖고 있어야 무슨 일이든 완전하게 해낼 수 있다.
- 내게는 매일이 목숨을 내놓고 벌이는 정면 승부였고, 그 하루하루의 축적을 통해 실력을 쌓았으며, 그 실력에 자신감을 갖고 있었다.
- 낙관적으로 구상하고, 비관적으로 계획하며, 다시 낙관적으로 실행한다.