본문 바로가기
Computer Science/Software Engineering

[Software Engineering] People Management

by __K.Jun__ 2025. 2. 16.

Team Organization

(1) 프로그래밍 팀 조직의 문제점

  • 프로젝트 완수를 위해 1년치 프로그래밍이 필요하지만, 3개월 내 완료해야 하는 경우 해결책으로 4명의 프로그래머를 배치한다고 가정.
  • 그러나 현실적으로 4명이 동시에 작업한다고 해서 시간이 1/4로 둘어들지 않으며, 품질 저하 가능성 존재.
  • 프로그래밍 팀은 서로 유기적으로 협력해야 하므로 복잡성이 증가.

(2) 팀원 간의 협업 문제

  • 개발자가 모듈을 나누어 개발할 때, 인터페이스나 매개변수의 불일치 문제가 발생할 가능성이 큼.
  • 이는 기술적 능력 부족의 문제가 아니라 관리의 문제.

(3) 커뮤니케이션 문제

  • 3명의 개발자가 있을 경우, 커뮤니케이션 채널은 3개.
  • 개발 마감이 다가와도 코드가 완성되지 않으면, 추가 개발자를 투입하는 것이 일반적인 해결책처럼 보이지만, 새로운 인원에게 기존 내용을 설명해야 하는 부담이 증가.
  • Brook's Law(브룩스의 법칙): "프로젝트가 늦어질 때 추가 인력을 투입하면 더 늦어진다."

(4) 팀 조직 방식

1. 민주적 팀 (Democratic Team)

  • 팀원들이 함께 의사결정을 내리는 방식.
  • 장점: 오류를 빨리 발견할 수 있고, 연구개발 프로젝트 등에 적합.
  • 단점: 관리자가 통제하기 어렵고, 규모 확장이 어려움.

2. 주프로그래머 팀 (Chief Programmer Team)

  • 주프로그래머가 중심이 되어 모든 의사소통이 이루어짐.
  • 장점: 명확한 리더십, 갈등 감소.
  • 단점: 적합한 주프로그래머를 찾기 어려움, 중심인물의 부담 증가

3. 타협적 방법

  • 기술적 의사결정은 팀 리더가 담당하고, 성과 평가 및 예산 관리는 팀 매니저가 담당하여 역할을 분담

(5) 이상적인 팀 크기

  • 3명: 의견 낼 기회가 많지만, 한 사람이 지배할 수도 있음.
  • 4명: 누군가 빠져도 유지 가능하지만, 투표 시 동률이 나올 가능성 있음.
  • 5~6명: 회의 효율성, 창의적 사고, 역할 분배가 원활해 이상적.
  • 7~8명 이상:회의가 길어지고, 내부 경쟁 발생 가능성 증가.

People Selection

(1) 기술적 역량 고려 요소

  • 도메인 지식: 해당 분야의 경험이 중요.
  • 프로그래밍 언어 경험: 단기 프로젝트일 경우 중요.
  • 문제 해결 능력: 소프트웨어 개발에서 필수적이지만, 평가가 어려움.

(2) 기타 중요한 요소

  • 의사소통 능력: 협업과 문서화, 고객과의 소통 등에 필수.
  • 적응력: 다양한 경험을 통해 새로운 환경에 빠르게 적응할 수 있는 능력.
  • 태도: 학습 의지와 긍정적인 태도.
  • 인성: 팀원들과의 조화로움.

(3) 실무적인 고려 사항

  • 회사 내부에서 핵심 인력을 새로운 프로젝트로 배치하는 것이 어려울 수 있음.
  • UI 디자인, 하드웨어 인터페이스 등 일부 전문 기술은 인력이 부족할 가능성이 높음.
  • 신입 사원은 특정 기술이 부족할 수 있지만, 새로운 기술을 도입할 기회가 될 수 있음.

Leadership

(1) MOI 리더십 모델

  • Motivation(동기부여): 기술자들이 최고의 능력을 발휘하도록 격려.
  • Organization(조직화): 프로세스를 설계하고 최종 제품으로 전환.
  • Ideas/Innovation(아이디어/혁신): 창의성을 장려하고, 제약 속에서도 혁신을 유도.

(2) 동기부여 방법

  • 기본 욕구 충족: 안전, 수면, 음식 등 생존에 필요한 요소 충족.
  • 사회적 요구: 팀워크와 비공식적인 커뮤니케이션 장려.
  • 존경과 자기 존중: 성취를 인정하고, 적절한 보상 제공.

(3) 성격 유형에 따른 동기부여 방식

  • 과업 중심(Task-Oriented): 업무 자체에서 동기를 얻음.
  • 자기 중심(Self-Oriented): 개인적인 목표 달성을 위해 일함.
  • 관계 중심(Interaction-Oriented): 동료와의 협업에서 동기부여됨.

Group Management

(1) 그룹 내 상호작용의 중요성

  • 소프트웨어 개발은 협업 활동이므로 팀워크가 성과를 좌우.
  • 그룹 내 의사소통이 원활할수록 업무 효율성 증가.

(2) 그룹 구성의 문제점

  • 동기 유형이 같은 사람들만 모이면 비효율적
    • 과업 중심: 각자 개별적으로 일하려 함.
    • 자기 중심: 리더가 많아 갈등 발생.
    • 관계 중심: 너무 많은 대화로 생산성이 낮아질 수 있음.
  • 균형 잡힌 팀 구성이 중요.

(3) 그룹 응집력(Cohesiveness) 강화방법

  • 사회적 이벤트: 구성원 간 유대감 형성.
  • 팀 아이덴티티 확립: 팀의 목표와 가치를 명확히 함.
  • 정보 개방: 투명한 의사소통 통해 소속감을 높임.

(4) 효과적인 그룹 커뮤니케이션 요소

  • 팀 크기: 팀원이 많아질수록 커뮤니케이션이 어려워짐.
  • 조직 구조: 비공식적 조직이 공식적 조직보다 커뮤니케이션이 원활함.
  • 팀 구성: 다양한 성격이 조화를 이루는 것이 중요.
  • 작업 환경: 사무 공간 구조도 커뮤니케이션에 영향을 미침
728x90