애자일의 첫 번째 반복에서 무엇을 제공합니까?


22

내가 이해하는 바와 같이, Agile 방법론의 아이디어는 기능적인 것을 제공하고 자주 제공한다는 것입니다. 응용 프로그램은 증분 후 최종 모양 증분에 들어갑니다.

그러나 초기 반복에서는 응용 프로그램이 서있는 프레임 워크 또는 기초를 구축하여 중요하지만 사용자에게는 보이지 않습니다.

이 첫 번째 반복에서 고객에게 무엇이 전달됩니까? 스캐 폴딩 코드를 빌드 할 때 올바른 방향으로 진행 상황을 어떻게 표시합니까?


2
전체 프레임 워크 또는 기초를 구축하는 것은 프로젝트 후반에 가능한 한 결정해야합니다.
JeffO

@JeffO : 가능한 늦게 무엇을 의미합니까? 답변으로 확장 할 수 있습니까?
JohnDoDo

5
이상적으로는 결정이되어서는 안됩니다. 프레임 워크를 만들지 말고 리팩토링의 결과로 유기적으로 나타나야합니다. "좋은"(나의 "좋은"의 주관적인 정의를위한) 프레임 워크는 처음부터 처음부터 설계되지 않았으며, 기존 응용 프로그램에서 나온 사실이나 다른 프레임 워크를 기반으로 추출되었습니다.
Jörg W Mittag

7
기초를 미리 구축하는 @JohnDoDo는 애플리케이션이 존재하기 전에 애플리케이션의 요구 사항을 알고 있다고 가정합니다. 사람들이 이것을하는 것을 볼 때마다 그들은 단단하고 다루기가 매우 어려운 것으로 상처를 입었습니다. 종종 "프레임 워크"사용자는 그것을 포용하는 것보다 더 싸우게됩니다.
Stefan Billiet

답변:


15

2 주 스프린트를하는 것이 일반적입니다.

나에게있어, 첫 스프린트 또는 2는이 정확한 이유 때문에 "스레드"에 대한 이후의 스프린트보다 "보이지 않는"특징을 가질 것이다.

즉, 스캐 폴드 전체를 제작하는 데 2 ​​주가 걸리지 않으며 UI에 표시 할 항목이 없습니다.

첫 스프린트 또는 2에서 모든 발판 품목을 깎아 내지 않을 수도 있습니다. 부품이 기다렸다가 나중에 추가 될 수도 있습니다.

첫 번째 스프린트에 "더미 데이터로 웹 페이지 X 만들기"가있을 수 있으므로 고객에게 빛나는 것을 얻을 수 있습니다. 그리고 다음 스프린트에는 "데이터베이스의 데이터를 사용하도록 웹 페이지 X 변경"이 있습니다.


6
마지막 단락에 +1-사용자 유효성 검사 용 프로토 타입으로 개발을 시작하는 것이 좋습니다.
Konamiman

4
"첫 번째 스프린트에"더미 데이터로 웹 페이지 X 만들기 "가있어 고객에게 보여주기 위해 반짝이는 것을 얻을 수 있습니다.": IMO 고객과 프로젝트 시간 규모에 따라 다릅니다. 2 개월 프로젝트의 경우 고객이 1 주일 또는 2 주 후에 무언가를보고자합니다. 18 개월 프로젝트의 경우 1 ~ 2 개월 안에 첫 번째 데모를 얻는 것이 좋습니다. 어쨌든 일부 고객은 더미 페이지를보고 싶어하지만 다른 고객은 더 의미있는 것을보고 시간을 낭비하고 있다는 느낌을받을 수 있습니다. 나는 당신이 일반화 할 수 없다고 생각합니다.
Giorgio

4
+1, 그러나 항상 고객에게 UI 부품을 표시 할 때는 항상 빙산의 비밀을 염두에 두십시오. joelonsoftware.com/articles/fog0000000356.html
Doc Brown

1
@MatthewFlynn-Scrum에 "요구 사항"단계가 없을 수도 있지만 ZERO 요구 사항이나 문서가 있음을 의미하지는 않습니다. 나는 고객이 "그냥 가서 건물을 시작하면 그 길을 따라 알아낼 것"이라고 말한 프로젝트에 참여한 적이 없습니다. 나는 그것에 대한 용어가 있다고 생각합니다. 일반적으로 어떤 프로젝트가 진행될 것인지에 대한 논의와 합의를 포함하는 일종의 추출 단계가 있어야합니다. 판매 기간 동안 프로토 타입을 발표했습니다
hanzolo

1
@hanzolo-제가 최근에 일한 매우 성공적인 프로젝트는 Affordable Care Act의 일부인 새로운 법적 요구 사항을 처리하는 솔루션을 구현하는 것과 관련이있었습니다. 기본 요구 사항은 알려져 있었지만 솔루션이 무엇인지에 대한 프로토 타입이나 디자인 방식은 없었습니다. 비즈니스 분석가를 포함한 프로젝트 팀은 스프린트 상황 내에서이를 파악했습니다. 기껏해야 BA는 팀원들보다 한두 발 앞서 나가는 이야기에 대해 비즈니스 사람들과 이야기 할 것이지만, 우리가 함께해야 할 전부였습니다. 잘 작동했습니다.
Matthew Flynn

13

Agile Manifesto는 Working Software가 포괄적 인 문서보다 가치가 있다고 제안하고 Scrum 프레임 워크는이 개념을 바탕으로 비즈니스 가치가있는 테스트되고 작동하는 소프트웨어를 모든 스프린트에서 요구하는 것으로 제시합니다.

왜? 글쎄, 무엇보다도 디자이너와 개발자는 종종 YNNI (필요하지 않을 것입니다) 항목에 많은 시간을 소비하게됩니다. 불행히도, 당신이 이야기하고있는 프레임 워크는 종종이 분야에서 큰 책임입니다. 개발자들은 프레임 워크가 지원해야 할 모든 것을 구축하기 시작하고 갑자기 3 개월이 지나서이를 보여줄 비즈니스 가치가 없습니다. 그런 다음 프레임 워크가 실제로 필요한 것을 지원하지 않는 것으로 나타났습니다.

따라서 제안 된 접근 방식은 현재 실제로 필요한 것만 빌드하고 지금 제공하는 것입니다.

이것은 재사용 가능한 부품 등을 만들 수 없다는 것을 의미하지 않으며 항상 현재 요구 사항을 지원하기 위해 수행합니다. 또한, 도로에서 내려 오는 것에 대해 블라인더를 완전히 착용해야한다는 것을 의미하지는 않습니다. 그러나 핵심은 항상 비즈니스 가치를 제공하는 것입니다.

환경 설정 등과 같이 무엇이든 전달하기 전에 반드시 설정해야하는 몇 가지 주요 사항이 있습니다. 이를 위해 많은 팀이 기초를 다지는 "스프린트 0"을 갖는 것이 유용하다는 것을 알게되었습니다. 스프린트 0은 제품의 백 로그 나 번 다운에 적용되지 않기 때문에 다른 스프린트보다 약간 길 수 있지만 여전히 적절한 시간 간격을 유지해야합니다.


8

이 첫 번째 반복에서 고객에게 무엇이 전달됩니까?

사용자에게 가장 큰 비즈니스 가치가있는 것. 예를 들어, 응용 프로그램에 복잡한 비즈니스 규칙이있는 경우 첫 번째 반복에는 코드 형식으로 인코딩 된 해당 비즈니스 규칙 만 포함됩니다. 해당 비즈니스 규칙에 대한 코드가있는 한 고객은 만족해야합니다. (실제로 고객이 그러한 일을 받아들이도록 설득하는 문제는 완전히 다른 문제입니다.) 예를 들어, 고객의 비즈니스 전문가에게 도메인이 수행해야하는 작업을 나타내는 단위 / 수락 테스트를 보여줄 수 있으며 해당 코드는이를 녹색으로 표시 할 수 있습니다. 또는 비즈니스 전문가가 테스트 작성을 돕도록하십시오.

의 질문도 있습니다

당신은 프레임 워크 또는 기초를 구축 할 수 있습니다

