티스토리 뷰

당신이 이 책을 손에 든 이유는
당신이 더 나은 개발자가 될 수 있음을 알기 때문이다.
- 1장 전반부 -

서문에 대한 글에서도 언급했지만, 나는 임팩트가 있는 작업물을 만드는, 효과적이고 생산성 높은 프로그래머가 욕구가 있다. 실용주의 프로그래머 1장은 그런 사람이 되고 싶은 내가 가져야 하는 철학에 대해서 잘 설명해 주었다.

 

1장에서부터는 각 Topic별로 실용주의 프로그래머에 대해 말하는데 1장에는 총 7개의 Topic이 있다.

  • Topic 1 - 당신의 인생이다.
  • Topic 2 - 고양이가 내 소스코드를 삼켰어요
  • Topic 3 - 소프트웨어 엔트로피
  • Topic 4 - 돌멩이 수프와 삶은 개구리
  • Topic 5 - 적당히 괜찮은 소프트웨어
  • Topic 6 - 지식 포트폴리오
  • Topic 7 - 소통하라!

제목들이 아주 비유적이라 마음에 들었다. 개발자스럽지 않게 운문을 즐기는 사람으로서 내용이 궁금해지는 제목이 인상 깊었다. 앞으로 두 포스토로 나누어 각 Topic들에 대해서 하나씩 내용을 정리하고 나의 생각을 덧붙여 보겠다.

Topic 1 - 당신의 인생이다.

"당신의 인생이다. 당신의, 당신이 사는, 당신이 만드는 인생이다." 유명한 에이브러햄 링컨 대통령의 연설이 떠오르는 문구가 가장 먼저 적혀있었다. 이 Topic의 핵심을 잘 나타내는 한 구절이 기억에 남는다.

 

"왜 직접 바꾸지 않습니까?"

 

필자는 많은 개발자들이 불만에 가득 차있다고 한다. 누구는 업무가 마음에 안 든다고, 누구는 트렌드에 자신이 뒤쳐진다고, 자신의 성과를 몰라준다고, 월급이 적다고, 팀 분위기가 마음에 안 든다고, 재택근무를 하고 싶다고. 이럴 때마다 답은 한결같이 왜 직접 바꾸지 않았는지가 되었다고 한다. 우리에게는 스스로의 행동을 결정할 힘이 있다고 하면서 우리의, 우리 주변의 문제를 고치기 위해 노력하라고 한다.

 

나 역시 매우 동의하는 바이다. 아주 좋아하는 캐치 프레이즈 하나 가 있는데 나이키 사의 "Just Do It"이다. 불만만 토로하면 바뀌는 것은 없다. 결국 행동으로 옮겨야 한다. 월급이 마음에 안 들면 이직을 준비하던지, 회사에 나의 성과를 어필해 연봉협상을 해볼 수 있을 것이다. 문화가 마음에 안 든다면, 하나하나 조금씩 바꿔볼 수 있을 것이다. 결국 직접 하지 않으면 얻을 수 있는 것은 없을 것이다. 

Topic 2 - 고양이가 내 소스 코드를 삼켰어요

실용주의 철학의 초석 중 하나는 "책임지는 것"이라고 한다. 자신의 커리어, 자신의 학습, 프로젝트와 일상에 대해서 책임지는 것이다. 실용주의 프로그래머는 자신의 무지나 실수를 주저 없이 인정한다. 책임지는 것은 즐거운 일이 아니다. 하지만 우리에게 일어나는 일이다. 이때 우리는 어떻게 행동해야 하는가?

 

일단 먼저 우리는 우리의 팀이 우리는 믿고 의지할 수 있게 해야 한다.

 

이 책에서 아주 재미있는 예시를 들었는데, 옮겨 보겠다. 첨단 기술로 무장한 특공대가  악당의 은신처로 잠입한다고 해보자. 수개월에 걸친 계획과 정교한 실행 끝에 드디어 은신터에 도착했다. 이제 레이저 유도 표지만 설치하면 된다. 하지만 레이저를 담당하는 팀원이 "미안해요. 우리 집 고양이가 레이저를 좋아해서 놀아주다가 그만.. 집에 두고 왔네요."라고 말한다. 이렇게 잃은 신뢰는 원상 복구하기 어렵다.

 

또한 우리는 어설픈 변명 대신 대안을 제시해야 한다.

 

우리가 결과에 대해서 책임을 지기로 했다면, 그 결과에 대해 감당해야 한다. 실수를 하거나 잘못된 판단을 내렸다면 정직하게 인정하고 다른 대안을 제시해야 한다. 우리가 맡은 업무를 외부 업체가 맡은 임무를 다하지 못할 것 같다면, 그에 대한 대책을 세울 책임이 있다. 대용량 저장 장치가 망가지면서 그 안에 저장된 소스코드가 날아가 버렸는데 상사에게 "고양이가 제 소스코드를 삼켰어요'라고 할 수 없는 노릇이다.

 

변명 말고 대안을 제시하자. 안된다고 하지 말고 상황을 개선하기 위해 무엇을 할 수 있는지 설명하자. 코드를 지워야 하나? 지워야 한다고 하고 리팩터링의 가치를 설명하자. 자원이 더 필요한가? 자원이 필요하다고 말하고 도움 또는 시간을 요청하자. 우리가 공부하는 실용주의 원칙을 실현할 때이다.

