[함께 자라기] 2장. 함께
조엘 테스트
소스 컨트롤을 사용하는가?
한 번에 빌드를 만들어낼 수 있는가?
일일 빌드를 만드는가?
버그 데이터베이스를 가지고 있는가?
새로운 코드를 작성하기 전에 버그를 고치는가?
스펙이 있는가?
프로그래머가 조용한 작업환경에서 일하는가?
돈이 되는 한 최고의 툴을 사용하는가?
테스터가 있는가?
채용 면접 때 후보가 코드를 짜게 해보는가?
복도 사용성 테스트를 하는가?
- 과연 이것들이 제대로된 테스트라고 할 수 있을까?
- 모든 항복에 "예"라고 답하는 것이 무조건 더 낫다고 동의하기 어렵다.
소프트웨어 개발을 잘 관리하기 위한 근본적 능력
복잡한 서로를 이해하는 능력으로 프로젝트를 계획한 다음 관찰하고 행동하여 계획에 맞게 프로젝트가 진행되게 하거나 계획을 바꿀 수 있어야 한다.
관찰하는 능력으로 무엇이 벌어지고 있는지를 관찰하고, 효과적인 적응 행동을 하기 위해 자신이 관찰한 것이 어떤 의미인지 이해할 수 있어야 한다.
행동하는 능력으로 여러운 대인 상황에서 우리가 심지어 혼란스럽거나 화가 나거나 아니면 무서워서 도망쳐 숨어버리고 싶을 때에도 적절하게 행동할 수 있어야 한다.
품질 높은 소프트웨어를 만들게 도와주는 관리자가 되려면 알아야 할 것들
시스템적 사고
일차적 측정
일차적 행동
변화를 기대하기
개발 비용을 주도하는 요소 분류
도구 : 소프트웨어 개발에 사용하는 모든 종류의 도구
사람 : 능력 + 경험
시스템 : 제품 자체의 복잡도, 요구되는 신뢰성, DB의 크기, 타깃의 변화 가능성, 스케줄 제약
관리 : 사람을 배정하고 작업 분배를 조정하고 위임하는 것, 동기 고취, 작업 조건, 환경 개선, 자원 준비, 리스크를 일찍 확인하고 적절한 조치를 하는 것, 요구사항과 설계 스펙이 비준되게 돕는것
연구에서는 관리, 시스템, 사람, 도구 순으로 주도한다고 하지만, 실제로는 도구를 가장 먼저 생각한다. 자신을 돌아보고 관리 방식 자체에 문제가 없는지 살펴보고 개선하는 것이 그 출발이 되지 않을까 합니다.
협력을 하는 방법
페어 프로그래밍
몹 프로그래밍
신뢰를 깎는 공유인가 신뢰를 쌓는 공유인가
신뢰를 쌓는데 널리 사용되는 한 가지 방법은 투명성과 공유, 인터랙션
SVI(Subjective Value Inventory) → 1 ~ 10
당신의 동료는 당신에게 전체적으로 어떤 인상을 줬습니까?
이 인터랙션을 한 결과로 동료와의 관계에 대해 얼마나 만족하게 되었습니까?
이 인터랙션에서 당신은 동료를 신뢰하게 되었습니까?
이 인터랙션이 향후 이 동료와 함께 할 인터랙션에 대해 토대를 마련해 주었습니까?
자신과 상대가 공유하는 부분이 얼마나 많은지를 겹치는 두 개의 원으로 표현해보세요.
복수 공유
여러개의 의견을 모두 공유하는 방법으로 불안감이 더하고 이야기 하는 사람도 피드백을 좋게 이야기 할 수 있다. 즉, 복수 공유는 신뢰도가 높아지고 성과도 더 좋다.
인성
사람이 마음에 안들면 어떤 객관적 자료를 갖다 줘도 설득할 수 없습니다. 특히나 그 자료에 당신의 생각이 틀렸다라는 암시가 강하게 있다면 더더욱 설득이 어렵다.
그러나 객관성이라고 하는 것은 상대적이며, 내가 생각하는 객관이 상대의 객관이 아닐수 있고, 그렇기 때문에 설득에 성공하려면 우선 그 사람을 이해하는 것에서 출발해야 한다는 말입니다. 그런 이유로 설득을 하기 위해 객관적 자료를 모으는 부분 이상으로 상대를 이해하는 데 많은 시간을 투자해야 한다.
효과적인 팀원 관리
한 사람이 다 기능을 갖추도록
협력이 쉽게 되도록
그러나 후자를 하게 되면 자연스럽게 전자가 따라오는 경우가 많다.
웹 개발의 추상화 단계
전략, 범위, 구조, 뼈대, 표면/비주얼
이 추상화 단계를 사다리를 오르락내리락하듯이 왔다갔다 하는 것이 중요하다.
전문가 팀이 실패하는 이유
팀원들은 정보를 공유해서 더 통합된 해결책을 제시한다. 즉, 전문가들을 모아서 팀을 만든다고 잘하는 것이 아니고 오히려 성과가 떨어질 수 있고 정보 공유하고 협력을 잘하기 위한 명시적인 도움이 필요하며 소셜 스킬 등이 뛰어난 제너럴리스트가 있으면 도움이 된다.
구굴의 옥시전 프로젝트 연구 결과 일부
팀에 누가 있는지보다 팀원들이 서로 어떻게 상호작용하고 자신의 일을 어떻게 바라보는지가 훨씬 중요하다. 5가지 성공적 팀의 특징을 찾았는데 그 중 압도적으로 높은 예측력을 보인 변수는 팀의 심리적 안전감이었다. 팀 토론 등 특별히 고안된 활동을 통해 심리적 안전감을 개선할 수 있었다. 이걸 통해 내 생각이나 의견, 질문, 걱정, 혹은 실수가 드러났을 때 처벌받거나 놀림받지 않을 거라는 믿음을 가지게 된다.
에드몬드슨 교수의 측정 도구
내가 이 일에서 실수를 하면 그걸로 비난을 받는 경우가 많다. 이 조직에서 남들에게 도움을 구하기가 어렵다. 내 관리자는 내가 전에 한 번도 해보지 않은 걸 해내는 방법을 배우거나 혹은 새로운 일을 맡도록 격려하는 경우가 많다. 내가 만약 다른 곳에서 더 나은 일을 구하려고 이 회사를 떠날 생각이 있다면 나는 그에 대해 내 관리자랑 이야기를 나눌 것이다. 내가 나의 관리자에게 문제를 제기하면 그는 내가 해결책을 찾도록 도와주는 일에 그다지 관심을 보이지 않는 경우가 많다.
리더가 팀 학습 속도에 미치는 영향
단순히 기술적 탁월함만을 갖춘 사람보다는 학습 환경을 만들 수 있는 리더가 필요하다.
학습 환경의 차이
선발 자체가 매우 협동적으로 이루어졌을 뿐 아니라 선발 기준도 단순한 업무 수행 능력뿐만 아니라 다른 사람과 협력을 얼마나 잘하는지, 새롭고 애매모호한 상황을 즐길 수 있는지, 자기보다 사람에게도 자신있게 의견을 제안할 수 있는지 등을 보고 뽑았다.
또한 기술적 도전이라기보다 조직적 도전으로 받아들임으로써 개인이 새로운 기술을 획득해야 한다고 보지 않고, 함께 일하는 새로운 방법을 만들어야 한다고 생각했다.
현실에서 실천하기
자신의 학습 환경을 만드세요.
일과 학습을 굳이 분리하지 않고 동체로 만들어라.
학습 공동체를 구축하세요.
애자일은 좋은 일에 대해서는 '그리고' 확률을 '또는' 확률로 바꾸고, 나쁜일에 대해서는 '또는' 확율을 '그리고' 확률로 바꾸는 경향이 있습니다.
책 정보
'Book' 카테고리의 다른 글
[클린코드] 2장. 의미 있는 이름 (0) | 2021.10.04 |
---|---|
[클린코드] 1장. 깨끗한 코드 (0) | 2021.10.04 |
[SQL 첫걸음] 1장. 데이터베이스와 SQL (0) | 2021.09.22 |
[함께 자라기] 3장. 애자일 (0) | 2020.10.01 |
[함께 자라기] 1장. 자라기 (0) | 2020.09.26 |