내가 실제로 전달하는 것보다 훨씬 더 중요하다고 생각합니다. Evolutionary Design 에는 아키텍처를 처음부터 작성하는 대신 시간이 지남에 따라 작성해야한다는 큰 문제 가 있습니다. 기본적으로 이것은 일반적으로 일종의 데이터베이스 또는 UI 프레임 워크를 의미합니다. 어떤 경우에는 " 좋은 아키텍처는 중요한 결정을 연기 할 수있는 것 "이라는 아이디어가 있습니다 . 그리고 데이터베이스 나 UI를 선택하는 것은 중요한 결정입니다. 예를 들어, 첫 번째 반복에서 DB를 사용하려고 시도하는 대신 인 메모리 스토리지로 데이터를 저장하는 것이 좋습니다.


3

우리가 시도하는 것은 가능한 한 가장 간단한 응용 프로그램 (우리가 제공하는 것의 hello world 버전)을 첫 번째 반복으로 제공하는 것입니다. 우리는 이것에 3 가지 중요한 이점이 있습니다 :

  • 전달 절차를 설정하십시오 (항상 가장 어려운 부분 중 하나임) (환경, 서버 설치,이 환경의 보안 업데이트). 우리가 자주 배달 할 것이므로 가능한 한 빨리이 정보를 얻는 것이 중요합니다.
  • 응용 프로그램의 모양을 사용자에게 먼저 보여줍니다. 이를 통해 사용자와 개발자는 실제로 원하는 것과 필요한 것을 이해할 수 있습니다.
  • 응용 프로그램의 아키텍처가 어떻게 보이는지에 대한 기본 아이디어가 있습니다 (응용 프로그램은 응용 프로그램의 기본 '계층'또는 구성 요소를 포함해야 함).

"배송 프로세스 설정"은 사람들이 생각하는 것보다 훨씬 어렵습니다.
Frank Shearar

그렇습니다. 따라서 가능한 빨리이 작업을 수행해야합니다.
user99561

2

그러나 초기 반복에서는 응용 프로그램이 서있는 프레임 워크 또는 기초를 구축하여 중요하지만 사용자에게는 보이지 않습니다.

나중에 사용할 수있는 프레임 워크를 구축 할 필요가 없기 때문에 이것은 잘못된 것입니다. 아이디어는 필요한 것만 빌드하는 것입니다 ( YAGNI 참조 ).

스프린트 제로에서는 실제 작업을 준비해야합니다. 많은 사람들이이 스프린트에서 무엇을해야하는지 논쟁하지만, 제 생각에는 백 로그의 항목에 대한 작업을 시작할 수있을 때 완료됩니다. 이 단계에는 PC 설정, 빌드 프로세스 설정, 프레임 워크 선택 등이 포함됩니다.

스프린트 제로 (또는 반복 제로)를 완료하면 애플리케이션 작업을 시작할 수 있습니다. 백 로그에서 항목을 가져 와서 하나씩 완료하십시오. 반복 1을 마치면 유용한 무언가가 생길 것입니다. 첫 번째 반복에는 일반적으로 가장 중요한 기능 중 일부가 포함됩니다.

이 첫 번째 반복에서 고객에게 무엇이 전달됩니까? 스캐 폴딩 코드를 빌드 할 때 올바른 방향으로 진행 상황을 어떻게 표시합니까?

반복 제로 후에는 분명히 전달할 것이 없습니다. 결과물은 반복 후 나온다. 반복에 대해 설정 한 기능이 포함되어 있습니다.

질문이 "반복 X에 들어가는 것을 선택하는 방법"이라면 이 비디오 캐스트 (반복 0A 및 B의 비디오)를 살펴보십시오 .


반복 0을 언급 한 유일한 사람 +1
crad

스프린트 제로에 대한 빌드 프로세스 설정 및 프레임 워크 작업 선택을 고려하지 않습니다. 무엇을 구축해야할지 모른다면 필요한 프레임 워크를 어떻게 알 수 있습니까? 나는 항상 스프린트 0을 최소한으로 제한합니다. 사람들에게 PC를 제공하고 앉을 수있는 공간을 찾으십시오. 비즈니스에서 대화해야 할 사람을 찾으십시오. 첫 번째 계획 회의를 설정하십시오. 나는 YAGNI를 나머지에 적용합니다.
user99561

