From d9554474794f39562a650a053b2b824ea0dd90e0 Mon Sep 17 00:00:00 2001 From: hemil0102 Date: Tue, 3 Jun 2025 18:13:19 +0900 Subject: [PATCH] =?UTF-8?q?#552=20=EB=8D=94=20=EB=82=98=EC=9D=80=20?= =?UTF-8?q?=ED=94=84=EB=A1=9C=EA=B7=B8=EB=9E=98=EB=A8=B8=20=EB=90=98?= =?UTF-8?q?=EB=8A=94=20=EB=B2=95=204=EC=A3=BC=EC=B0=A8?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../24\354\236\245~33\354\236\245.md" | 216 ++++++++++++++++++ 1 file changed, 216 insertions(+) create mode 100644 "2025/Becoming a Better Programmer/hemil0102/24\354\236\245~33\354\236\245.md" diff --git "a/2025/Becoming a Better Programmer/hemil0102/24\354\236\245~33\354\236\245.md" "b/2025/Becoming a Better Programmer/hemil0102/24\354\236\245~33\354\236\245.md" new file mode 100644 index 00000000..c38e2cc5 --- /dev/null +++ "b/2025/Becoming a Better Programmer/hemil0102/24\354\236\245~33\354\236\245.md" @@ -0,0 +1,216 @@ +## 논제 +언어에 대해서 아직은 한가지 언어를 깊게 익히고 다른 언어를 익혀보려고 한다. 그 이유는 처음부터 이런 저런 언어를 접하면 깊이는 없고 겉만 핥을 것 같다는 생각 때문이다. +책에서는 한 가지 언어보다는 다양한 언어를 익히는 것이 좋다고 하고, 최근에 봤던 한스짐머 음악 공연에서도 바이올리니스트가 보컬도 되고 피아노도 치고 다양한 악기를 연주하며 즐기는 모습에 감명을 많이 받았다. 그래서 나도 언젠가는 다른 언어를 해봐야할 것 같은데, 과연 현재 사용하는 주언어외에 다른 언어는 언제 제대로 익히면 좋겠다고 생각하는가? + +# 24장 배움을 사랑하며 살기 +새로운 것을 배우려고 의식적으로 노력하기 + +## 1. 언제 마지막으로 배움의 필요성을 느꼈는가? 그 상황에 대한 접근 방법은 무엇이었는가? +프로그래밍 코드를 작성하면서 지속적으로 한계를 경험한다. +그러다보면 팀장님이 그렇게 하지 말라며 설계부터 하고 이거부터 하고 저거부터 하고라는 말을 계속한다. +처음에는 난 내 방식이 좋고 이렇게해도 문제가 없는데 왜 저렇게 해야하지? 싶었는데, +계속 깨지면서 저 방식대로 시도를 해보았다. +그런데 막상 해보니 내 방식을 고수하는 것이 꼭 옳은 것은 아니고, +다른 방식을 경험해보고 장점을 직접 체험해보니, 아 내가 아는게 전부가 아니니 배움이 필요하구나?란 생각을 했다. +이 상황에 대한 접근 방법은 어떻게든 '직접 체험'하게 하므로써 깨닫게 하는 것이다. + +## 2. 얼마나 성공적이었나? +사실 저렇게 한번 깨닫고도, 체화시키는 것에는 많은 노력이 필요하다. +젊었을 때는 새로운 것을 접한다는 마음가짐과 내가 알고 있는 믿음이 적어서 그랬을까? +무언가 새로운 것을 배우는데 1번 또는 2번의 반복이면 되었는데, +요즘은 3~4번은 같은 방식을 습득해야 학습이 된다고 생각한다. + +## 3. 얼마나 빨리 배웠는가? +3~4번 + +## 4. 어떻게 하면 더 잘 수행할 수 있었겠는가? +먼저 스스로가 아는 믿음이 중요할지라도, 새로운 방식을 익힐 때는 믿음을 한구석에 내려놓고, 새로운 방식에 대한 믿음을 쌓아가는 것이 중요하다고 생각한다. +새로운 방식에 대한 믿음이 생기면, 원래 알던 믿음과 비교하거나 합치는 작업을 통해 더 좋은 방향으로 생각해본다. + +## 5. 배운 다음에 작업하였는가 아니면 작업하면서 배웠는가? 어떤 방법이 가장 효과적이라 생각하는가? +일반적으로 배운 다음에 작업을 수행하지만, 배운다라는 것이 완전히 이론 단계에서 이해가 이뤄지지 않은 상태에서 작업을 하면서 시행착오가 많이 생긴다. +그러면 작업을 수행한 것이 제대로된 결과가 아니기 때문에 제대로 배운 것도 아니라 생각을 한다. +따라서 일반적으로 배운다 또는 어떤 설명을 완전히 이해한 다음 행동으로 나서는게 효과적이라 생각한다. + +## 6. 누군가를 마지막으로 가르쳐본 때는 언제인가? 가르치는 일은 그 주제를 이해하는데 어떤 영향이 있었는가? +최근에 온라인 멘토링을 진행했는데, 대부분 취업 관련된 주제로 멘토링 상담을 신청했다. +기술적인 멘토링을 기대했으나 그러지 않아서 조금은 실망했지만, +취업 관련된 분야라도 아는 선에서 최선을 다해 설명을 해주었는데, +모든 학생은 아니지만 1명의 학생이 틈틈히 지속적으로 연락을 주었다. +먹고 사는게 힘든 세상이라 스트레스 속에서 집중이 잘 안되는 상황에서 기술을 배운다는게 요즘 한국의 가장 취약한 정서 같다. +한편으로 누군가를 가르치면서 나의 취업 준비 상황을 다시 돌아보고, 막상 학생을 가르쳐보니 아 그래서 이런 구성을 넣어보라는거구나 하고 이해가 되었다. + +## 7. 작업에 대한 압박 속에서 새로운 것을 배우는 시간을 어떻게 찾을 수 있는가? +요즘 계속 새로운 것을 배우고 싶은데, +아버지가 돌아가신지 얼마 안되었고, 외국인이라는 다른 제도에서의 삶, 회사에서의 스트레스 +생존 불안함때문에 압박감이 상당하고 자연스럽게 무언가 배우는 것이 힘들다. + +새로운 것을 배우는 시간을 이 상황에서 만들기 위해서, +조금 휴식을 일부러 많이 취하고 있다. +취업 준비 기간에 어떻게든 먹고 살기 위해서 공부를 했었는데, +휴식을 제대로 취하지 못하니 하루에 30분도 공부할 집중력이 잘 생기지 않았다. + +다행이도 최근에 취업 이후 10개월을 주말엔 노는 것에 집중하려고 했다. +처음에는 노는게 잘 되지 않았다. +취업을 했어도 불안한 사회이기 때문에 계속 무언가 공부해야할 것 같아서, +시간 날 때마다 무언가를 하려고 했다. +그런데 계속 마음만 조급해서 학습이 잘 되질 않았고, +최근 3개월은 조금 일부러 공부를 하려는 마음을 많이 내려놨다. + +그러다보니 오히려 너무 논 것 같아서 새로운 것을 배우고 싶다는 마음이 생겼다. +일주일 이틀을 놀았다면 지금은 하루는 놀고 하루는 공부한다. +그래도 집중력이 썩 좋지 않아 맥시멈 3시간 개인 공부를 하는 것 같다. + +물리적인 시간도 중요하지만, +새로운 것을 배우고 싶은 마음의 시간도 찾아야하는 것 아닐까 싶은데, +대부분 회사들은 휴식이란 것에 인색하고 휴식이 주는 뇌의 활력이 오히려 학습에 도움이 되는 것을 간과하는게 아쉽다. + +물리적인 시간은 점심 시간 이후 10분 휴식 시간에 리서치를 해서 배우고 싶은 것을 목록화한다. +아침 출근 시간에 독서를 하고, 업무 중에도 모르는 키워드를 기록한다. +그러다 이 목록들이 많이 쌓이면 아 쳐내야하는데 언제 시간내지? 라는 생각을 하게된다. +그런 순간이 오면 기록한 것들을 펼쳐놓고 우선순위를 정한다. +그리고 가장 중요한 것은 영양 보충이다, 영양제 보충을 통해 뇌의 에너지를 활성화해서 퇴근 이후에도 30분 공부할 수 있도록 한다. + + +# 25장 테스트 주도 개발자 +## 1. 프로그래밍과 운전면허 시험의 유사 요소는 무엇일까? 그런 것이 있을 수 있을까? +### 둘 다 실전에 강해야 한다. + +## 2. 당신의 프로그래밍 기술은 일반적인 시험 수준인가 아니면 심화 수준인가? 당신이 생각하기에 종종 '무의식적 능력'에 도달하는 것처럼 느껴지는가? +### 나의 실력은 아직 일반 초급 수준이라 생각한다. 요즘은 GPT에게 코드를 물어보는데, 이 경우 무의식적 능력 도달에 방해가 된다는 느낌을 받는다. 따라서 GPT 없이 코드 작성을 해보는 능력이 필요하다. 요즘은 무의식적으로 GPT를 다루는 실력이 늘어가는 기분인데, 이게 바라는 프로그래머의 모습은 아닌 것 같다. + +## 3. 현재의 기술 수준을 유지하고 싶은가? 아니면 더욱 발전시키고 싶은가? 발전을 위해 어떻게 할 것인가? +### 더욱 발전 시키고 싶다. 이를 위해서 기본기를 연마한다. + +## 4. 프로그래머에게 자동차 운전의 '비상 정지'와 같은 대응 능력이 있는지를 어떻게 시험할 것인가? +### 흠 프로그래머의 비상 정지는... 생각 없이 작성하는 코드를 중단하고 설계를 하는 것 아닐까... + +## 5. 자신의 기술에 투자하여 별도로 얻을 것이 있는가? 좋은 운전자가 낮은 보험료의 혜택을 보듯이. '안전한 코더' 로서 어떤 물질적 혜택을 얻을 수 있는가? +### 안전한 코드로 시간 절약을 한다면 그 시간만큼 다른 보상을 물질적으로 얻을 수 있지 않겠는가. 전기세 절약? + +## 6. 만약 코딩이 운전과 같다면, 코드 테스터들을 충돌 시험용 인체 모형처럼 대해도 되는가? +### 그렇지 않은가, 테스트를 하고 직접 부딪혀서 문제를 찾아낼 수 있다. 더군다나 소프트웨어는 재생성이 가능한데 컴퓨터가 망가지지 않는한 계속 얼마든지 테스트 해볼 수 있다. + + +# 26장 도전 즐기기 +## 1. 실력을 키워주고 자극을 주는 프로젝트가 있는가? +### 사실 지금 하는 모든 것이 대부분 처음 접하는 새로운 것들이다. 다만 프로젝트를 이것 저것 하게되면서 어떤 부분은 고착되어 쉽게 나아지지 않는 나쁜 습관들을 발견하곤 한다. 그래서 모든 프로젝트를 할 때 최대한 좋은 습관을 가져가려고 노력을 한다. 그래서 사실상 모든 프로젝트가 실력을 키워주고 있다. + +## 2. 한동안 고려했지만 아직 시작하지 않은 프로젝트 아이디어가 있는가? 조금이라도 손을 대보는 것은 어떤가? +### 있긴하다. 그런데 다른 일이 더 급해서 금전적 이득이 나질 않아 우선 순위를 미뤄둔 프로젝트다. 뭔가 프로젝트를 하면서 아직은 스타일 정립도 안되어 있지만, 하면서 아? 이건 다음에 이렇게 해봐야지 하는 것은 새로운 프로젝트에 도입해보려는 노력을 해본다. + +## 3. 일상의 업무와 '흥미로운' 도전 사이에 균형을 맞추고 있는가? +### 음 아직은 일상의 업무를 더 잘하려고 노력하고 있다. 사실 일상의 업무에서도 지금 잘해내야하고 배울 점이 많다. 그런데 너무 업무에만 몰입해도 성과가 나지 않으므로 틈날때 자료구조를 공부하고 있다. + +## 4. 주변의 다른 의욕적인 프로그래머들에게 자극을 받는가? +### 그렇다. 컨퍼런스에 가면 정말 나보다 100배 뛰어난 개발자들을 보게되는데, 자괴감이 들다가도 꾸준히 노력하면 저기에 반은 따라갈까란 생각으로 정진하려고 한다. 약간 이런 다짐들이 사실 실제 행동으로 이어지는게 많이 더딘 편이지만, 그래도 이런 자극을 계속 받다보면 실제로 뭔가 학습을 더하려고 하는 느낌이 있다. + +## 5. 폭넓은 범위에 관심을 가지고 있고, 그로부터 작업을 파악하는 데 도움을 얻고 있는가? +### 그렇다. 사실 약간 나에게 안좋은 습관이 있는데 어떤 것을 구현하기 전에 세부적인 것에 꽂히는 것이다. 그래서 전체틀이나 구조를 보지 못해서 일을 하다가 틀어지는 경우가 비일비재하다. 그런데 처음부터 구조나 전체틀을 보는 내공이 없으니 조금은 당연해보이지만, 그럼에도 하면서 폭 넓은 범위에 관심을 갖고 조금은 전반적인 흐름을 보려는 노력을 한다. + +# 27장 부진 피하기 +## 1. 현재 정체되어 있는가? 그것을 어떻게 알 수 있는가? +### 지금은 정체되었다는 생각이 들지 않는다. 내가 짠 코드나 내가 설계한 것, 내가 이해한 것에 다 빵꾸가 나는 와중에 정체보다는 계속 잘하고 싶고 그러려고 노력하는데, 신체 나이와 불안감 때문에 휴식도 자주 취해야해서 적절한 밸런스를 잡으려고 노력한다. + +## 2. 마지막으로 배웠던 새로운 것은 무엇인가? +### 요즘은 늘 새로운 것을 배운다. 다만 이 새로운 것이 코드 작성 능력 향상보다는 어떤 새로운 도메인에 대해 알아가는 것에 가깝다. 기능적인 것을 새롭게 배우는 것을 좋아하기 때문에 새로운 도메인을 알아가고, 또 새로운 기술을 접하고 있다. 비록 비즈니스를 위한 광고 추적 기술이지만... 합법적인 선에서 올바른 방향으로 시장을 파악할 수 있는 기술이라 재미난것 같다. + +## 3. 새로운 언어, 새로운 기술을 배웠던 마지막 시점은 언제인가? +### 음 오늘도 광고 추적 기술을 구현하기 위해서 유튜브 영상을 보는데 파이썬으로 구현되어 있어서 파이썬을 잘 모르지만 지피티에 물어가며 꾸역꾸역 구현했다. 원래 다른 언어를 배우는 것을 기피했었는데, 최근에 한스짐머 공연을 보는데 모든 공연자가 하나의 악기가 아니라 바이올린에서 첼로 그리고 성악까지 골고루 다 하는 것을 보고 굉장히 감명을 깊게 받았다. 아마 프로그래밍에 미치고 개발에 미치려면 가리기 보다는 여유가 되면 다 해보면 좋겠다. 그게 시간 제약으로 우선순위를 둬야하는게 오히려 더 안타까운 것일 것 같다는 생각을 하게되었다. + +## 4. 다음에는 어떤 새로운 기술을 배워야 하는가? 어떻게 그것을 배울 것인가? 어떤 책, 어떤 과정, 어떤 온라인 자료를 사용할 것인가? +### 음 사실 새로운 기술을 배우려면 책이나 온라인 교육도 중요하지만, 뭐니 뭐니해도 직접 실습하면서 배우는 것이 좋다고 생각한다. 음 언어는 의도하지 않아도 새로운 언어를 접하게 되므로, 조금은 언어 외적인 기술을 배우고 싶고, 3D 그래픽스 쪽을 생각해보고 있다. + +## 5. 지금 적절한 직업을 가지고 있는가? 즐기고 있는가? 아니면 모든 즐거움 따위는 사라진지 오래인가? 9시부터 5시까지 정시에 일하는가? 아니면 프로젝트의 성공을 위해 열정을 불태우고 있는가? 새로운 도전을 찾아봐야하는가? +### 음, 적절한 직업을 갖고 있다고 생각한다. 사실 프로그래머가 되고 싶은게 어릴적 꿈이었다. 그런데 소프트웨어가 다양한만큼 앱뿐만 아니라 다른 것도 만들어보고 싶다. 즐기고 있는지 아닌지는 즐긴다 쪽에 가깝다. 안그러면 조금 경험 부족인 상태에서 계속 꾸준히 할 수 없었을 것 같다. 프로젝트의 성공을 위해 불을 엄청 뜨겁지는 않지만 조금씩 지피고는 있다. 건강 관리도 중요해서 너무 프로젝트에서 열정을 쏟기 보다는 그냥 전체적으로 나의 삶에 열정을 쏟고 있다. 새로운 도전보다는 지금 하고 있는 것도 이미 새로운 도전인데 잘 해야하는 것들이므로 일단은 일을 벌리기 보다는 현재 하고 있는 것을 더 나은 것이 있는지, 기본은 하고 있는지 이런 부분을 점검하는게 더 중요해 보인다. + +## 6. 마지막으로 승진한때는 언제인가? 마지막으로 임금이 인상된 때는 언제인가? 직책이 진정 의미가 있는가? 현재의 직책이 자신의 능력과 어떤 연관성이 있는가? +### 저번 회사에서 마지막 승진을 했던 것 같고 이직후에는 사실 능력치로 신입사원으로 시작했다. 뭔가 늦은 나이에 직급이 낮은게 이상할까 싶었지만 그래도 나의 실력 대비해서 직책을 갖고 있는게 급여면에서나 숙련도의 맞는 일을 하는 것에 있어서 맞다고 생각했다. 능력 없이 직책이 오르는 것 보다야 능력에 맞는 직책을 갖고 있는게 바람직하다고 생각한다. + +# 28장 윤리적인 프로그래머 +## 1. 스스로를 윤리적인 프로그래머라 생각하는가? 윤리적인 프로그래머와 윤리적인 사람 사이에는 차이가 있는가? +### 음 윤리적인 프로그래머라 생각한다. 윤리적인 프로그래머와 윤리적인 사람 사이에는 차이가 없다고 생각한다. 윤리라는 것은 누군가에게 해를 주지 않으려고 노력하는 것이다. 그리고 서로 더 나은 사회를 만들어가는 것이다. + +## 2. 이번 장에서 다뤘던 내용들에 대해 동의하거나 그렇지 않은 부분이 있는가? 이유는 무엇인가? +### 음 아주 조금은 윤리라는 것이 어떤 부분에서는 생계를 위해 지켜지지 않는 상황들이 있다. 그렇다면 살기 위해서 윤리를 못지키는 경우에도 윤리를 지키다 죽어야할까? 이런 부분은 조금 고민해봐야할 부분인 것 같다. 특히나 어쩔 수 없이 괴롭힘을 많이 당하거나 안좋은 경험을 어쩔 수 없이 많이한 사람들이 윤리를 잘 지키지 못하는게 정말 잘못된 것일까? 개선의 의지가 있으면 그것도 윤리적이라 할 수 있지 않을까? + +## 3. 소프트웨어를 만들 줄 모르는 다른 사람의 희생을 발판으로, 은행가가 놀랄 만큼 큰 돈을 벌게 해주는 소프트웨어를 만드는 것은 윤리적인가? 합법적인 거래 방법과 불법적인 거래 방법은 어떤 차이를 만들어내는가? +### 음 속이는 것인 윤리적으로 문제가 된다. 가령 버튼을 눌렀는데 돈을 빼나간다던지. 애초에 이렇게 소프트웨어를 만드는 것은 사랑이 조금 결여되어 있다. 사실 어릴때는 윤리적인 소프트웨어 의식이 없어서 가상롬으로 게임을 구하거나 음악도 불법으로 받거나 했었다. 그런데 어느 순간부터 음악 스트리밍을 구독해서 듣고, 게임도 결제해서 즐긴다. 음 이 사이에는 분명 차이가 있는데, 가령 게임을 불법 다운로드해서 즐기는 문화로 어쩌면 한국 게임 문화는 성장하지 못한 것이 클 것 같다. 뭔가 창작자가들에게 보상을 부여하여 더 좋은 것을 또 돌려받는 느낌으로 합법적인 거래가 더 낫다고 생각한다. + +## 4. 회사에서 상용 제품에 GPL 코드를 사용하고 있는데, (코드 공개를 보류함으로써) 저작권 조항을 지키지 않고 있다면 어떤 조치를 취해야 하는가? 회사의 코드를 공개해 저작권 조항을 만족시키도록 회사에 요구해야 하는가? 아니면 GPL 코드를 대신할 비공개 소스를 택하도록 요구해야하는가? 만약 제품이 이미 출시되었다면, '내부 고발자'가 되어 저작권 침해를 공개해야 하는가? 업무 보안상 입 다물고 있어야 한다면 어떻게 해야하는가? +### 말해도 안들으면 다른 회사로 가는게 바람직하다. 내부고발이던 뭐던 말로 해서 안들었으니 할 이유가 전혀 없어보인다. + +## 5. 다른 프로그래머의 비윤리적인 행동을 눈치챘을 때는 어떻게 해야하는가? 만약 그 프로그래머가 동료, 친구, 레퍼런스를 요청한 사람 혹은 만나본 적은 있지만 함께 일해본적은 없는 코더일 경우, 대답은 어떻게 달라질 수 있는가? +### 음 ... 코더는 아니지만 이전 직장에 개발자들은 사실 대부분 비윤리적이었다. 검증 스펙을 못맞춰서 수치를 다르게 기입하거나 약간 협의로 풀어가거나, 아주 조금은 비윤리적인 행동을 하게되는 것은 그 사람의 게으름일 수도 있지만, 아주 어려운 일을 해야할 때도 비윤리적으로 풀어가려는 시도가 생긴다. 그래서 꼭 그 사람만 탓할게 아니라 주어진 업무가 부당하거나 현실적으로 불가능한 뭔가를 하고 있지는 않은지 체크해보면 좋고, 같은 일을 윤리적으로 하려면 어떻게 할지 생각해보면 좋겠다. + +## 6. 소프트웨어 특허는 윤리적인 프로그래밍 세계에 어떤 식으로 적합한가? +### 특허는 잘 모르지만, 아이디어를 보호 받는 것은 중요하다고 생각한다. 그런데 대부분 아이디어 도용으로 특허를 내거나 좋은 아이디어를 훔쳐가는 상황이 더 많은 것 같다. + +## 7. 당신의 소프트웨어 개발에 대한 열정은 윤리적 이슈를 고려하는 정도와 관련이 있는가? 열정적인 프로그래머는 직업으로서의 코더보다 더 윤리적으로 행동하는가? +### 관련이 있다. 사실 윤리적이기 때문에 윤리적인 일을 하지 않을 때 마음의 고통을 많이 받는 편인데, 이걸 이야기를 해도 나아지지 않으면 시들해져서 퇴사를 하거나 다른 곳으로 옮겨가는 것 같다. 그런데 아직 정말로 100% 윤리를 지키려고 노력하는 곳은 잘 만나보지 못했지만, 적어도 계속 윤리적인것을 노력하는 곳으로 옮겨가는 것은 맞는 것 같다. + + +# 29장 언어에 대한 사랑 +## 1. 현재 사용하는 언어에서 깔끔하지 못한 부분은 무엇인가? 강점과 약점에 대해 나열해보라. +### Swift를 사용하고 있고 많은 언어는 접해보지 못했지만 깔끔한 언어에 속한다고 생각한다. 강점이라면 옵셔널을 통한 안전함과... 프로토콜, 일부 함수형을 설계할 수 있다. 또 메모리도 스스로 관리를 하기 때문에 C처럼 관리해주지 않아서 좋다. 동시성도 최근에 간편하게 사용할 수 있는 문법이 도입되었다. 약점이라면 버그가 종종 보인다는 것이다. 동시성 부분도 디버깅할 때 조금 어려운 느낌이 든다. 그런데 이는 다른 언어도 비슷하지 않은가? + +## 2. 어떤 다른 언어와 도구를 사용하는가? 스스럼없이 배우기 위해 얼마나 몰입하였는가? +### 자료구조를 일부러 C언어를 통해 배우고 있다. 이유는 어린 시절 제일 처음 접한 언어가 C였는데 당시에는 포인터가 어려워 접었었다. 그런데 어른이 되고 어려워서 접은게 계속 후회가 되었다. 요즘은 포인터를 다시 보는데, 어렵긴 어렵다 그런데 이게 익숙하지 않은 것에서 오는 어려움이지 개념이나 사용하는 것 자체는 어려워보이지 않다. 조금은 포인터가 어려웠을 때 조금 더 어려움을 맞서는 자세를 어렸을 때부터 지녔으면 좋았을텐데라고 생각하는데, 이제라도 어려운 것을 조금 대하는 마인드를 잘 지녀야겠다. + +## 3. 결혼한 커플은 시간이 지날수록 서로 닮아간다고 한다. 자신의 언어에 맞춰질 만큼 적응했는가? 더 나아졌는가 아니면 더 나빠졌는가? +### 음... 다른 언어를 사용해보면 지금 쓰는 Swift가 참 편하다고 느껴진다. 그런데 파이썬도 최근에 접해보니 간단하게 HTTP 메서드를 쥬피터를 통해 돌려볼 수 있어서 엄청 유연하다는 느낌을 받았다. 언어마다 장단점이 있겠는데, 아직은 Swift가 편하다. + +## 4. 프로그래머가 언어 몰입에 실패했을 때, 어떤 언어가 가장 빠르게 방치되고 있다는 징조를 보이는가?(어떤 언어에서는 간접 포인터가 너무 많이 나타나는 것이 그 징조이다. 특정 객체를 찾아갈 때 너무나 많은 간접 포인터를 따라가야 해서 매우 난처한 느낌을 받게 된다. 이는 마치 중요한 물건을 삼켜버린 반려견의 입속을 들여다보는 것과 같다. 아무리 노력해봤자 목표에 도달할 수 없다.) +### 이게 무슨 말인지 잘 모르겠다. 그냥 사용하다보면 잘 사용하지 못하는 부분을 말하는 것인가? 음? 나는 동시성을 조금 어려워서 잘 못다루고 있다. + +# 30장 프로그래머의 자세 +## 1. 작업 공간이 얼마나 제대로 갖추어져 있는가? 편안한가? 아니면 일하면서 긴장을 느끼는가? +### 작업 공간은 팀장님과 마주보는 자리이다! + +## 2. 작업 공간을 어떻게 개선할 수 있는가? 예를 들어 모니터가 편안한 높이에 있는가? 의자를 조절할 수 있어 타자를 칠 때 손목이 올바르게 놓이는가? +### 다른건 모르겠지만 듀얼 모니터를 사용하는데 고개를 자주 돌려야해서 불편하다. 요즘엔 그래서 조금 앞을 보려고 노력한다. + +## 3. 하루에 얼마나 일하는가? 일을 끝낼려면 시간이 오래 걸리지 않는가? 이로 인해 몸에 어떤 영향을 주었는가? +### 배가 나오는 것 같다. + +## 4. 업무 중에 적절한 수분을 섭취하는가? +### 아침에 점심에 오후에 물을 꾸준히 마시는 편이다. + +# 31장 더 열심히 보다는 '더 현명하게' +## 1. 업무에 적응하기 적합한 수준의 테스트를 어떻게 결정하는가? 경험에 의존하는가 아니면 지침에 의존하는가? 지난달의 작업을 되돌아보라. 실제로 적절한 방법으로 테스트하였는가? +### 적절한 방법으로 테스트를 했다기 보다는... 설계적으로 검증을 완료된 후에 코드를 구현했는데 정상 동작해서 추가 테스트를 하지 않았다. 아직은 어떤 단계에 테스트를 도입하는게 좋을지 잘 모르겠지만, 뭔가 변경 여지가 있는데 입출력을 예측할 수 있고 사용 빈도가 높은 기능이라면 도입해볼 여지가 있을 것 같다. +## 2. 작업에 대해 우선순위를 할당하는 데 능숙한가? 어떻게 개선할 수 있는가? +### 무언가를 하기 전에 우선 순위를 정하는 것은 매우 중요하다고 생각한다. 약간 나의 안좋은 버릇은 어떤 작업에 대해 전체적인 큰 그림을 그리는데 미숙해서 무언가에 꽂히면 거기부터 깊게 보는데, 사실 시작점이 없는 것 보다는 좋지만, 이런 방식으로 하다보면 다른 사각지대를 잘 못보게 되는 경우가 많다. 그래서 되도록 책에서 목차를 보듯 어떤 기능도 목차를 먼저 정리하려고 노력한다. 그리고 목차 중에서 우선순위를 나누려고 한다. 약간 전체를 다 봐야 그 다음에 목차를 뽑아내는 것 아닐까?란 생각이 지배적인데, 요즘은 대강 분량 파악을 먼저해서 작업 완수 시간을 예측 가능하게 하려고 노력한다. +## 3. 빠르게 문제를 찾고 있다고 어떻게 확신하는가? 피할 수 있음에도 피하지 않았던 오류나 재작업이 얼마나 되는가? +### 사실 빠르게 문제를 찾고 있다는 확신은 잘 모르겠다. 문제 속에 파묻힌 것도 아니지만... 아직 문제를 직면해서 맞닿아본적이 없는 일을 하고 있어서 그럴지도 모른다. 다만 피할 수 있음에도 피하지 않았던 작업들은 리팩토링과 유지보수라고 생각한다. 어떤 한 소스코드 파일이 1000줄이 되어가면 정말 가독성이 떨어지는데, 되도록이면 기능을 분리시켜서 관리하려는 노력을 피하지 않는 것 같다. +## 4. '여기서 만든게 아니야(NIH)' 증후군에 고통 받는가? 다른 사람의 코드가 하찮아 보이는가? 더 낫게 만들 수 있을 것 같은가? 다른 사람과 자신의 작업을 잘 섞을 수 있는가? +### 엄청 잘할 수 있다기 보다는 근거와 더 나은 것에 대한 이유를 설명하면 할 수 있지 않을까? 아직은 개선이나 수정보다는 주어진 코드를 잘 분석하는게 먼저라고 생각한다. 가끔 이상한 코드를 분석하면 내 실력도 그렇게 될까 걱정도 되지만, 이런 걱정을 하고 있으니 더 나은 코드로 개선도 가능하리라 믿는다. +## 5. 작업의 품질보다 작업 시간을 더 중요하게 여기는 문화에서 일하고 있다면, 게을러 보이지 않으면서도 '현명하게 일하기'를 어떻게 수행할 수 있을까? +### 음 중간 보고를 잘하는 것부터 시작인 것 같다. 중간 보고보다는 작업 완수 이후에 보고를 하는 편이었는데, 이럴 경우 중간에 문제가 생기면, 팀 내에서 일을 할 때 시간적인 예측이 불가능한 상황이 많이 발생한다. 그래서 조금 완벽하지 않은 보고라도 나는 무엇을 하고 어디서 시간 소요를 많이했고 비록 이게 본인을 멍청하게 보이게 할지라도 중간 중간 잦은 보고를 하면 협업 측면에서는 더 잘 돌아간다. +# 32장 끝나야 끝나는 것 +## 1. 현재 작업이 '완료'될 때를 알고 있는가? '완료'상태는 어떻게 보이는가? +### 사실 이 챕터를 읽으면서 완료지점을 내가 잘 설정하지 못한다는 것을 알았다. 계획을 할때 해야할 것을 정의하고 작업을 하지만 완벽한 상태에 도달하기 위해서 조금 작업 속도가 느리다는 생각을 했다. 단순히 완벽이 아닌 완료를 위해서 심플하게 일하는게 어떻게 보면 더 내공을 쌓아야 할 수 있는 일 아닐까란 생각도 드는데, 완료의 기준을 정하는 것은 일단은 '원하는 동작 구현(단 에러나 탄탄한 설계 제외)','시점','판단을 내릴 수 있는 근거 확보','문서화'이렇게 생각을 해본다. +## 2. 하나의 목표 혹은 일련의 간단한 목표로 향하도록 현재의 작업을 분해했는가? +### 매일 연마하는 부분이다. 그런데 이 챕터를 읽고보니 조금 기준을 잘 정해볼 수 있을 것 같다. 아주 조금은 스스로 시간 파악이 가능하면서도 최소 단위로 기능을 분해하고 조금은 그 최소 단위가 다른 어떤 일들과 연관성은 적게 작성하고 우선순위나 순서를 정해보면 좋을 것 같다. 사실 태스크를 잘 나누는게 어렵다. +## 3. 달성, 측정 단위로 작업을 분해하는가? +### 아닌 것 같다. 약간 CRUD 관점으로 분해를 하고는 하는데, 달성, 측정 단위로 작업을 분해해본다는 생각도 시도해볼만한 가치가 있는 것 같다. +## 4. 현재의 개발 프로세스는 해체 및 평가 작업 방법을 어떻게 결정하는가? 그것으로 충분한가? +### 이 부분은 아직 잘 답변할 수 없을 것 같다. 평가를 하는 방법이 잘 떠오르질 않는다. 아주 쳬계화된 프로세스가 있다고 생각되지 않는 것 같다. +## 5. 팀원에 의한 작업 추정은 그 정확도에 얼마나 차이가 있는가? 이유가 무엇이라고 생각하는가? 가장 정확하게 추정한 팀원은 어떤 요소에 힘입어 그렇게 했는가? +### 음 결과물 기준으로 완성되는 시점을 명확히 예상했던 것 같다. 약간은 경험이 차지하는 부분이 중요해보이고, 구조적인 부분이나 중요 포인트를 그동안 해온 업무에서 패턴을 잘 뽑아내서 잘 추려내는 느낌이 든다. +# 33장 교훈 얻기 +## 1. 팀원들과 어떻게 효율적으로 일하고 있는가? +### 최근에는 선임이 작성한 시퀀스 다이어그램을 통해 코드리뷰를 진행했다. 서로 이야기를 나누면서 이해도를 높혔고 발생할 수 있는 버그 요소도 찾아내서 뿌듯했다. + +## 2. 도움을 요청하거나 문제에 대해 논의할 수 있는가? +### 할 수 있다. 조금은 잘 모르는 부분에 대해 혼자서 알아내려는 경향이 있는데, 어떤 애매한 부분은 알아보는 중이라고 하고 미리 도움을 청하면 더 빨리 정보를 얻어낼 수 있을까 싶다. + +## 3. 혼자 작업하다가 실패를 맛보는 경우가 얼마나 자주 있는가? 가장 최근에 있었던 실패는 언제였는가? 실패를 알아차리기까지 얼마나 걸렸는가? +### 음 ... 최근에는 리서치 일을 하는데 혼자서 특정 주제에 빠져서 정리를 했는데, 알고 보니 분석한 내용이 잘못된 사례가 있었다. 이 실패의 원인은 리서치를 지피티와 문서를 함꼐 사용하는데 지피티 의존도가 높아서 문서에서는 근거를 확인하였음에도 정확하게 확인하지 않고 넘어간데서 기인했다. 그래서 리서치는 지피티로 힌트는 얻되 문서 위주로 100% 검토 하는 방향으로 설정했다. + +## 4. 다른 사람에게 책임감을 가지는가? 아니라면 누구에게 책임감을 가질 수 있겠는가? +### 보통은 다른 사람에게 책임감?을 가진다기보다는 자신이 해낼 수 있도록 책임감을 갖으려는 편이다. 그런데 약간 스스로 해내려고 책임감을 갖는게 무조건 혼자서 일하는 것은 아닌 것 같다. + +## 5. 작업 과정을 공유하고 문제를 논의하는 것이 다른 팀원들에게 나약한 프로그래머라는 인상을 줄 것이라 생각하는가? +### 사실 대화하면서 하는 것을 선호하지만, 과정을 공유하고 문제를 논의하는 것을 불필요한 요소라 생각하는 사람도 있고 결과만 보고 받고 싶어하는 사람들이 있다. 그래서 나약하고 강인하고를 떠나서 결과만을 선호하는 대화 방식은 조금 문제가 있어 보인다. +