본문 바로가기
🧘🏻‍♂️ 생각, 개발 일반

실용주의 프로그래머, 실용주의 철학 📓

by kukim 2022. 3. 5.

이 글은 책 '실용주의 프로그래머' 1장을 정리했습니다. 잘못된 내용이 있다면 편하게 말씀해주세요 🙏🏻


1. 고양이가 내 소스코드를 삼켰어요.

💡Tip 3 : 어설픈 변명을 만들지 말고 대안을 제시하라

완벽하다고 생각한 프로젝트에서도(철저한 테스트, 훌륭한 문서화, 탄탄한 자동화 등) 반드시 문제, 잘못은 발생한다. 문제가 발생했을 때 자신의 무지나 실수를 인정하기는 매우 두려워 어설픈 변명을 내놓는 것은 흔한 일이다. (🐈 가 내 소스코드를 삼켰어요) 누구나 실수는 저지른다. 잘못된 판단을 내렸다면 정직하게 인정하고 다른 방안을 제안하도록 노력하라. (어설픈 변명을 늘어 놓기 전에 변명꺼리를 없애도록 노력해 보라. 그래도 꼭 해야겠다면 상상속의 고양이에게 먼저 해보라 🐈)

생각해볼 것

은행원이나 자동차 수리공, 혹은 점원이 여러분 앞에서 어설픈 변명을 늘어 놓는다면 어떻게 반응하겠는가? (p33)


2 소프트웨어 엔트로피

💡Tip 4 : 깨진 창문을 내버려 두지 말라.

엔트로피는 시스템 내의 '무질서'한 정도를 가르키는 물리학 용어다. 소프트웨어의 엔트로피가 증가할 때(무질서도 증가) 이를 '소프트웨어 부패'라고 한다. 부패하는데 있어서는 많은 변수들이 얽혀있지만 심리학적이거나 문화적인 요소가 중요하다.

'깨진 창문 이론'이 있다. 이 이론은 어느 건물에 깨진 창문 하나가 있고 오랜 기간 수리하지 않으면 주변의 다른 창문들도 깨지고 점점 더 어지러움이 전파된다는 것이다.

이를 sw에 적용해보면 '깨진 창문'과 같은 버그, 잘못된 결정, 형편없는 코드를 고치지 않고 내버려 두지 마라.! 발견하자 마자 고쳐야한다. 시간이 없다면 주석을 추가하여 추후에 수정할 수 있도록 도와야 한다.


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

💡Tip 5 : 변화의 촉매가 되라

🍲돌멩이 수프 이야기 : 아무것도 가진 것 없는 사람이 돌멩이로 수프를 끓였다. 마을 사람들이 다가와 훈수를 두기 시작한다. "그걸로 되겠어요? 만약 ~~~를 추가한다면 더 좋아지겠죠?" 란 말과 함께 자신들의 창고에서 하나 둘 재료를 가져와 수프가 완성된다. 개발을 하다가 무엇을 해야 하는지, 어떻게 해야 하는지 정확히 아는 상황이다. 내가 이 일을 하려고 하지만 보고하고 승인 받은 단계에서 지쳐버릴 것이다. (물론 개인이 다 맡는 경우도 발생한다.) 이럴땐 돌멩이 수프를 끓여라. 간단하게 프로토타입을 만들고 사람들에게 보여줘 흥미를 이끌어라. "변화의 촉매가 되라"

But! 사람들이 돌멩이에 대해 집중하다보면 세상의 다른 부분에 대해 잊어버린다.

💡Tip 6 : 큰 그림을 기억하라

🐸삶은 개구리 : 개구리를 삶는다고 가정해보자.(끔찍) 뜨거운 물에 바로 삶으면 개구리는 물에 닿자마자 바로 뛸 것이다. 하지만 찬물에서 천천히 익힌다면 개구리는 뛰지 않고 서서히 익을것이다. 돌멩이 수프로 변화의 촉매가 되어 변화가 시작되었다면 변화를 감지하고 넘어가자! 개구리처럼 천천히 익지말고 큰 그림에 늘 주의를 기울여야한다. 개인이 무엇을 하고 있는가에만 집중하지 말고 주변 상황을 지속적으로 살펴보라! (그렇지 않으면 천천히 익어버린다..)


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

