티스토리 뷰

훌륭한 프로그래머 되는 법 프로젝트와 팀을 성공으로 이끄는 선배 개발자의 노하우

피트 구들리프 지음 | 최원재, 강전희, 안재덕, 남윤화 옮김 | 한빛미디어 | 2015 12 10 출간

 

좋은 코드를 쓰기 위한 행동

l  어떤 코딩 환경에서든 단지 작동하는 것처럼 보이는 코딩은 거부해야 한다.

l  올바르게 작동하는 훌륭한 코드를 짜도록 노력해야 한다. (그리고 올바른 작동을 증명하는 적절한 테스트도 갖추어야 한다)

l  의도가 드러나는 코드를 작성해야 한다.(다른 프로그래머들이 쉽게 파악하고 이해할 수 있어야 한다)

l  유지 보수가 가능해야 한다.(자신이나 다른 프로그래머들이 이후에 쉽게 수정할 수 있어야 한다)

l  정확해야 한다.(문제를 풀었음을 증명하는 모든 단계를 통과할 수 있어야 한다)

l  기능이 작동하는 것처럼 보이기만 해서는 안 된다.

 

버전 관리

l  코드 정리와 기능 변화는 별도의 커밋으로 이루어져야 한다.

 

코드 분석

l  코드의 어느 부분부터 보아야 하는지 파악하기.

l  코드의 부분별 기능을 알아내고, 그 기능을 어떻게 수행하는지 살펴보기.

l  코드의 품질을 가늠하기.

l  시스템 내부를 어떻게 탐색할 것인지 계획하기.

l  코딩 관례를 이해하고, 본인의 수정 사항이 그것과 어울리도록 만들기.

l  특정 기능이 있을 법한 위치를 파악하고, 그 기능에 의해 발생하는 버그 찾아보기.

l  코드와 함께 그것의 중요한 부속 부분들인 테스트 코드 및 문서 등의 관계를 이해하기.

 

금기 사항

l  지루한 부분은 다른 프로그래머가 하도록 하고, 자신은 항상 즐거운 작업만 하는 것은 이기적이다.

l  실제 사업적 가치를 불러일으키지 않는데도, 단순한 변덕으로 작업 체계를 땜질하는 것은 위험하다. 불필요한 변화와 위험을 추가하는 것이다. 영리적 관점에서 볼 때 더 큰 이득인 다른 부분에 투자할 수 있는 시간을 낭비하는 것이다.

l  좋아하는 사업이나 하찮은 과학적 실험으로 탈선한다면, ‘진짜작업은 절대 끝낼 수 없을 것이다.

l  명심하라. 모든 프로그래밍 업무가 매력적이거나 흥미롭지는 않다. 대부분의 일상적인 업무가 평범한 업무다. 그것은 현실 세계에서 프로그래밍의 본성이다.

l  이미 존재하는 무언가를 재작성하는 것은 총체적인 노력낭비다. 우리 직업에 대한 지식의 집대성에 공헌하는 것이 아니다. 이미 존재하는 무언가를 다시 만들기란 쉽지만, 어쩌면 기존에 만들어진 구현물보다 더 좋지 않거나 끔찍하고 새로운 버그로 가득할 수도 있다.

 

자극 받기

l  코딩 연습을 하라. 가치 있는 의식적인 습관을 만들어줄 것이다.

l  재미 삼아 해결하고 싶은 코딩 문제를 찾아보라.

l  개인적인 프로젝트를 시작하라. 여기에 모든 여가시간을 쏟아 붓지는 말라. 다만 노력을 쏟아 부을 수 있는 새로운 무언가를 찾아내라.

l  폭넓은 분야에 대한 개인적인 흥미를 유지하면, 연구하고 배울 수 있는 다른 것들에 대한 좋은 아이디어를 얻을 수 있다.

l  다른 플랫폼이나 패러다임을 무시하지 말라. 자신이 알고 있는 것을 다시 작성하도록 노력하고 다른 플랫폼이나 다른 종류의 프로그래밍 언어를 사랑하라. 결과를 비교하고 차이를 확인해보라. 어떤 개발 환경이 특정 문제에 더 적합한가?

l  현재 일하는 곳이 기대에 미치지 못하거나 자극을 주지 않는다면, 새로운 직업을 찾는 것을 고려해보라. 맹목적으로 현 상황을 받아들이지 말라! 가끔 배는 흔들릴 필요가 있다.

l  다른 의욕적인 프로그래머들을 만나거나 함께 일하라. 개발 콘퍼런스에 참석하거나 지역 사용자 그룹에 참여하라. 그곳에는 새로운 아이디어가 흘러 넘칠 것이고, 다른 참석자의 열정으로 인한 활력으로 가득 차 있을 것이다.

l  작업 중인 진행 상황을 볼 수 있도록 하라. 무엇을 성취했는지 확인할 수 있도록 소스 로그를 리뷰 하라. 일일 로그 혹은 해야 할 리스트를 작성하라. 전진하면서 방해물을 제거하는 것을 즐겨라.

l  활기를 잃지 않도록 하라. 코드 파편으로 인해 지루해지거나 억눌리거나 압도당하지 않도록 휴식을 취하라.

