eGospodarka.pl
eGospodarka.pl poleca

eGospodarka.plGrupypl.comp.programmingilu jest programistow na swiecie?Re: ilu jest programistow na swiecie?
  • Path: news-archive.icm.edu.pl!news.gazeta.pl!newsfeed.pionier.net.pl!news.glorb.com!p
    ostnews.google.com!g24g2000vbz.googlegroups.com!not-for-mail
    From: Andrzej Jarzabek <a...@g...com>
    Newsgroups: pl.comp.programming
    Subject: Re: ilu jest programistow na swiecie?
    Date: Tue, 17 May 2011 09:53:34 -0700 (PDT)
    Organization: http://groups.google.com
    Lines: 160
    Message-ID: <6...@g...googlegroups.com>
    References: <iqjp8e$led$1@inews.gazeta.pl> <iqpak7$vef$1@news.onet.pl>
    <iqqeag$m5j$1@inews.gazeta.pl> <iqqj2m$i52$2@news.onet.pl>
    <d...@p...googlegroups.com>
    <iqqt7m$qi0$1@news.onet.pl> <iqqtpa$gt3$1@node2.news.atman.pl>
    <iqr4u7$qpo$1@news.onet.pl> <iqr7pi$r95$1@node2.news.atman.pl>
    <iqrujs$b8$1@news.onet.pl> <iqs0o4$85o$1@news.onet.pl>
    <1...@l...localdomain> <iqtglc$5c5$1@news.onet.pl>
    <iqthln$9gp$1@news.onet.pl> <iqtirb$9kr$1@news.onet.pl>
    <iqtj7p$fel$1@news.onet.pl>
    <c...@w...googlegroups.com>
    <iqtpbn$80t$1@news.onet.pl>
    <7...@t...googlegroups.com>
    <0...@1...googlegroups.com>
    <iqu14k$9ee$1@news.onet.pl>
    NNTP-Posting-Host: 195.11.67.225
    Mime-Version: 1.0
    Content-Type: text/plain; charset=ISO-8859-2
    Content-Transfer-Encoding: quoted-printable
    X-Trace: posting.google.com 1305651215 16014 127.0.0.1 (17 May 2011 16:53:35 GMT)
    X-Complaints-To: g...@g...com
    NNTP-Posting-Date: Tue, 17 May 2011 16:53:35 +0000 (UTC)
    Complaints-To: g...@g...com
    Injection-Info: g24g2000vbz.googlegroups.com; posting-host=195.11.67.225;
    posting-account=jr5y-woAAAAWidgVjrSJ6j8m650CTb-v
    User-Agent: G2/1.0
    X-HTTP-UserAgent: Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/534.24 (KHTML, like
    Gecko) Chrome/11.0.696.68 Safari/534.24,gzip(gfe)
    Xref: news-archive.icm.edu.pl pl.comp.programming:190409
    [ ukryj 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.

Podziel się

Poleć ten post znajomemu poleć

Wydrukuj ten post drukuj


Następne wpisy z tego wątku

Najnowsze wątki z tej grupy


Najnowsze wątki

Szukaj w grupach

Eksperci egospodarka.pl

1 1 1

Wpisz nazwę miasta, dla którego chcesz znaleźć jednostkę ZUS.

Wzory dokumentów

Bezpłatne wzory dokumentów i formularzy.
Wyszukaj i pobierz za darmo: