Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Chapter 2: Getting to Conscious Competence #43

Merged
merged 1 commit into from
Nov 4, 2024
Merged
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
213 changes: 213 additions & 0 deletions The_Missing_Readme/2장_역량을_높이는_의식적_노력.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,213 @@
# 2장. 역량을 높이는 의식적 노력

- 능숙함(competence)를 4가지 단계로 나눠 정의할 수 있다.

- 무의식적 능력부족

- 의식적 능력부족

- 의식적 능숙

- 무의식적 능숙

## 실전에 앞서 익혀야 할 자기주도 학습 방안

- 여기에 나열된 모든 방법을 동시에 시도하면 번아웃에 빠질 수 있다.

- 지속적인 성장도 중요하지만 깨어 있는 내내 일만 하는 것은 건강을 해치므로 개인 시간을 반드시 확보하자.

- 현재 자신이 처한 상황과 타고난 성향에 따라 방법을 선택하자.

### 본격적인 학습을 위한 몸풀기

- 입사 후 처음 몇 달간은 일단 상황이 어떻게 돌아가는지 파악하는 데 집중하자.

- 초반의 학습 과정은 상당히 가치있는 투자다.

### 직접 부딪혀보며 배우자

- 문서를 읽어 배울 수 있는 것보다는 실전을 통해 배울 수 있는 것이 훨씬 많다.

- 여러분이 맡은 업무가 어떤 영향을 미칠지 최대한 이해해서 적절한 주의를 기울이자.

- 실수를 했을 때 스스로를 너무 책망하지 말자.

- 실수로부터 배운 것이 있다면 기록해두고 계속 정진해 나아가자.

### 코드 동작을 이해하기 위해 다양한 실험을 해보자

- 여러 가지 시도를 해보며 코드가 어떻게 동작하는지 알아두자.

- 디버거가 강력한 기능을 제공하지만, 가끔은 로그나 print문을 적재적소에 넣어두는 것이 코드의 동작을 이해하는 가장 쉬운 방법이 되기도 한다.

- 프로그램이 처음 실행되는 시점에 내가 현재 수정 중인 코드가 실행된다는 것을 출력하는 방법 또한 유용할 수 있다.

### 문서 읽는 습관은 몸에 배야 한다

- 매주 일정 시간을 할애해 자료를 읽는 습관을 들이자.

- 팀 문서와 설계 문서를 시작으로 여러 부분이 어떻게 결합되어 동작하는지 대략적으로 이해할 수 있다.

- 다음으로 코드를 읽는데 처음부터 끝까지 읽는 것이 아닌, IDE를 이용해 코드의 이곳 저곳을 훑어보자.

- 주요 기능에 대해서는 코드의 흐름과 상태를 다이어그램으로 그려보자.

- 코드의 데이터 구조와 알고리즘, 예외 상황을 어떻게 처리하는지, 팀의 코딩 스타일과 용어를 잘 살펴두자.

- 팀에 할당된 티켓을 읽어보면 누가 어떤 일을 하는지, 앞으로 어떤 일을 하게 될 지도 알 수 있다.

- 오래된 티켓을 읽을 때는 해당 티켓이 다음 세 가지 중 어느 부류에 속하는지 생각해보자.

- 더 이상 필요하지 않은 사항

- 해결하면 좋지만 그다지 중요하지는 않은 사항

- 지금 당장 해결하기에는 업무의 규모가 너무 큰 사항

- 도서나 논문은 특정 주제를 깊이 있게 이해하는데 도움이 되고, 온라인 자료(뉴스레터 등)은 최신 트렌드를 파악하는데 유용하다.

### 발표 영상을 찾아서 보자

- 훌륭한 발표를 통해서도 많은 것을 배울 수 있다.

### 때로는 밋업과 컨퍼런스에 참여하자

- 네트워크를 구축하고 새로운 아이디어를 접할 수 있는 좋은 방법이다.

### 시니어 엔지니어의 업무를 체험하고 협업하자

- 다른 사람이 업무를 수행하는 동안 그림자처럼 따라 다니면서 노트에 기록하고 질문도 하는 등 적극적으로 참여한다.

- 시니어 엔지니어를 따라다니는 것은 새로운 스킬을 배울 수 있는 좋은 방법이다.

- 최대의 효과를 내려면 상대를 따라다니는 일정 전후에 계획과 회고 시간을 마련해두는 것이 좋다.

- 짝 프로그래밍(pair programming)은 익숙해지는 데 시간은 조금 걸리지만 상대에게서 뭔가를 배울 수 있는 가장 빠른 방법 중 하나다.

- 관찰한 것은 모두 기록하고 공유하자.

### 개인 프로젝트 활동에서도 배움을 얻을 수 있다.

- 사이드 프로젝트(side project)를 통해 새로운 기술을 더 빠르게 배울 수 있다.

- 오픈소스 프로젝트에 참여하는 것은 새로운 것을 배우고 직업적인 인맥을 쌓는 데도 좋은 방법이다.

- 배워야하는 소재라는 근거로 프로젝트를 선택하는 것이 아니라 해결하고 싶은 문제를 찾아내고, 자신이 배우고 싶은 도구를 이용해 그 문제를 해결해야 한다.

