Community

개발자 99% 커뮤니티에서 수다 떨어요!

← Go back
Assignment #02. 서문 ~ 1장.실용주의 철학
#pragmatic
2년 전
1,380

오늘 TIL 3줄 요약

  • 생각하라.

  • 자신이 한 행동에 책임을 져라.

  • 읽고 듣는 것과 배우는 것에 신경을 써라.

TIL (Today I Learned) 날짜

2022.03.20

오늘 읽은 범위

서문 ~ 1장.실용주의 철학

책에서 기억하고 싶은 내용을 써보세요.

서문

  • 실용적(pragmatic)이라는 단어는 '---을 하다'를 뜻하는 그리스어로부터 나왔다. 이 책은 무엇을 '하는' 것에 관한 책이다. - .17

  • 쉬운 정답은 없다. 도구든, 언어든, 운영 체제든 최고의 해결 방안 같은 것은 없다. 오직 특정한 환경 조건들마다 가장 적절한 시스템들이 있을 뿐이다. -.18

Tip 1. 자신의 기예(craft)에 관심을 가져라.

Tip 2. 자기 일에 대해 생각하라.

  • 절대 기계적으로 일하지 말라. 언제나 일하면서 동시에 생각하고, 자기 일을 비평하라. "생각하라!"가 실용주의 프로그래머의 계명이다. -.21

  • 카이젠: 꾸준히 조금씩 자주 개량한다. -.21

1장. 실용주의 철학

  • 실용주의 프로그래머는 직면한 문제 너머를 고민하며, 자신이 하는 모든 일에 책임을 진다.

Topic 1. 당신의 인생이다.

  • 당신에게는 스스로의 행동을 직접 결정할 수 있는 힘이 있다. 문제를 고치기 위해 노력하라.

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

  • 약점을 보이는 것에 대한 두려움이 가장 큰 약점이다.

  • 실용주의 철학의 초석 중 하나는 자신과 자신의 행동에 대해 책임을 지는 것이다.

  • 팀 내 신뢰: 무엇보다 여러분의 팀이 여러분을 믿고 의지할 수 있어야 한다.

Tip 4. 어설픈 변명 말고 대안을 제시하라.

  • 변명 말고 대안을 제시하라. 안 된다고 하지 말고 상황을 개선하기 위해 무엇을 할 수 있는지 설명하라.

  • 도전해 볼 것: 여러분이 "잘 모르겠어요."라고 말한다면, 꼭 바로 이어서 "하지만 알아볼게요."라고 말하라. 모른다는 것은 인정하더라도 전문가답게 책임을 지는 좋은 방법이다.

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

  • 엔트로피: 시스템 내의 '무질서'한 정도를 가리키는 물리학 용어

  • 소프트웨어의 무질서도가 증가할 때 우리는 이를 '소프트웨어의 부패', 긍정적으로는 '기술 부채'라고 부르기도 한다.

Tip 5. 깨진 창문을 내버려두지 말라.

  • 깨진 창문을 고치지 않은 채로 내버려두지 말라. 발견하자마자 바로 고쳐라. 고칠 시간이 없다면 일단 판자로 덮는 것만이라도 하라. 더 이상의 손상을 예방하기 위해 어떤 조치든 취하고 상황을 잘 관리하고 있음을 보여 줘라.

  • 도전해 볼 것: 창문이 처음 깨졌을 때 목소리를 낼 수 있겠는가? 여러분의 반응은 무엇인가? 만약 그것이 누군가 다른 사람의 결정 혹은 경영진의 명령에 따른 결과였다면 여러분은 무엇을 할 수 있겠는가?

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

Tip 6. 변화의 촉매가 되라

  • 큰 무리 없이 요구할 수 있을 만한 것을 찾고 그걸 잘 개발하라. 무언가 생기면 사람들에게 보여주고 그들이 경탄하게 하라. 그러고는 원하는 것을 그다지 중요하지 않은 척 가장하라. 물러나 앉아 기다리면 사람들은 변화에 합류할 것이다.

Tip 7. 큰 그림을 기억하라

  • 큰 그림에 늘 주의를 기울여라. 당장 하고 있는 일에만 정신을 쏟지 말고, 주변에서 무슨 일이 벌어지는지 늘 살펴보라.

  • 도전해 볼 것: 상황 인식 훈련처럼, 진짜로 주변을 살피고 의식하는 습관을 들여라. 그리고 여러분의 프로젝트에 대해서도 똑같이 하라.

Topic 5. 적당히 괜찮은 소프트웨어

  • 우리는 종종 뭔가 나아지게 하려다가 괜찮은 것마저 망친다.

  • "적당히 괜찮은": 너절하거나 형편 없는 코드를 의미하지 않는다. 적당히 괜찮게 사용자의 요구를 충족했는지 결정하는 과정에 사용자가 참여할 기회를 가져야 한다는 것이다.

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

  • 우리가 만드는 시스템의 범위와 품질은 해당 시스템의 요구 사항 중 하나로 논의되어야 한다.

  • 사용자에게 뭔가 직접 만져볼 수 있는 것을 일찍 준다면, 피드백을 통해 종국에는 더 나은 해결책에 도달할 수 있을 것이다.

  • 멈춰야 할 때를 알라: 완벽하게 훌륭한 프로그램을 과도하게 장식하거나 지나칠 정도로 다듬느라 망치지 말라. 완벽하지 않을 수도 있지만 괜찮다. 완벽해지기란 불가능하다.

  • 도전해 볼 것: 기능 블로트 현상에 빠진 유명한 소프트웨어를 떠올릴 수 있는가? 여러분이 실제로 사용하는 기능을 찾거나 이용하기 힘들게 만들 수도 있다. 여러분도 이런 함정에 빠질 위험에 처해 있지 않은가?

Topic 6. 지식 포트폴리오

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

  • 새로운 것을 배우는 능력은 가장 중요한 전략 자산이다.

  • 지식 포트폴리오 만들기

    • 주기적인 투자: 소량으로라도 주기적으로 투자해야 한다. 방해를 받지 않을 수 있는 시간과 장소를 정기적으로 이용할 계획을 마련하라.

    • 다각화: 여러 가지를 알수록 자신의 가치는 더욱 높아진다. 기술 외의 분야도 포함, 나에게 필요한 다른 역량도 잊지 말라.

    • 리스크 관리: 기술은 다양한 스펙트럼 위 존재한다. 기술 달걀을 모두 한 바구니에 담지 말라. (적당히 새로 배우는 지식과 가지고 있는 지식 간의 밸런스를 유지하라)

    • 싸게 사서 비싸게 팔기: 새롭게 떠오르는 기술이 인기를 끌기 전 미리 알고 학습하는 게 저평가된 주식을 찾아내는 것만큼이나 어려울 수 있지만, 이익 또한 그만큼 클 수 있다.

    • 검토 및 재조정: 지식은 매우 동적으로 변한다.

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

  • 매년 새로운 언어를 최소 하나는 배워라.

  • 기술 서적을 한 달에 한 권씩 읽어라.

  • 기술 서적이 아닌 책도 읽어라.

  • 수업을 들어라.

  • 지역 사용자 단체나 모임에 참여하라.

  • 다른 환경에서 실험해 봐라.

  • 요즘 흐름을 놓치지 말라.

  • 학습의 기회: 답을 찾기 위해서는 멈추지 말고 적극적으로 찾아라. 스스로 답을 찾지 못하겠거든 답을 찾아줄 수 있는 사람을 찾아라.

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

  • 비판적 사고: 읽거나 듣는 것에 대해 비판적으로 생각하라.

    • 왜냐고 다섯 번 묻기

    • 누구에게 이익이 되나?

    • 어떤 맥락인가?

    • 언제 혹은 어디에서 효과가 있을까?

    • 왜 이것이 문제인가?

  • 도전해 볼 것: 이번 주부터 새로운 언어를 배우기 시작하라.

