[실용주의 프로그래머 with 노개북] #02 서문 ~ 1장 실용주의 철학

londev·2022년 3월 19일
0

오늘 TIL 3줄 요약

  • 주도권과 책임감을 가진 개발자가 되자.
  • 기술부채를 쌓지 않기 위해 애쓰자. 부담없이 참여를 이끌 수 있는 미끼를 던지자. 언제나 주변상황을, 전체를 인식할 수 있도록 하자. 적당히 괜찮은 소프트웨어를 만들고 피드백을 받자.
  • 주기적으로 지식 포트폴리오를 관리하자. 소통능력에도 특히 주의를 기울여야 한다.

(3줄 요약이 어려운 파트였다!)

TIL (Today I Learned) 날짜

2022.03.19.

오늘 읽은 범위

서문 ~ 1장 실용주의 철학

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

  • 실용적pragmatic이라는 단어는 라틴어 pragmaticus(일에 숙달된)에서 나왔고, 이 단어는 ...을 하다를 뜻하는 그리스어 로부터 나왔다. (p.xvii)

  • 프로그래머로서 여러분은 어떤 면으로 는 듣는 사람이고, 어떤 면으로는 조언하는 사람이며, 통역하는 사람이기도 하고, 명령을 내리는 사람이기도 하다. 애매모호한 요구 사항을 포착해서 단순한 기계를 최대한 활용할 수 있도록 구현하려고 노력한다. 자신의 작업을 다른 사람이 이해할 수 있도록 문서로 만들려고 노력하고, 자신이 한 것을 바탕으로 다른 사람이 또 다른 것을 만들 수 있도록 자신의 작업을 설계하려고 노력한다. 이뿐 아니라 쉬지 않고 똑딱대는 프로젝트 일정 시계에 맞추어 이 모든 일을 해내기 위해 노력한다. 여러분은 매일 작은 기적을 만드는 것이다.(p.xvii)

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

  • Tip 2 자기 일에 대해 생각하라.(p.xx)

  • 개개인의 기여가 프로젝트를 지탱한다는 것이 이들의 믿음이었다. 우리가 단지 돌을 자를지라도 언제나 대성당을 마음속에 그려야 한다.(p.xxii)

topic1 당신의 인생이다.

  • Tip 3 당신에게는 에이전시agency가 있다. (p.3)
  • 당신에게는 스스로의 행동을 직접 결정할 수 있는 힘이 있다. 업무 환경이 엉망인가? 하는 일이 지루한가? 문제를 고치기 위해 노력하라. 하지만 너무 오랫동안 노력하지는 말라.(p.3)
  • agency;the ability to take action or to choose what action to take

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

  • 약점을 보이는 것에 대한 두려움이 가장 큰 약점이다. - J. B. 보쉬에(J. B. Bossuet), Politics from Holy Writ(성서에서의 정치), 1709 (p.4)
    -> 찔리는 부분이라 특히 인상적이었다. 어떻게 하면 그 두려움을 극복할 수 있지?
  • 창의성과 공동 작업에는 팀 내의 신뢰가 절대적으로 필요하다고 한다. 신뢰에 바탕을 둔 건강한 환경에서는 안전하게 여러분의 생각을 말하거나 아이디어를 제안할 수 있다. 팀원에게 의지할 수도, 반대로 그 팀원이 다시 여러분에게 의지할 수도 있다. 신뢰가 없다면, 후유.
    -> 신뢰할 수 있는 팀을 어떻게 만들어나갈 수 있을까?
  • Tip 4 어설픈 변명 말고 대안을 제시하라.(p.6)
  • 여러분이 잘 모르겠어요.라고 말했다면, 꼭 바로 이어서 하지만 알아볼게요. 라고 말하라. 모른다는 것은 인정하더라도 전문가답게 책임을 지는 좋은 방법이다.(p.7)
    -> 이런게 책임을 지는 태도구나. 하고 배워간다.

