"민첩한"팀에게 그들이 작성한 소프트웨어를 계획해야한다고 어떻게 설명합니까?


50

이번 주 직장에서 나는 다시 한 번 애정을 가졌다 . 표준 민첩성, TDD, 공유 소유권, 카드 한 장에 몇 가지 사용자 스토리를 넘어서는 계획을 세우지 않는 임시 개발 방법론을 겪어 실제로는 실제 작업을 수행하지 않고 타사 통합 광고 구역질의 기술에 대한 신호를 씹었습니다. 지난 몇 개월 동안 누군가의 머리에 닿는 첫 번째 테스트에 모든 생산 코드를 생각하거나 적법하게 고려하고 아키텍처 적으로 결합한 경우 릴리스주기가 끝나고 개발중인 주요 외부에서 볼 수있는 주요 기능이 너무 느립니다. 사용, 버기, 미로처럼 복잡하고 완전히 융통성이 없어집니다.

이 과정에서 "스파이크 (spike)"는 수행되었지만 문서화되지 않았으며 단일 건축 설계는 제작되지 않았습니다 (FS가 없었으므로 개발중인 것을 모르는 경우 어떻게 계획하거나 연구 할 수 있습니까? ?)-프로젝트가 한 쌍에서 한 쌍으로 전달되었는데, 각 프로젝트는 한 번에 하나의 사용자 스토리에만 집중했으며 결과는 불가피했습니다.

이 문제를 해결하기 위해 레이더를 벗어 났고 (두려운) 폭포를 밟고 계획하고 코딩했으며 기본적으로 쌍을 바꾸지 않았으며 혼자서 할 수있는 한 많은 노력을 기울였습니다-단위 테스트보다는 견고한 아키텍처 및 사양에 중점을 둡니다. 모든 것이 고정되면 나중에 올 것입니다. 코드는 이제 훨씬 나아졌으며 실제로는 완전히 사용 가능하고 유연하며 빠릅니다. 어떤 사람들은 저에게 이런 일을하는 것을 정말로 화나게했고 성스러운 민첩한 과정에 거스 르기 때문에 (무의식적으로) 나의 노력을 방해하기 위해 나갔습니다.

따라서 개발자로서 팀에 작업 계획을 세우는 것이 "민첩하지 않다"고 어떻게 설명하고 민첩한 프로세스에 계획을 맞추는 방법은 무엇입니까? (나는 IPM에 대해 이야기하는 것이 아니라 문제에 대해 앉아 문제를 해결하는 사람이 무엇을 알고 있는지 충분히 상세하게 해결해야하는 엔드 투 엔드 디자인을 스케치하는 것에 대해 이야기하고 있습니다. 그들이 사용해야하는 아키텍처 및 패턴과 새 코드가 기존 코드에 통합되어야하는 위치)


26
첫 번째 단락은 민첩성에 대한 분노처럼 들립니다. 나머지는 여전히 팀의 나머지 부분에 대해서만 맹렬한 것처럼 들립니다. 당신은 말을 바꾸고 싶을 수도 있습니다.

1
+1 사람들이 폭포와 애자일이 제공 할 수있는 최고의 이점을 얻을 수있는 실용적인 방법으로이 문제를 해결하는 방법에 매우 관심이 있습니다. 그건 그렇고 : 민첩은 "디자인 없음"과 같지 않지만 디자인은 스프린트의 끊임없는주기의 첫 번째 희생자가되는 경향이 있습니다 ...
Marjan Venema

5
글쎄요, 어느 정도까지는 "민첩한"목에 걸렸습니다. 매번 애자일은 누구나 적절한 코드 라인을 작성하는 것을 막는 것으로 보이며, 모든 것은 "우리는 문서화하지 않습니다"라는 민첩한 전제로 시작합니다. 나는 민첩한 것을 싫어하고 싶지만, 사람들이 소프트웨어를 계획하지 않도록 권장하는 한, 생산성을 높이고 최악의 위험에 처할 수 있습니다.

