2 분 소요

 안녕하세요 마개입니다.
읽어야지 생각하고 읽지 않았던 “구글 엔지니어는 이렇게 일한다”를 읽으면서 기록 남겨봅니다. 이번에 3장은 지식 공유입니다.



Chapter 3. 지식 공유

  • 조직 내의 전문가들이 필요하고 지식을 전파할 메커니즘이 필요함. (배움의 문화를 자리 잡아서)


배움을 가로막는 장애물

  • 심리적 안전 부족 (lack of psychological safety)
    • 불이익이 두려워서 위험을 감수하거나 실수를 드러내기 꺼리는 환경
  • 정보 섬 (Information islands)
    • 각 부서가 서로 소통하거나 자원을 공유하지 않아서 파편화된 지식
    • 정보 파편화 : 서로 다른 그림을 그리고 불완전함
    • 정보 중복 : 섬마다 나름의 작업 방식을 재창조
    • 정보 왜곡 : 섬마다 작업 방식이 다름
  • 단일 장애점 (Single point of failure, SPOF)
    • 중요한 정보를 한 사람이 독점하여 생기는 병목
    • 단기 효율은 높여주는 대신 장기 확장성을 희생하는 모양
  • 전부 아니면 전무 전문성 (all-or-nothing expertise)
    • 모든 것을 아는사람과 아무것도 모르는 초심자로 나뉨.
  • 앵무새처럼 흉내내기 (parroting)
    • 이해하지 못한 상태로 흉내만 내는 것을 말함. 무의식적으로 기존 패턴이나 코드를 따라함
  • 유령의 묘지 (haunted graveyard)
    • 무언가 잘못될 게 두려워서 아무도 손대지 않는 영역


철학

  • 소프트웨어 엔지니어링에서 가장 중요한 요소는 사람. 사람이 떠나면 팀이 휘청거릴 수 있음
  • 문서화된 지식은 조직 전체로 퍼뜨릴 수 있음. 확장성이 좋지만 트레이드오프도 있음 (최신 정보 반영해야 하는 유지보수 비용같은 문제)
  • 현장 지식과 문서화된 지식은 서로를 보완함


판 깔아주기: 심리적 안전

  • 자신이 이해하지 못한 게 있음을 인정해야 무언가를 배울 수 있음
  • 멘토 제도
    • 누글러에게 심리적 안전을 심어주는 효과
    • 같은 팀원이나 관리자 혹은 테크리더는 제외
  • 큰 그룹에서의 심리적 안전
    • 그룹의 모든 구성원이 안전한 환경을 만들고 유지하는 역할을 해줘야 함
    • 거짓된 놀람 금지
    • “음, 실제로는…” 금지
    • 뒷좌석 운전 금지 (끼어들기)
    • 미묘한 “-주의” 금지 (인종주의, 연령주의 등등)


내 지식 키우기

  • 질문하기
    • 항상 배우고 항상 질문하라
  • 맥락 이해하기
    • 새로운 것을 이해하는 일뿐 아니라 기존 설계와 구현을 뒷받침하는 결정 사항들을 더 깊이 이해하는 일


질문 확장하기: 커뮤니티에 묻기

  • 기록하는 습관을 기르기
  • 그룹 채팅
    • 여러 사람에게 물어 빠르게 해결하기
    • 간단한 질문에 적합
  • 메일링 리스트
    • 공개 메일링 리스트에 질문하고 답을 얻기
    • 복잡한 질문에 적합하지만 답이 느릴 수 있음
  • YAQS: 질의응답 플랫폼
    • Yet Another Question System
    • 구글의 스택오버플로


지식 확장하기: 누구나 가르칠 게 있다

  • 오피스 아워
    • 특정 주제에 관한 질문에 답해줄 목적으로 시간을 비워 둔 이벤트
    • 전문가와 직접 대면할 기회
  • 기술 강연과 수업
    • engEDU (Engineering Education)
    • g2g (Googler2Googler)
    • 복잡한 주제를 다뤄야 함
    • 주제는 안정적이어야 함
    • 질문에 답해주고 일대일로 도와줄 수 있는 교사가 있어야 효과가 큰 주제
    • 수요가 많아야 함
  • 문서자료
    • 독자가 무언가를 배우도록 돕는 것을 최우선 목표로 하는 기록된 지식
    • 문서자료 갱신하기
    • 새로운 문서자료 작성하기
    • 문서화 촉진하기
  • 코드
    • 코드 문서화, 주석


조직의 지식 확장하기

  • 지식 공유 문화 일구기
    • 문화와 환경을 첫 번째로 두고 생각
    • 존중
    • 보상과 인정
  • 표준 정보 소스 구축하기
    • 회사 차원의 중장집중적 정보 원천
    • 개발자 가이드 : 코딩 스타일 가이드, 공식 소프트웨어 엔지니어링 모범 사례, 리뷰 / 테스트 가이드
    • go/ 링크 : goto/ 링크
    • 코드랩 : 새로운 개념이나 프로세스를 가르치는 실습형 튜토리얼
    • 정적 분석 : 검사 로직을 자동화할 수 있는 모범 사례들을 공유하는 수단
  • 소외되지 않기
    • 뉴스레터 : 엔지니어들이 관심을 가질만한 정보를 유통하는 수단
    • 커뮤니티 : 커뮤니티를 통한 지식 공유


가독성 제도: 코디 리뷰를 통한 표준 멘토 제도

  • 모범 사례 전파를 위한 표준 멘토링 프로세스
  • 가독성 인증 프로세스란?
    • 해당 언어의 가독성 자격증이 있는 누군가가 변경 목록(CL, changelist)을 승인했다는 표시
  • 가독성 인증 프로세스를 두는 이유
    • 엔지니어들에게 현장 지식 이상을 전달
    • 코드베이스 전체가 일관될 때 얻는 가치
    • 엔지니어링 속도에 긍정적인 영향을 준다