최범균님이 쓰신 책들은 찾아서 보는 편이었는데, 그러던 중 발견한 최범균님의 강의
사실 이때가지는 '백명석'님은 잘 몰랐지만 해당 강의를 수강하고 멋진 개발자임을 느꼈고 팬이 되었다!!
어떤 내용을 다루는 강의였는지 기억하기 위해, 가벼운 내용만 정리
성장
왜 성장해야 할까?
- 내가 제어할 수 있는 거에 집중이 필요
- 열심히는 누구나 한다. 잘 성장하는 것이 필요
- 받은 만큼 일한다 vs 받고 싶은 만큼 일한다.
- 7할의 불합리가 세상을 지배하지만 3할의 이치도 틀림없이 행해지고 있다!
성장하는 방법
롤모델
+ 주변에 내가 되고 싶은 개발자를 찾아라
+ 그가 왜 잘하는지를 탐구하고 어떻게 하면 그와 같이 될 수 있을지를 파악하고 노력하라
+ 무조건 실력자의 바지를 붙자고 늘어져서 하나라도 더 배워라!! 본인이 노력해야하는 건 당연
+ 왜 그러는지 이해가 되지 않더라도 기술을 모방하라.
+ 모방하고 혼나고 모방하고 혼나고 (암기/ 1만시간의 법칙)
공유
+ 개인적인 학습만으로는 성장에 한계
+ 업무 수행을 통해 얻은 지식과 경험의 공유를 통한 상호 성장이 중요
+ 공유받는 사람이 아니라 알려주는 사람이 잘됨
의도적 수련
+ 일, 놀이, 수련의 구분
+ 같은 코드를 정해진 시간 동안 할 수 있는 데까지 리팩토링 해보기
+ 같은 장난감을 여러 번 풀어보기
+ 업무만 열심히 해서는 고수가 될 수 없음
+ 전문성 연구에 따르면, 한 분야의 세계적 고수가 되려면 10년의 수련 혹은 도합 일만 시간 이상의 수련 필요
코드리뷰
코드리뷰는 왜 해야 할까?
목적
+ 주목적
+ 품질 문제 검수(버그, 장애)
+ Better code quality
+ 아키텍처 속성 개선을 위한 코드 개선
+ Learning / Knowledge transfer
+ 코드, 해결책 등과 관련된 지식 공유에 기여
+ 공유(주고 받는 학습)을 통한 역량 증대 및 성장
+ 참여한 모든 사람들의 배움의 기회
+ 대개의 경우 리뷰어들은 리뷰 과정에서 지식을 얻게 됨
코드리뷰 기법들
- 효율적인 PR 방법
- 지루한 작업은 컴퓨터로 처리
- 예) 공백, 들여쓰기 같은 단순한 오류는 IDE 기능 활용
- PR을 올릴 때 주석 달기
- PR을 저자가 먼저 보고, 리뷰어들을 위한 설명을 코멘트로 남겨서 리뷰어들의 시간을 절약할 수 있게 하라
- 많은 사람들이 보게 하라
- 많은 사람들이 본다는 것을 알면 사람들은 대개 더 잘하려는 경향이 있다
- 지루한 작업은 컴퓨터로 처리
- 효율적 리뷰 방법
- 리뷰는 즉시 시작
- 고수준으로 시작, 저수준으로 내려가라
- 초기 라운드에서는 고수준 피드백으로 제한
- 버그, 장애, 성능, 보안 등
- Extract Method, Composed Method 등
- 고수준의 피드백이 처리된 후 저수준의 피드백 시작
- (선택적인) 설계 개선
- 변수명 변경, 주석을 명확하게 하는 것, 복잡도 등
- 초기 라운드에서는 고수준 피드백으로 제한
- 예제 코드에 관대하라
- 리뷰의 범위를 존중하라
- 태그를 활용
- 한두 등급만 코드 레벨을 올리는 것을 목표로
코드리뷰 체크 리스트
- 버그 장애
- 기능성
- 코드가 실제 기대되는 일을 하나?
- 가독성 / 유지보수 용이성
- 테스트
- 자료구조
- 성능
- 보안
- 설계
버그 장애
+ NPE
+ Thread safety
+ OOME
+ Memroy가 지속적으로 증가하는 가능성
+ connection, stream, session의 close
+ 적절한 resource pool
+ 단위 테스트 없는 중요 로직
+ 경계값 테스트
+ 외부 URL이나 DB를 n번 호출하는 경우
자료구조
+ 너무 많은 탐색
+ list에서 뭔가를 찾기 위해 너무 자주 iterate한다면 map?
+ 잦은 정렬
+ 결과를 반환하기 전에 항상 정렬한다면 TreeSet?
+ Map을 전역 상수로 제공하지 말자
설계
- SRP를 준수하며 결합도 / 응집도를 준수하나
- 고수준 컴포넌트가 저수준 컴포넌트에 의존하고 있는지(DIP)
- 기능확장을 코드 수정없이 할 수 있는지(OCP)
'기타 > 기타' 카테고리의 다른 글
[강의] 한달한권|이펙티브 자바 (0) | 2022.02.03 |
---|---|
[Window] 부팅시간 체크 (0) | 2018.10.14 |
[방화벽] Window10 방화펵 포트 열기 (0) | 2018.08.19 |
[VMWARE] VMWARE 이해와 포트 포워딩 (0) | 2018.08.15 |