https://en.wikipedia.org/wiki/You_aren%27t_gonna_need_it
Always implement things when you actually need them, never when you just foresee that you [will] need them. - Ron Jeffries
"You Aren't Gonna Need It" (YAGNI) 원칙은 소프트웨어 개발에서 중요한 개념으로, 개발자들이 실제 필요하지 않은 기능을 미리 구현하지 않도록하는 것이 기본 원칙입니다. 특히 애자일 개발 방법론에서 강조되는데, 애자일 방식으로 개발을 할 때 현재의 요구사항에 집중하고 불필요한 작업을 피하는 것이 핵심아라 볼 수 있습니다.
원칙
- 현재 필요한가?: YAGNI는 개발자가 현재의 요구사항에만 집중하도록 도와줍니다. 이는 추측에 의한 기능 개발을 방지하고, 현재 사용자의 필요에 직접적으로 대응하는 기능에 집중하게 합니다.
- 개발로 인해 시간과 자원의 효율적으로 변하는가?: 불필요한 기능을 개발하는 것은 시간과 자원의 낭비를 의미합니다. YAGNI를 따름으로써, 개발 팀은 더 중요하고 긴급한 작업에 집중할 수 있습니다.
- 유지보수의 용이성이 커지는가? : 덜 복잡한 코드는 유지보수하기가 더 쉽습니다. 불필요한 코드가 없으면 버그 발생 가능성이 줄어들고, 코드에 대한 이해와 수정이 더 간단해집니다.
- 반응성과 유연성이 좋아지는가? : 미래의 변화에 더 잘 대응할 수 있습니다. 불필요한 기능을 구현하지 않음으로써, 나중에 요구사항이 변경되었을 때 이에 더 빠르게 반응하고 필요한 기능을 추가할 수 있습니다.
한계
- 장기적 비전 부족: 때때로 YAGNI는 장기적인 시스템 설계나 아키텍처의 발전을 간과할 수 있습니다. 이는 추후 시스템이 확장될 때 문제가 될 수 있습니다.
- 과도한 단순화: 일부 경우에는 YAGNI가 너무 강조되어 시스템의 확장성이나 유연성이 무시될 수 있습니다. 이는 장기적으로 더 많은 작업을 초래할 수 있습니다.
고려사항
- 균형 잡힌 접근: YAGNI 원칙은 상황에 따라 다르게 적용되어야 합니다. 현재의 필요와 미래의 가능성 사이에 균형을 찾는 것이 중요합니다.
- 팀과의 의사소통: 개발 팀 내에서 YAGNI 원칙에 대한 명확한 이해와 합의가 필요합니다. 이를 통해 과도한 기능 개발을 방지하고 프로젝트의 방향성을 유지할 수 있습니다.
맥킨지 연구에 의하면 기업들은 프로덕트 개발비를 50%초과 지출하면 세후 이익을 3.5% 손실하는 반면, 6개월 늦게 출시하면 33%를 잃는다고 한다. - 찰스 H. 하우스, 레이먼드 L. 프라이스
반응형
'DevOps > 소프트웨어공학' 카테고리의 다른 글
[번역]마틴파울러의 테스트 피라미드 (0) | 2021.08.06 |
---|---|
마틴파울러의 마이크로서비스의 정의(Micro Service Architecture by Martin folwer) (379) | 2019.07.02 |
예제로 풀어보는 구독형 아키텍쳐(Subscribe architecture) for Micoro Service Architecture(MSA) (952) | 2018.05.27 |
개발자에게 은총알(silver bullet)은 없다. (942) | 2018.05.22 |