본문 바로가기
Book/실용주의 프로그래머

1장 : 실용주의 철학

by dug_developer 2022. 4. 1.
반응형

📔고양이가 내 코드를 삼켰어요

어설픈 변명을 만들지 말고 대안을 제시하라!

  • 우리는 자신의 능력에 대해 자부심을 가질 수 있지만 실수나 무지 같은 단점에 대해서도 정직해져야 한다.
  • 누구나 실수는 한다! 실수를 저지르거나 잘못된 판단을 내렸다면 변명을 하지 말고 정직하게 인정하고 해결안을 제안하도록 노력하라!
  • 위험요소가 있다면 그 위험요소에 대한 대책을 세워야한다
  • 소스코드와 디스크가 다 망가져 버렸는데 "고양이가 내 코드를 삼켜버렸어요"라고 말하는 것은 별 도움이 안 될 것이다, 오히려 자신을 깎아내리는 일이 될 것이다.

 

📔소프트웨어 엔트로피

깨진 창문 이론 : 깨진 창문을 내버려 두지 말라.

  • 오랜 기간 수리하지 않고 방치된 창문 하나가 거주자들에게 버려진 느낌을 스며들게 한다.
    그로 인해서 사람들은 깨진 창문이 있는 건물을 막 대하기 시작한다.
  • 결국 소유주가 고치려는 의지를 넘어설 정도로 건물이 손상되고 결국 버려진 느낌은 현실이 되어버린다.
깨진 창문 이론은 뉴욕과 다른 주요 도시 경찰들에게 큰일을 막기 위해 조그만 것들을 
엄중 단속해야겠다는 영감을 불어넣어 줬다. 작은 위반 행위를 잘 단속했더니 중범죄가 줄어들었다.
  • 작은 결함에 대해서 미리 대처를 했더라면 그러한 일은 일어나지 않았을 것이다.
  • SW에서 깨진 창문은 나쁜 설계, 잘못된 코드를 말한다.

즉, 잘못된 코드를 고치지 않은 채 내버려 두지 말라는 의미이다.

발견하자마자 바로 고쳐라!

시간이 충분하지 않다면 주석 처리하거나 '아직 구현되지 않았음'이라는 메시지를 표시해라

더 이상의 손상을 예방하기 위해 어떠한 조치든 취하고 현 상황을 잘 관리하고 있다는 것을 보여라!

깨끗하고 잘 기능하는 시스템들이 일단 창문이 깨지기 시작하면 급속도로 악화되는 것을 많이 보았다.

무질서함(엔트로피)가 우리를 지배하도록 두지 말아라!

만약 깨진 창문이 꽤 있는 프로젝트를 한다면 "나머지 코드도 쓰레기니까 나도 그렇게 하지 뭐"라는 사고로 빠져들기 쉽다.

같은 맥락으로 코드가 깨끗하고 잘 설계된 프로젝트에 속해 있다면 특별한 주의를 기울여서 엉망으로 만들지 않도록 노력할 확률이 높다.

 

📔돌멩이 수프와 삶은 개구리

전쟁을 마치고 집으로 돌아가는 군인 3명이 한 마을에 가서 식사를 얻으려고 했지만 마을 사람들은 전쟁으로 인해 식량이 부족했고 그래서 자신의 식량을 몰래 감춰 저장해 두고 있었다 군인들은 단념하지 않고 큰 냄비에 돌멩이를 넣고 끓였고 이를 본 마을 사람들이 자신들이 비축해놓은 식량을 꺼내 다 같이 맛있는 수프를 만들어 먹었다는 이야기이다.

군인들은 마을 사람들의 호기심을 이용해 식재료를 얻었고 그들을 속였다.

  • 하지만 중요한 것은 군인들이 하나의 촉매로 작용하여 마을 사람들 스스로는 만들어 낼 수 없는 뭔가를 협동해 이룰 수 있도록 도왔다는 점이다, 시너지의 결과인 셈이다.
  • 모든 사람들은 일이 시작하기 앞서서 자신은 잘하려고 하지 않는다 때때로 이걸 시작피로라고한다.
    • 이때가 돌멩이를 내놔야 할 때다.
  • 큰 무리 없이 요구할 수 있을 만한 것을 찾아내라 그리고 그걸 잘 개발해라 일단 되면 사람들에게 보여주고 그들이 경탄하게 하라 그리고 ~추가하면 더 나아지겠죠라고 말하라
    • 그다지 중요하지 않은 것처럼 말하라
  • 계속되는 성공에 합류하기란 쉽다 그들에게 미래를 살짝이라도 보여주면 그들은 원조를 위해 집결할 것이다.

변화의 촉매가 되어라

  • 돌멩이 수프는 부드럽고 점진적인 속임수에 관한 이야기이다.
  • 한 가지에 지나치게 집중하는 것에 대한 교훈이다.
    • 마을 사람들은 돌멩이에 대해 생각하느라 자신의 남은 식량에 대해서는 까맣게 잊어버렸다.