- 목표가 있어야 더 오래 몰두하고 더 많이 배울 수 있는 본질적인 동기가 스스로에게 부여된다.

- 다만 항시 '본업'에 충실해야 한다.

## 제대로 질문하자

### 스스로 문제를 해결해보자.

- 동료가 답을 알더라도 스스로 답을 찾는 노력하는 과정에서 더 많은 것을 배우게 된다.

- 답을 찾지 못하더라도 직접 찾아본 내용을 토대로 도움을 요청할 수 있다.

- 무조건 인터넷만 뒤지는 방법은 옳지 않다.

- 궁금한 점이 코드에 대한 것이라면 문제를 입증하는 단위 테스트로 바꿔보자.

- 어디를 살펴봤는지, 어떤 방법을 왜 시도했는지, 결과는 어땠는지, 그로부터 배운 것은 무엇인지 모조리 기록해두자.

### 제한 시간을 정하자

- 스스로 시도해보기 전에 제한 시간을 정해두면 학습 효과도 높아질 뿐만 아니라 부적합한 결론이 도출되는 상황을 미연에 방지할 수 있다.

- 제한 시간을 다 썼음에도 아직 답을 찾지 못했다면 도움을 청하자.

- 제한 시간을 늘리는 것은 스스로의 노력이 제대로 진척을 이룰 경우만 허용하자.

- 제한 시간 내에 멈추는 것도 훈련과 연습이 필요하다.

### 자신이 시도한 방법을 공유하자

- 질문을 할 때는 기록해둔 내용을 그대로 전달하는 것이 아니라 자신이 이미 파악한 내용을 설명해야 한다.

### 동료를 방해하지 말자

- 정말로 심각한 이슈가 아니라면 절대로 사람들을 방해하지 말자.

- 회사에서 '방해 금지'에 대해 어떤 식으로 판단하는지 미리 알아두자.

- 비동기 방식으로 소통할 수 있는 방법을 찾자.

### 비동기식 멀티캐스팅 의사소통을 시도하자

- 질문은 여러 사람(멀티캐스트)이 각자의 상황에 따라(비동기식) 응답할 수 있는 곳에 올리자.

- 모두가 볼 수 있는 곳에 질문하면 문제가 해결됐다는 것도 모두가 알 수 있으면서 나중에 참고 자료로 쓰일 수 있다.

- 특정인에게 답을 듣고 싶다면 공개 게시판에 질문을 올리고 그 특정인의 이름을 태그해서 언급하면 된다.

### 동기식 요청은 한 번에 보내자

- 긴급하지 않은 질문에 대해서는 기술 리드나 팀장과 함께 사안을 논의할 수 있는 별도의 시간을 마련하자.

- 질문을 미리 적어둬서 회의 시간에 활용할 수 있어야 한다.

- 회의 전까지 가능한 대로 필요한 조사를 해두는 것도 좋다.

- 기억에만 의존해서는 안 되며, 준비 없이 회의에 참석하는 일도 없어야 한다.

- 당장 질문할 거리가 없다면 예약된 회의는 취소하자.

## 성장의 장애물을 극복하자

### 가면 증후군

- 자기 스스로에 대한 불신은 누구나에게 있는 보편적인 현상이라는 점을 우선 염두해두자.

- 여러분이 뭔가를 달성했다면 그건 실제로 여러분이 그 일을 잘 해냈기 때문이지, 그저 운이 좋았기 때문이 아니다.

- 칭찬과 성과를 애써 외면하지 말고 아무리 작은 일이라도 기록해두자.

- 부정적인 생각은 재구성하는 연습을 하자.

- 이루고 싶은 일에 대한 계획을 세우고 목표를 이뤘다면 주변에 알리자.

- 평소 존경하는 사람에게 여러분이 잘 하고 있는지를 알려달라고 부탁하자.

### 더닝 크루거 효과

- 의식적으로 호기심을 계발하는 것을 시작으로 자신이 틀릴 수 있음을 인정하자.

- 특히 동의하기 어려운 설계 방식에 대해서는 적극적으로 논의하자.

## 개발자의 필수 체크리스트

### 이것만은 지키자

- 코드를 이용해 자주 실험하자.

- 설계 문서와 다른 사람이 만든 코드를 읽자.

- 잇업, 온라인 커뮤니티, 관심 그룹, 멘토십 프로그램에 참여하자.

- 논문과 블로그를 읽자.

- 멀티캐스트/비동기식으로 의사소통하자.

- 인터뷰나 면접, 긴급대응 교대 업무를 따라 다녀보자.

### 이것만은 피하자

- 아무 생각없이 코드만 찍어내서는 안된다.

- 위험과 실패를 두려워하지 말자.

- 너무 잦은 컨퍼런스 참석은 금물이다.

- 질문하기를 두려워하지 말자.

## 레벨업을 위한 읽을거리

- 프로그래머의 길, 멘토에게 묻다

- 나는 왜 도와달라는 말을 못할까: 제대로 질문하는 방법에 대해 알 수 있다.

- 익스트림 프로그래밍: 짝 프로그래밍에 대한 내용을 다룬다.

- 자존감은 어떻게 시작되는가: 가면 증후군, 더닝 크루거 효과에 대해 다뤘다.