-
Data: 2011-05-17 16:53:34
Temat: Re: ilu jest programistow na swiecie?
Od: Andrzej Jarzabek <a...@g...com> szukaj wiadomości tego autora
[ pokaż wszystkie nagłówki ]On May 17, 3:35 pm, "Przemek O." <p...@o...eu> wrote:
> W dniu 2011-05-17 15:05, Andrzej Jarzabek pisze:
>
> >>> Ile projektów prowadziłeś stosując Agile, że się z tym zgadzasz?
>
> >> Nie prowadziłem żadnego, ale robiłem w takich, w których robiono
> >> design up front,
> > [...]
>
> > Aha, jeszcze, jeśli chodzi o samo pisanie programów bez robienia
> > najpierw projektu, to jak najbardziej sporo takich napisałem.
>
> To były raczej notatniki niż ERP? Co?
Powiedzmy że gdzieś pomiędzy.
> Ale na poważnie, jak już ktoś napisał, Agile wcale nie zakłada braku
> projektu.
Żeby rozwiać niejednoznaczności, uściślijmy może, że chodzi o
tworzenie dokumentu projektowego, na podstawie którego tworzony jest
kod. Oczywiście kod, który piszę, posiada ostatecznie i na każdym
etapie "projekt" w sensie jakiejś struktury konceptualnej. Również,
jeśli jest takie wymaganie, mogę ten projekt udokumentować ex post, co
się dzieje np. po release albo przed hand-offem.
Natomiast twierdzę, i Agile tak twierdzi, że można (a niekiedy nawet
należy) pisać program bez dokumentu projektowego up front, czyli
takiego, który dokumentuje nieistniejący jeszcze kod, który będzie w
dalszej kolejności pisany według tego projektu.
Oczywiście jedna z rzeczy, do której projekt jest potrzebny, to
koordynacja równoległej pracy wielu programistów nad tym samym
projektem. Jak rozumiem Agile (powiedzmy konkretnie XP) zakłada tu
dwie możliwości: albo zaczyna się od tego, że w pierwszym dniu/
tygodniu kod produkcyjny tworzy jedna para programistów, podczas gdy
reszta konfiguruje source control i build machine, robi research,
rozmawia z customerami albo przestawia biurka. Druga możliwość jest
taka, że zespół robi zebranie i ustala nieformalny bardzo ogólny
projekt up front, który pozwoli im na dalszy podział pracy. W każdym
przypadku projekt jest formalizowany nie do dokumentu projektowego,
tylko do zestawu unit testów, które w sposób jednoznaczny określają
jakie komponenty mają istnieć, jakie interfejsy udostępniac i jaką te
interfejsy mają mieć funkcjonalność.
> Poza tym, jest pewien poziom skomplikowania, od którego
> dokumentacja projektowa jest niezbędna do powstania produktu końcowego.
Nie zgodzę się. Dokumentacja projektowa może być potrzebna jeśli np.
zespół po zakończeniu projektu ma być rozwiązany lub przeniesiony do
innego projektu, a maintenance ma robić ktoś inny (co jest sensownym
scenariuszem, bo zespół agile powołany do tworzenia projektu ab initio
nie będzie najlepszym zespołem do jego maintainowania po zredukowaniu
ilości bieżącej pracy.
W drugiej kolejności dokumentacja może być potrzebna firmie jako
dupochron na wypadek, gdyby jakaś większa liczba członków zespołu
zechciała sobie pójśc gdzie indziej.
I w końcu jeśli zakładasz, że będzie duża rotacja pracowników w czasie
trwania projektu, dokumentacja projektowa jest potrzebna, ale jeśli
będzie duża rotacja, to prawdopodobie nie powinieneś stosować Agile.
> Dodatkowo jest jednak delikatna różnica pomiędzy pisanie programu który
> się samemu wymyśliło dla siebie (lub wyimaginowanego klienta) niż dla
> realnego zleceniodawcy. W pierwszym przypadku można improwizować,
> najwyżej się zmieni, w drugim nie ma miejsca na improwizację, bo produkt
> końcowy jest określony poprzez wymagania zleceniodawcy a nie własne
> widzimisie.
Projekt to projekt, a wymagania to wymagania. Nawet jeśli dostraczenie
dokumentu projektowego jest w wymaganiach, to raczej się nie wymaga,
żeby dostarczyć go up front - przed napisaniem programu. No chyba że
pracodawca/zleceniodawca ma też takie wymaganie, ale wtedy nie
praktykujesz agile, tylko narzucony z góry proces waterfall lub
iterative.
Jeśli chodzi o same wymagania, to XP ma takie podejście, że od
udokumentowanych wymagań lepszy jest customer w zespole. Oczywiście
musisz tego customera mieć, w dodatku musi być kompetentny i mieć
realną możliwość podejmowania decyzji i brak tego jest poważną
obiektywną przeszkodą w stosowaniu XP. Z drugiej strony oczywiście
należy do tego przyłożyć zdrowy rozsądek - podejście to nie oznacza
zakazu istnienia dokumentów z wymaganiami, istotne są natomiast dwie
rzeczy: po pierwsze, że realne wymagania będą się zmieniać w miarę
pracy z customerem i w związku z tym dokument z wymaganiami nie może
być wiążącą umową, a po drugie że jak programista będzie miał
jakiekolwiek problemy, uwagi czy propozycje co do tego, co wyczytał w
dokumentacji wymagań, to będzie mógł usiąść z customerem i wypytać się
go, czego on naprawdę chce. Jeśli te warunki nie moga być spełnione,
to jest to kolejna obiektywna przeszkoda w stosowaniu XP.
Jeśli chodzi o moje osobiste doświadczenie, to mam właśnie takie:
dokument z wymaganiami się szybko dezaktualizuje, możliwość szybkiego,
częstego i osobistego kontaktu z człowiekem, który rozumie wymagania i
będzie je mógł wyjaśnić - jest niezastąpiona. Sytuacja, w której
wymagania są kontraktem, w którym każdą zmianę trzeba negocjować jest
szkodliwa dla jakości tworzonego oprogramowania - prędzej czy później
nastąpi któraś z poniższych sytuacji:
- nagle się okaże, że jakiś feature opisany w wymaganiach jest Bardzo
Trudny do zaimplementowania i trzeba renegocjować kontrakt albo
ponosić ryzyko (np. opóźnień). Z drugiej strony ten sam feature może
wcale nie być tak istotny dla klienta, lub być łatwy do zastąpienia
czymś, co dla klienta ma prawie taką samą wartość, a jest trywialne do
zrobienia. Sam overhead renegocjonowania umowy może być w tym
przypadku gigantyczny w porównaniu do wysiłku podjęcia decyzji co do
wartości tego feature'a i zamiplementowania go w tej czy innej
postaci.
- okaże się, że wymaganie interpretowane w pewien sposób (powiedzmy -
rozumiane dosłownie, np. tak, jak by zrozumiał je pedantyczny
programista o matematycznym umyśle, nie mający szczególnie dużej
wiedzy o zastosowaniach wymaganego feature'a) jest jednocześnie
kosztowne w realizacji i kompletnie niepotrzebny, a nawet absurdalny.
To doprowadza do jescze gorszej sytuacji, gdzie programista pokaże
paluchem że jest napisane, że działać ma właśnie tak i tak właśnie
działa, zleceniodawca powie, że nie tego chciał i nie o to chodziło w
tym punkcie umowy i powstaje kwas na zasadzie czy to zleceniodawca źle
wyspecyfikował i powinien podpisać odbiór, a jak chce, żeby inaczej
działało, to niech negocjuje umowę na enchancement i przygotuje się,
żeby słono zapłacić, czy jednak jest to bug, który wykonawca musi
naprawić na własny koszt i ewentualnie nawet ponieść konsekwencje
(dodatkowego) opóźnienia. Zauważ, że w tym przypadku może chodzić o
kluczowy element programu, od którego masa innych rzeczy jest zależna
i którego przerobienie, żeby było tak, jak ma być, to poważny effort,
np. przepisanie na nowo 1/3 kodu.
Następne wpisy z tego wątku
- 17.05.11 17:49 Przemek O.
- 17.05.11 19:24 A.L.
- 17.05.11 20:41 R. P.
- 17.05.11 21:20 Andrzej Jarzabek
- 17.05.11 21:30 Andrzej Jarzabek
- 17.05.11 22:02 R. P.
- 17.05.11 23:08 Andrzej Jarzabek
- 17.05.11 23:55 R. P.
- 17.05.11 23:58 R. P.
- 18.05.11 05:57 Andrzej Jarzabek
- 18.05.11 06:02 Zenek1234
- 18.05.11 06:52
- 18.05.11 08:00 MoonWolf
- 18.05.11 08:41 Andrzej Jarzabek
- 18.05.11 08:57 Paweł Kierski
Najnowsze wątki z tej grupy
- Arch. Prog. Nieuprzywilejowanych w pełnej wer. na nowej s. WWW energokod.pl
- 7. Raport Totaliztyczny: Sprawa Qt Group wer. 424
- TCL - problem z escape ostatniego \ w nawiasach {}
- Nauka i Praca Programisty C++ w III Rzeczy (pospolitej)
- testy-wyd-sort - Podsumowanie
- Tworzenie Programów Nieuprzywilejowanych Opartych Na Wtyczkach
- Do czego nadaje się QDockWidget z bibl. Qt?
- Bibl. Qt jest sztucznie ograniczona - jest nieprzydatna do celów komercyjnych
- Co sciaga kretynow
- AEiC 2024 - Ada-Europe conference - Deadlines Approaching
- Jakie są dobre zasady programowania programów opartych na wtyczkach?
- sprawdzanie słów kluczowych dot. zła
- Re: W czym sie teraz pisze programy??
- Re: (PDF) Surgical Pathology of Non-neoplastic Gastrointestinal Diseases by Lizhi Zhang
- CfC 28th Ada-Europe Int. Conf. Reliable Software Technologies
Najnowsze wątki
- 2024-12-23 Riga => Specjalista ds. public relations <=
- 2024-12-23 Łódź => Specjalista ds. Sprzedaży <=
- 2024-12-23 Kraków => International Freight Forwarder <=
- 2024-12-23 Co nalezy do Cinkciarza, a co do Conotoxia ?
- 2024-12-23 Poznań => Key Account Manager <=
- 2024-12-23 Warszawa => Presales / Inżynier Wsparcia Technicznego IT <=
- 2024-12-23 Rzeszów => Spedytor Międzynarodowy <=
- 2024-12-23 Warszawa => Infrastructure Automation Engineer <=
- 2024-12-23 Białystok => Analityk w dziale Trade Development (doświadczenie z Po
- 2024-12-23 Warszawa => Site Reliability Engineer (SRE) <=
- 2024-12-23 Warszawa => DevOps Engineer <=
- 2024-12-23 Warszawa => Senior Account Manager <=
- 2024-12-23 Katowice => Regionalny Kierownik Sprzedaży (OZE) <=
- 2024-12-23 Katowice => Administrator IT - Wirtualizacja i Konteneryzacja <=
- 2024-12-23 Mińsk Mazowiecki => Spedytor Międzynarodowy <=