Skip to main content

함께자라기를 읽고

· 20 min read
Dongle

함꼐자라기 책을 읽고 감명받은 문장 생각해볼 이야기를 정리

함께 자라기

오랜만에 다시 읽어보는 함께 자라기

머리말 - “내가 정말 잘할 수 있을까? 아니, 우리가 정말 자랄 수 있을까?”

“내가 정말 잘할 수 있을까?”의 질문을

  • 내가 정말 자랄 수 있을까?
  • 우리가 정말 함꼐 자랄 수 있을까?
  • 우리가 정말 매일매일 함께 자랄 수 있을까?

자라기 - 학습

학교 학습 vs 야생학습

  • 야생 학습은 대부분 협력적이다.
  • 야생 학습은 대부분 비순차적이다
  • 야생 학습은 대부분 자료에 한정이 없다.
  • 야생 학습은 대부분 명확한 평가가 없다.
  • 야생 학습은 대부분 정답이 없다.
  • 야생 학습은 대부분 목표가 불분명하고 바뀌기도 한다.

사람을 뽑을 때는 구조화된 인터뷰(행동중심적 인터뷰)와 실제 작업을 해보도록 하는 샘플 테스트, 그리고 가능하다면 실제 업무를 주고 시험적으로 짧은 기간 동안 일을 해보게 하는 것등을 권장합니다.

행동중심적 인터뷰(structured behavioral interview)란? “개발자로써 협력에 대한 철학이 뭔가요?” 같은 질문은 행동을 묻는 것이 아니라, “지난 프로젝트에서 동료가 어려움을 겪을 때 어떤 행동을 하셨는지 구체적 예를 들어주세요”라고 물어야 합니다.

1만 시간의 법칙을 제대로 적용하려면 “의도적수련”, 애자일 철학을 활용하는 것인데, 즉 피드백을 짧은 주기로 얻는 것, 그리고 실수를 교정할 기회가 있는 것, 이 두가지가 중요하다.

내가 A 작업을 개선하려면 두 가지 질문을 해 봐야 한다

  1. 어떻게 하면 더하기보다 곱하기를 할 수 있을까? (복리)
  2. 어떻게 해야 고바는 비율을 높일 수 있을까 혹은 이자 적용 주기를 짧게 할 수 있는가
  • 자신이 이미 갖고 있는 것들을 잘 활용하라.
    • 새로운 것을 유입시키는 데에만 집중하다 보면 새로 들어온 것들이 이미 있는 것들을 덮여버릴 수 있다. 올해 몇 권을 읽었다고 자랑하지 말고, 내가 그 지식을 얼마나 어떻게 활용하는지 반성하라.
    • 점과 점을 이어라 이미 습득한 지식, 기술, 경험 등을 서로 연결 지어서 시너지 효과가 나게 하고 하나의 영역에서 다른 영역으로 왔다갔다하는 것을 자주 해서 다른 영역 간을 넘나들기가 수월해지도록 하라.
    • 새로운 것이 들어오면 이미 갖고 있는 것들과 충도을 시도하라.
  • 외무 물질을 체화하라.
    • 계속 내부 순환만 하다가는 일정 수준에 수렴할 위험이 있다. 주기적으로 외부 자극을 받으면 좋다. 단, 외부 자극을 받으면 그걸 재빨리 자기화해야 한다.
  • 자신을 개선하는 프로세스에 대해 생각해 보라.
    • A 작업을 되돌아보는 회고/반성 활동을 주기적으로 하는 프로세스를 만들어라
      • 내가 생각한 회고는 어떤 것을 했고, 어떤 것을 느꼈고, 어떤 교훈을 배웠는지, 또 자기계발은 어떤걸 했는지 4가지 정도면 적당 할 거 같다.
    • 나를 개선하는 과정을 어떻게 하면 개선할 수 있을지 고민하라.
  • 피드백을 자주 받아라
    • 순환율을 높여라. 1달, 작게라도 실험해 보는 것이 좋다.
    • 일찍, 그리고 자주 실패하라. 실패에서 학습하라

소프트웨어 개발자 vs 컴퓨터 프로그래머 컴퓨터 프로그래머는 다른 사람이 준 스팩대로 개발하는 것을 주 업무로 하며 그 과정에서 협상, 설득이 크게 필요하지 않는다. 반면 소프트웨어 개발자는 뭘 만들지를 고민하고 설계하는 부분이 포함되며, 그 과정에서 타인과 상호작용하는 업무가 많습니다. 즉 소프트웨어 개발자가 되는 걸 목표로 해야한다.

달인이 되는 비결

  1. 동기가 부족하다.
  2. 피드백을 제때 받지 못한다