l  시간 낭비를 두려워하지 말라. 이전에 이미 완료된 무언가를 작성하라. 자신의 연결 리스트나 표준 GUI 구성 요소를 작성하는 데 손해란 없다. 이미 존재하는 것과 자신의 것이 어떻게 다른지 비교하기 위한 훌륭한 훈련일 수 있다(다만 실제로 적용할 때는 조심하라).

 

부진 피하기

l  동일한 도구만 사용하는 습관을 멈추라. 단지 배우는 것만으로도 삶이 더 편안해질 수 있는 더 좋은 도구들이 있을 것이다.

l  모든 문제에 대해 동일한 프로그래밍 언어를 적용하는 것을 그만두라. 단지 호두를 깨기 위해 쇠망치를 쓰고 있는 상황일 수도 있다.

l  다른 OS를 사용해보라. 적절하게 사용하는 방법을 익히라. 좋아하지 않는 OS일지라도 짬을 내어 장단점을 파악해보라.

l  다른 텍스트 편집기를 사용해보라.

l  키보드 단축키에 대해 알아보고, 작업 흐름에 어떤 영향을 주는지 확인해보라. 마우스를 사용하지 않도록 의식적으로 노력해보라.

l  새로운 주제에 대해 알아보라. 현재로서는 알아야 할 필요가 없는 주제에 대해 알아보라. 예를 들어 수학적 지식이나 정렬 알고리즘에 대해 깊게 알아보라.

l  개인적인 프로젝트를 시작하라. 그렇다. 소중한 여가 시간의 일부를 괴짜스럽게 할애하라. 오픈 소스로 게시하라.

l  프로젝트의 새로운 부분을 담당하라. 많이 알지 못하는 부분을 담당하라. 당장은 생산성이 떨어질 수 있으나, 코드에 대한 더 폭넓은 지식을 얻을 수 있고 새로운 것들을 배울 수 있다.

 

자신을 보살피라

l  주기적으로 쉬라.

l  일하는 동안 물을 충분히 마시라.

l  적절한 눈 운동으로 눈의 긴장을 풀라.

l  적절한 시간 동안 일하고 밤에는 충분히 쉬라.

 

다른 프로그래머를 관찰

l  문제에 대해 어떻게 생각하고 해결하는가

l  문제의 원인을 찾아가는 경로를 어떻게 계획하는가

l  어려운 상황에서 어떤 태도를 취하는가

l  특정 문제에 집중할지 여부를 어떻게 파악하는가, 언제 쉬는가, 다른 접근법을 시도할 때는 언제인가

l  자신만 모르는 그들만의 특별한 코딩 기법이나 기술은 무엇인가

 

팀에서 인정받는 좋은 방법 주니어

l  팀의 코드베이스를 파악하고, 특히 직급 높은 엔지니어가 작성한 코드를 수정하는 것.

l  이 과정에서 코드 작성자에게 질문을 해야 하는 경우가 많이 생김.

l  코드를 읽다 생긴 의문을 풀고자 질문을 하다 보면, 의문에 적절한 이유가 있는 경우도 있는 반면 이유가 없는 경우도 적지 않음을 알게 됨.

l  시니어로서는 누군가 자신이 작성했던 코드를 수정하려 질문을 하면 회피하기가 쉽지 않음.

 

문장

코딩은 기계적으로 해서는 안 된다. 머리를 쓰자!

복사하기 - 붙여 넣기 코딩은 자제하라. 복제된 코드(그리고 복제된 버그)로부터 고통 받지 말고, 로직을 공통 함수와 공통 라이브러리에 넣으라.

한 곳이 아닌 여러 곳에서 사용되어야 한다는 것을 깨닫는 순간, 바로 리팩토링하라.

나중에 버릴지언정 지금 배우고 있는 걸을 기록하라.

목적을 가지고 자신만의 지식 포트폴리오를 관리하라.

스스로 생각하고, 다른 사람들도 스스로 생각할 권한을 누릴 수 있도록 하라. - 볼테르(Voltaire), 프랑스 계몽주의 작가

온종일 지루한 업무를 수행하느라 바쁜 와중에 오히려 그 안에 흥미로운 도전을 끼워 넣어 균형을 맞추는 것이야말로 더 나은 프로그래머가 되기 위한 길이다.

정체를 주의하라. 더 나은 프로그래머를 추구하는 과정은 가장 안락한 삶을 의미하지 않는다.

대접 받고 싶은 대로 대접하라. – 마태복음 712

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

완료 상태가 무엇인지 정의하는 것에서부터 첫 번째 작업을 시작하라.

필요한 것(완료 상태)보다 더 많은 일을 하지 말라.

 

[후기]

개발자를 기준으로 업무에 관련되어 포괄적으로 다룬 책이어서 좋았음.

소프트웨어 공학, 개발자로서의 가치관, 태도, 습관, 업무 자세까지 두고두고 다시 볼 가치가 있음.

1년뒤에 다시 봤을 때는 생각이 얼마나 달라졌는지 같은 내용을 어떻게 해석되는지 기대가 됨.

'책 메모' 카테고리의 다른 글

[자기계발] 왜 성공하는 사람만 성공할까  (0) 2017.01.21
댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2024/05   »
1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30 31
글 보관함