[독서] - 실용주의 프로그래머. 인상 깊은 구절들
1장
당신의 인생이다.
- "당신의 인생이다. 당신의, 당신이 사는, 당신이 만드는 인생이다." 에이브리햄 링컨
- 업무가 마음에 안들고, 시대에 뒤쳐지고, 성과를 몰라주고, 월급이 부족하고, 팀 분위기가 마음에 안 들고, 재택근무를 하고싶고.. 불만이 가득 생긴다면.. 대답은 한결같이
- "왜 직접 바꾸지 않습니까?"
- "우리에게는 스스로의 행동을 결정할 힘이 있다"
- 불만만 토로하면 결국 바뀌는 것이 없다. 결국 행동해야 한다.
2장
고양이가 내 소스 코드를 삼켰어요.
- 실용주의 철학의 초석 한가지는 "책임지는 것"
- 자신의 일상에 대해 책임지는 것. 실용주의 프로그래머는 자신의 무지나 실수를 주저없이 인정한다.
- 책임지는 것은 즐거운 일이 아니지만 우리에게 일어나는 일이다. 어떻게 행동해야 하는가?
- 첨단 기술로 무장한 특공대가 악당의 은신처로 잠입해본다고 해보자. 수개월에 걸친 계획과 정교한 실행 끝에 드디어 은신터에 도착했다. 이제 레이저 유도 표지만 설치하면 된다. 하지만 레이저를 담당하는 팀원이 "미안해요. 우리집 고양이가 레이저를 좋아해서 놀아주다가 그만.. 집에 두고 왔네요."라고 말한다. 이렇게 잃은 신뢰는 원상복구하기 어렵다.
- 또한 우리는 어설픈 변명 대신 대안을 제시해야 한다.
- 결과에 대해 책임을 지기로 했다면, 그 결과에 대해 감당해야 한다.
- 실수를 하거나 잘못된 판단을 내렸다면 정직하게 인정하고 다른 대안을 제시해야 한다.
- 우리가 맡은 업무를 외부 업체가 맡은 임무를 다하지 못할 것 같다면, 그에 대한 대책을 세울 책임이 있다.
- 대용량 저장 장치가 망가지면서 그 안에 저장된 소스코드가 날아가버렸는데 상사에게 "고양이가 제 소스코드를 삼켰어요"라고 할 수는 없는 노릇이다.
- 변명말고 대안을 제시하자.
- 안 된다고 하지말고 상황을 개선하기 위해 무엇을 할 수 있는지 설명하자.
- 코드를 지워야 하나? 지워야 한다고 하고 리팩토링의 가치를 설명하자.
- 자원이 더 필요한가? 자원이 필요하다고 말하고 도움 또는 시간을 요청하자.
3. 소프트웨어 엔트로피
- 얼마나 "무질서"한지를 나타내는 엔트로피는 많은 물리법칙이 무시되는 소프트웨어 개발 원칙에서 몇 안되는 법칙
- 무질서함이 증가할 때 부패한다.
- 기술부채(Technical Dept). 언젠가.. 나중에.. 갚을 수 있겠지 하다보면 이런 무질서함이 점점, 거침없이 증가한다.
- 깨진 창문 이론
- 오래 되고 관리되지 않은 건물.
- 어느날 창문이 하나 깨지게 되었다.
- 며칠 뒤 창문이 하나 더 깨지게 되었다.
- 어느순간 쓰레기가 쌓이기 시작하고 벽에는 그라피티가 그려지기 시작한다.
- 꽤 짧은 시간만에 건물은 구조적을 손상을 입고 소유주가 그것을 고치려는 의지를 넘어설 때까지 망가진다.
- "깨진 창문"을 고치지 않은 채로 내버려 두면 안 된다.
- 나쁜 설계, 잘못된 결정, 형편없는 코드 등이 모두 깨진 창문이다.
- 앞으로 발견하자마자 바로 고치자. 적절히 고칠 시간이 없다면 일단 판자로 덮는 것만이라도 하자.
- 불쾌한 코드를 주석처리하거나, "아직 구현되지 않았음"이라고 메시지를 표시하거나, 일단 더미 데이터로 처리하거나 하자.
- 핵심은 우리가 깨진 창문에 대한 조치를 취하고 있고, 상황을 관리하고 있음을 보이는 것이다.
- 일단 먼저 망가트리지 말자.
- 집에 불이 났다면 화재를 진압하는 것이 급선무이다.
- 하지만 불을 끌 수 있다는 확신이 있다면 다른 물건들을 망가트리지 않으면서 진압하자.
- 소프트웨어 에서 어떤 문제나 위기가 왔다고 해서 부가적인 피해를 일으키지 말자. 깨진 창문은 하나로 충분하다.
4. 돌멩이 수프와 삶은 개구리
- 어떻게 사람을 설득하고 어떤 시야를 가져야 하는지.
돌멩이 수프 이야기
- 군인 세 명이 전쟁이 끝나고 집을 돌아가던 도중 배가 고파 마을에 들어가 음식을 대접해 달라고 했다.
- 하지만 전쟁을 겪으면서 마을 사람들은 식량이 부족함을 느꼈고, 자신들이 가진 음식을 숨겨두었다.
- 군인들은 단념하지 않고, 큰 냄비에 물을 끓인 다음 돌멩이 세 개를 넣었다.
- 그러자 마을 사람들이 와서 "이것만 넣는 거예요?"라고 물었고, 군인들은 "당연하지요, 어떤 사람들은 당근을 넣으면 더 맛있어진다고 하긴 하지만요."라고 했다.
- 그러자 마을 사람 중 하나가 달려가 당근 한 바구니를 들고 왔다. 이렇게 감자와 소고기, 파, 소금, 허브가 생겼고, 마을 사람들은 오랜만에 제대로 된 식사를 즐겼다.