Skip to content

Commit

Permalink
Docs: Add The Psychology of Computer Programming Chapter2
Browse files Browse the repository at this point in the history
  • Loading branch information
fkdl0048 committed Jan 21, 2024
1 parent 0f2b84a commit e69e2e7
Showing 1 changed file with 153 additions and 0 deletions.
153 changes: 153 additions & 0 deletions The Psychology of Computer Programming/Chapter02.md
Original file line number Diff line number Diff line change
Expand Up @@ -424,3 +424,156 @@ ex) 조언에 대해서 냉소적인 반응, 서로 협력하는 관계

### 6장 프로그래밍 프로젝트

어떤 프로그래밍 목표를 이루기 위해 두 팀이 함께 일해야 하는 상황에서는 두 프로그래머가 함께 일하게 될 때와 마찬가지로 중간에서 조율 기능이 타나난다.

또 개인이 모여 팀을 이룰 때와 마찬가지로 새로운 형태의 사회관계도 형성된다.

- 두명의 프로그래머는 개인으로 상호작용 하기도 하지만, 다른 팀에 속한 구성원으로서도 상호 작용한다.
- 다른 팀원의 평가를 받음

#### 변화를 통한 안정

대규모 조직이 지닌 특성 중 가장 흥미로운 것은 구성원 개개인의 수명보다 더 오래 존속한다는 점이다.

프로그래밍 팀도 최초 구성원들은 다 떠났지만 팀은 유지되는 경우를 볼 수 있다.

이러한 특성은 조직의 큰 강점이며, 상호 작용을 통해 팀의 목표와 성취가 새로운 구성원에게 전달되고 또 기존 구성원이 떠난 후에도 그대로 유지되기 때문이다.

가끔 프로젝트의 핵심인력에 대한 잘못된 태도로 비참한 결과를 맞기도 한다.

- 마크의 생산 공정 사례
- 핵심 인력의 합당한 요구를 거절
- 헨리의 제어 프로그램 사례
- 꾸준한 변화를 통한 안정

프로젝트가 진행되면서, 사람들은 현재 하고 있는 제한된 업무에 비해 더 흥미로워 보이는 새로운 것들을 배우기 마련이다.

또는 자신의 능력에 비해 너무 쉽게 느껴지는 업무가 지겨울 수도 있다.

모든 프로그래머가 어려운 업무에 도전하는 것을 즐기지는 않지만, 대부분은 자신의 지식을 적용해 볼 기회가 없다면 불만족스러워 한다.

따라서 **프로젝트가 일종의 프로그래머 생산 공장**으로 기능하도록 만들어야 한다.

또한 프로젝트는 카드로 지은 집이 아니다.

핵심 인력이 한명 없다고 붕괴되지 않는다. (그러지 말아야 한다.)

> 절대 없어서는 안 될 프로그래머가 있다면, 한시라도 빨리 그를 프로젝트에서 제거하라.
#### 성과의 측정

프로젝트의 규모가 클수록 성과를 측정하기가 더 어렵다.

규모가 너무 크면 한 사람이 전체를 판단하기 불가능하다.

또, 개별 프로그램의 친척도에 대한 판단은 주관적인 문제이므로 다른 요인이 없는 상태에서도 각양각색일 것이다.

그러나 어떤 프로그램 하나에 대한 여러 사람의 의견을 들어 볼 기회는 없다.

대신, 프로젝트라는 큰 그림 내에서 여러 프로젝트에 대한 여러 사람의 의견을 비교하고 종합해야 한다.

그렇게 의견을 종합하는 과정에는 심리적인 문제가 발생할 다양한 가능성이 존재한다.

- 군사 프로젝트의 예
- 프로그래밍 팀의 보고서가 친척도가 아닌 예상으로 채워졌지만 그 괴리를 걱정하는 사람은 없었음
- 별로 가능해 보이지 않아도 사람들이 믿으려 하는 경우가 있다는 사실
- 보고서를 검토하는 사람의 지위 및 보고서 작성에 실제로 공헌하는 정도와 검토에 소비하는 시간 사이의 흥미로운 관계다.

*학습 효과를 극대화하려면 학습 주체가 자신에 대한 평가를 피드백으로 받아야 한다는 심리학적 원칙은 잘 알려져 있다.*

사례의 보고 체계는 일련의 필터들로 생각할 수 있는데, 각 필터는 시간 진여과 정보 손실을 어느 정도 수반한다.

이런 의미에서 정보는 놀라운 소식일 경우에만 보고서를 통해 전달된다.

심리학 실험에서 피실험자들에게 선형적인 잣대로 뭔가를 평가하게 하면, 극단적인 값을 택하는 사람은 거의 없다.

실제로 5단계의 등급 구별이 필요하다면 7~9단위의 값이 사용되고 양쪽 극단의 값은 옆의 값과 함께 뭉뚱그려진다.

이련 효과가 각 단계를 지나면서 보고서가 여과되는 현상과 관련이 있다.

**이전의 검토자가 손대지 않은 극단적인 값을 각 단계의 검토자가 없앤 것이다.**

따라서 보고서의 수치들은 위로 올라가면서 점점 더 중간값을 향하게 된다.