topic3 소프트웨어 엔트로피

  • 소프트웨어의 무질서도가 증가할 때 우리는 이를 소프트웨어의 부패라고 일컫는다. 이를 보다 긍정적인 표현인 기술 부채technical debt라고 부르기도 한다. 은연중에 언젠가는 갚을 수 있다는 뉘앙스를 풍기면서 말이다. 하지만 아마 갚지는 않을 것이다.(p.8)
  • Tip 5 깨진 창문을 내버려 두지 말라.(p.9)
  • 나쁜 설계, 잘못된 결정, 혹은 형편없는 코드 등이 모두 깨진 창문이다. 발견하자마자 바로 고쳐라. 적절히 고칠 시간이 없다면 일단 판자로 덮는 것판자로 덮는 것만이라도 하라. 불쾌한 코드를 주석 처리 하거나, 아직 구현되지 않았음이라고 메시지를 표시하거나, 가짜dummy 데이터로 대치해 놓거나 하라. 더 이상의 손상을 예방하기 위해 어어떤 조치든 취하고 여러분이 상황을 잘 관리하고 있음을 보여 줘라.(p.9)
    -> 구체적으로 어떻게 해볼 수 있는지 알 수 있어 좋았다. 실천해 볼 것.
  • 깨진 창문을 두세 개 고른 다음, 여러분의 동료들과 함께 무엇이 문제고 그걸 고치기 위해 무엇을 할 수 있는지 토론하라.(p.11)

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

  • 돌멩이를 내놔야 할 때다. 큰 무리 없이 요구할 수 있을 만한 것을 찾아라. 그리고 그걸 잘 개발하라. 일단 무언가 생기면 사람들에게 보여 주고 그들이 경탄하게 하라. 계속되는 성공에 합류하기란 쉽다. 미래를 살짝이라도 보여 주면 사람들은 도와주기 위해 모여들 것이다. (p.13)
  • 큰 그림에 늘 주의를 기울여라. 당장 하고 있는 일에만 정신을 쏟지 말고, 주변에서 무슨 일이 벌어지는지 늘 살펴보라. (p.14)
  • 변화를 촉진하려고 할 때 여러분이 돌멩이 수프를 만드는지 아니면 개구리 수프를 만드는지 어떻게 판단할 수 있을까? 그 판단은 주관적인가, 객관적인가? (p.15)

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

  • 페이스북의 모토로도 알려진 완벽보다 완성이 낫다라는 말과 맞닿아 있다. (p.15)
  • 에드워드 요든Edward Yourdon이 IEEE 소프트웨어에 쓴 글 When good-enough software is best(적당히 괜찮은 소프트웨어가 최선일 때)[You95]에서 설명한 바와 같이, 적당히 괜찮은 소프트웨어를 만들도록 자신을 단련할 수 있다. 사용자나 미래의 유지 보수 담당 아니면 자기 자신이 마음의 평화를 유지하기에 적당할 정도로 괜찮으면 된다. 여러분은 더 생산적이 되고 사용자는 한층 더 행복해 할 것이다. (p.16)
  • 놀랍게도 많은 사용자가 멋지고 휘황찬란한 버전을 위해 일 년을 기다리느니 차라리 오늘오늘 당장 좀 불편한 소프트웨어를 사용하고 싶어 한다(게다가 사실 1년 뒤면 원하는 것이 완전히 달라질 것이다).
  • 사용자에게 뭔가 직접 만져볼 수 있는 것을 일찍 준다면, 피드백을 통해 종국에는 더 나은 해결책에 도달할 수 있을 것이다.(p.17)
    -> 고민을 너무 많이 하는 것보다는 일단 제품을 만들어보자!

topic6 지식 포트폴리오

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

포트폴리오 만들기

  • 주기적인 투자 : 금융 투자에서와 마찬가지로 여러분의 지식 포트폴리오에 소량으로라도 주기적으로 투자해야 한다. (p.21)
    방해를 받지 않을 수 있는 시간과 장소를 정기적으로 이용할 계획을 마련하라.(p.21)
  • 다각화 : 여러 가지를 알수록 자신의 가치는 더욱 높아진다.
    기술 외의 분야도 포함하여 여러분에게 필요한 다른다른 역량도 잊지 말라. (p.22)
  • 리스크관리 (p.21)
  • 싸게 사서 비싸게 팔기 (p.22)
  • 검토 및 재조정 (p.22)