9
@Marjan Venema-그게 내 관심사입니다. "성공적으로 최적화하지 마십시오"와 같은 "디자인 없음"이라는 의미는 결코 "효율적인 코드를 작성하지 마십시오"를 의미하지 않았다고 확신합니다. 그러나 그것은 그것의 대량 시장 해석으로 보인다. 애자일이 의사 소통을 강조하는 방식은 훌륭하고 정말 상쾌한 변화이지만, 민첩한 세상에서 소프트웨어 자체는 나중에 생각해야 할 것 같습니다.

9
민첩한 원칙을 제대로 적용하지 못한 것에 실망한 것은 분명하지만, 이것은 질문으로 위장한 맹렬한 것처럼 보입니다. 명확하게하기 위해 : 애자일은 "계획에 따른 변경에 대한 대응"을 선호합니다. 즉, " 오른쪽 항목에 가치가 있지만 왼쪽에있는 항목을 더 중요하게 생각합니다." 계획을 너무 적게 따르는 것은 확실히 가치 가 있으며, 여기에 해당되는 것 같습니다.
Rein Henrichs

답변:


51

모든 프로젝트에는 약간의 클래식 폭포가 있어야한다고 생각합니다 (그리고 여기에서 사지로 나가고있을 것입니다) : 초기 분석 및 사양 단계가 필수적입니다. 자신이하고있는 일을 알아야하며 서면으로해야합니다. 서면으로 요구 사항을 얻는 것은 어렵고 시간이 많이 걸리며 잘못하기 쉽습니다. 그렇기 때문에 많은 사람들이 그것을 건너 뛰는 이유가 있습니다. "어쨌든 우리는 민첩하게 행동 할 필요가 없습니다." 옛날 옛적에, 민첩하기 전에, "오, 나는 정말 영리하고 이것을 해결하는 방법을 알고 있으므로 그렇게 할 필요가 없습니다." 단어는 약간 바뀌었지만 노래는 본질적으로 동일합니다.

이것은 물론 모든 황소입니다 : 당신은 당신이해야 할 일을 알아야합니다-사양은 개발자와 고객이 의도 한 것을 전달할 수있는 수단입니다.

해야 할 일을 알면 아키텍처를 스케치하십시오. 이것이 "큰 그림을 올바르게 가져 오십시오"부분입니다. 여기에는 마법의 해결책이 없으며, 올바른 방법이 없으며, 도움이 될 방법론이 없습니다. 아키텍처는 솔루션의 종합이며, 부분적으로 영감을 얻은 천재성과 부분적으로 어려운 지식에서 비롯됩니다.

이 각 단계마다 반복이 있습니다. 잘못되었거나 누락 된 것을 발견하고 고치십시오. 디버깅 중입니다. 코드가 작성되기 전에 완료되었습니다.

일부는 이러한 단계를 지루하거나 필요하지 않은 것으로 간주합니다. 실제로이 두 단계는 문제를 해결하는 데있어 가장 중요한 것입니다. 문제를 해결하면 뒤 따르는 모든 것이 잘못 될 것입니다. 이 단계는 건물의 기초와 같습니다. 잘못하면 피사의 사탑이 있습니다.

WHAT (귀하의 스펙)와 HOW (아키텍처-상위 레벨 디자인)가 있으면 작업이 수행됩니다. 보통은 많이.

원하는대로 작업을 수행하고 원하는대로 할당하십시오. 당신이 좋아하거나 당신에게 맞는 요일의 방법을 사용하십시오. 그리고 당신이 어디로 향하고 있는지, 그리고 무엇을 성취해야하는지 알고, 그러한 작업을 수행하십시오.

그 과정에서 잘못된 추적, 실수, 사양 및 아키텍처에서 발견 된 문제가 발생합니다. "그런 계획은 시간 낭비 였어요." 어느 것도 황소입니다. 그것은 나중에 처리 할 수있는 LESS 파열이 있음을 의미했습니다. 높은 수준의 초기 시절 문제를 발견하면 FIX THEM.

