# 함께 자라기
# 1. 자라기
# 연차는 중요한 요소가 아니다.
소프트웨어 기술자의 등급은 학력과 연차로 고려되는 경우가 많지만 사실상 경험이 가장 중요한 요소이다. 그 사람의 실력에 대해서는 연차로부터 다음과 같은 사항들만 결정할 수 있다.
- 연차로는 이 사람이 초급인지 아닌지 정도만 기대할 수 있다.
- 초급이 아닌 사람들에 대해서는 연차가 오히려 혼동을 불러일으키는 잘못된 정보로 작용할 수 있다.
- 연차로 채용 여부나 임금 수준을 결정하는 것은 편의적이고 관료주의적이며 조직에 손해를 줄 수 있다.
# 연차보다는 경험이 중요하다
톰 드마르코와 티모시 리스터의 연구에서는 다음과 같은 사실이 밝혀졌다.
최고의 개발자는 최악의 개발자보다 10배 정도의 능력차이를 보였다. 경력이 10년인 개발자는 2년인 개발자보다 뛰어나지 않았다. 즉, 경력과 생산성은 아무런 상관관계가 없었다. 다만 언어를 접한 경험이 6개월 미만인 경우에는 전반적으로 나머지 개발자들보다 성적이 저조했다.
# 1만 시간 법칙의 진실
몇 년 전에 1만 시간의 법칙이 유행하였다. 여기서 1만 시간은 단순 연차가 아니라 의도적 수련 시간을 의미한다. 의도적 수련이란 자신의 기량 향상을 목적으로 반복적으로 하는 것이다. 단순 노동이 아니라 자신의 약점을 개선하려고 노력하는 것만이 의도적 수련이다. 업무를 하면서 의도적 수련을 같이 하려면 업무를 하면서 빠르게 피드백받고 교정하면서 성장하는 "애자일 철학"이 필요하다.
# 달인이 되는 비결
꾸준한 반복으로 달인이 되려면 적어도
- 실력을 개선하려는 동기가 있어야 하고
- 구체적인 피드백을 적절한 시기에 받아야 한다.
# 수십년 동안 전문가가 안 되는 비결
전문성 형성에서 타당성과 피드백의 중요성 -> 타당성과 피드백을 높이기.
# 당신이 제자리걸음인 이유
의도적 수련의 필수조건, 적절한 난이도
자신이 업무 시간 중에 불안함이나 지루함을 느끼는 때가 대부분이라면, 실력이 도무지 늘지 않는 환경에 있다는 것
그렇다면 제자리걸음에서 벗어나기
- 지루함을 느끼는 경우: a1 실력 낮추기
- 지루함을 느끼는 경우: a2 난이도 높이기
- 불안함을 느끼는 경우: b2 실력 높이기
- 불안함을 느끼는 경우: b1 난이도 낮추기
# 프로그래밍 언어 배우기의 달인
- 튜토리얼을 읽을 때 뭘 만들지 생각하고 읽는다
- 공부할 때 표준 라이브러리 소스코드를 읽는다
- 공부 중 다른 사람의 코드에 내가 필요한 기능을 추가한다
- 전문성을 효과적으로 뽑아내는 전문가 되기
# 실수는 예방하는 것이 아니라 관리하는 것이다
실수 문화에는 크게 2가지가 있다. 사실 이미 결과가 난 실수에 대해서 학습하고, 계획을 세우는 2차적 예방도 있다.
실수 예뱡
- 행동에서 실수로 가는 경로를 차단하는 것
- 실수를 저지르지 말라고 요구하는 것인데 거의 불가능하다.
- 실제로 전문가도 1시간에 평균 3~5개의 실수를 발생시킨다. 실수 관리
- 실수를 조기에 발견하고 빠른 조치를 취하는 것.
- 실수는 어떻게든 할 수 밖에 없다.
- 대신 그 실수가 나쁜 결고로 이어지기 전에 일찍 발견하고 고치는 것
# 실수 관리 문화가 중유한 이유
실수 예방 문화에서는 실수를 한 사람을 비난하고, 처벌하게 된다. 그래서 실수를 감추고 문제가 생겼을 때 협력하지 못한다. 그러면서 실수에서 배우지 못하는 것이다. 반대로 실수 관리 문화에서는 실수가 나쁜 결과를 내기 전에 빨리 회복하도록 돕고, 실수를 공개하고, 거기에 대해 얘기하면서 배우는 분위기가 생긴다. 실수를 하는 것은 불가피하고, 오히려 실수가 없으면 학습할 수 없다.
# 2. 함께
# 협력을 통한 추상화
지금까지는 전문 프로그래머 연구에서 소프트 스킬(협력과 커뮤니케이션 능력 등)이 관심을 받지 못했다. 하지만 뛰어난 프로그래머는 보통 실력의 프로그래머에 비해 커뮤니케이션 및 협업 능력이 뛰어나다는 것이 밝혀졌다. 또한 단순 텍스트나 통화만으로 하는 협력보다 화이트보드나 종이 등으로 시각화된 협력이 훨씬 낫다는 연구들이 있었다. 대표적으로 짝 프로그래밍은 협업에 좋은 방법이다.
# 신뢰를 깎는 공유인가 신뢰를 쌓는 공유인가
# 신뢰의 중요성
신뢰 가치는 최근 많은 주목을 받고 있는데, 신뢰 자산이 높은 조직은 커뮤니케이션 효율이나 생산성이 높았다. 여기서 신뢰 자산이 높다는 것은 조직원들 간에 높은 수준의 신뢰가 기반이 되어 있다는 것이며, 이는 증감할 수 있다. 신뢰를 쌓는데 널리 사용되는 한 가지 방법은 투명성과 공유 및 인터랙션이다. 자신의 작업물을 투명하게 서로 공유하고 피드백을 주고 받으며 인터랙션하는 것이다. 이를 소통 신뢰라고 하는데, 상대가 자신의 생각을 나에게 솔직히 말해줄 것이라는 신뢰이다.
# 복수 공유
공유 할 때 중요한 것은 하나 공유는 안하느니만 못하다는 것이다. 여러 대안을 만들고, 그것을 모두 공유해야 신뢰가 유의미하게 높아진다. 왜냐하면 하나 공유는 그 자체에 대한 비판이 나에 대한 공격이 된다. 반면에 복수 공유는 나에게 또 다른 대안이 있으니 나에 대한 공격이 아니다. 또한 피드백을 주는 사람도 여러 개를 상대적으로 피드백할 수 있어 편하다. 즉, 복수 공유는 신뢰도와 성과가 더 좋아진다.
# 설득에 있어 관계의 중요성
설득하기 위해서는 객관성이 필요한데, 이 객관성 자체가 매우 주관적인 개념이다. 내가 엄청난 데이터를 모아도 결국 판단은 사람이 하므로, 그 사람의 맘에 드는지가 매우 중요하다. 즉, “누구의 객관"인지가 중요한 것이다. 그러므로 누군가를 설득할 때 그 사람의 마음에 들지 않으면 어떠한 객관적 자료도 의미가 없다. 특히 그 자료에 “당신의 생각이 틀렸다"가 암시되어 있다면 더욱 어려워진다.
누군가는 그 사람이 잘못되었으며 감정적이지 않은 논리적인 판단을 해야 한다고 반박할 수 있다. 하지만 의사결정에 감정과 직관은 매우 큰 역할을 하며, 이것이 배제되면 의사결정을 제대로 할 수 없다. 그러므로 감정을 배제하는 것은 불가능하다고 생각하는 것이 맞다. 그러므로 남을 설득하려면 논리성과 객관성보다는 상대를 자주 만나 신뢰를 쌓고, "그 사람이 무엇을 중요하게 여기는지" 혹은 "어떤 설명 방식을 선호하는지" 이해해야 한다. 설득의 출발은 자료가 아니라 사람에서 시작하므로 설득에 성공하려면 먼저 그 사람을 이해해보도록 하자.
# 이것도 모르세요?
누군가 물어보았을 때는 용기를 내어 질문한 것이다. 그런데 “이것도 모르세요?” 처럼 좋지 못한 피드백이 왔다면 앞으로 더 이상 질문할 가능성은 매우 낮다. 십중팔구 문제가 더 커지는 상황을 혼자 끌어안고 있을 테고, 결국 팀 전체에 타격을 주는 상황이 올 수 있다. 그러므로 누군가 물어보면 공감하면서 들어주고, 상대가 어떤 멘탈 모델 및 상황인지 파악해야 한다.
그러면 질문자가 상황을 이해하고 있는지, 어떠한 시도를 했는지 등을 파악하여 질문자의 머릿 속 지도와 사고 흐름을 엿볼 수 있다. 그러면 우리는 질문자가 모르는 핵심적인 부분만 설명해주면서 더 정확하고 효과적인 제안을 해줄 수 있다.
공감과 상황 파악에 더해 다음 행동 유도까지 한다면 금상첨화이다. 그러면 질문자는 자기주도적으로 공부하고, 책임감을 갖을 뿐 아니라 관계 역시 더욱 좋아질 것이다. 또한 목표를 달성할 확률과 이후의 만족도도 모두 높다.
# 하향식 접근의 함정
탑다운은 시간의 흐름으로 보아 추상적인 숲에서 구체적인 나무로 내려오는 접근법을 말한다. 탑다운은 깔끔해보이므로 전문가일수록 탑다운으로 사고하고 문제를 해결할 것이라고 생각한다.
문제는 잘 정의된 문제와 잘 정의되지 않은 문제로 나뉘어진다. 잘 정의된 문제는 “6의 약수는 무엇인가"와 같이 명확하지만 잘 정의되지 않은 문제는 “아름다운 그림을 그리시오"와 같이 불분명하다. 전문가는 자신이 자주 접하지 않았던 문제, 어려운 문제 혹은 잘 정의되지 않은 문제를 만나면 탑다운과 바텀업을 섞어 쓴다. 뛰어난 전문가일수록 그러하며, 번뜩이며 통찰력이 켜지는 순간은 방식이 변하는 순간에서 왔다. 비전문가는 자신이 세운 계획에 집착하는 반면에 전문가는 자신의 계획을 계속해서 수정하였다.