@ user99561 프레임 워크는 큰 결정이며 일반적으로 변경하기가 어렵습니다. 예를 들어, 코드 작성을 시작하기 전에 단위 테스트에 gtest 또는 cppunit을 사용할지 여부를 알아야합니다. 나중에 바꾸는 것은 엉덩이에 엄청난 고통이 될 것이고 많은 시간이 낭비됩니다.
BЈовић

@ BЈовић : 그렇습니다. 프레임 워크는 큰 결정이므로 결정을 연기해야합니다. 개발해야 할 사항과 응용 프로그램 및 아키텍처의 모양을 모르는 경우 프레임 워크를 결정할 필요가 없습니다. 마지막 순간에 사용할 프레임 워크를 결정해야합니다. 그렇지 않으면 반드시 변경해야 할 위험을 감수해야합니다.
user99561

@ user99561 무엇을 개발해야하는지 모르는 경우 시작할 수 없습니다. :) 요구 사항과 사용자 스토리를 기록해야합니다. 그렇지 않으면 반복 1도 시작할 수 없습니다.
BЈовић

2

원하는 것을 거의 제공 할 수 있습니다. 인프라 아이디어 구축은 단순히 잘못되거나 민첩하지 않고 지속 불가능합니다.

예를 들어, 모든 기능을 갖춘 Hello World 앱을 몇 시간 안에 구축 할 수 있습니다. 클라우드에서 또는 VM으로 서버를 일시적으로 가동시키는 작업은 몇 시간 내에 완료 할 수 있습니다.

이것들은 개발을 시작하기에 충분합니다 . 그런 다음 CI가 필요한 경우 CI 스토리를 추가 할 수 있습니다. 실제 서버가 필요한 경우 스토리를 추가하십시오.

그러나 1 일째부터 배달을 시작하고 멈추지 마십시오!


1

초기 반복, 특히 첫 번째 반복에는 최소한의 발견 시간과 아키텍처 프로토 타입이 포함 된 아키텍처 스파이크가 포함되거나 계획되어야합니다.

말했듯이, 일반적으로 이해 관계자 / 고객에게 큰 의미는 없지만 강력한 플랫폼 또는 패턴 방향을 형성해야하는 구조적 요구 사항이 있습니다. A가 완료 될 때까지 B 빌드를 시작할 수 없으므로이 문제를 해결할 수 없습니다.

민첩한 접근 방식의 일부는 고객을 닫는 것이므로 전화를 받거나 이메일을 보내기 만하면되기 때문에 문서가 필요하지 않습니다. 고객의 기대는 적절하게 설정되어야하며 완료된 모든 작업은 매우 간결하고 필요 합니다. 금도금, "필요한 것"등이 없습니다. A에서 B로 옮기기 위해 필요한 것을 만드십시오.

프로젝트를 어떻게 공격하고 있는지에 따라 특정 모듈을 완성하기 위해 필요한 기초 만 구축 할 수 있으므로 스프린트 계획 회의 중에는 현재 스프린트 계획을 우선 순위에 따라 배치해야합니다. 고객은 해당 스프린트에 필요한 사항에 따라 몇 가지 기본 요구 사항이있을 수 있으므로 스프린트 1에 들어가게됩니다. 첫 번째 스프린트가 완료되고 A가 빌드 된 후 B를 완료 할 계획입니다.

고객과의 타임 라인에 동의 한 경우 해당 계약을 충족하기 만하면 고객은 1 차 또는 2 차 업무에 신경 쓰지 않을 것입니다. 단위 테스트 결과를 항상 표시 할 수 있지만, 스프린트 2 (또는 3) 이후에 볼 수있는 내용이 있고 전달하면 강력한 우선 순위가 설정됩니다. 고객은 개발자만큼 합리적이어야하며 둘 다 동일한 목표를 향해 노력하고 있습니다. 고객의 요구를 충족시키고 예상대로 작동하는 완성 된 프로젝트. 고객이 스프린트 20 이후에 프로젝트가 완료되도록하기를 원하기 때문에 스프린트 1 이후에는 볼 것이 없다고 걱정합니다.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.