Jak radzić sobie z zależnościami „zewnętrznymi” w scrum?

13

Jeśli zaplanowałeś kilka historii użytkowników na sprint, a jedna historia kandydata zależy od tego, czy jakiś zewnętrzny dostawca dostarczy coś do twojego zespołu. Na przykład dostawca usług internetowych dodaje nowe wywołanie API do swojego systemu lub włącza konto testowe w swoim systemie lub tym podobne.

Wiesz, że nadejdzie „wkrótce”.

Czy dodajesz historię do sprintu, mając nadzieję, że dostarczy to, co jest potrzebne, aby ukończyć historię, czy też czekasz do następnego sprintu, kiedy wiesz, że będzie gotowy i możesz zacząć natychmiast, nawet jeśli oznacza to, że nie można rozpocząć historii tak wcześnie, jak to możliwe.

Jeśli to pierwsze, jak poradzić sobie z „niezarobionymi” punktami historii utraconymi z powodu zależności? częściowy kredyt (eek!) lub weź go na podbródek.

TygerKrash
źródło

Odpowiedzi:

12

Ostatecznie zależy to od tego, czy masz 100% pewności, że zewnętrzny dostawca dostarczy coś, czego możesz użyć, do momentu, kiedy będziesz go potrzebować.

Jeśli nie możesz być pewien, że dotrą na czas, nie dodawaj historii do sprintu. Jednak tylko dlatego, że zawsze dostarczali w przeszłości, nie ma gwarancji, że tym razem dostarczą.

Powinieneś poinformować klienta, że ​​ta zależność istnieje i że będziesz musiał poczekać, aż interfejs API (lub cokolwiek innego) stanie się dostępny, zanim będziesz mógł zaplanować pracę.

Na plus mogą być aspekty historii, które możesz przedstawić - tzn. Podzielić je dalej, dopóki nie odizolujesz zależności w jak największym stopniu. Może to pozwolić ci opowiedzieć trochę historii, zanim dostawca dostarczy swoją pracę.

Jedną rzeczą, którą możesz zrobić, to stworzyć interfejs między kodem a interfejsem API strony trzeciej. Kodujesz do swojego interfejsu, aby reszta projektu mogła być kontynuowana i dopóki nie będziesz mieć prawdziwego API, użyj makiety, aby zwrócić przykładowe dane. Następnie, gdy pojawi się prawdziwy interfejs API, wystarczy zmienić kod za interfejsem, co nie wpłynie na resztę aplikacji. Zrób to tylko, jeśli możesz zgodzić się z dostawcą interfejsu API, że ich interfejs się nie zmieni (przynajmniej nie drastycznie).

ChrisF
źródło
Czy zaproponowałbyś kiedyś „udawanie” interfejsu API, jeśli nie stanowi to zbyt dużego problemu?
JeffO
@JeffO - cóż, to zależy. Jeśli potrzebujesz prawdziwych rezultatów, może to stanowić problem, a interfejsy API mogą ulec zmianie.
ChrisF
2
@JeffO Nie sfałszowałbym API w oderwaniu, ale można się przekonać o uzgodnieniu wspólnego interfejsu, przed którym można kodować. Nawet gdy przychodzą komponenty innych firm, ochrona twojego kodu przed bezpośrednim wywołaniem go nie jest złym pomysłem.
Adam Lear
Tak więc w zarządzaniu projektami jest to dyskusja na temat ryzyka.
Jamie Clayton
12

Zespół jest tym, który podejmuje zobowiązanie. W naszym zespole, jeśli czujemy, że czekamy (na przykład) na zewnętrznego programistę, nauczyliśmy się mówić, że nie jesteśmy gotowi na opowieść. Historia nie jest w stanie nadawać się do odbioru.

Istnieje bardzo duża szansa, że ​​opóźnione, nieoczekiwane lub inne dostarczenie z zasobu zewnętrznego spowoduje, że Twoje szacunki i priorytety mogą ulec zmianie.

