1. 전문가가 되는 법
전문가는 연차와 일방적으로 비례하지 않음
- 연구 결과 연차와 실력은 비례하지 않음.
- 갓 졸업한 사람과 2년 차 프로그래머를 비교하면 2년 차가 실력이 더 높을 확률이 높음.
- 하지만 5년 차와 10년 차의 실력은 크게 차이가 없음.
실력을 결정짓는 것은 수련
- 연차가 높아질수록 성과가 높아지진 않으며, 각자가 얼마나 공부하고 수련하는지가 실력과 직접적인 관계가 가장 높음.
의도적 수련
- 연차와 성과가 비례하지 않는 이유는 양치를 평생 한다고 양치 실력이 좋아지지 않는 것과 같은 맥락.
- 단순히 작업을 반복하는 것이 아니라 '자신의 기량을 향상시킬 목적으로 반복적으로 하는 수련', 즉 "의도적 수련"을 해야 함.
- 양치도 염료를 치아에 묻혀 잘 닦이는 부분과 닦이지 않는 부분을 검토하며 개선하는 식의 연습을 한다면 전문가가 될 수 있음.
의도적 수련 하는 법
- 애자일 철학 중 피드백을 짧은 주기로 얻는 것, 실수를 교정할 기회가 있는 것, 이 두 가지로 가능함.
- 경험 사례: 필리핀에서 프리다이빙을 할 때 스스로 잘한다고 생각했으나, 한국에 와서 영상을 보니 자세가 엉망이었음. 시도할 때마다 영상을 보고 피드백을 받아 다시 시도했다면 훨씬 빠르게 실력을 쌓았을 것임.
- 결론: 내가 하는 일에 대한 피드백을 짧은 주기로 받고, 이를 지속적으로 교정하여 의도적 수련을 수행해야 함.
2. 자기 계발의 복리 효과
자기 계발은 복리로 작용함
- 자기 계발을 통해 더 효율적인 내가 되면, 그 효율성을 바탕으로 더더욱 효율적인 내가 될 수 있음.
- 업무를 효율적으로 더 빠르게 처리하게 되면 1년, 2년, 3년 차가 지날수록 더 빠르게 많은 일을 처리하며 더 많은 성장을 이룸.
- 복리는 시간이 지날수록 가치가 커지므로, 주식 투자처럼 자기 계발도 하루라도 먼저 시작하면 복리 효과가 더욱 커짐.
복리의 효과를 키우는 방법 (A/B/C 작업)
- 작업의 종류 3가지 가정:
- A: 원래 해야 하는 작업 (더하기 작업)
- B: A 작업을 개선하는 것 (곱하기 작업/복리)
- C: B 작업을 개선하는 것 (곱하기 작업/복리)
- A 작업은 응당 해야 하는 것이고, B/C 작업을 얼마나 잘하느냐에 따라 효율적인 사람인지 결정됨. B/C를 통해 A를 최소화하거나 빠르게 처리 가능.
- 예시:
- A: 장애 발생 시 야간 대응.
- B/C: 장애 예방을 위한 테스트 코드 작성, 자동 트리거 서버 구축, 알람 시스템 구축, 오토 스케일링 구축 등을 통해 A 작업 최소화.
B/C 복리를 더 효율적으로 사용하는 방법
- B/C 작업을 잘 해왔다면 묻히지 않고 계속 활용해야 함.
- 작업을 통해 얻은 지식을 얼마나 활용하고 있는지 회고하고, 하이퍼링크로 촘촘히 연결해야 함.
- 예: 컨플루언스에 B/C 자료를 던져만 놓지 말고, 별도 섹터를 만들어 A가 아닌 B/C 자료들을 링크 시켜 효율적으로 활용해야 함.
3. 성장하기 위한 최적의 조건 (몰입)
성장의 최적 조건
- 내 실력과 주어진 업무 난이도가 비슷할 때 인간이 몰입하고 학습도 최대치로 할 수 있음.
- 업무 시 몰입 중이라면 난이도/실력이 엇비슷한 것.
- 불안하면 난이도가 실력보다 높은 것.
- 지루하면 난이도가 실력보다 낮은 것.
업무에서 지루함을 느낄 경우 (난이도 < 실력)
- 전략 1 (실력 낮추기): 마우스 안 쓰고 키보드로만 개발, 디버깅 안 쓰고 개발 등.
- 전략 2 (난이도 높이기): 3일짜리 업무 하루 만에 처리, 성능 올리기, 리팩토링, 테스트 코드 추가, 자신만의 툴 개발.
- 예: 톨게이트 직원이 지루함을 이기려 "한 번에 동전 10개 집기" 게임을 만들어 몰입함.
- 개발자가 자신만의 툴을 개발하면 난이도도 오르고 전문성도 높아짐(반복 패턴 분석 및 시간 투자 필요).
업무에서 불안감을 느낄 경우 (난이도 > 실력)
- 전략 1 (실력 높이기): 전문가의 도움, 짝 프로그래밍, ChatGPT 같은 툴의 도움 받기.
- 전략 2 (난이도 낮추기): 가장 심플한 결과물(아기 버전)을 첫 목표로 삼기. 너무 복잡한 결과물은 몰입과 방향 잡기가 힘드므로 Divide and Conquer(분할 정복)로 작은 목표부터 해결.
업무에서 자신의 상태를 알아차림 (메타인지)
- 현재 몰입 중인지, 불안한지, 지루한지 계속 파악해야 함.
- 스스로 난이도를 조절해 최적의 성장 조건을 만들어야 함.
- 예: 이소룡은 상대를 3분 만에 쓰러트렸지만 더 빨리 끝내지 못한 것을 반성하며 계속 성장하려 노력함. 만족하지 않고 난이도를 조절하면 더 성장 가능.
4. 인공지능 시대에서 살아남는 법
학습하기 힘든 일을 하자
- 알파고(2016) 이후 곧 10년, AI가 사람의 일을 대체 중이므로 AI가 대체하기 힘든(학습하기 힘든) 일을 해야 함.
- 컴퓨터 프로그래머(대체 확률 48%): 남이 준 스펙대로 개발하는 것이 주 업무.
- 소프트웨어 개발자(대체 확률 4.2%): 무엇을 만들지 고민하고 설계하며 타인과 상호작용함.
- 독창성, 협상, 설득이 포함된 영역은 인공지능이 학습하기 어려움.
5. 협업과 커뮤니케이션
상대방의 전문성을 뽑아내는 방법
- 전문가는 자기가 왜 뛰어난지 명확히 설명 못 함(일반적인 답을 함).
- 질문할 때는 "구체적인 사건"에 대해 말하도록 유도해야 함.
- 예: 전문가가 최근 GO 언어를 학습했다면, 익힌 과정을 시간대별로 짚어가며 어떤 행동을 했는지, 당시 암묵적인 의사결정과 상황판단이 무엇이었는지 추출해야 함.
좋은 기술을 조직에 전파하는 게 어려운 이유
- 기술 자체보다 사회적 요소가 중요함.
- 예: 팀장이 선의로 책을 선물해도 신뢰가 깨져있다면 "이것도 모르니 공부하라"는 의도로 와전됨.
- 기술 전문가는 사회성이 없다고 오해받지만, 실제로는 타인과의 인터랙션에 더 많은 시간을 씀.
- 서브 버전에서 깃으로 이관, TDD, Agile 도입 시 기술 학습보다 사회적 문제(도입하려는 사람을 신뢰하고 좋아하는가?)가 실패 원인인 경우가 많음.
- 주변 사람과의 마이크로 인터랙션을 개선해야 함.
서로 간의 신뢰를 높이는 방법
- 신뢰 높은 조직은 커뮤니케이션 효율과 생산성이 높음. 투명성, 공유, 인터랙션 필요.
- 복수 공유: 내 작업물/의견을 하나만 공유하면 '내 자신'이 평가받는 것 같아 두려움이 생김. 여러 개를 공유하면 '여럿 중 하나'에 대한 평가이므로 두려움과 불안감이 줄어듦.
- 마이크로 인터랙션: 일적으로 진중한 대화만으로는 신뢰 쌓기 힘듦. 일상적이고 사소한 대화가 신뢰를 쌓음.
사람을 이해하는 것의 중요성
- 품질의 정의: 통상적인 요구조건/성능 준수가 아니라 누군가에게 가치가 되는 것(상대적). 평가자의 주관적 잣대가 중요함.
- 객관적 데이터 쌓기의 문제: 누가 봐도 인정할 객관적 데이터를 모아도, 사람 마음에 안 들면 인정받지 못함.
- 예시 상황: "미국 사례?" -> "우린 달라", "한국 사례?" -> "우리 업계는 달라", "같은 업계?" -> "우리 회사는 달라".
- 마음에 들지 않으면 어떤 객관적 자료로도 설득 불가.
- 사람 이해가 우선: 정밀한 법, 규범, 알고리즘도 결국 사람이 만듦. 설득해야 하는 사람을 찾아가 신뢰를 쌓고 선호 방식을 이해해야 함. 출발은 자료가 아니라 사람.
상대방 성향에 따른 효율적 접근 (KAI)
- 사람의 인지 성향(KAI)인 적응형(A)과 혁신형(I)에 따라 다르게 접근해야 함.
- 혁신형(I)에게: "애자일은 정말 새로운 겁니다. 새로운 경험과 변화가 생길 겁니다."
- 적응형(A)에게: "새로운 게 아닙니다. 기존 방법을 더 낫게 개선하는 겁니다."
- MBTI 등 상대방 파악 후 접근 방법을 달리해야 함.
6. 리더십과 코칭
혼내지 말고 상대방을 이해해보자
- 혼내면 발생하는 문제: "아직 그것도 몰라요?"라고 혼내면 부사수는 질문을 안 하게 됨. 마감 때 "못 했습니다"라고 하게 됨. 혼자 문제 안고 있다가 팀 전체에 타격을 줌.
- 공감과 이해: 부족/잘못한 부분이 있다면 '왜 그렇게 되었는지' 이해해야 함. 이슈 이해도, 해결 시도 방식, 접근 이유 등을 파악하면 효과적인 제안 가능.
행동을 유도하는 대화 (코칭)
- 상대방이 스스로 부족한 부분을 보완하기 위해 어떤 방법이 있을지 질의.
- 보완을 위해 실질적으로 취할 수 있는 액션 질의.
- 액션에 대한 구체적 계획(작은 일부터) 질의.
- 액션 결과를 공유해달라고 하고 보완해주기.
7. 함께 일하기의 가치
함께 일을 하면 추상화가 올라감
- 서로 시각이 다르므로 이를 이어줄 다리(추상화 요소)가 필요함.
- 소프트웨어 공학 역사는 추상화를 높이는 여정일 정도로 중요함. 함께 일하면 자연스럽게 추상화가 동반됨.
일을 분배하는 방법
- 열두 가지 일을 열두 명에게 나눠주는 것(개인 책임)보다 여럿에게 하나의 일을 주는 것이 더 효과적일 수 있음.
- 장점: 서로 커뮤니케이션하며 더 좋은 아이디어 도출, 추상화 작업 진행, 자연스러운 상호 학습 발생.
'개발' 카테고리의 다른 글
| 프롬프트 엔지니어링 작성 방법 (1) | 2025.07.12 |
|---|---|
| MCP 사용기(Claude Desktop을 활용하여 Firecrawl, slack 연동) (4) | 2025.07.05 |
| 배포 방법과 배포 전략 (0) | 2025.02.16 |
| Java의 JIT(Just-In-Time) 컴파일러 (0) | 2025.02.16 |
| Java의 DB 접근 기본 구성 정리 및 Mybatis 적용 방법 (3) | 2025.01.19 |