티스토리 뷰

이번에는 클린 코더라는 책을 읽으며 흥미로웠던 내용들을 정리해 보았습니다.

1장 프로의 마음가짐

책임감을 가져라

테스트하지 않고 선적(배포)하는 일은 무책임한 행위이다. 실제 고객과 회사에 피해를 입힐 수 있기 때문에 어떠한 이유든 책임감을 갖고 테스트를 분명히 해야 한다. 만약 일정 등의 이슈가 있더라도 지켜야 한다. 미흡한 제품이 필드에 나가게 되는 순간부터는 뒷감당하기 어려워진다.

기능에 해를 끼치지 마라

고객이 회사에게 돈을 주고, 회사가 우리에게 급여를 주는 이유는 잘 돌아가는 소프트웨어를 만들어 내길 바라기 때문이다. 오류를 만들면 기능에 해가 되고 프로는 오류를 만들면 안 된다. 소프트웨어를 만들면서 버그는 일어날 수밖에 없지만, 가능한 버그가 일어날 확률을 0에 가깝게 만드는 것이 우리의 책임이다.

구조에 해를 끼치지 마라

소프트웨어가 바꾸기 쉬운지 아닌지를 증명하는 길은 실제로 조금 바꿔보는 것이다. 바꾸기가 생각보다 쉽지 않다면, 설계를 갈고 닦아서 다음번에 더 쉽게 바꿀 수 있도록 만들어야 한다.

코드를 조금 바꾸는 일은 언제 해야 할까? 항상 해야 한다! 모듈을 살펴볼 때마다 작고 가벼운 변화를 더해 구조를 개선해야 한다. 다시 말해, 코드를 읽을 때마다 구조를 바꿔야 한다. 이를 보이 스카웃 규칙이라 부르는데 보이 스카웃 규칙은 모듈을 체크인할 때는 항상 체크아웃했을 때보다 깨끗해야 한다는 규칙이다. 외면하지 말자.

테스트가 있어야 코드를 마음 편히 쉽게 변경할 수 있다.

끊임없이 배우기

IT 산업은 미친듯이 바뀌기 때문에, 어마어마하게 공부해도 간신히 따라잡는 정도다.

최신 의학 논문을 보지 않는 의사를 찾아가고 싶은 맘이 드는가? 최신 판례와 세법에 신경 쓰지 않는 세무사에게 일을 맡기고 싶은가? 최신 기술을 익히려 하지 않는 개발자를 과연 누가 고용할까?

직업 윤리

자신의 경력은 자신이 책임져야 한다. 실무 능력을 갖추는 일은 회사 책임이 아니다. 교육하고, 컨퍼런스에 보내고, 책을 사주는 일도 회사 책임이 아니다. 이런 일은 스스로 책임져야 한다. 자기 경력을 회사에 의존하는 개발자에게는 재난이 있을 것이다.

어떤 회사는 위 혜택들을 지원해주고, 이는 좋은 일이고 회사에서 호의를 베푸는 것이다. 하지만 이런 일이 회사 책임이라고 생각해서는 안된다. 회사가 호의를 베풀지 않으면, 스스로 방법을 찾아야 한다.

만약 주 40시간이 업무시간이면 한 주에 60시간 일할 계획을 짜야한다. 40시간은 회사를 위해 쓰고 나머지 20시간은 읽고 연습하고 공부하고 경력에 도움 되는 여러 가지 일들을 하며 자신의 커리어를 위해 쓴다. 프로는 직업을 돌보는 데 시간을 투자한다.

어떤 때는 회사 업무가 경력에 큰 도움이 되기도 한다. 그렇다면 20시간을 투자하는 것도 합리적이다. 하지만 그 20시간은 자신을 위한 시간임을 명심해야 한다.

멘토링

배우기에 가장 좋은 방법은 가르치는 것이다. 가르치고 배울 때 더 큰 이득을 보는 쪽은 선생님이다. 프로라면 후배들을 멘토링 하는 책임을 져야 한다. 후배들이 방치된 채 이리저리 떠돌게 두면 안된다.

업무 지식을 익혀라

프로라면 자신이 프로그래밍하는 업무 분야에 지식을 알아야 한다. 회계 시스템을 만든다면 회계에 대해, 여행 애플리케이션을 만든다면 여행 산업에 대해 적절히 알아야 한다.

프로답지 못한 행동 중 최악은 제품 사양이 사업에 이치가 맞는지 따져보지도 않고, 그저 사양에 따라 코딩하는 일이다. 사양에 오류가 있는지 알아보고 이의를 제기할 수 있을 만큼 업무를 알아야 한다.