💡Tip 7 : 품질을 요구사항으로 만들어라

실세계에서 완벽한 sw를 만들어 내는 것은 불가능하다. 낙담하지 마라, 적당히 괜찮은 sw를 만들면 된다

적당히 괜찮은 sw : 사용자의 요구사항을 충족한 sw

시스템의 범위와 품질은 시스템 요구사항으로 작성되어야 한다. 완벽하게 만들려고 하지 말고 요구사항에 맞게 만들어라


5 지식 포트폴리오

💡Tip 8 : 지식 포트폴리오에 주기적으로 투자하라.

개발 지식은 너무나 빠르게 변화한다. 배울 것이 넘쳐나고 하루 아침에 기술이 사라지고 생긴다. 이럴 때 어떻게 배우고 살아남을 것인가?

지식을 투자로 생각해보자.

금융 포트폴리오와 지식 포트폴리오의 공통점

  1. 주기적인 투자
    • 지식 포트폴리오에 주기적으로 투자해야한다. (비록 소량일지라도)
  2. 다각화
    • 여러 가지를 배운다. (더 많은 기술에 익숙하여 변화에 잘 적응한다.)
  3. 리스크 관리
    • 분산 투자한다. 보수적인 투자, 하이리턴 하이리스크 투자를 나누어 한다.
  4. 싸게 사서 비싸게 판다.
    • 새롭게 떠오르는 기술이 인기를 끌기 전에 미리 학습하는 것(저평가된 주식 매수)
    • 기술이 고점이 될 때 나는 이미 고수 (고평가 매매)
  5. 검토 및 재조정
    • sw 지식은 매우 동적이다. 한 달전에 배운 기술이 더이상 사용하지 않을 수 있다.
    • 포트폴리오를 주기적으로 검토하고 조정한다.
  • 존버한다

지식 포트폴리오 쌓는 방법

  • 매년 새로운 언어를 최소 하나 이상 배우기
  • 기술 서적 분기마다 한 권 읽기 (현재 프로젝트와 관련된 책 + 관련 없는 범위까지)
  • 비 기술 서적 읽기
  • 수업 듣기
  • 커뮤니티 참석하기(적극적으로)
  • 다양한 시스템 사용해보기(OS, IDE . . .)
  • 유명 잡지, 저널을 구독하라

공부한 지식들을 비판적으로 생각해라

💡Tip 9 : 읽고 듣는 것을 비판적으로 분석하라.


6 소통하라!

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

훌륭한 아이디어라도 혼자만 알고 있으면 필요없다. 소통하라!

  • 말하고 싶은 게 무언지 알아라
    • 개요를 작성하고 자문하라
  • 청중을 알아라
    • 무엇을 배우기 원하는가?
    • 관심이 있어 하는 건 무엇인가?
    • 사전 지식이 어느 정도인가?
    • 어느 정도의 구체적인 내용을 원하는가?
    • 정보를 소유하기 원하는가?
    • 경청하도록 동기를 주려면 어떻게 해야 할까?
  • 때를 골라라
    • 퇴근시간, 점심시간 전 등 피곤할 때 말하면 먹히지 않는다.
  • 스타일을 골라라
    • 사람마다 원하는 스타일이 다르니 물어보고 그에 맞는 양식으로 보내준다.
  • 멋져 보이게 하라
  • 청중을 참여시켜라
  • 청자가 되어라
  • 응답하라
    • 질문에 대답하고 발표 종료 후 피드백해줘라

⛓Reference

책 - 실용주의 프로그래머 앤드류 헌트, 데이비드 토마스 지음 / 김창준, 정지호 옮김

댓글