![01. [서문 ~ 1장_실용주의 철학]](https://img1.daumcdn.net/thumb/R750x0/?scode=mtistory2&fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FeeXBhA%2FbtryxJr5u5J%2FXqDDkhFFWfN9gJl332HXqk%2Fimg.png)
🙂 책에서 기억하고 싶은 내용
'여러분의 기예 Craft에 관심을 갖고 몰두하라.'
'하지만 잊지 말라. 무엇보다 중요한 것은 즐기는 것이다.' (P.ⅻⅰ)
'최고의 해결 방안 같은 것은 없다. 오직 특정한 환경 조건들마다 가장 적절한 시스템들이 있을 뿐이다.'
'어떤 특정 기술에 매이면 안 된다. 개별 상황마다 그 상황에서 좋은 해결 방안을 고를 숲 있도록 충분한 배경지식과 경험을 쌓아야 한다. 배경지식은 컴퓨터 과학의 기본 원리에 대한 이해에서 생겨나고, 경험은 다양한 종류의 실제 프로젝트들을 수행해 봄으로써 얻을 수 있다.' (P.ⅹⅷ)
'모든 개발 과정에서, 매일, 여러분이 내리는 모든 결정을 끊임없이 비판적으로 평가해야 한다.'
'언제나 일하면서 동시에 생각하고, 자기 일을 비평하라.' (P.ⅹⅺ)
'실용주의 프로그래머는 무엇이 다른가? 문제와 해법에 접근하는 태도와 방식, 철학에 차이가 있다고 생각한다.'
'문제를 더 큰 맥락에 놓고 더 큰 그림을 보려고 노력한다.'
'자신이 하는 모든 일에 책임을 진다.' (P.1)
<항목 6. 지식 포트폴리오> 목표 부분 (P.19 - 27)
- 매년 새로운 언어를 최소 하나는 배워라
- 기술 서적을 한 달에 한 권씩 읽어라
- 기술 서적이 아닌 책도 읽어라
- 수업을 들어라
- 지역 사용자 단체나 모임에 참여하라
- 다른 환경에서 실험해 보라
- 요즘 흐름을 놓치지 말라
🙂 내용 정리
[서문]
Tip 1. 자신의 기예 Craft에 관심을 가져라.
(소프트웨어 개발을 잘하는 것에 관심이 없다면, 이 일을 하는 의미가 없다.)
Tip 2. 자기의 일에 대해 생각하라. (언제나 일하면서 동시에 생각하고, 자기 일을 비평하라.)
[1장. 실용주의 철학]
항목 1. 당신의 인생이다
당신은 '실용주의 프로그래머'가 될 수 있다.
이 업계는 놀랄 만큼 다양한 기회를 준다. 주도적으로 행동해서 그 기회를 잡아라.
Tip 3. 당신에게는 에이전시 agency가 있다. (주체적으로 원하는 행동을 고르고 행할 수 있는 능력이 있다.)
항목 2. 고양이가 내 소스 코드를 삼켰어요
고양이를 탓하는 변명. 이런게 통하겠는가.
자신이 하는 모든 일에 책임을 져야한다. (자신의 경력 개발, 자신의 학습 및 교육, 자신의 프로젝트, 자신의 일상 업무)
가능한 전문가답게 처리하려고 노력해라. 정직하고 솔직해져야 한다.
자신의 능력에 자부심을 가질 수 있지만, 실수나 무지 같은 단점도 인정해야만 한다.
Tip 4. 어설픈 변명 말고 대안을 제시하라.
실수 할 수 있다. 다만, 실수를 저지르거나 잘못된 판단을 내렸다면, 필요한 것은 변명이 아니다. 인정하고 다른 방안을 제안하도록 노력하라.
어설픈 변명을 늘어놓기 전에 그 변명 거리를 없애도록 노력해보라.
항목 3. 소프트웨어 엔트로피
'소프트웨어의 부패' '기술 부채 technical debt' - 소프트웨어의 무질서도가 증가하는 것.
Tip 5. 깨진 창문을 내버려 두지 말라.
깨진 창문이 꽤 있는 프로젝트에서 일할 때 '나머지 코드가 전부 쓰레기니까 나도 그렇게 하지 뭐' 라는 사고에 빠지기 쉽다.
나쁜 설계, 잘못된 결정, 혹은 형편없는 코드 등이 모두 깨진 창문이다. 발견하자마자 바로 고쳐라. 적절히 고칠 시간이 없다면 일단 판자로 덮는 것만이라도 하라. (주석처리, 메시지 남기기, 가짜 데이터로 대치해 놓기 등의 어떤 조치든 취해, 상황을 관리하고 있음을 보여줘라.)
항목 4. 돌맹이 수프와 삶은 개구리
돌맹이 수프 (변화를 부추기는 전략)
: 큰 무리가 없이 요구할 수 있을 만한 것을 찾아라. 그리고 그걸 잘 개발하라. 계속되는 성공에 합류하기란 쉽다.
Tip 6. 변화의 촉매가 되라.
삶은 개구리
: 반대로, 점진적 변화가 가져오는 위험을 간과해선 안된다. 참사는 너무 작아 알아채기 힘들 정도의 문제에서 시작된다.
프로젝트는 서서히, 하지만 가차없이 구제불능인 상태가 되어 버린다.
당장 하고 있는 일에만 정신을 쏟지 말고, 주변에서 무슨 일이 벌어지는지 늘 살펴보라.
Tip 7. 큰 그림을 기억하라.
항목 5. 적당히 괜찮은 소프트웨어
완벽하게 훌륭한 프로그램을 과도하게 장식하거나 지나칠 정도로 다듬느라 망치지 말라.
완벽하지 않을 수도 있다. 그래도 괜찮다. 많은 경우 타협점을 찾게 된다.
여러분이 생산해 낸 것이 적당히 괜찮게 사용자의 요구를 충족하는지 결정하는 과정에 사용자가 참여할 기회를 가져야 한다.
여러분이 만드는 시스템의 범위 scope와 품질은 해당 시스템의 요구 사항 중 하나로 논의되어야 한다.
Tip 8. 품질을 요구 사항으로 만들어라.
항목 6. 지식 포트폴리오
넓은 기반 지식과 경험을 가져야 하며, 끊임없이 계속 배워야 한다.
지식과 경험은 중요한 자산. 다만, 이 자산은 '기한이 있는 자산'이다. 기술 세계의 변화 속도를 볼 때, 유효 기간이 금세 끝날 수도 있다.
때문에 새로운 것을 배우는 능력은 가장 중요한 전략 자산이다.
Tip 9. 지식 포트폴리오에 주기적으로 투자하라.
* 소량으로라도 주기적으로 투자해야 한다.
* 다각화 - 기본적으로 현재 작업에 사용하는 기술에 관해서는 속속들이 알아야 한다. 하지만 거기서 멈추지 말라. 더 많은 기술에 익숙하다면 변화에 더 잘 적응할 수 있을 것이다. 기술 외의 분야도 포함하여 필요한 다른 역량도 잊지 말라.
* 리스크 관리 - 여러분의 기술 달걀을 모두 한 바구니에 담지 말라.
* 새롭게 떠오르는 기술이 인기를 끌기 전에 미리 알고 학습하는 게 저 평가된 주식을 찾아낸 것만큼이나 어려울 수 있지만, 이익 또한 그만큼 클 수 있다.
* 검토 및 재조정 - 이 산업은 매우 동적이기에, 계속해서 검토하고 조정해야 한다.
🎯 목표
1. 매년 새로운 언어를 최소 하나는 배워라
2. 기술 서적을 한 달에 한 권씩 읽어라
현재 사용하는 기술을 일단 완전히 익혔다면, 가지를 쳐서 지금 하는 프로젝트와 관련 없는 분야까지 공부 범위를 넓혀라.
3. 기술 서적이 아닌 책도 읽어라
컴퓨터도 사람이 사용한다는 걸, 그리고 우리는 바로 이 사람들을 만족시키려고 노력하고 있다는 걸 꼭 기억해야 한다.
4. 수업을 들어라 (온라인 대학, 기술 세미나, 콘퍼런스..)
5. 지역 사용자 단체나 모임에 참여하라
(회사 밖에서는 사람들이 어떤 일을 하는지 알아보라. 듣고만 오지 말고 적극적으로 참여하라)
6. 다른 환경에서 실험해 보라 (ex. 윈도우에서만 일을 해 왔다면 리눅스를 얼마간 사용해보기)
7. 요즘 흐름을 놓치지 말라
현재 프로젝트에서 사용중인 것과는 다른 기술을 다루는 뉴스와 온라인 게시물을 읽어라.
이런 기술들을 프로젝트에서 영영 사용하지 않거나 심지어 자신의 이력서에 올려놓지 않아도 상관없다. 학습과정에서 사고가 확장될 것이다. 사고 간의 교접cross-pollination이 중요하다.
* 멈추지 말라. 주위에 물어보라. 사용자 문서, 학술 자료도 찾아보라. 스스로 답을 찾지 못하겠으면, 답을 찾아줄 수 있는 사람을 찾아라. 다른 사정으로 비는 시간을 위해 늘 읽을거리를 준비하라.
* 읽거나 듣는 것에 대해 비판적으로 생각해야 한다. 포트폴리오에 있는 지식을 정확히 유지할 수 있도록!
상업주의의 힘을 절대 과소평가하지 말라. 웹 검색 엔진의 첫머리에 나온 결과라고 해서 그것이 최선을 의미하는 것은 아님.
Tip 10. 읽고 듣는 것을 비판적으로 분석하라.
항목 7. 소통하라!
하루 중 많은 시간을 소통하며 보내기에 이를 잘할 필요가 있다. 최고의 아이디어, 최상의 코드, 실용적 발상 등이 있다해도 다른 사람들과 소통할 수 없다면 궁극적으로 아무 효용이 없다.
Tip 11. 한국어든 영어든 하나의 프로그래밍 언어일 뿐이다.
* 청중의 요구와 관심, 능력을 이해할 필요가 있다. 비결은 피드백을 모으는 것. 피드백을 기다리지 말고, 먼저 물어보라. 손짓, 몸짓과 표정을 관촬하라. 소통하면서 청중에 대한 지식을 쌓아 나가라.
* 무엇을 말할지 미리 계획하라. 개요를 작성하라.
내가 표현하고 싶은 것을 듣는 사람에게 통하는 방법으로 잘 전달할 수 있을 때까지 다듬어라.
* 말하는 내용뿐 아니라 말하는 시점도 적절하게 하라.
* 전달하는 스타일을 청중에 어울리도록 조정하라.
* 멋지게 전달하기 위한 수단을 준비해야 한다.
* 청중을 참여시켜라.
* 경청하라. 여러분이 다른 사람들의 말을 귀 기울여 듣지 않는다면 그들 역시 여러분의 말을 듣지 않을 것이다.
* 응답하라. 심지어 응답이 단순히 "다음에 답해 드리겠습니다."이더라도..
Tip 12. 무엇을 말하는가와 어떻게 말하는가 모두 중요하다.
* 문서화 - 코드와 문서를 함께 둬라. 소스 코드의 주석으로 보기 좋은 문서를 쉽게 생성할 수 있다.
Tip 13. 문서를 애초부터 포함하고, 나중에 집어넣으려고 하지 말라.
🤔 오늘 읽은 소감
동기 부여가 되었다. 비전공자로 처음 프로그래밍에 대해서 찾아볼 때 고민이 많았었다. 무엇을 공부할 것인가, 무엇부터 시작해야하는지, 어떤 언어를 배우야할지 고민했던 기억이 난다.
결국, 다 배워야 하는구나.. 끊임없이 배우고 성장해나가고 싶다! 무엇보다 그 과정을 즐기면서!!!
일단 책에서 소개한 목표들 중에서 지금 내가 바로 해볼 수 있는 것부터 시작해봐야겠다.
- 매년 새로운 언어를 최소 하나는 배워라
- 기술 서적을 한 달에 한 권씩 읽어라
- 기술 서적이 아닌 책도 읽어라
- 수업을 들어라
- 지역 사용자 단체나 모임에 참여하라
- 다른 환경에서 실험해 보라
- 요즘 흐름을 놓치지 말라
🫥 궁금한 내용, 잘 이해되지 않는 내용
문서화 부분. 어떤식으로 주석을 남겨야 할까?
다른 사람들은 어떻게 하고 있는지 궁금하다. 회사마다 약속해 놓은 방식이 있을까? 이 부분에 관한 가이드라인이 있을까?
다른 사람이 알아보기 쉽게 코드 작성하기!! (지금 내 코드는 어떻지..?)
필요한 내용만을 주석으로 남기기! (코드와 중복되지 않게, 관리하기 쉽게!!)
'BOOK > [실용주의 프로그래머]' 카테고리의 다른 글
00. 구매 인증 (0) | 2022.03.18 |
---|
경영학 출신 개발자 Sanhan의 블로그 입니다. 개인적으로 공부한 내용이나, 모아두었던 글, 독서 내용 등을 틈틈이 정리하여 공유하려 합니다.
포스팅이 좋았다면 "좋아요❤️" 또는 "구독👍🏻" 해주세요!