2장 아니라고 말하기

반대하는 역할

프로라면 권위에 맞서 진실을 말해야 한다. 프로는 관리자에게 아니라고 말하는 용기를 가져야 한다.

관리자가 요구한 일정에 맞추는 것이 불가능하다는 사실을 충분히 알고 있다면, "좋아요, 노력해 볼게요."라고 말하는 것은 맡은 업무를 처리하는 것이 아니다. 일을 제대로 처리하는 유일한 방법은 "아니요, 불가능합니다."라고 말을 하거나, 협의를 통해 다른 대안을 찾는 것이다.

이해관계가 높을 때

이해관계가 높을 때야 말로 아니라고 말할 가장 중요한 순간이다. 이익과 손해가 클수록, 아니라는 말의 가치도 높아진다.

3장 예라고 말하기

약속을 뜻하는 말

무언가를 약속한다고 말할 때는 진심을 담고 실행해야 한다. 약속을 하는 행동은 세 부분으로 나뉜다.

  1. 하겠다고 말한다.
  2. 진심을 담는다.
  3. 실제로 실행한다.

하지만 이 세 단계를 거치지 않는 사람들을 실제로 자주 보게 되고 실제로 진심을 담아 말했지만, 실제로 완료해 내는 사람은 매우 드물다.

문제가 될지도 모르는 사실을 다른 사람에게 즉시 알리지 않으면, 약속을 완수하는 데 필요한 도움을 얻을 기회를 스스로 뺏게 된다.

4장 코딩

준비된 자세

코딩은 어렵고 사람을 지치게 하는 지적 활동이다. 여러 가지 요소를 고려해야 하며 높은 집중력이 필요하다. 충분히 집중하지 못하면 잘못된 코드를 만들게 되고, 코드에 오류가 섞이고 엉뚱한 구조를 만들게 될 수 있다. 즉, 고객의 문제를 해결하지 못하고 뜯어고치거나 다시 만들어야 하는 상황이 발생할 수 있다.

지치거나 주의력이 흩어졌다면 코드를 만들지 말자.
해봤자 결국 재작업하는 상황이 발생할 수 있다. 차라리 산만하게 하는 원인을 없애고 정신을 집중할 방법을 찾는 것이 좋다.

디버깅

디버깅 시간을 피하거나 줄이는 일은 좋은 일이다. 테스트 주도 개발 등의 전략을 통해 디버깅 시간을 단축할 수 있다.

디버깅 시간을 가능한 0에 가깝게 줄이는 일은 프로가 짊어진 의무다. 0은 명백히 불가능하지만 목표해야 한다.

의사가 저지른 잘못을 고치기 위해 환자를 재수술하는 것을 좋아하지 않듯, 오류를 만드는 소프트웨어 개발자 또한 좋지 못하다.

속도 조절

소프트웨어 개발은 마라톤이지 단거리 질주가 아니다. 자원을 보존하고 속도를 조절해야 승리한다.

언제 걸어 나가야 할지 알기

눈앞의 문제를 해결하지 못하더라도 집에 가야 한다. 피곤하면 창의성과 총명함이 사라지고, 문제를 풀기 위해 밤늦게까지 생각해봤자 더 피곤해지고, 문제를 푸는 데 도움이 될지 모르는 다른 기회를 놓치게 될 수 있다.

곤경에 빠지거나 피곤할 때는 잠시 자리를 떠나자. 창의적인 잠재의식이 문제를 풀어줄 수 있다.

샤워

엄청난 수의 문제를 샤워하면서 풀었다. 문제를 풀 때 간혹 너무 가까이 들여다봐서 선택지를 놓치기도 한다. 가끔 문제를 푸는 최고의 방법은 집에 가서 저녁을 먹고 휴식을 취하고 다음날 아침 일어나서 샤워하는 것이다.

일정을 못 지키다

언젠가는 마감을 지키지 못하는 날이 온다. 주니어든, 시니어든 누구에게도 올 수 있다.

일정 지연을 관리하는 요령은 이른 감지와 투명성이다. 정기적으로 목표 대비 진척을 측정하고 사실 바탕의 세 가지 완료일자, 즉 최선의 경우, 최악의 경우, 성공 가능성이 가장 높은 값인 추정치를 마련하라. 다만 추정에 희망을 섞지 말아야 한다. 세 숫자를 팀과 관계자들에게 알리고, 매일 이 숫자들을 갱신해라.

댓글
링크
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday