개발자 99% 커뮤니티에서 수다 떨어요!
오늘 TIL 3줄 요약
생각하라.
자신이 한 행동에 책임을 져라.
읽고 듣는 것과 배우는 것에 신경을 써라.
TIL (Today I Learned) 날짜
2022.03.20
오늘 읽은 범위
서문 ~ 1장.실용주의 철학
책에서 기억하고 싶은 내용을 써보세요.
실용적(pragmatic)이라는 단어는 '---을 하다'를 뜻하는 그리스어로부터 나왔다. 이 책은 무엇을 '하는' 것에 관한 책이다. - .17
쉬운 정답은 없다. 도구든, 언어든, 운영 체제든 최고의 해결 방안 같은 것은 없다. 오직 특정한 환경 조건들마다 가장 적절한 시스템들이 있을 뿐이다. -.18
절대 기계적으로 일하지 말라. 언제나 일하면서 동시에 생각하고, 자기 일을 비평하라. "생각하라!"가 실용주의 프로그래머의 계명이다. -.21
카이젠: 꾸준히 조금씩 자주 개량한다. -.21
실용주의 프로그래머는 직면한 문제 너머를 고민하며, 자신이 하는 모든 일에 책임을 진다.
당신에게는 스스로의 행동을 직접 결정할 수 있는 힘이 있다. 문제를 고치기 위해 노력하라.
약점을 보이는 것에 대한 두려움이 가장 큰 약점이다.
실용주의 철학의 초석 중 하나는 자신과 자신의 행동에 대해 책임을 지는 것이다.
팀 내 신뢰: 무엇보다 여러분의 팀이 여러분을 믿고 의지할 수 있어야 한다.
변명 말고 대안을 제시하라. 안 된다고 하지 말고 상황을 개선하기 위해 무엇을 할 수 있는지 설명하라.
도전해 볼 것: 여러분이 "잘 모르겠어요."라고 말한다면, 꼭 바로 이어서 "하지만 알아볼게요."라고 말하라. 모른다는 것은 인정하더라도 전문가답게 책임을 지는 좋은 방법이다.
엔트로피: 시스템 내의 '무질서'한 정도를 가리키는 물리학 용어
소프트웨어의 무질서도가 증가할 때 우리는 이를 '소프트웨어의 부패', 긍정적으로는 '기술 부채'라고 부르기도 한다.
깨진 창문을 고치지 않은 채로 내버려두지 말라. 발견하자마자 바로 고쳐라. 고칠 시간이 없다면 일단 판자로 덮는 것만이라도 하라. 더 이상의 손상을 예방하기 위해 어떤 조치든 취하고 상황을 잘 관리하고 있음을 보여 줘라.
도전해 볼 것: 창문이 처음 깨졌을 때 목소리를 낼 수 있겠는가? 여러분의 반응은 무엇인가? 만약 그것이 누군가 다른 사람의 결정 혹은 경영진의 명령에 따른 결과였다면 여러분은 무엇을 할 수 있겠는가?
큰 무리 없이 요구할 수 있을 만한 것을 찾고 그걸 잘 개발하라. 무언가 생기면 사람들에게 보여주고 그들이 경탄하게 하라. 그러고는 원하는 것을 그다지 중요하지 않은 척 가장하라. 물러나 앉아 기다리면 사람들은 변화에 합류할 것이다.
큰 그림에 늘 주의를 기울여라. 당장 하고 있는 일에만 정신을 쏟지 말고, 주변에서 무슨 일이 벌어지는지 늘 살펴보라.
도전해 볼 것: 상황 인식 훈련처럼, 진짜로 주변을 살피고 의식하는 습관을 들여라. 그리고 여러분의 프로젝트에 대해서도 똑같이 하라.
우리는 종종 뭔가 나아지게 하려다가 괜찮은 것마저 망친다.
"적당히 괜찮은": 너절하거나 형편 없는 코드를 의미하지 않는다. 적당히 괜찮게 사용자의 요구를 충족했는지 결정하는 과정에 사용자가 참여할 기회를 가져야 한다는 것이다.
우리가 만드는 시스템의 범위와 품질은 해당 시스템의 요구 사항 중 하나로 논의되어야 한다.
사용자에게 뭔가 직접 만져볼 수 있는 것을 일찍 준다면, 피드백을 통해 종국에는 더 나은 해결책에 도달할 수 있을 것이다.
멈춰야 할 때를 알라: 완벽하게 훌륭한 프로그램을 과도하게 장식하거나 지나칠 정도로 다듬느라 망치지 말라. 완벽하지 않을 수도 있지만 괜찮다. 완벽해지기란 불가능하다.
도전해 볼 것: 기능 블로트 현상에 빠진 유명한 소프트웨어를 떠올릴 수 있는가? 여러분이 실제로 사용하는 기능을 찾거나 이용하기 힘들게 만들 수도 있다. 여러분도 이런 함정에 빠질 위험에 처해 있지 않은가?
지식에 대한 투자가 언제나 최고의 이윤을 낸다. -벤자민 프랭클린
새로운 것을 배우는 능력은 가장 중요한 전략 자산이다.
지식 포트폴리오 만들기
주기적인 투자: 소량으로라도 주기적으로 투자해야 한다. 방해를 받지 않을 수 있는 시간과 장소를 정기적으로 이용할 계획을 마련하라.
다각화: 여러 가지를 알수록 자신의 가치는 더욱 높아진다. 기술 외의 분야도 포함, 나에게 필요한 다른 역량도 잊지 말라.
리스크 관리: 기술은 다양한 스펙트럼 위 존재한다. 기술 달걀을 모두 한 바구니에 담지 말라. (적당히 새로 배우는 지식과 가지고 있는 지식 간의 밸런스를 유지하라)
싸게 사서 비싸게 팔기: 새롭게 떠오르는 기술이 인기를 끌기 전 미리 알고 학습하는 게 저평가된 주식을 찾아내는 것만큼이나 어려울 수 있지만, 이익 또한 그만큼 클 수 있다.
검토 및 재조정: 지식은 매우 동적으로 변한다.
매년 새로운 언어를 최소 하나는 배워라.
기술 서적을 한 달에 한 권씩 읽어라.
기술 서적이 아닌 책도 읽어라.
수업을 들어라.
지역 사용자 단체나 모임에 참여하라.
다른 환경에서 실험해 봐라.
요즘 흐름을 놓치지 말라.
학습의 기회: 답을 찾기 위해서는 멈추지 말고 적극적으로 찾아라. 스스로 답을 찾지 못하겠거든 답을 찾아줄 수 있는 사람을 찾아라.
비판적 사고: 읽거나 듣는 것에 대해 비판적으로 생각하라.
왜냐고 다섯 번 묻기
누구에게 이익이 되나?
어떤 맥락인가?
언제 혹은 어디에서 효과가 있을까?
왜 이것이 문제인가?
도전해 볼 것: 이번 주부터 새로운 언어를 배우기 시작하라.
청중을 알라: 청중의 요구와 관심, 능력을 이해할 필요가 있다.
말하고 싶은 게 무엇인지 알라: 무엇을 말할지 미리 계획하고, 개요를 작성하고, 자문하라.
때를 골라라: 말하는 내용뿐 아니라 말하는 시점도 적절하게 하라.
스타일을 골라라: 전달하는 스타일을 청중에 어울리도록 조정하라.
멋져 보이게 하라: 맞춤법을 확인하라.
청중을 참여시켜라: 가능하다면 독자가 문서 초안에 참여하도록 하라.
경청하라: 경청해 주기 바란다면 그들의 말을 경청하라.
응답하라: 언제나 이메일과 음성 메시지에 답을 하라.
문서화: 실용주의 프로그래머는 문서화를 전체 개발 프로세스의 필요 불가결한 부분으로 받아들인다.
소스 코드의 주석으로 보기 좋은 문서를 쉽게 생성할 수 있다: API가 아닌 코드에 주석을 쓸 때는 왜 이렇게 되어 있는지, 코드의 용도와 목적을 논해야 한다.
도전해 볼 것: 팀 내의 의사소통에 관한 내용이 실려 있는 훌륭한 책이 몇 권 있다. 앞으로 18개월 이내에 이 책들을 반드시 읽을 수 있도록 노력하라. ex) 맨먼스 미신, 피플웨어 등
오늘 읽은 소감은? 떠오르는 생각을 가볍게 적어보세요
실용주의 프로그래머란? 일을 "제대로"하는 사람이다.
처음 책 제목을 접했을 때는 실용주의 프로그래머라는 명칭이 부정적으로 다가왔다. 실속 있게 움직이며 코드보다 우선적으로 놓여진 상황을 중점적으로 두는 듯한 느낌이 들었다. 현실은 정반대였지만. (어쩌면 찔렸나 보다.)
나의 경우, 주로 SI 일을 해왔다 보니 특히 "일정"이라는 이 두 글자의 단어에 마법적으로 이끌려 '나중에 고치자', '개선사항으로 우선순위는 하로 두도록 하자'라는 생각에 사로잡혀 왔었다. 책을 읽다 보니 이 책에서 말하는 "제대로" 일을 하는 실용주의 프로그래머와는 내가 거리가 멀다는 사실을 인정할 수밖에 없었다.
눈앞에 닥친 사업을 쳐내야만 하는 상황으로부터 벗어나고 싶다는 생각이 강렬하게 들었다.
새로 맡게 되는 일만큼은 여기에서 말하는 실용주의 프로그래머처럼 업무를 제대로 해내고 싶다. 책 서두에서 말했듯, 내 인생은 내가 사는 거니까. 회사, 정확히 말하면 회사가 가진 시스템을 바꾸어 내기에는 어려울 것 같으니.. 스스로 가진 생각부터 바꾸어 단단하고 오래 일을 해내고 싶다. 소프트웨어 개발자로서.
궁금한 내용이 있거나, 잘 이해되지 않는 내용이 있다면 적어보세요.
엔트로피: 시스템 내의 '무질서'한 정도를 가리키는 물리학 용어
시작 피로: 일에 착수하려고 허락을 구하는 때부터 일들이 복잡해지며, 각자 자신의 자원을 지키려고 하는 것
기능 블로트(feature bloat): 소프트웨어가 여러분이 쓰는 기능에 비해 훨씬 더 많은 기능을 가지고 있는데, 기능이 많은 만큼 버그나 보안 취약점이 생길 가능성도 높다는 것을 의미
기한이 있는 자산(expiring assets): 시간이 지남에 따라 그 가치가 줄어드는 자산
오늘 읽은 다른사람의 TIL
<예시>
00님의 TIL (url 링크)
</예시>