Topic 3 - 소프트웨어 엔트로피

얼마나 "무질서"한 지를 나타내는 엔트로피는 많은 물리법칙이 무시되는(?) 소프트웨어 개발에서 적용되는 몇 안 되는 법칙이다. 소프트웨어의 "무질서"함이 증가할 때 소프트웨어가 부패한다고 한다. 이는 기술 부채라는 말로 많이 알려져 있기도 하다. 언젠가는 갚을 수 있겠지.. 하면서 이런 무질서함이 점점, 거침없이 증가한다.

 

깨진 창문 이론이라는 것이 있다. 오래되고 관리되지 않은 건물이 있다. 어느 날 창문이 하나 깨지게 되었다. 며칠 뒤 창문이 하나 더 깨진다. 그리고 어느 순간 쓰레기가 쌓이기 시작하고, 벽에는 그라피티가 그려지기 시작한다. 꽤 짧은 시간만에 건물은 구조적을 손상을 입고 소유주가 그것을 고치려는 의지를 넘어설 때까지 망가진다.

 

우리는 소프트웨어에서 이런 "깨진 창문"을 고치지 않은 채로 내버려 두면 안 된다. 나쁜 설계, 잘못된 결정, 형편없는 코드 등이 모두 깨진 창문이다. 앞으로 발견하자마자 바로 고치자. 적절히 고칠 시간이 없다면 일단 판자로 덮는 것만이라도 하자. 불쾌한 코드를 주석처리하거나, "아직 구현되지 않았음"이라고 메시지를 표시하거나, 일단 더미 데이터로 대체하거나 하자. 핵심은 우리가 깨진 창문에 대한 조치를 취하고 있고, 상황을 관리하고 있음을 보이는 것이다.

 

이보다 먼저, 일단 망가트리지 말자. 집에 불이 났다고 해보자, 일단 화재를 진압하는 것이 급선무이다. 하지만 불을 끌 수 있다는 확신이 생겼다면 집에 있는 다른 물건들을 최대한 망가트리지 않으면서 진압하자. 소프트웨어에서 어떤 문제나 위기가 왔다고 해서 부가적인 피해를 일으키지 말자. 깨진 창문은 하나로 충분하다.

 

명심하자. "깨진 창문은 없어야 한다". 다른 사람들도 하는데.. 나도 하지 뭐...라는 사고에 빠지지 않도록 하자.

Topic 4 - 돌멩이 수프와 삶은 개구리

이번 Topic은 어떻게 사람을 설득하고, 어떤 시야를 가져야 하는지 설명한다.

 

돌멩이 수프 이야기가 그 예시인데, 군인 세 명이 전쟁이 끝나고 집을 돌아가던 도중 배가 고파 마을에 들어가 음식을 대접해 달라고 했다. 하지만 전쟁을 겪으면서 마을 사람들은 식량이 부족함을 느꼈고, 자신들이 가진 음식을 숨겨두었다. 군인들은 단념하지 않고, 큰 냄비에 물을 끓인 다음 돌멩이 세 개를 넣었다. 그러자 마을 사람들이 와서 "이것만 넣는 거예요?"라고 물었고, 군인들은 "당연하지요, 어떤 사람들은 당근을 넣으면 더 맛있어진다고 하긴 하지만요."라고 했다. 그러자 마을 사람 중 하나가 달려가 당근 한 바구니를 들고 왔다. 이렇게 감자와 소고기, 파, 소금, 허브가 생겼고, 마을 사람들은 오랜만에 제대로 된 식사를 즐겼다.

 

이 돌멩이 수프 이야기는 군인들은 마을사람들의 호기심을 이용해 음식을 얻었고, 그들의 촉매로 마을 사람들은 스스로는 불가능했던 무언가를 힘을 모아 이룰 수 있게 했다는 것이다.

 

간혹 우리는 이런 군인들을 모방해야 할 때가 있다. 무엇을 해야 할지 명확하게 보이고, 어떻게 해야 하는지 정확하게 알고 있지만, 일을 착수하려고 하면 다양한 방해요소를 맞이하게 된다. 위원회를 지나서, 예산 승인을 거쳐, 최종 결재까지... 그리고 각 단계별로 사람들을 각자의 자원을 지키려고 할 것이다. "시작 피로"가 생기는 것이다.

 

돌멩이를 내놔야 할 때이다. 큰 무리 없이 요구할 수 있는 걸 찾아 "잘" 개발하자. 그리고 성공의 가능성을 보여주자. 계속되는 성공에 합류하는 것은 쉽다. 미래를 살짝이라도 보여주면 사람들은 도와주려고 모여들 것이다.

 

마을 사람들의 입장에서 살펴보면 돌멩이 수프는 또 다른 교훈을 준다. 그들은 너무 한 가지에 지나치게 집중하고 있었다. 바로 군인들의 돌멩이 말이다. 돌멩이에 대해서 생각하느라 세상의 다른 일들에 대해서는 까맣게 잊어버렸다.

 

우리도 동일하게 모르는 새 서서히 주변 상황이 악화될 수 있다. 마치 차가운 물에 넣어둔 개구리가 물이 끓는 것도 모르고 삶아지는 것처럼. 항상 큰 그림이 기억하자. 간간히 숲을 봐줘야 한다.

 

 

공지사항
최근에 올라온 글
최근에 달린 댓글
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
글 보관함