(그리고 부수적 인 문제 : 비싸거나 어렵거나 불가능한 사양을 충족하려는 시도가 계속해서 큰 유혹이 있습니다. 올바른 대답은 다음과 같습니다. "구현이 깨졌습니까? 사양이 변경 되었습니까? "사양을 변경하여 문제를 빠르고 저렴하게 정리할 수 있다면 이것이 바로 사용자가해야 할 일입니다. 때로는 클라이언트와 작동하지만 때로는 작동하지 않습니다. 묻지 마십시오.)

마지막으로 테스트해야합니다. 당신은 TDD 또는 당신이 좋아하는 다른 것을 사용할 수 있지만 이것이 당신이 말한 것을 행했다고 보장하지는 않습니다. 도움이되지만 보장 할 수는 없습니다. 따라서 최종 테스트를 수행해야합니다. 소프트웨어 검증이나 불도저 제작 등 프로젝트 관리에있어 대부분의 접근 방식에서 검증 및 검증과 같은 것들이 여전히 중요한 이유입니다.

요약 : 모든 지루한 지루한 것들이 필요합니다. 애자일과 같은 것을 전달 수단으로 사용하지만 구식 사고, 구체화 및 건축 디자인을 제거 할 수는 없습니다.

[현장에 1000 명의 노동자를 배치하고 몇 가지 일을 할 팀을 구성하도록 지시함으로써 25 층 건물을 진지하게 기대 하시겠습니까? 계획없이. 구조 계산이 없습니다. 건물이 어떻게 보일지에 대한 디자인이나 비전이 없다면. 그리고 그것이 호텔이라는 것을 아는 것만으로도. 아니요-그렇게 생각하지 않았습니다.]


11
+1. 내가 할 수 있다면 +10 나중에 무엇을 구축하고 있는지에 대한 좋은 아이디어가 없다면 나중에 디자인을 수정하더라도 일부 초기 디자인 작업에서만 나올 수 있습니다. 다음은 개발 패러다임입니다. 벽을 부수고 무엇이 붙어 있는지 확인하십시오. "
앤트

5
-1. 사람과 고객이 항상 마음을 바꾸므로 세부 사양이 마음에 들지 않으므로 사양과 앞면 디자인은 의미가없고 낭비는 아닙니다. 따라서 "요구 사항 수집"에 시간을 낭비하는 대신 가능한 빨리 클라이언트에 표시되는 작동중인 소프트웨어를 작성해야하므로 다음 단계에 대한 실제 피드백을 얻을 수 있습니다 . 추측하고 추측하는 대신. "규격은 의사 소통의 수단이다": 나는 내 고객들과 이야기 하고 반복적으로 일하는 것을 선호 하지만, 각자 자신의 것으로 생각한다.
Martin Wickman

6
+1. +1하면 +10 나는 건물 소프트웨어의 총체가 건물의 비유를 만드는 것과 같습니다. 그렇습니다. 소프트웨어는 물리적이지 않습니다. 그렇습니다. 올바르게 수행되면 모듈성이 높고 분리 될 수 있습니다. 그러나 고도로 모듈화되고 분리되는 것은 매우 어렵습니다. 그것이 시간과 계획을 필요로하는 것입니다. 소프트웨어 엔지니어링에는 항상 계획이 시간 낭비라고 생각하는 사람들과 그렇지 않은 사람들이라는 두 가지 캠프가 있다는 것을 깨달았습니다. 그리고 당신은 사람들이 캠프를 바꾸지 않는다는 것을 깨달았습니다. 나는 고도로 계획된 환경에서 일하고 ...

6
나는 당신과 동의하지만, 당신이 묘사하는 것은 정말 민첩합니다. 애자일은 "디자인이 아닌"큰 디자인이 아니라고 말합니다. 이것은 거대한 단단한 메가 엔터프라이즈 폭포 괴물 프로젝트에 대한 응답으로 알려져 있습니다. 코드에 적합한 아키텍처를 설계하고 찾지 않는 것에 대한 변명이 아닙니다. 요점은 코딩을 시작하기 전에 모든 디자인을하는 데 몇 주 또는 몇 달을 소비하지 않는 것입니다. 왜냐하면 디자인은 잘못 될 것이기 때문에 더 잘 알아 차릴 수 있기 때문입니다. 빠른 피드백을
sara

