법칙 - 프로그래밍 안티패턴
브룩스 법칙
일정이 늦어지고 있는 소프트웨어 개발 프로젝트에서 지연을 만회하기 위해 후반에 사람을 추가하면 오히려 지연이 한층 더초래 된다. 맨먼스(man month)로 프로젝트 일정을 환산하는데 man과 month는 교환 불가능이다. 이유는 다음과 같다.
- 종속 관계에 따른 오버헤드가 발생한다.
- 교육하는 데 시간을 빼앗긴다.
일정이 지연되었을때는 일정을 재조정하라. 이때는 사용자와 조율을 통해서 기능에 우선도를 부여하고 단계적으로 배포한다.
생산성과 출산의 유사성
- 프로젝트에 프로그래머를 늘렸다고 해서 소화할수 있는 작업량이 늘어나고 개발기간이 줄어드는건 아니다.
- 출산과의 유사성은 10명의 임신부를 모아 놨다고 해서 1개월 만에 아기를 출산할수 없어서 이다.
man과 month는 교환 불가능인다 man과 man도 다른의미로 교환 불가능이다. 프로그래머마다 질적인 차이가 있어서 이다. 프로그래머의 질적인 차이는 구체적으로 30배라는 설도 있다.
- 가능과 불가능
- 버그의 많고 적음
- 실행 속도의 빠르고 느림
- 코드의 읽기 쉬움과 어려움
콘웨이의 법칙
-
아키텍처는 조직을 따른다. 하나의 컴파일러를 3개 팀이 편성되어 만들면 3단계의 컴파일러가 완성된다. 4개팀이 배벙하면 4단계의 컴파일러가 완성된다. 그래서 조직을 따른다.
-
아키텍처는 의사소통을 따른다.
-
아키텍처 설계 후에 조직을 편성하라. 아치텍처는 조직을 따라가지만 정답은 오히려 앞뒤가 반대이다. 조직에 상황에 따라 만들어진 아키텍처가 소프트웨어 관점에서 봤을때 최적일 리 없다.
-
조직과 아키텍처의 상호 종속 돤계가 중요한데, 조직과 프로세스에도 궁합이 있다. 기술분야로 팀을 조직(데이터베이스팀, 웹서버팀, 테스트팀)하고 애자일프로세스를 실행하면 그 조직은 개고생하고 애자일이 무색하게 증분에 작은 배포를 거듭하는 방식은 현실적이지 못하다.