민첩한 방법론: 반복 및 증분 개발
La 민첩한 방법론 소프트웨어 개발 방식의 혁명을 나타냅니다. 전통적인 방법의 한계에 대한 반작용으로 탄생한 Agile은 유연성, 협동 e 지속적인 가치 전달 고객에게.
🎯 무엇을 배울 것인가
- 애자일 선언문의 4가지 가치와 그 의미
- 실제 사례와 함께 자세히 설명된 12가지 애자일 원칙
- 반복 및 증분 주기: 작동 방식
- 민첩한 사고방식과 문화
- 사용자 스토리 및 백로그 관리
- 민첩한 지표: 속도, 번다운, 번업
- Agile 도입 시 일반적인 과제
애자일의 탄생: 선언문
2001년 2월, 개발자 17명 그들은 스키장에서 만났습니다. 스노우버드, 유타. 그들의 목표: 번거롭고 관료적인 프로세스에 대한 대안을 찾는 것 소프트웨어 산업을 장악한 것이죠. 이번 회의부터 애자일 선언문.
📜 애자일 선언문의 4가지 가치
선언문은 4가지 기본 가치를 기반으로 합니다. 참고: 이는 항목 삭제에 관한 것이 아닙니다. 오른쪽에 있지만 더 많은 가치를 부여하다 왼쪽에 있는 것.
1️⃣ Individui e interazioni > Processi e strumenti
└─ Le persone sono il cuore del progetto
2️⃣ Software funzionante > Documentazione esaustiva
└─ Il codice che funziona è la vera misura di progresso
3️⃣ Collaborazione con il cliente > Negoziazione contrattuale
└─ Partnership attiva invece di contratti rigidi
4️⃣ Rispondere al cambiamento > Seguire un piano
└─ Adattabilità è più importante della pianificazione rigida
가치 1: 개인과 상호작용
Agile은 소프트웨어가 다음에 의해 구축된다는 것을 인식합니다. 사람들, 프로세스가 아닙니다. 복잡한 문서나 도구보다 대면 커뮤니케이션이 더 효과적입니다.
👥 실제로
- 가능하다면 팀은 같은 장소(같은 방)에 배치됩니다.
- 일일 스탠드업 회의(15분)
- 페어 프로그래밍과 몹 프로그래밍
- 지속적인 개선을 위한 회고
- 자기 조직화 팀
❌ 안티 패턴
- 이메일/티켓팅을 통한 커뮤니케이션만 가능
- 상호작용이 없는 팀 사일로
- 작업 속도를 늦추는 복잡한 도구
- 하향식 마이크로관리
- 팀에 대한 신뢰 부족
가치 2: 작동하는 소프트웨어
Il 작동하는 소프트웨어 이는 발전의 주요 척도입니다. 더 나은 코드 코드 없이 완벽하게 문서화하는 최소한의 문서로 작업합니다.
💻 무슨 뜻인가요?
- 잠재적으로 해제 가능: 각 반복에서는 배포 가능한 소프트웨어가 생성됩니다.
- 빈번한 증가: 몇 달이 아닌 1~4주마다 출시
- 초기 피드백: 고객은 제품을 바로 보고 의견을 제시할 수 있습니다.
- 완료의 정의: "완료"에 대한 명확한 기준(테스트, 통합, 문서화)
✅ DEFINITION OF DONE (DoD)
Una user story è "Done" quando:
□ Codice scritto e peer reviewed
□ Unit tests scritti (coverage ≥ 80%)
□ Integration tests passati
□ Documentazione API aggiornata
□ Nessun bug critico aperto
□ Approvazione Product Owner
□ Deployato in ambiente staging
□ Acceptance criteria soddisfatti
가치 3: 고객과의 협력
고객은 엄격한 계약으로 보호해야 할 "적"이 아니라 협력 파트너 팀과 함께 일하는 사람.
🤝 지속적인 참여
- 제품 소유자: 팀 내 고객 담당자(스크럼)
- 스프린트 리뷰: 각 반복마다 완료된 작업의 데모
- 백로그 개선: 고객과의 지속적인 우선순위
- 빠른 피드백: 변경사항 승인 및 관리
- 투명도: 고객은 진행 상황과 문제를 완벽하게 파악할 수 있습니다.
가치 4: 변화에 대응
요구사항이 변경됩니다. 시장은 변합니다. 기술이 변화합니다. 기민한 껴안다 저항하기보다는 변화하라.
🔄 민첩한 접근 방식
- 적응형 계획(롤링 웨이브)
- 동적 도구로서의 백로그
- 반복할 때마다 우선순위가 재평가됨
- 신흥 아키텍처
- 지속적인 리팩토링
📋 폭포 접근 방식
- 포괄적인 사전 계획
- 요구사항 동결
- 공식적인 변경 요청(비싼 비용)
- BDUF(빅 디자인 업 프론트)
- 변화에 대한 저항
12가지 애자일 원칙
선언문에는 4가지 가치 외에도 다음이 포함됩니다. 12가지 원칙 운전하는 사람 Agile 팀의 행동:
🎯 CUSTOMER SATISFACTION
1. Consegna continua di valore al cliente
└─ Rilasci frequenti e incrementali
2. Accogliere i requisiti che cambiano
└─ Anche in fase avanzata di sviluppo
⏱️ TIME-TO-MARKET
3. Consegnare software funzionante frequentemente
└─ Da settimane a mesi (preferibilmente settimane)
🤝 COLLABORATION
4. Business people e sviluppatori lavorano insieme
└─ Collaborazione quotidiana
5. Costruire progetti intorno a individui motivati
└─ Dare supporto e fiducia al team
6. Conversazione faccia a faccia
└─ Il modo più efficace di comunicare
💯 QUALITY
7. Software funzionante è la metrica di progresso
└─ Non documenti o percentuali di completamento
8. Sviluppo sostenibile
└─ Mantenere un ritmo costante indefinitamente
9. Attenzione continua all'eccellenza tecnica
└─ Design di qualità migliora agilità
🔄 CONTINUOUS IMPROVEMENT
10. Semplicità: massimizzare lavoro non fatto
└─ Fare solo ciò che è necessario (YAGNI)
11. Team auto-organizzati
└─ Le migliori soluzioni emergono dal team
12. Retrospettive regolari
└─ Riflettere e adattare comportamento
원칙 1-3: 고객 중심
1. 지속적인 납품을 통한 고객 만족
목적: 통해 고객에게 전달되는 가치를 극대화합니다. 빈번하고 정기적인 릴리스.
실제 예:
- 전자상거래: 새로운 기능을 포함하여 2주마다 출시
- SaaS: 기능 플래그가 있는 CD(지속적 배포)
- 모바일 앱: 매장에서 격주로 업데이트
2. 변화를 환영하세요
사고방식: 요구 사항의 변화는 경쟁 우위입니다. 문제가 되지 않습니다.
대본: 고객이 프로젝트의 70%에 대해 다양한 기능을 요청합니다.
- ❌ 폭포: "너무 늦었습니다. 변경 요청하면 추가 비용 발생"
- ✅ 기민한: “백로그를 업데이트하고 우선순위를 다시 지정하자”
3. 빈번한 배송(타임박싱)
율: 1~4주의 짧은 반복(스프린트).
| 스프린트 길이 | 찬성 | 에 맞서 | 사용 시기 |
|---|---|---|---|
| 1주 | 매우 빠른 피드백 | 복잡한 기능을 위한 시간이 거의 없음 | 고위 팀, 성숙한 제품 |
| 2주 | 균형 잡힌(가장 일반적) | - | 표준 스크럼 |
| 3주 | 완료할 공간이 더 많습니다. | 피드백 빈도가 낮음 | 분산된 팀 |
| 4주 | 더 큰 기능 | 범위 크리프 위험 | 주니어 팀, 높은 복잡성 |
원칙 4-6: 협업
4. 비즈니스와 개발자는 매일 함께 일합니다
Il 제품 소유자 (또는 고객)은 처음뿐만 아니라 팀의 적극적인 부분입니다. 그리고 마지막에.
관행:
- 설명을 위해 제품 소유자에게 문의 가능(동일 사무실 또는 Slack/팀)
- 일일 스탠드업 참여(선택 사항)
- 함께 스프린트 계획하기
- 데모를 통한 스프린트 검토
5. 동기를 부여하고 지원하는 팀
팀에 양보하세요 자치, 악기 e 신뢰하다.
동기를 부여하는 방법:
- 작업 소유권(팀이 "방법"을 결정)
- 편안한 작업 환경
- 지속적인 훈련
- 성공에 대한 대중의 인정
- 일과 삶의 균형이 존중됩니다
6. 대면대화
그게 가장 효과적인 의사소통이다 직접 및 동기.
효율성 계층:
- 🥇 같은 방에서 마주보며 (최고)
- 🥈 화상 통화(두 번째로 좋음)
- 🥉 음성 통화
- 📧 채팅/슬랙(빠르지만 오해의 위험이 있음)
- 📄 이메일(느리게, 격식 있게)
- 📋 문서(기본 커뮤니케이션이 아닌 참조)
원칙 7-9: 품질과 지속 가능성
7. 측정항목으로 작동하는 소프트웨어
코드 줄, 문서 또는 "완료율"로 진행 상황을 측정하지 마세요. 측정 기능이 완료되고 배포 가능.
민첩한 지표:
- 속도: 스프린트당 완료된 스토리 포인트
- 번다운 차트: 남은 작업 시간 대 시간
- 리드타임: 요청부터 제작까지의 시간
- 배포 빈도: 주당 출시 횟수
8. 지속 가능한 속도(크런치 시간 없음)
문제: 과부하된 팀은 번아웃(burnout)하고 실수를 합니다.
민첩한 솔루션:
- 현실적인 스프린트 계획(과도하게 커밋하지 않음)
- 주 40시간 기준
- 특별하고 유난히 짧다
- 가이드로서의 역사적 속도
- 팀은 과도한 압력에 대해 "아니오"라고 말할 권리가 있습니다
"애자일은 단거리 경주가 아니라 마라톤이다(아이러니하게도!)"
9. 기술적 우수성과 좋은 디자인
품질 없는 속도는 기술 부채 미래를 느리게 만드는 것입니다.
민첩한 기술 관행:
- TDD (테스트 중심 개발): 코드 전 테스트
- 지속적인 리팩토링: 동작을 변경하지 않고 디자인 개선
- 코드 검토: 필수 동료 검토
- CI/CD: 지속적인 통합 및 배포
- 코딩 표준: 린트, 포맷터, 정적 분석
- 짝/몹 프로그래밍: 협업을 통한 품질
원칙 10-12: 단순성과 개선
10. 단순성(YAGNI - You Are Not Need It)
원칙: 꼭 필요한 것만 하세요 지금. 예상하지 마세요 가상의 미래 요구 사항.
예:
- ❌ "미래 요구 사항"을 위한 매우 유연한 시스템 구축
- ✅ 오늘 필요한 것을 정확하게 구현하고, 필요한 경우 내일 리팩토링하세요.
- ❌ 복잡한 디자인 패턴으로 인한 오버엔지니어링
- ✅ 작동하는 간단한 솔루션
11. 자체 조직된 팀
팀이 결정한다 ~처럼 작업을 수행합니다. 위에서는 세세하게 관리하지 않습니다.
형질:
- 다기능: 팀은 필요한 모든 기술을 갖추고 있습니다.
- 자기 조직화: 내부적으로 작업을 분산합니다.
- 권한 부여: 기술적 결정을 내리는 권한
- 책임: 결과에 대한 책임
12. 회고와 검사 및 적응
카이젠(改善): 지속적이고 작고 지속적인 개선.
스프린트 회고: 각 스프린트가 끝날 때마다 반영되는 이벤트입니다.
- 주요 질문:
- 무엇이 잘 되었나요? (계속해서)
- 무엇이 잘못되었나요? (그만해)
- 무엇을 개선할 수 있나요? (일을 시작하다)
- 출력: 다음 스프린트를 위한 1-3개의 구체적인 실행 항목
- 규칙: 안전한 공간, 비난 없음, 프로세스에 집중
반복 및 증분 주기
애자일의 핵심은 개발이다 반복적인 (주기적으로 반복됨) 전자 증분 (각 사이클마다 가치가 추가됩니다).
📅 SPRINT (2 settimane esempio)
🔵 GIORNO 1: SPRINT PLANNING (4 ore)
├─ Parte 1: WHAT (2 ore)
│ ├─ Product Owner presenta priorità backlog
│ ├─ Team seleziona user stories per lo sprint
│ └─ Sprint Goal definito
└─ Parte 2: HOW (2 ore)
├─ Team scompone stories in task
├─ Stima effort in ore
└─ Sprint Backlog creato
🟢 GIORNI 2-9: DEVELOPMENT
├─ Daily Standup ogni mattina (15 min)
│ ├─ Cosa ho fatto ieri?
│ ├─ Cosa farò oggi?
│ └─ Ho impedimenti/blocchi?
├─ Coding, testing, integrazione continua
├─ Backlog Refinement (mid-sprint, 1 ora)
└─ Collaborazione con Product Owner
🟡 GIORNO 10: SPRINT REVIEW (2 ore)
├─ Demo del lavoro completato
├─ Stakeholder forniscono feedback
├─ Product Owner accetta/rifiuta stories
└─ Backlog aggiornato con insights
🔴 GIORNO 10: SPRINT RETROSPECTIVE (1.5 ore)
├─ Cosa è andato bene?
├─ Cosa è andato male?
├─ Action items per migliorare
└─ Commitment del team
🔵 Ripeti ciclo con nuovo Sprint...
사용자 스토리 및 백로그 관리
📝 사용자 스토리
Le 사용자 스토리 이는 요구사항을 포착하는 Agile 방식입니다. 체재:
“[사용자 유형]으로서 [이익]을 위해 [행동]을 원합니다.”
✅ STORY BEN SCRITTA
Come cliente e-commerce,
voglio salvare prodotti in una wishlist
in modo da poterli acquistare in futuro senza cercarli di nuovo.
Acceptance Criteria:
- Bottone "Add to Wishlist" su ogni prodotto
- Pagina "My Wishlist" accessibile da header
- Possibilità di rimuovere item dalla wishlist
- Wishlist persiste tra sessioni (login richiesto)
Story Points: 5
Priority: Medium
---
✅ STORY TECNICA (SPIKE)
Come team di sviluppo,
voglio esplorare database NoSQL (MongoDB vs DynamoDB)
in modo da scegliere la soluzione migliore per il nostro caso d'uso.
Acceptance Criteria:
- Proof of concept con entrambi
- Documento di comparazione (performance, costo, scalabilità)
- Raccomandazione finale
Timebox: 3 giorni
Priority: High (blocker)
📚 제품 백로그
- 모든 작품의 순서 목록
- 제품 소유자가 우선순위를 정함
- 지속적으로 진화합니다(살아있는 문서).
- 더 자세한 상위 항목 (준비중)
- 모호한 하단 항목(자리 표시자)
📋 스프린트 백로그
- 제품 백로그의 하위 집합
- 나는 이 스프린트를 위해 일해요
- 개발팀 소유
- 작업별로 세분화(2~8시간)
- 매일 업데이트됨
민첩한 지표
1. 속도
정의: 스프린트당 완료된 스토리 포인트(평균)
Sprint | Committed | Completed | Velocity
-------|-----------|-----------|----------
1 | 20 | 15 | 15
2 | 18 | 18 | 16.5
3 | 20 | 17 | 16.7
4 | 17 | 19 | 17.3
5 | 18 | 18 | 17.4 ← Stabilizzata
📊 Insights:
- Team ha velocity ~17-18 story points
- Usare per planning futuro
- Non confrontare velocity tra team diversi!
2. 번다운 차트
그래프 표시 남은 일 vs 시간.
Story Points
↑
40 │●
│ ╲
30 │ ●╲ ← Ideal (linea tratteggiata)
│ ╲●
20 │ ╲ ●
│ ╲ ● ← Actual (linea solida)
10 │ ╲ ●
│ ╲ ●
0 └────────╲─────●─→ Days
1 2 3 4 5 6 7 8 9 10
✅ GOOD: Actual segue ideal
⚠️ WARNING: Actual sopra ideal = a rischio
❌ BAD: Actual piatto = nessun progresso
3. 누적 흐름도(CFD)
보기 작업 흐름 상태(To Do, In Progress, Done)를 통해.
민첩한 사고방식과 문화
애자일은 단순한 프로세스가 아니라 사고방식. 심오한 문화적 변화.
| 나는 기다린다 | 전통적인 사고방식 | 민첩한 사고방식 |
|---|---|---|
| 실패 | 무슨 수를 써서라도 피하라 | 학습 기회 |
| 계획 | 디테일할수록 좋다 | 충분하다, 적응하다 |
| 변화 | 문제, 저항 | 기회, 환영합니다 |
| 확인하다 | 명령 및 제어 | 서번트 리더십 |
| 책임 | 개인 | 집단(팀) |
| 지식 | 사일로(Silo), 전문적인 전문성 | 공유된 T자형 기술 |
| 결정 | 하향식 | 분산화 |
| 성공 지표 | 시간과 예산에 맞춰 | 고객에 대한 가치 |
애자일 도입의 과제
🚧 일반적인 장애물
1. 변화에 대한 저항
문제: "우리는 항상 이런 식으로 해왔는데, 왜 바꾸나요?"
해결책:
- 소규모로 시작: 파일럿 팀
- 빠른 승리 성공 보여주기
- 경영진 후원
- 훈련 및 코칭
2. 가짜 애자일(이름만 애자일)
문제: 팀은 스크럼 행사를 진행하지만 Waterfall 사고방식을 유지합니다.
증상:
- 스프린트 계획은 위에서부터 내려오는 명령이다
- 회고가 없거나 변경 사항이 발생하지 않습니다.
- 팀에 소유권이 없습니다
- 일일 스탠드업은 관리자에게 상태 보고가 됩니다.
3. 전담 제품 소유자의 부족
문제: PO 아르바이트 또는 결석.
영향: 백로그의 우선순위가 지정되지 않았고, 팀이 정체되었으며, 범위가 드리프트되었습니다.
4. 기술 부채 무시
문제: 기능에만 집중하고 품질은 무시합니다.
결과: 시간이 지남에 따라 속도가 떨어지고 버그가 증가합니다.
5. 분산된 팀
문제: 서로 다른 시간대에 있는 팀, 비동기 통신.
해결책:
- 중복근무시간(핵심시간)
- 서면으로 과도하게 의사소통하기
- 협업 도구(Miro, Mural)
- 팀룸에는 항상 영상이 켜져 있습니다.
애자일 vs 폭포수: 언제 무엇을 사용해야 할까요?
| 요인 | 애자일 사용 | 폭포수 사용 |
|---|---|---|
| 요구사항 | 불확실함, 진화적 | 명확하고 안정적이며 고정됨 |
| 고객 | 사용 가능, 협업 | 먼, 승인만이 |
| 출시 시간 | 심각하고 경쟁이 치열함 | 유연한 |
| Team | 같은 장소에 있는 선배 | 분산형, 후배 |
| 기술 | 새롭고 실험적인 | 성숙하고 검증된 |
| 규정 준수 | 낮은 | 높음(FDA, 항공우주) |
| 예산 | 유연한 | 고정적이고 엄격한 계약 |
| 프로젝트 | 혁신적, MVP | 유지 관리, 마이그레이션 |
인기 있는 Agile 프레임워크
Agile은 다양한 프레임워크를 포함하는 우산입니다. 가장 많이 사용되는 것:
🏃 스크럼
- 가장 인기 있는 프레임워크(70% 채택)
- 1~4주 스프린트
- 역할 3개, 이벤트 5개, 아티팩트 3개
- 강력한 구조
📊 칸반
- 지속적인 흐름, 스프린트 없음
- WIP(진행 중인 작업) 한도
- 보드를 이용한 시각화
- 스크럼보다 덜 규범적
🔧 XP(익스트림 프로그래밍)
- 기술적인 관행에 집중
- TDD, 페어 프로그래밍, CI
- 매우 빈번한 릴리스
- 코드 우수성
🏭 린 소프트웨어 개발
- 도요타 생산 시스템에서 영감을 받음
- 폐기물 제거
- 가치 흐름 매핑
- 지속적인 개선(카이젠)
결론
애자일은 혁명을 일으켰다 소프트웨어 산업이 주목받고 있는 사람, 협업, 적응성. 마법의 공식이 아닌 마음가짐 요구하는 문화적 헌신 그리고 끊임없는 연습.
💡 핵심 포인트
- Agile은 선언문의 4가지 가치와 12가지 원칙을 기반으로 합니다.
- 빈번한 릴리스를 통한 반복적이고 점진적인 개발
- 고객과의 지속적인 협업이 필수
- 자체 조직 및 다기능 팀
- 기술적 품질과 지속 가능한 속도는 기본입니다.
- 지속적인 개선을 위한 회고(Kaizen)
- 가장 중요한 프로세스 사고방식: 변화 수용
📚 다음 기사
다음 기사에서는 살펴보겠습니다. 스크럼 프레임워크 자세히: 3가지 역할 (제품 소유자, 스크럼 마스터, 개발팀), 5가지 시상식, 3가지 아티팩트 및 구현 방법 효과적으로 스크럼하세요.