Dopóki nie zdobędziesz wszystkich informacji, zespół nie powinien być tak naiwny, by myśleć, że może ukończyć historię. Jeśli powiedzą, że mogą, to przychodzi późno, w oczekiwanym formacie lub wcale nie zawiódł.

Brzmi ostro, ale chcę się przekonać.

Kieren Johnstone
źródło
4

W Scrumie znajduje się definicja gotowych i gotowych do opowiadań użytkowników. W sytuacji takiej jak Twoja ważne jest, aby mieć gotową definicję, którą wszyscy interesariusze rozumieją i zgadzają się z nią. Na przykład wydaje się bardzo rozsądne, aby mieć linię w definicji gotowej, taką jak:

  • Wszystkie zewnętrzne interfejsy API potrzebne w historii muszą zostać dostarczone i przetestowane.

Jeśli potrzebujesz tego interfejsu API, aby dodać wartość do swojego produktu, logiczne jest, aby poczekać, aż naprawdę będziemy mieć ten interfejs API, aby rozpocząć naszą pracę. Tymczasem możemy robić inne USA, które dodają wartość do produktu, naprawdę nie lubię tego USA z fałszywymi implementacjami i tym podobnymi, jeśli nie ma rzeczywistej wartości dla klienta, nie ma USA, jego strata czasu i zasobów .

AlfredoCasado
źródło
Nie ma Definicja Gotowy w Scrum ram. Jest to dodatek, czasem tradycyjna bramka fazowa, z której korzystają niektóre organizacje.
Alan Larimer
2

Jeśli czekasz na coś, czego jeszcze nie wiesz, nie możesz tego zaplanować, nawet jeśli masz 100% pewności, że zostanie ono dostarczone jutro. Dlaczego? Ponieważ jeśli go nie znasz, nie możesz nawet oszacować jego złożoności, a jeśli nie możesz go oszacować, nie możesz go zaplanować.

Jeśli wcześniej zdefiniowałeś jakieś „interfejs” / „kontrakt”, za którym musi podążać firma zewnętrzna, możesz go zaplanować i stworzyć próbną usługę po swojej stronie. Twój program użyje fałszywej usługi, więc nie będzie zależał od zewnętrznej dostawy. Nadal należy opracować symulację dla sprintu, w którym zostanie dostarczona prawdziwa usługa, ponieważ funkcja opracowana i przetestowana w stosunku do makiety nie została ukończona - należy ją przetestować z prawdziwą usługą, aby uznać ją za ukończoną na koniec sprintu.

Ladislav Mrnka
źródło
2

Komunikacja i umowy

Dwa systemy są zintegrowane przez programistów, a nie przez samą metodologię. Jeśli firma zdecyduje się na zintegrowanie systemu zewnętrznego, zostanie zawarta umowa między (minimum) 2 podmiotami. Umowa musi zapewniać integrację . W związku z tym, jeśli porozumienie między firmami nie wymaga współpracy technicznej między oboma działami, problemem nie jest metodologia rozwoju. Problemem jest metodologia biznesowa (w zasadzie umowa) .

Powiedziawszy to, należy wziąć pod uwagę ryzyko podczas planowania tych spraw, a biorąc pod uwagę, że nie znasz prędkości zespołu, musisz być hojny z tymi marginesami.

W jaki sposób kierownik projektu może zarządzać zależnością od zespołu zewnętrznego?

/pm/1400/how-can-a-project-manager-manage-a-dependency-on-an-external-team

marcocs
źródło
1

Jeśli to nie zależy od twojego zespołu i możesz wykonywać inne zadania, radzę ci wziąć je tylko wtedy, gdy będzie gotowe. Nawet jeśli masz makietową usługę internetową, schemat, interfejs i / lub umowę, może ona nadal się rozpaść (pamiętasz Prawo Murphy'ego?).

Pedro Polonia
źródło