Agile akceptuje to że "zmiana" jest nieodłącznym elementem w świecie IT i wysuwa ją na pierwszy plan, oferując wiele różnych rzeczy które mają tę idee wzmocnić.
Tautologia. Każdy projekt z założenia ma coś zmienić. A jeżeli chodzi o zmiany zakresu projektu - to nie "w świecie IT", tylko "przy aplikacjach enterprise, i w dodatku takich które nie są krytyczne".
Nie. Agile po prostu dzieli duży projekt na mniejsze projekty (zwane iteracjami) i minimalizuje okład na start i koniec każdego małego podprojektu. Przy czym taka iteracja nie jest w żaden sposób bardziej przyjazna zmianom niż projekt zarządzany np. waterfallem. Różnica jest tylko taka, że te projekty są mniejsze wobec czego potencjalna zmiana nie musi psuć wszystkich następnych iteracji.
Użyłem bardzo ogólnego stwierdzenia, bo to właśnie nie jest "zmiana" tylko w zakresie projektu, czyli w wymaganiach (nie)funkcjonalanych.
W klasycznym waterfallu zanim przejdziesz do następnej fazy musisz zamknąć poprzednią fazę, a to oznacza że po fazie analizy wymagania są zamrożone i nie możesz ich już mienić do końca trwania iteracji, które w waterfallu zwykle są liczone w miesiącach, w Agilu mrożenie występuje jedynie na czas bardzo krótkich iteracji.
W klasycznym waterfallu poszczególne komponenty są integrowane dopiero pod koniec fazy implementacji, w Agilu masz ciągłą integracje.
W klasycznym waterfallu, możesz zacząć testowanie dopiero jak wszystkie poprzednie fazy masz skończone, w Agilu masz ciągłe testowanie.
W klasycznym waterfallu po zakończeniu fazy analizy, klient nie ma nic do powiedzenia, i po kilku miesiącach/latach dostaje zwykle nie to co chciał, w Agilu masz ciągłą współpracę z klientem.
W klasycznym waterfallu musisz mieć wszystko udokumentowane, w Agilu głównie działające oprogramowanie.
i tak dalej ....
Klasycznego waterfalla nie robi sie już od lat, wszystkie projekty obecnie, w mniejszym lub większym stopniu bazują na Agile.
Swoja drogą to straszni z was pesymiści, nie wszystkie projekty w Polsce to jakiś smutny outsourcing, w którym terminy grają większą role niż jakość, a menagment nie ma większego pojecia o wytwarzaniu oprogramowaniu - w takowych warunkach wszystko jest skazane na porażkę.
No pewnie, że nie wszystkie. Ale przecież traktowanie jakości priorytetowo nie ma nic wspólnego z Agilem.
Oczywiście że ma, jest to uwzględnione w zasadach z manifestu agile : http://agilemanifesto.org/ i jeszcze bardziej podkreślone w manifeście softwarecraftsmanship http://manifesto.softwarecraftsmanship.org/.
Problemem przy tworzeniu oprogramowania jest to, że wielu rzeczy nie da się zmierzyć - a jeśli czegoś nie da się zmierzyć to dla managementu nie istnieje. Ot chociażby czytelność kodu - w dużych systemach ma to ogromne znaczenie. Ale nie da się go zmierzyć, czytelność przecież jest czymś subiektywnym (analiza statyczna kodu nie ocenia czytelności). Kiedy ostatnio słyszałeś o dyrektorze działu, który powie PMowi "słuchaj, przypilnuj żeby ten kod dało się czytać"?
Tak samo nie da się zmierzyć wydajności programisty (przy czym programiści nie są wyjątkowi w tej kwestii - nie da się zmierzyć wydajności wielu innych zawodów). No bo jak to niby obiektywnie zmierzyć? Liczbą dostarczonych funkcjonalności (funkcjonalność funkcjonalności nierówna)? Zrealizowanych story-points w sprincie (szacunki w story pointach są też skrajnie subiektywne)? Z drugiej strony - pracując w zespole dosyć szybko orientujesz się, kto co potrafi.
I dokładnie ta niemierzalność jest tym, dlaczego wynajduje się coraz to inne praktyki zarządzania zespołami informatycznymi. Dlatego kiedyś trzeba było produkować stosy dokumentacji której i tak nikt nie czytał. Dlatego teraz nazywa się PMów "Scrum masterami".
Cały ten akapit jest o Scrumie a nie o Agilu, w Scrumie podstawową jednostką jest samo organizujący się zespół, a nie indywidualny programista.
Indywidualny programista w Scrumie nie istnieje, zespół bierze odpowiedzialność i zespół jest rozliczany.
Zespół jest odpowiedzialny za organizacje pracy, jeśli dyrektor ma coś narzucać zespołowi w kwestiach tego jak pracuje to nie jest ani Scrum, ani Agile.
Story-pointy służą do oszacowania prędkości zespołu, żeby wiedzieć ile zabrać na następny sprint, do niczego więcej!
Jeśli porównujesz za pomocą nich indywidualnych programistów, czy różne zespoły to nie jest Scrum.
Jeśli Scrum master wykonuje obowiązki PM, to również nie jest Scrum.
To że już nie trzeba produkować stosów dokumentacji jest właśnie zasługą propagacji idei Agilu, gdyby nie Agile to ciągle by to trzeba było robić.
Jeszcze raz chce podkreślić że Agile czyli programowanie zwinne to coś znacznie więcej niż Scrum, Scrum to tylko maleńka cząstka Agilu, i z punktu widzenia nas programistów najmniej istotna. Praktyki Agilowe w różnym stopniu już dawno przeniknęły wszędzie, tyle że nie wszyscy zdają sobie sprawę że to właśnie pochodzi z Agilu, a Agile kojarzy się tylko z zarządzaniem zespołem i Scrumem.