큰 그림을 기억해라

개구리를 뜨거운 물에 넣으면 바로 튀어나올 것이다 하지만 차가운 물에서부터 조금씩 물을 덥히면 개구리는 온도가 서서히 오르는 것을 감지하지 못하고 결국은 삶아질 때까지 그냥 그대로 있을 것이다.

개구리는 변화를 감지하지 못하는 것이다, 그런 개구리처럼 되지 마라, 큰 그림에 주의를 기울여라, 개인적으로 무엇을 하고 있는 가에만 정신을 쏟지 말고 주변에서 무슨 일이 벌어지는지 지속적으로 살펴보라!

 

📔적당히 괜찮은 소프트웨어

품질을 요구사항으로 만들어라

타협 과정에사용자를 참여시켜라

1년을 기다려야 하는 완벽한 APP VS 오늘 당장 나오지만 아직은 불안정하고 불편한 APP

사람들은 후자를 선택한다는 것이다.

사용자들이 먼저 직접 만져볼 수 있는 것으로 만족을 얻고 피드백을 통해 더 나은 애플리케이션이 될 것이다.

완벽하게 훌륭한 프로그램을 과도하게 장식하거나 지나칠 정도로 다듬느라 망치지 말라, 그냥 넘어가고 코드가 현재 상태에서 한동안은 그대로 있도록 두어라, 완벽하지 않을 수 있다 걱정하지 말아라 완벽해지기란 불가능하니까!

 

📔지식 포트폴리오

지식에 대한 투자가 언제나 최고의 이윤을 낸다. - 벤자민 플랭클린 -

 

지식 포트폴리오에 주기적으로 투자하라

  1. 매년 새로운 언어를 최소 하나는 배워라
  2. 기술서적을 분기마다 한 권씩 읽어라
  3. 비 기술 서적도 읽어라
  4. 지역 사용자 모임에 참여하라
  5. 다른 환경에서 실험해봐라
  6. 요즘 흐름을 놓치지 말아라
  7. 인터넷을 이용하라

읽고 듣는 것을 비판적으로 분석하라

제일 중요한 것은 이러한 지식들을 그냥 수용하지 말고 비판적으로 판단하여 수용하라는 것이다.

  • 웹 검색 엔진에서 첫 화면에 나온다고 해서 그것이 최선이 아니란 것이다.
  • 콘텐츠 제공자가 돈을 지불해서 차지한 자리일 수도 있다.

 

📔소통하라

- 말하고 싶은 게 뭔지 알아라
- 무엇을 말할지 미리 계획하라 개요를 작성하라 그리고 자문하라 이게 내가 말하고자 하는 것을 잘 전달해주나? 그렇게 될 때까지 다듬어라

- 청중을 이해하라
- 청중의 요구와 관심, 능력을 이해할 필요가 있다.

WISDOM

  • 무엇(what)을 배우길 원하는가?
  • 말하려는 것에서 그들이 관심(interest) 있어하는 건 무엇인가?
  • 얼마나 소양(sophisticated)이 있는가?
  • 어느 정도의 구체적인(detail) 내용을 원하는가?
  • 누가 정보를 소유(owe)하길 원하는가?
  • 그들이 경청하도록 동기(motive)를 주려면 어떻게 해야 할까?

때를 골라라

  • 말하는 내용뿐만 아니라 말하는 시간도 적절하게 하라
  • 스스로에게 "~에 대해 이야기할 좋은 때일까?"라는 간단한 질문을 해보는 것도 충분하다.

 

스타일을 골라라

  • 전달하는 스타일이 청중에 어울리도록 조정하라.
  • 어떤 사람은 좀 격식 있는 그저 사실만 전달하는 브리핑을 원하고 어떤 사람은 간단한 쪽지, 어떤 사람은 두꺼운 문서로 보고 받길 좋아한다.

 

멋져 보이게 하라

  • 청중에게 전달하기 위해 멋있는 매개물이 필요하다.
  • 내용이 아무리 좋아도 보기가 싫으면 아무 의미가 없다.

 

청중을 참여시켜라

  • 문서 초고에 독자가 참여하도록 하라, 그 과정에서 피드백을 받고 더 좋은 관계가 형성되어 더 나은 문서를 만들게 될 것이다.

 

청자가 되어라

  • 내가 상대방에게 경청을 해야 상대방도 내게 경청을 한다.

 

응답하라

  • 누군가에게 질문을 했는데 아무런 응답도 없다면 그가 무례하다고 느낄 것이다.
  • 응답이 단순히 "바빠서 다음에 연락드리겠습니다"라고 라도 응답을 해주면 상대는 때때로 일어나는 실수에 대해 훨씬 더 관대해질 것이고 상대에게 그 사항을 아직 잊지 않았다는 느낌을 줄 것이다.

무엇을 말하는 가와 어떻게 말하는 가 모두 중요하다.

반응형