양치질 예 단순하게 양치질을 10년 한다고 달인이 되는 건 아니다. 어떻게하면 더 잘할 것이고 치과의사에게 피드백을 받음으로써 달인이 된다. 어떻게 하면 내가 더 성장 할 수 있을까를 고민 해본다면, 코드 리뷰를 받거나, 짝 프로그래밍을 진행하거나, 고객에게 개발하는 프로그램에서 피드백을 적극적으로 요구하거나, 직관성을 높이려면 다양한 스스로의 실험을 해봐야 할 거 같다. 업무를 받았을 때 기존에는 3일 이내로 잡았다면 마감기한을 2일로 당겨서 진행을 해본다던지 등을 통해 해볼 수 있을 거 같다.


의도적 수련(Deliberate Practice)

나의 작업 난이도와 실력이 비슷해야한다. 미하이 칙센트미하이의 몰입이론과도 일치하는 부분인다.

몰입을 연구한 계기

처음에는, 사람들은 무슨 활동을 할 때 행복한가를 연구했다. 분석 결과 무슨 활동을 하냐가 중요한 게 아니라 뭘 하든지 몰입해서 하면 만족도가 올라간다. 그래서 몰입으로 연구방향을 틀게됐다고한다.

업무 시간 중에 불안함이나 지루함을 느끼는 때가 대부분이라면, 실력이 도무지 늘지 않는 환경에 있는 것이다.


제자리걸음에서 벗어나기

  1. 지루함을 느끼는 경우: 실력 낮추기

    예를 들면 마우스를 안쓰고 키보드로만 개발을 한다던지, 디버거를 안써본다던지, 컴파일을 30초마다가아닌 5분마다 한다던지, 조금 더 집중을 할 수 있는 환경을 만들어서 몰입을 높여 만족도를 높인다.

  2. 지루함을 느끼는 경우: 난이도 높이기

    하루만에 할 개발을 한시간만에 개발 한다던지, 100rps 면 되는 시스템을 1,000rps 기준으로 만든다던지. 익숙한 작업을 새로운 언어로 진행한다던지.

  3. 불안함을 느끼면 : 실력 높이기

    사회적 접근: 나보다 뛰어난 전문가의 도움을 얻는 것. 짝 프로그래밍을 해달라고 부탁하거나, 스터디

    도구적 접근: 오픈소스를 활용한다던지, 괜찮은 도구를 찾는 것

    내관적 접근: 예전에 했던 비슷한일의 경험을 떠올려 보는 것 그때 일을 어떻게 했는지를 떠 올리면서 해결

  4. 불안함을 느끼는 경우 : 난이도 낮추기

    아기 버전을 만든다 0.0.1 버전을 목표로한다. WTSTTCPW(What’s the simplest Thing That Coluld Possibly Work?) 동작을 할 수 있는 가장 간단한 건 뭘까? 쉬운 것 부터 먼저하고 어려운 것을 하자

나는 지금까지 몰입을 했던 경험을 생각해보면

  • 책에서 말한바와 같이 일을 할 때 난이도가 70%~80%로 정도 느끼는 일들이 몰입을 이끌었고
  • 다른 사람들(개발자들)과 일을 협업을 하면서 데이터를 하나하나씩 맞춰 나가면서 퇴근 후 자기 전 내가 생각하고 수정되어야 할 부분들을 빨리 출근해서 이야기하고 싶다라는 경험을 함으로써 몰입을 했었으며
  • 기존 사내에 없었던 성능 테스트를 작성하면서 생겼던 생각하지 못했던 여러 어려웠던 일들이 몰입을 이끌었다.
  • 이외에도 여러 피드백을 받을 수 있는 일들을 할 때 나는 몰입을 하였고 일에 대해 만족감이 높았고 성장도 높았었다.

지루함을 느끼지 않도록하자 스스로 몰입을 할 수 있는 환경을 만들어나가자. 몰입을 경험 할 수 있는 환경을 만들면 일의 퍼포먼스가 올라가고, 일적으로나 개인적으로나 만족감 성취감이 높고 성장을 더 할 수 있다.


의도적 수련의 예시

  1. 역엔지니어링 설계도 없이 완성품으로부터 설계를 추론하는 행위
  2. 새로운 프로그래밍 언어를 배울 때 적극적 읽기(무언가를 읽을 때 구체적인 질문이나 목적을 가지고 있는 방법)를 한다.
    • 예) 간단한 단어 개수 세기 프로그램를 만들어본다.
    • 다양한 표준 라이브러리를 보고 스타일을 배운다.

누군가에게 빨리 배우려면

  • 프로그래밍 언어를 빨리 배우는 비결이 뭔가요? → 그냥 연습하세요가 된다. 이를 구체적인 사건에 대해 말하도록 유도한다. 최근에 익힌 언어가뭐에요? 어떤 시간별로 행동을 하셨어요?

인지적 작업을 높이려면 내가 이 문제를 해결할 때 어떤 과정을 거치는가를 생각하며 자신의 머릿속을 관찰하고 질문을 던지고 분석하는 것이 도움된다.


