소프트웨어 공학의 법칙들 — 원본 요약
원문: https://lawsofsoftwareengineering.com
GeekNews 게시: https://news.hada.io/topic?id=28760
추천: 131P
개요
56가지 소프트웨어 공학 원칙·패턴을 7개 카테고리로 정리한 컬렉션.
Teams
- Conway's Law: "Organizations design systems that mirror their own communication structure."
- Brooks's Law: "Adding manpower to a late software project makes it later."
- Dunbar's Number: 한 개인이 유지할 수 있는 안정적인 관계는 약 150개
- Ringelmann Effect: 그룹 규모 증가에 따라 개인 생산성 감소
- Price's Law: 전체 참여자의 제곱근이 50% 업무 담당
- Putt's Law: 기술을 이해하는 사람은 관리하지 않음
- Peter Principle: 계층 구조에서 직원은 무능 수준까지 승진
- Bus Factor: 프로젝트를 위험에 빠뜨릴 최소 팀원 수
Planning
- Premature Optimization: 조기 최적화는 모든 악의 근원 (Knuth, 1974)
- Parkinson's Law: 업무는 할당된 시간만큼 확장
- Ninety-Ninety Rule: 첫 90%가 90% 개발 시간 소요 + 남은 10%도 90%
- Hofstadter's Law: 예상보다 항상 더 오래 걸림 (Hofstadter 법칙 포함)
- Goodhart's Law: 측정 지표가 목표가 되면 좋은 지표가 아님
Architecture
- Hyrum's Law: "With a sufficient number of API users, all observable behaviors will be depended on by somebody."
- Gall's Law: 작동하는 복잡 시스템은 작동하는 단순 시스템에서만 진화
- Law of Leaky Abstractions: 비자명한 추상화는 모두 누수 존재
- Tesler's Law: 어플리케이션의 기약 불가능한 복잡성은 이동만 가능
- CAP Theorem: 분산 시스템은 일관성·가용성·분할 허용성 중 2가지만 보장
- Second-System Effect: 성공한 시스템 후속작은 과도하게 설계됨
Quality
- Boy Scout Rule: "Leave the code better than you found it."
- Murphy's Law: 잘못될 수 있는 것은 반드시 잘못됨
- Postel's Law: 보수적으로 행동하고 관대하게 받아들이기
- Broken Windows Theory: 나쁜 설계는 즉시 수정해야 함
- Linus's Law: 충분한 검토자가 있으면 모든 버그는 명확함
- Kernighan's Law: 디버깅은 코딩보다 2배 어려움
- Testing Pyramid: 단위 테스트 多 → 통합 테스트 少 → UI 테스트 최소
Design
- YAGNI: 필요할 때까지 기능 추가 금지
- DRY Principle: 모든 지식은 단일 명확한 출처 필요
- KISS Principle: 설계는 최대한 단순하게
- SOLID Principles: 유지보수성·확장성 강화 5가지 원칙
- Law of Demeter: 객체는 직접 친구와만 상호작용
Scale
- Amdahl's Law: 병렬화 불가능 부분이 속도 제한
- Metcalfe's Law: 네트워크 가치는 사용자 수의 제곱에 비례
Decisions
- Dunning-Kruger Effect: 지식 부족할수록 과신 경향
- Occam's Razor: 가장 단순한 설명이 정확함
- Sunk Cost Fallacy: 이미 투자한 비용으로 계속 진행하는 오류
- Pareto Principle: 80% 문제는 20% 원인에서 발생
GeekNews 댓글 핵심 논점
- 조기 최적화 재해석: 1974년 맥락 vs 현대 아키텍처 선택
- 법칙 간 충돌: Postel's Law vs Hyrum's Law, DRY vs 단순성
- KISS·YAGNI가 가장 실질적 효용 제공
- 맥락 없이 한 줄 명언으로 압축되면서 오해되는 경향