그럼으로써 실질적으로 전달되어야 할 정보를 여과한다.

이런 문제를 막기 위해서는 먼저 극단적인 값을 평범한 값으로 조작하는 경향이 지닌 심리적 원인을 찾아야 한다.

- 인지부조화
- 관리자가 작업이 순조롭게 진행되도록 하는 게 좋은 관리자라고 믿는다면, 진척도가 요동치는 상황은 인지부조화 상태를 야기한다.
- 그리고 그렇게 진척도의 부침이 심한 것은 큰 그림을 보기에는 사안에 너무 가까이 있는 실무자가 잘못 판단한 결과일 뿐이라고 믿어버릴 것이다.
- 상부의 압력
- 상부의 압력은 일을 추진하는 동력이 되기도 하지만 보고 체계를 파괴하는 힘이 되기도 한다.
- 관리자가 배워야 할 것은 사람들이 일을 하는 방식을 바꾸거나 작업 능률을 올릴 수 있도록 자극을 주는 방법이다.
- 현재 프로젝트의 진행상황을 감춰야만 하는 분위기가 조성되서는 안된다.
- 동료의 역할

*침묵의 나선이론*

내 편이 한 명이라도 존재하면 사물을 있는 그대로 볼 용기가 생기는 것이다. (동조)

- 데블스 에드버킷은 실제로 영어권에서 사용하는 표현인데, '논리적 오류를 편드는 사람'

#### 프로젝트의 구조

프로그래밍 프로젝트에서 진척도 평가에 관련된 심리적 함정을 극복하려면, 실무와 그에 대한 평가를 어떤 식으로든 분리하는 것이 필수다.

그런데 **계층 조직의 가장 심각한 약점이 바로 이 분리가 불가능하다는 것**이다.

실무에 대한 통제 경로가 그대로 진행 보고 경로의 역순이기 때문이다.

앞서 다룬 보고 경로를 따라 전달되는 정보에 왜곡이 생기기 마련이다.

이런 왜곡을 방지하고자 단순히 계층적인 형태에서 탈피한 구조가 나타나기 시작한다.

QA팀을 두거나 인력을 버퍼로 설정하여 필요할 때 조직한다.

조직을 개편하려 하면 생각보다 많은 문제가 발생할 수도 있다.

다른 그룹으로 옮기거나 어떤 사람과 함께 일하는 것 또는 특정 업무를 맡는 것을 거부하는 사람들이 생긴다.

어떤 사람과 계속 함께 일을 하거나 현재 업무를 계속 해야겠다고 우기는 경우도 있다.

본질적으로 이런 문제들은 모두 **차별**에서 비롯된다.

이는 한 개인이 정해진 팀에 속해 일할 때에 발생하는 문제와 유사하다.

팀 구성원 각자는 팀 목표를 일정 부분 자기 것으로 받아들인다.

그러나 특화된 팀을 경우에는 팀 목표가 프로젝트 전체의 목표 또는 다른 팀의 목표와 일치하지 않을 수도 있다.

예를 들어, 특정 업무가 다른 일보다 시시한 것으로 치부될 수 있다.

ex) 문서화 그룹에 대한 프로그래밍팀의 무시

> 비자아적 프로그래밍에 관한 경험으로 절친한 친구라고 해서 가장 엄격한 비판자가 되지 못할 이유는 없다.
프로젝트 내의 자연스런 반목은 경영진과 프로그래머라는 수직 계층 사이에서도 발생한다.

이 반목은 목표의 수립 때부터 나타나는데, 프로젝트의 목표가 각 팀의 목표의 단순함은 아니기 때문이다.

보통, 목표는 하향적으로 수립되며 주요 사항은 팀 조직이 갖춰지기 전에 이미 결정된다.

그런 상황에서는 팀 목표의 수립도 민주적으로 이뤄지길 바랄 수 없다.

결국, 프로그래머들이 프로젝트는 물론이고 자신의 팀에도 충성심을 갖기 어려워진다.

#### 대규모 프로젝트에서 공통적으로 발생하는 사회 문제

대규모 프로젝트에서 발생하는 사회적 문제에서 대부분의 원인은 프로젝트 리더십과 실무자 사이의 먼 거리에 있다.

프로그래밍 팀 내에는 딱 두가지 역할만 있으면 된다. (프로그래머와 그 리더)

그러나 프로젝트 전체를 놓고 보면 리더의 리더 즉, n차 관리자가 있다.

**n차 관리자는 하위 관리자들을 통해 간접적으로만 볼 뿐이다.**

관리자가 스스로 이해하지 못하는 일을 감독할 때에는 언제나 실무자를 평가하는 기준이 일 자체가 아니라 일하는 모습이 된다.

*프로그래밍 분야, 관리자의 지위의 상징에 관한 이야기는 너무 과거의 이야기라 생략*

#### 논의사항

> 비자아적 프로그래밍에 관한 경험으로 절친한 친구라고 해서 가장 엄격한 비판자가 되지 못할 이유는 없다.
- 현업에서는 친한 직장동료와 솔직한 관계를 어떻게 유지 하시나요?

0 comments on commit e69e2e7

Please sign in to comment.