5
Kai-Agile은 사양도없고, 계획도없고, 그냥 뛰어 들기위한 변명으로 사용 된 것을 본다. 그리고 그것은 명백한 잘못이다.
quick_now

36

많은 사람들이 TDD가 단위 테스트를 먼저 작성하는 것을 의미한다고 생각하는 것에 여전히 놀랐습니다. 아니요, 코드를 작성하기 전에 필요한 테스트를 작성해야합니다. 실제로 테스트는 단위 테스트, 통합 테스트, 엔드 투 엔드 테스트 및 물론 성능 테스트가 될 수 있습니다 (테스트 된 코드 전에 성능 테스트를 작성하지는 않지만 전혀 작성해서는 안 됨). 필요한 테스트 유형은 사용자 스토리에 대한 완료 정의에서 볼 수 있어야합니다. 사용자 스토리에 대한 승인 기준 중 하나에 해당 기능이 500 명의 동시 사용자와 500ms 이내에 결과를 제공해야한다고 표시되면 성능 테스트가 완료 될 때까지 사용자 스토리를 완료된 것으로 간주 할 수 없습니다. 자동 테스트가 완료되면 다른 기능을 추가 할 때 매일 통과하는지 확인할 수 있습니다.

수락 기준이 올바르게 정의되지 않았고 성능을 테스트 할 수없는 것 같습니다. 여전히 실제 환경에 배포하고 과부하 상태에서 사용하면 응용 프로그램의 성능이 저하 될 수 있지만 요구 사항이 실패로 간주 될 수 있습니다 (요구 사항이 정의되지 않은 경우 개발자가 작업을 수행 할 때이를 염두에 두지 않음) 코드) 또는 개발 팀 (정의 된 요구 사항에 대한 테스트가 충분하지 않음).

또 다른 흥미로운 점은 팀의 개발자가 단일 사용자 스토리에 집중하고 있다는 것입니다. 애자일은 커뮤니케이션에 관한 것이므로 개발자는 사용자 스토리에 필요한 내용과 그것이 애플리케이션의 나머지 부분에 어떤 영향을 미치는지 커뮤니케이션해야합니다. 협업은 필수입니다. 테스트는 또한 한 개발자가 다른 사용자 스토리에 필요한 기능을 중단 한 경우 자동화 된 테스트에서 볼 수 있도록이를 포함해야합니다. 여전히 충분하지 않거나 작동하지 않는다고 생각되면 팀 전체가 협력하여 응용 프로그램의 아키텍처를 토론하는 아키텍처 회의를 소개 할 수 있습니다. 일반적으로 일주일에 한 번 그러한 모임을 갖는 것으로 충분합니다.

워터 폴 프로세스의 많은 것들이 통신 및 자동 테스트로 대체됩니다. 아무도 고급 문서 나 디자인을 작성할 수 없다고 말합니다! 당신은 많은 팀이 Wiki를 사용할 수 있습니다.


7
탁월한 답변 +1. 이야기는 목표입니다. 빙산의 일각, 미래 대화의 자리 표시 자, 여행의 첫 단계입니다. 전체 여행이 아닙니다! 테스트 설명은 요구 사항, 사용 사례 및 승인 기준을 결합한 것입니다. 디자인은 무시되지 않고 디자인은 스토리와 테스트로 범위가 제한되지만 필요한만큼 디자인을 수행합니다 . 디자인을 건너 뛰고 민첩한 방법이라고 주장하는 사람은 이해하지 못하거나 (XP 책을 다시 읽으십시오) 원하지 않고 (카우 보우 코딩 yee-haw!), 또는 게으르고 있습니다. 그리고 애자일에게 나쁜 이름을주었습니다.
Steven A. Lowe

16