Topic 7. 소통하라.

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

  • 말하고 싶은 게 무엇인지 알라: 무엇을 말할지 미리 계획하고, 개요를 작성하고, 자문하라.

  • 때를 골라라: 말하는 내용뿐 아니라 말하는 시점도 적절하게 하라.

  • 스타일을 골라라: 전달하는 스타일을 청중에 어울리도록 조정하라.

  • 멋져 보이게 하라: 맞춤법을 확인하라.

  • 청중을 참여시켜라: 가능하다면 독자가 문서 초안에 참여하도록 하라.

  • 경청하라: 경청해 주기 바란다면 그들의 말을 경청하라.

  • 응답하라: 언제나 이메일과 음성 메시지에 답을 하라.

  • 문서화: 실용주의 프로그래머는 문서화를 전체 개발 프로세스의 필요 불가결한 부분으로 받아들인다.

Tip 13. 문서를 애초부터 포함하고, 나중에 집어넣으려고 하지 말라.

  • 소스 코드의 주석으로 보기 좋은 문서를 쉽게 생성할 수 있다: API가 아닌 코드에 주석을 쓸 때는 왜 이렇게 되어 있는지, 코드의 용도와 목적을 논해야 한다.

  • 도전해 볼 것: 팀 내의 의사소통에 관한 내용이 실려 있는 훌륭한 책이 몇 권 있다. 앞으로 18개월 이내에 이 책들을 반드시 읽을 수 있도록 노력하라. ex) 맨먼스 미신, 피플웨어 등

오늘 읽은 소감은? 떠오르는 생각을 가볍게 적어보세요

  • 실용주의 프로그래머란? 일을 "제대로"하는 사람이다.

    • 처음 책 제목을 접했을 때는 실용주의 프로그래머라는 명칭이 부정적으로 다가왔다. 실속 있게 움직이며 코드보다 우선적으로 놓여진 상황을 중점적으로 두는 듯한 느낌이 들었다. 현실은 정반대였지만. (어쩌면 찔렸나 보다.)

    • 나의 경우, 주로 SI 일을 해왔다 보니 특히 "일정"이라는 이 두 글자의 단어에 마법적으로 이끌려 '나중에 고치자', '개선사항으로 우선순위는 하로 두도록 하자'라는 생각에 사로잡혀 왔었다. 책을 읽다 보니 이 책에서 말하는 "제대로" 일을 하는 실용주의 프로그래머와는 내가 거리가 멀다는 사실을 인정할 수밖에 없었다.

      눈앞에 닥친 사업을 쳐내야만 하는 상황으로부터 벗어나고 싶다는 생각이 강렬하게 들었다.

    • 새로 맡게 되는 일만큼은 여기에서 말하는 실용주의 프로그래머처럼 업무를 제대로 해내고 싶다. 책 서두에서 말했듯, 내 인생은 내가 사는 거니까. 회사, 정확히 말하면 회사가 가진 시스템을 바꾸어 내기에는 어려울 것 같으니.. 스스로 가진 생각부터 바꾸어 단단하고 오래 일을 해내고 싶다. 소프트웨어 개발자로서.

궁금한 내용이 있거나, 잘 이해되지 않는 내용이 있다면 적어보세요.

  • 엔트로피: 시스템 내의 '무질서'한 정도를 가리키는 물리학 용어

  • 시작 피로: 일에 착수하려고 허락을 구하는 때부터 일들이 복잡해지며, 각자 자신의 자원을 지키려고 하는 것

  • 기능 블로트(feature bloat): 소프트웨어가 여러분이 쓰는 기능에 비해 훨씬 더 많은 기능을 가지고 있는데, 기능이 많은 만큼 버그나 보안 취약점이 생길 가능성도 높다는 것을 의미

  • 기한이 있는 자산(expiring assets): 시간이 지남에 따라 그 가치가 줄어드는 자산

오늘 읽은 다른사람의 TIL

<예시>

  • 00님의 TIL (url 링크)

</예시>