목표

  • 매년 새로운 언어를 최소 하나는 배워라 :
    다른 언어는 동일한 문제를 다르게 푼다. 몇 가지 서로 다른 접근법을 알면 사고를 확장하고 판에 박힌 사고에 갇히는 걸 예방하는 데에 도움이 된다. (p.22)
    -> 쉽지 않을 것 같지만 시도해볼 것. 이건 슬럼프에 빠지지 않도록 도와주기도 할 것 같다.

  • 기술 서적을 한 달에 한 권씩 읽어라 (p.23)

  • 기술 서적이 아닌 책도 읽어라 : 컴퓨터도 사람사람이 사용한다는 걸, 그리고 우리는 바로 이 사람들을 만족시키려고 노력하고 있다는 걸 꼭 기억해야 한다.
    (이런 기술을 소프트soft 스킬이라고 부르지만, 실제로는 익히기 정말 어렵다hard) (p.23)
    -> 너무 공감된다. 사람에 대한, 사람과의 상호작용에 대한 지식은 꼭 필요하다. 그리고 습득하기도 너무 어렵다.

  • 수업을 들어라. (p.23)

  • 지역 사용자 단체나 모임에 참여하라 (p.23)
    다른 환경에서 실험해보라 (p.23)

  • 요즘 흐름을 놓치지 말라 (p.23)

  • 스스로 답을 찾지 못하겠거든 답을 찾아줄 수 있는찾아줄 수 있는 사람을 찾아라. 중단하지 말라. 다른 사람과 이야기함으로써 개인 네트워크를 구축하는 데 도움이 되기도 하고, 답을 찾는 도중에 별로 관련이 없어 보이는 문제에 대한 해답을 찾아서 놀라는 일도 생길 것이다. 게다가 포트폴리오는 그사이 계속 커진다.(p.25)

비판적 사고 (p.26)

  • 왜냐고 다섯 번 묻기 Five Whys
  • 누구에게 이익이 되나?
  • 어떤 맥락인가? : 모든 일에는 각각의 맥락이 있기에, 만병통치약인 해결책은 대개 통하지 않는다.
  • 언제 혹은 어디서 효과가 있을까?
  • 왜 이것이 문제인가?

topic7 소통하라!

  • 신경 언어 프로그래밍Neuro Linguistic Programming의 전제 중 하나는 당신이 한 의사소통의 의미는 당신이 받은 반응이 결정한다는 것이다. 소통하면서 청중에 대한 지식을 쌓아 나가라. (p.30)
  • 무엇을 말할지 미리 계획하라. 개요를 작성하라. 그리고 자문하라. 이렇게 하면 내가 표현하고 싶은 것을 듣는 사람에게 통하는 방법으로 잘 전달할 수 있나? 그렇게 될 때까지 다듬어라. (p.30)
  • 청중이 무엇을 듣기 원하는지 이해하려면 그들의 우선순위를 알아야 한다. (p.30)
  • 전달하는 스타일을 청중에 어울리도록 조정하라 (p.31)

요약 (p.34)

  • 청중을 알라.
  • 말하고 싶은 게 무언지 알라.
  • 때를 골라라.
  • 스타일을 골라라.
  • 멋져 보이게 하라.
  • 청중을 참여시켜라.
  • 경청하라.
  • 응답하라.
  • 코드와 문서를 함께 둬라.

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

  • 실용주의적인 개발자가 되기 위해 갖추어야 할 것들을 꽤 여러가지 접했다. 그 때문인지 내가 과연 책에서 말하고 있는 그 실용주의적인 개발자가 될 수 있을까? 솔직히 조금은 자신이 없어졌다.
  • 하지만 이 책을 읽기를 시작한 것만으로도 실용주의적인 개발자에 한 걸음 다가가고 있는 것일 수 있겠다 싶어 약간은 기분이 좋았다.
  • 매일 조금씩 스킬을 개발해 가는 것의 중요성은 아주 많은 개발도서에서 역설하고 있는 것 같다. 내게 맞는 정도의 자기개발시간에 익숙해지고, 따라서 꾸준히 지속되도록 하는 일에 힘써야겠다고 생각했다.
  • 개발자로 살아가는 데 있어 내 주도권을 인식하는 데 영향을 주는 이야기들을 접했다. 내가 원하는 개발자의 삶을 사는 것을 우선순위로 두어야겠다는 생각을 했다. 그러기 위해서는 내가 원하는 개발자의 삶이 무엇인지 알아차리는 것이 먼저겠지. 이를 알아차리기 위해서는 일단 뭐든 해봐야한다. 역시 지식포트폴리오에 대한 주기적인 투자가 중요하다는 생각이 한 번 더 든다.
  • 소통자체를 두려워하는 성격이라 소통에 대해서는 특히 자신이 없다. 책에서 소통의 기술에 대해서 이야기하고 있는데, 이 방법들을 상기하며 소통하려 애쓰면 소통에 대한 긍정적인 경험이 쌓일까?

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

  • p.35에서 소개된 의사소통에 관한 책들 - 맨먼스 미신, 피플웨어, Dinosaur Brains: Dealing with All Those Impossible People at Work(파충류의 뇌: 일터에서 만나는 곤란한 사람 상대하기) - 에서 어떤 이야기를 하고 있을지 궁금하다.

오늘 읽은 다른사람의 TIL

https://nomadcoders.co/community/thread/3649

profile
pending...

0개의 댓글

관련 채용 정보