[저희 제품은 사용하기에 너무 느리고, 버그가 많으며, 미로처럼 복잡하고 완전히 융통성이 없습니다.

그것은 애자일과 관련이 없으며 프로그래머가 제대로 작업을 수행하지 않는다는 신호입니다.

민첩성의 기본 아이디어 중 하나는 팀이 프로세스를 완벽하게 제어 할 수 있다는 것입니다. 즉, 계획, 문서화, 테스트 양 및 리팩토링 처리 방법에 동의해야합니다. 그 모든 힘은 훌륭하지만 책임도 수반되며 이것은 아마도 팀이 실패한 곳일 것입니다. 그들은 그들의 자유를 받아 들였지만 그들의 책임을 무시했다.

결국 코드 품질에 대해 설명하고 코드 품질을 높이고 유지하는 방법에 동의하려고 노력하는 것입니다. 실제로는 일반적인 프로그래밍 방법이 적용됩니다.

전문가 팁 : "완료 정의"를 사용하여이를 시행하십시오. 모든 사람이 동의하고 모든 사람이 볼 수 있도록 배치하십시오. 스토리 완료 여부를 결정하기 위해 엄격한 게이트 키퍼로 사용하십시오. 비 기능적 요구 사항 (성능과 같은)을 해당 목록에 추가 할 수도 있습니다.


1
"자신의 자유를 받아 들였지만 책임을 소홀히했다"는 민첩한 성벽에 배너가되어야 할 것입니다. "자유와 함께 책임을 받아들였습니까?"
Andy Dent

좋은 대답입니다. DoD를 이러한 방식으로 계약으로 사용할 때 회고의 중심이되는 것이 좋습니다. 이 DoD는 고객의 가치를 높이는 데 어떻게 도움이 되었습니까?
Graham Lee

11

네. 당신의 팀원은 바보입니다. 애자일 때문에 프로젝트가 빨려 들었습니다. 기분이 나아지 다? 알았어, 계속하자 :피

나는 당신과 당신의 팀이 당신의 자본 M 방법론의 이름에 덜 집중하고 당신이 쓴 소프트웨어가 왜 그렇게 느리고 버그가 많은지에 대해 더 잘못하면 무엇이 잘못되었는지에 대해 더 효과적으로 의사 소통 할 수 있다고 생각합니다. 민첩성 또는 폭포 라는 용어를 전혀 사용하지 마십시오 . 그들은 분명히 감정적으로 당신의 사무실에로드됩니다.

애자일은 때때로 작동합니다. 이번에는 팀에서 작동하지 않았습니다. 어떤 사람들은 그것이 애자일을 잘못했기 때문이라고 말할 것입니다. 결국, 애자일은 작동합니다. 만약 당신이 올바르게했다면 효과가 있었을 것입니다. 도대체 무엇이.

누군가가 실패했다는 데 동의하지 않는 것처럼 들리지만, 방법론을 비난하면 친구를 사귀거나 사람들에게 영향을 미치거나 다음에 더 나아지지 않을 것입니다. 그것은 실제로 잘못 된 것과 거의 관련이 없었습니다.

대신 실패의 가장 직접적인 원인을 찾아 내고 팀과 협력하여 다시 발생하지 않도록하십시오. 이것은 사람들의 기술이 필요합니다.

사람들의 기술에 대해 말하면, 당신은 당신의 팀이 그들의 모든 일을하고 그들이하는 것보다 더 나은 일을함으로써 그들이 나쁜 것처럼 보이게 만드는 것에 대해 감사하지 않았다는 것에 놀라지 말아야합니다. "레이더 아래에서"이 작업을 수행하면 팀의 효과적인 구성원이되기 위해 일부 관계를 다시 구축해야합니다.

이런 상황을 보는 가장 좋은 방법은 팀의 장기 총 생산량을 전체적으로 고려하는 것입니다. 이번 주에 시간을 절약했을 수도 있지만 더 나은 을 구성하여 회사에서 장기적으로 더 잘했을 수 있습니다 .

나는 당신에게이 모든 것들을 말하고 있지만, 당신은 아마도 당신이 이미 대부분을 알고 있고 당신이이 상황에 너무 가까워지지 않으면 다른 사람에게 설명 할 수 있다고 생각합니다.


9

토론에 불쾌한 인용문을 추가하고 싶다면 아이젠 하워가 좋은 말을 한 것입니다.

"계획은 아무것도 아니다. 계획은 전부이다."

http://www.brainyquote.com/quotes/quotes/d/dwightdei149111.html

그는 계획을 변경해야하므로 계획에 너무 많은 가치를 두지 말아야하지만 동시에 계획 프로세스는 에너지를 중요한 방식으로 집중시킵니다. 테스트하고 세분화하기 전에 계획을 세워야합니다.


9

+1 최근에 읽은 엔터프라이즈 민첩성에 대한 최고의 설명입니다.

애자일을하는 사람들은 이것이 결코 의미가 없다고 지적하지만, 일단 모든 사람들이 메트릭스에 빠지면 이것은 제품의 품질에 대한 열정이없고 팀에 집착하는 것입니다. 다른 모든 사람을 대상으로 한 주별 배달 마감일을 충족하거나 그 밖의 모든 것을 대상으로 테스트 적용 범위를 테스트하면 주 단위로 관리 수준에 도달하기 때문입니다.

나는 이것이 re-org보다 적은 것으로 고정 된 것을 본 적이 없다. 당신이 정말로 열정적 인 사람들을 끌어 들이기 위해 특별한 것이없는 중급 회사라면, 다음 경영진이 때때로 방법론을 바꾸지 않는 한 그것을 고치지 않을 것입니다.

애자일은 개발자 팀이 필요로하는 추가의 무자비한 작업에도 불구하고 좋은 제품을 만들기 위해 충분히 신경 쓰는 조직에서만 잘 작동하는 것 같습니다. 효과적으로 그들은 자신의 시간에 그것을 좋게하고 개선을 위해 싸울만큼 충분히주의를 기울여야합니다 (일부 TDD 경우에 여분의 시간을 재실행 할 의사가 있습니다)

당신은 분명히 좋은 제품을 배송하는 것에 관심을 가지고 있으며, 그들은 분명히 일련의 동작을 수행하고 그들이 지불하는 혼란을 지속적으로 정리하기 위해 급여를받는 것에 대해 관심을 가지고 있습니다.

민첩한지 아닌지 다른 곳에서 덜 짜증나는 직업을 찾고 싶습니다.

애자일에 완전히 타 버린 경우에도 여전히 다른 방법론을 수행하는 곳이 많이 있습니다. 예를 들어 입찰 또는 계약에 관한 거의 모든 것.


1
그것은 실제로 내가 읽은 민첩성의 최악의 정의입니다. 개발자는 추가 및 무자비 작업을 수행 할 필요가 없습니다. 또한, 바보 만이 자신의 시간에 작동합니다. 코드 테스트에 소요되는 시간은 투자에 많은 시간이 소요됩니다.
BЈовић

애자일 (Agile)은 엔터프라이즈 급 수준의 레드 테이프로 자주 등장한다는 짐승으로 변했을 때 최악의 민첩성을 인정하지 못했습니다. 기업 이외의 다른 테이프 색 환경에서 팀은 이야기로 또는 이야기를하기 전에 이러한 작업을 수행합니다. 애자일이 기업 통계 지표가되면 유연성은 일반적으로 가장 먼저되어야한다는 것입니다.
Bill

4

나는 일종의 하이브리드를 사용하는 경향이 있습니다. 전반적인 계획은 폭포이지만 실행에는 민첩성이 있습니다.

제 생각에 상황이 당신이 말하는 것처럼 나쁘면 팀이 실제로 민첩성을 사용하지 않고 단지 게 으르거나 훈련되지 않은 것입니다. 애자일은 계획이 아니라 유연성과 민첩성에 관한 것입니다.


나도 그렇게 생각하는 경향이 있습니다. 나는 진정한 민첩성이 계획이 아니라고 생각합니다. 그것은 단지 그것의 하나의 해석 일뿐입니다.

대문자 "A"애자일과 소문자 ""애자일 사이에는 차이가 있습니다.
Aaronaught

Pssst ... 민첩한 사람들에게 말하지 마십시오. 왜냐하면 그것이 작동하기 때문에 거의 모든 폭포 사람들이 그것을 수행하는 방식이기 때문입니다. 그들은 여전히 ​​모든 폭포수 개발자들이 코드를 작성하지 않고 모 놀리 식 문서를 작성하고 끝까지 모든 단계에서 구현이 없기 때문에 모든 것이 잘못되었다고 생각합니다.
Dunk

4

우리는 일부 직원들에게도 같은 문제가 있습니다.

기본적으로 "쓰기 전까지 모르겠다"는 가장 좋아하는 문장입니다. 그래서 우리는 반대 방향으로 나아가서 클라이언트와 협력하여 사인 오프 포인트로 결과물을 정의했습니다. 마지막으로 "현재 X를 수행하는 코드를 작성하십시오".

"재미 있고 재미있는 코드를 작성"하는 것과 같은 제공 가능한 스프린트에서 "쓰기 디자인 / 테스트 / 계획 등"을 가지고 있다면 첫 번째 부분은 결코 일어나지 않습니다.

그러나 "내가 구축 할 내용과 클라이언트가 사인 한 것을 말할 때까지 재미 있고 흥미로운 코드를 만들지 않아도된다"고하면

  • 당신은 먼저 불평을 받아들이고 약간의 눈물을 흘 렸습니다. 공작 작업과 여분의 노력을 많이해야했습니다 ...
  • 그런 다음 종이에 첫 번째 버전을 시도하는 것이 더 낫다는 "그런 과정이 어땠습니까?"
  • 그런 다음 개발자가 볼 수있는 테스트 사례가 있으며 "무엇을 의미하는지"에 대한 기대치를 정확하게 가리킬 수 있습니다.
  • 고객이 개발에 서명하면 거부율이 80 % 줄어 듭니다.
  • 또한 모든 개발자가 디자인 문서를 들고 디자인을 통해 서로 이야기하는 것을 지켜보십시오 ... 그들은 실제로 그것을 얻기 시작합니다.
  • 그런 다음 프로젝트 계획을 한 입 크기의 덩어리로 나누고 그 밖으로 프로세스를 만드는 방법을 알아 봅니다.

고객이 계획을 변경하면 민첩한 부분이 나오고 2 주일 이내에 적응할 수 있습니다.

우리의 경우 "큰 디자인 선결제"는 평균 5 개의 하위 단계로 9 단계 (실제 생산 릴리스)로 나뉩니다. 디자이너와 개발자는 서로 보조를 맞추고, 디자이너는 개발자보다 1 ~ 3 단계 하위 단계에 있습니다 ... 너무 멀고 개발 발견으로 인해 너무 많은 디자인이 깨지고 너무 가깝고 조정되어 비용이 많이 들었습니다. 개발 내에서 이미 "돌로 설정"을 구현했습니다. 각 하위 단계는 1 명의 개발자에게 가치가있는 2-4 스프린트입니다.

소규모 프로젝트에서는 동일한 개발자가 먼저 디자인> 사인 오프> 송장> 개발> 사인 오프> 송장 ...주기를 동일하게 수행합니다.

테스트 명명 문제

테스트에는 많은면이 있으며, 공식적으로 하위 섹션이있는 약 7 개의 테스트 범주가 있습니다.이 중 하나는 "자동 단위 테스트 작성"입니다.

개발자가이 테스트에서 "테스트"의 의미를 이해하기 때문에 "첫 번째 개발 테스트"라는 것은 나쁜 이름입니다. 테스트를 구현을위한 인터페이스에 대한 테스트를위한 실제 코드를 작성하는 것으로 간주합니다. 그것이 실제로는 아니지만 ... 코드 작성과 관련 하여이 작업을 수행 할 수는 있지만 실제로는 "코드를 작성하기 전에 사용 사례 및 사용자 사례에 대한 디자인의 유효성을 검사합니다"... 개발 과정에서 일반적으로 발견 된 문제 중 훨씬 더 저렴한 "폐기 될 수있는"버전의 문서입니다.


3

애자일의 핵심 요소 중 하나는 지속적인 개선 아이디어와 팀 전체가 프로젝트를 소유한다는 아이디어입니다. 따라서 올바른 접근 방식은 팀의 문제를 검토하고 팀이 문제를 해결하는 방법을 결정하도록하는 것입니다.

한 팀원이 스스로 출퇴근하여 애자일의 모든 원칙을 버리고 자신의 방식으로 일을 수행하면 적은 양의 코드가 제대로 작동하지만 전체 프로젝트를 긍정적으로 발전 시키지는 않습니다.


프로젝트를 진행하는 것이 정확히 무엇처럼 나에게 소리 않았다 않습니다. "팀과의 검토"는 실제로 솔루션이 아니라 솔루션을 연기하고 책임을 전파하는 방법 일뿐입니다.
Aaronaught

팀은 이미 결과에 대한 책임이 있습니다. 그들이 필요로하는 것은 누군가가 "우리는 엉망이고, 우리는 어떻게 우리의 방법론을 바꾸는가?"라고 말하는 것입니다. 그런 다음 수정합니다.
Dave

2
특정 팀에 필요한 것은 회원들이 이해하지 못하는 과정을 맹목적으로 따르는 대신 스스로 생각하는 방법을 배우는 것입니다. 이미 반향 실이면 말을해도 아무런 효과가 없습니다.
Aaronaught

2

한 가지 방법은 일을 얻을 수 있습니다 귀하의 질주를 모두 커버하는 T-지도하기 위해 다시 로그

T- 맵

각 팀에는 스레드가 있으며 각 스프린트는 기간입니다. 그것은 모두 함께 묶입니다 (팀이 넘어지는 것처럼 보입니다). 이것을 어딘가에 고정시키고 쌍 / 하위 팀을 나타내는 자석을 얻습니다. 그들은 심지어 '레이스'할 수 있습니다. 그러나 모든 사람은 자신과 다른 팀이 어디에 있는지 알고 있습니다. 여기에 의존성을 두십시오.

여기서 요점은 전체 프로세스를 전달하지만 스프린트로 나눕니다. 첫 스프린트 만 ​​설치되어 있고 다른 기간이 비어 있더라도 프로젝트를 마무리하기위한 훌륭한 로드맵이되어야합니다.


1

두 가지 문제가 있습니다. 요구 사항이 충분하지 않고 아키텍처가 열악합니다.

요구 사항

전반적인 최종 목표와 목표 달성 방법에 대한 자세한 로드맵이 필요합니다.

폭포 세계에서 최종 목표는 기능 사양이며,이를 달성하는 방법에 대한 로드맵은 프로젝트 계획입니다.

민첩한 세상에서 한 가지 방법은 장대 한 사용자 스토리에서 캡처하는 것입니다. 그런 다음 로드맵은 서사시의 세부 사항을 구체화하는 자세한 사용자 사례입니다.

서사적 인 이야기는 전체 아이디어를 얻을 수있는 충분한 고기를 결코 포착하지 못하기 때문에 나는 그 이야기에 완전히 만족하지 못했습니다. 그래서 내가 사용하려는 것은 서사시 사용자 이야기와 함께 높은 수준의 시스템 요구 사항 문서입니다. 그 후 로드맵은 자세한 사용자 사례입니다.

시스템 요구 사항 문서를 작성하는 데있어 좋은 점은 많은 사용자 사례에 대한 승인 기준을 도출 할 수 있다는 것입니다.

높은 수준의 시스템 요구 사항 문서는 마케팅에서 기술적으로 정통한 고객에게 제품을 판매하는 데 사용할 수있는 "컷 시트"로 생각하십시오.

건축물

"절단 시트"가 제공하는 것 중 하나는 설계중인 시스템에 경계를 두는 것입니다. 이를 통해 초기에 사용할 아키텍처에 대한 정보에 근거한 결정을 내릴 수 있습니다.

팀에서 이러한 문서를 일찍 가지고 있었다면 나중에 시스템을 다시 설계해야하는 어려움을 겪지 않아도됩니다.


사실, 세 번째 문제는 의사 소통이 좋지 않다는 것입니다. 의사 소통은 양방향 거리 (또는 여러 사람 사이의 다 방향)입니다. 그러나 그것은 단지 인간의 실패 일 뿐이며 때로는 올바른 인간의 노력을 필요로합니다.

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