[도서_함께 자라기] 불확실한 환경에서 살아남는 개발자가 되고 싶다
- 저자
- 김창준
- 출판
- 인사이트
- 출판일
- 2018.11.30
ChatGPT
최근 OpenAI에서 학습한 대규모 언어 모델인 ChatGPT가 이슈로 떠오르고 있다. 대화가 상당히 자연스럽다든가, 연설문을 써준다는 사례도 눈에 띄지만 꽤 쓸만한 코드까지 구현한다는 게 자못 놀라웠다. 그리고 무릇 인공지능이 그렇듯, 사용자가 많아질수록 그 퀄리티는 더욱 정교해질 것이기에, 유명세를 탄 지금부터 성장 속도는 더욱 가파라질 것이다.
개발자는 가장 늦게 종말하는 직업 중 하나 아니었어?
음.. 그렇지 않을까? 라는 것도 이제 옛말이 되어 버렸다. ChatGPT가 대표로 자신있게 손을 번쩍 들며 응 아닌데? 라고 말하고 있기 때문이다. 실제로 2013년에 발표된 <고용의 미래>라는 옥스퍼드 대학교의 논문에 따르면 단순히 코드만 짜는 개발자는 대체될 확률이 48%, 사용자의 요구사항을 분석하고 설계하는 개발자는 4.2% 였는데 겨우 10년이 지난 지금부터 그 조짐이 보이고 있다.
개발자가 생존할 수 있는 환경
결국, 살아남기 위해서 AI가 학습하기 어려운 영역에서 전문가가 되는 것일테고, 저자는 그러한 환경을 야생환경이라고 칭한다.
야생환경이란 높은 불확실성을 갖는 환경으로써 다음과 같은 특징을 갖는다.
- 야생 학습은 대부분 협력적이다.
- 야생 학습은 대부분 비순차적이다.
- 야생 학습은 대부분 자료에 한정이 없다.
- 야생 학습은 대부분 명확한 평가가 없다.
- 야생 학습은 대부분 정답이 없다.
- 야생 학습은 대부분 목표가 불분명하고 바뀌기도 한다.
학교에서 공부하던 방법과 정확히 반대되는 학습 환경이며, 그렇기 때문에 개발자로 커리어를 시작하여 야생 환경에서 학습하고 성장하는 과정은 다소 낯선 경험일 것이다. 하지만 생존을 위해 필연적으로 이러한 환경에 익숙해져야 하며, 궁극적으로는 야생학습 전문가가 되어야 한다.
불확실성 속에서 전문가로 성장하는 방법
전문가란?
먼저 전문가에 대해 정의를 하고 넘어가보자. 간단히 말해서 해당 영역에서 뛰어난 실력을 가지고 있는(성과를 내는) 사람이라고 볼 수 있는데, 이때 '실력'을 어떤 요소들과 연관지어야 하는지가 다소 애매하다. 그렇다면 이러한 요소들의 상관관계를 파악한 연구결과를 살펴보면서 생각해보자.
상관관계는 -1.0~1.0 사이로 정의되고, 0.2 이하는 약한효과/ 0.2~0.5는 중간효과/ 0.5 이상은 강한효과로 본다.
존헌터가 채용시 효과적이었던 환경변수에 대해 85년 동안의 심리학 연구를 합해 메타분석을 한 결과, 학력은 0.10/ 경력 연차는 0.18로 0.10인 취미와 동일한 약한 효과를 가졌고, 레퍼런스 체크 0.26/ 작업샘플테스트 0.54/ 구조화 인터뷰 0.51/ 성실성테스트0.31~0.41 을 가졌다. 즉, 중요한 것은 양적인 경력이 아닌 질적인 경력이었다.
결국, 시간적인 측면에서 전문가의 기준으로 생각되었던 1만 시간의 법칙에서의 시간은 단순히 근속연수가 아니라 '의도적인 수련(deliberate practice)' 즉, 약점을 개선하고 자신의 기량을 향상시킬 목적으로 반복적으로 한 수련의 시간을 의미하는 것이다.
3가지 요소
요소들은 동기/ 피드백/ 학습으로써 이것들이 적절히 어우려졌을 때, 빠르게 전문가가 될 수 있는 조건을 갖추었다고 생각한다.
1. 실력을 개선하려는 동기
나는 왜 일하는가? 라는 질문에 각자 어떤 답을 가지고 있는가? <무엇이 성과를 이끄는가> 에서 총동기 이론은 긍정적 요인인 직접동기와 부정적 요인인 간접동기를 다음과 같이 정의한다. 그리고 예외없이, 총동기의 합이 높은 조직이 높은 성과를 보였다. 물론 훌륭한 조직문화가 있다면 최고인 상황이지만, 그렇지 않다면 지속가능한 성장을 위해 개인적으로라도 직접 동기에 부합하는 동기를 설정해보자.
🔥 직접동기
- 일의 즐거움(10) 호기심, 실험, 결정에 참여
- 일의 의미(5) 공동의 목표, 가치 공유, 일을 통한 영향력, 개인의 가치와 신념이 업무의 결과와 뜻이 같을 때
- 일의 성장(1.66)2차적 결과가 자신이 믿는 가치와 신념에 상응할 때. 장점발현
☠️ 간접동기
- 정서적 압박감 (- 1.66) 죄의식, 수치심 등
- 경제적 압박감(- 5) 보상을 받거나 처벌을 피할 목적으로 행동
- 타성(- 10) 하던 일이니까 하는 것
2. 구체적인 피드백을 적절한 시기에 받기
정교함이 필요한 스포츠인 골프를 예시로 들어보자. 골프 퍼팅을 하는데 공의 경로를 보지 않고, 공만 1000번을 치면 의미가 있을까? 그리고 그 결과(경로 및 성공 여부)를 1년 후에 받는다면 실력이 향상될까? 공을 맞추는 감각은 익힐지언정, 실제로 필드에서 홀에 공을 넣는 감각은 익히기 어려울 것이다. 즉, 피드백은 짧은 주기와 적절한 시기에 주어짐으로써 실수를 교정할 기회를 얻어야 의미가 있다.
도서에서 소개된 성공적인 진단전문의 셀프 피드백 루프를 살펴보자.
- 진단 시에 자신이 무얼 생각했는지 기록(사고의 경로 - 현재 상황 기재)
- 얼마나 정확했는지 확인(오차 확인 - 결과 or 목표값과 비교)
즉, 언제 어떻게 나아지고 있는지 인지함으로써 다음 진단에서 실수를 줄이고, 더 나은 판단을 할 수 있게 되는 것이다. 또한 새로운 문제와 해결을 하는 과정에는 반드시 타당성을 확보하려고 노력해야 한다. 타당성이란 변수를 제한하고 실험을 하면서 규칙성과 인관관계를 찾는 것이다.
책을 읽고 피드백 질문들를 구성해보았다. 1주일 동안 업무에 적용하며 변경된 버전까지 수록해본다.
피드백 리스트_v0.1 | 피드백 리스트_v0.2 | |
진행 전 |
|
|
진행 중 |
|
|
진행 후 |
|
|
3. 효과적으로 학습하기
1) 적극적 읽기
목적성을 갖고 읽는다. 어떤 문제를 해결하기 위해 글을 읽고 있는지 놓친다면 공허하게 글을 읽는 경우가 발생하기 때문이다. 뭔가 헛돌고 있는 느낌이 난다면, 잠시 멈추고 '지금 내 문제가 뭐지? 나는 어떻게 해결하고 싶은 거지?'를 자문해보자.
2) 아웃풋식 공부
어렵게 공부히야 단기기억이 장기기억으로 전환된다. 그리고 가장 효과적으로 메타인지를 높이는 방법은 글을 쓰거나 말로 설명해 보는 것이다. 생각만 하면 다 아는 것 같은 느낌을 받기 쉽지만, 막상 말이든 글이든 표현하는 순간, 안다고 착각했던 것들 사이의 간극을 발견할 수 있다.
- 아웃풋식 공부를 더 이해하고 파고들고 싶다면 <완벽한 공부법>을 추천한다.
3) 목표 설정하기
적절한 목표를 설정하고 관리하는 것은 동기와 열정을 지속하는 데 도움을 준다. <탁월한 인생을 만드는 법> 에서 소개한 좋은 목표의 속성과 성취 목표, 습관 목표로 구분한 것의 특징을 간단히 기재해본다.
- SMARTER
- 명확성 Specific (구체적인가)
- 측정가능성 Measurable (성공 여부가 판단 가능한가)
- 활동성 Actionable (어떻게 할 것인가)
- 위험성 Risky (기준이 도전적인가)
- 시간기준 Time-keyed (데드라인, 빈도, 트리거 시간)
- 흥미진진함 Exciting (내적 동기)
- 적절성 Relevant (현상황, 추구하는 가치, 다른 목표와 어울리는가)
- 성취 목표와 습관 목표의 구분
- 습관목표 시작일, 습관 빈도, 시간트리거, 목표기간 (ex. 3월1일부터 100일 동안 매일 아침 6시에 3km 달리기)
- 성취목표 측정지표(x > y), 데드라인 (ex.9월20일까지 체중을 70kg에서 62kg으로 감량하기)
4) 몰입(Flow)하기
업무가 너무 쉬워서 지루하거나 너무 어려워서 불안하지 않고, 적절히 어렵다고 느껴질 때 몰입하여 진행할 수 있다. 이 상태에서는 최고 수준의 집중력, 최대치의 학습능력을 발휘하고 최고 수준의 행복감까지 얻을 수 있다고 한다. 이를 위해서는 진행을 하면서 자신이 어떤 상태인지 살피는 알아차림(mindfulness) 필요하며, 피드백과 연결된다고 볼 수 있다.
업무간 지루함이 느껴진다면 키보드로만 개발하거나 보조도구를 사용하지 않으며 자신에게 제약을 주며 실력을 낮추는 전략을 사용해볼 수 있고, 일주일 분량을 이틀만에 개발해보거나 새로운 언어로 짜보면서 난이도를 높여 볼 수도 있다. 또한, 리팩터링을 하거나 자동화 테스트, 자신만의 도구 개발 등 공식적인 업무 이외의 태스크를 추가해볼 수도 있을 것이다.
불안함이 느껴진다면 튜토리얼 문서를 따라하고, 잘 하는 분에게 짝 프로그래밍을 부탁하며 실력을 높이거나 업무 능률을 올릴 수 있는 도구를 찾아서 적용할 수도 있다. 혹은 현재 업무를 정말 핵심적인 결과물인 아기 버전 구현을 목표로 하거나 익숙한 언어로 먼저 만들어보는 방법도 있다.
매일 함께 자라기
정말 어쩔 수 없는 외재적 요인이 있을 수도 있지만, 대부분의 경우에는 내재적 요인이 반드시 있기 마련이다. 그리고 1차적으로 그렇게 생각해야 개선의 여지가 보이고, 동기부여가 된다. 나 아닌 누군가 혹은 외부 환경만이 유일한 변수라면 내가 할 수 있는 것은 정말 아무것도 없으니까.
인공지능이 영역이 점차 확장되는 것은 예견되어 있었고, 이제 모두가 목격하고 있다. 수년 후, 내가 애정을 갖고 많은 시간을 투자한 영역에서 얻은 전문성이 시나브로 잠식당했다며 당황스러움을 토로한다면 그건 지금부터 준비하지 못한 나의 잘못일지 모른다. 그렇기 때문에 본인이 추구하는 실력이 무엇이고, 그것을 어떻게 쌓을 수 있을 것인지 고민해야 한다.
'매일' '함께' '자라기'위해.
참고자료
- <함께 자라기>
- <탁월한 인생을 만드는 법>
- <무엇이 성과를 이끄는가>