함께

소프트 스킬(커뮤니케이션이나 협력)이 중요하다.


백지장도 맞들면 찢어진다? 톱니바퀴 실험

  • 혼자 톱니바퀴 수를 세는 것보다 여러명이서 추상화 규칙을 통해 계산을 하는 식의 확률이 더 높았다.
    • 요기서 추상화란 시각적인 여러가지 요소를 이용하는 것이다. 서로의 시각이 다르기 때문에 그림을 그린다던지 글을 같이 그려나가는 추상화 하는 방법을 말함.

짝 프로그래밍 장점 두 사람이라는 구성은 대화를 통해 추상화를 높이게 한다. 한 컴퓨터라는 구성은 구체화를 통해 검증하게 한다. 즉 커뮤니케이션을 통해 높여간다.


신뢰 공유는 복수공유가 더 좋다. 하나를 공유하였을 때는 신뢰를 깍아먹는 공유가 될 확률이 높지만, 복수를 공유하는 것이 상대방의 신뢰를 더 쌓을 수 있는 방법이다. 그리고 커뮤니케이션이 더욱 더 많아지게되는 효과도 있다. 이는 같은 시간을 투자했는데도 신뢰도도 높아지고 성과도 좋아졌다. 실제로 복수 개의 아이디어를 공유했을 때 팀의 결속이 강화되고 오너십을 느낀다는 연구도 있다.


설득

동료나 상사를을 설득 할 때는 객관적인 자료와 연구자료로 결정되는 게 아니다. 의사결정을 하는 과정에 감정적이고 직관적인 부분이 큰 역할을 하고 있으며, 그런 감정적 부분이 배제된다면 의사결정을 제대로 할 수 없다. 출발은 단순하게 객관적인 자료를 들이미는게 아니라 내가 설득하려는 사람에게서 하는 것이다. 자료에서 출발하는 것이 아니다. 상대방에 대해 얼마나 이해를 하고 얼마나 대화를 해봤냐에 나온다.


팀장 팀장은 행동을 유대하는 대화로 팀원이 자기주도적으로 되게 돕는 사람. p.105


뛰어난 팀의 비밀

  1. 팀에 누가 있는지(전문가, 내향/외향, 지능 등)보다 팀원들이 서로 어떻게 상효작용하고 자신의 일을 어떻게 바라보는지가 훨씬 중요했다.
  2. 5가지 성공적 팀의 특징을 찾았는데, 그중 앞도적으로 높은 예측력을 보인 변수는 팀의 심리적 안전감이다.
  3. 팀 토론 등 특별히 고안된 활동을 통해 심리적 안전감을 개선할 수 있다.

실수관리 실수는 예방하는 것이 아닌 관리하는 것이다. 예방만을 위해 노력한다면 실수를 밝히지 않고 숨기려고 할 것인 반면, 실수를 관리함으로써 관리 대상으로 보는 것이다.


심리적 안전감 내 생각이나 의견, 질문, 걱정, 혹은 실수가 드러났을 때 처벌받거나 놀림받지 않을 거라는 믿음.

애자일

기민하게 소프트웨어 개발를 다루는 방법론.
애자일의 불확실성을 다루는 방식은 좀 더 짧은 주기로 더 일찍부터 피드백을 받고, 더 다양한 사람으로부터 더 자주 그리고 더 일찍 피드백을 받는 것으로 정리할 수 있다.


불확실성에 대비 학습과 협력을 통해 대비를 할 수 있다.


단어 “고객에게 매일 가치를 전하라”

  • 고객: 우리의 진짜 고객은 누구인가.
  • 매일: 어떻게 점진적으로 가치를 전달할 것인가?, 어떻게 보다 일찍, 그리고 자주 가치를 전할 것인가?
  • 가치를: 무엇이 가치인가? 지금 우리가 하고 있는 일이 정말 가치를 만드는 일인가? 비슷한 수준의 가치를 더 값싸게 전할하는 방법은?
  • 전하라: 가치를 우리가 갖고 있지 않고 고객에게 정말 전달하고 있는가? 고객이 정말 이 가치를 얻고 싶어하는가?

프로젝트 성공확률엔 고객의 참여가 제일 높은 기여를한다. 무섭고 두렵지만 중요한 일이라면 계속 미루지 않는 것도 중요하다.


애자일 도입 확실성 위에서 애자일을 도입하게 되면 실패 확률이 높다. 애자일을 어떻게 도입 해야하는 가는 사실, 애자일 자체는 방법론이기 때문에 정답은 없다. 방법론은 태생적으로 불확실성이기 높기 때문이다. 곁에 있는 주변 사람들과 조금 탐색해나가고 조금 나아가고 확인하고 반복하면 우리의 현 맥락에 맞는 좋은 전략들을 스스로 만들어 나가는 것이 아닐까?