Scrum/XP

Z ciekawości zapytam, na jakiej podstawie oceniasz model RoR+Scrum? Dokładniej:

  1. Czy udało Ci się zastosować z powodzeniem tą metodykę w co najmniej jednym ukończonym sukcesem projekcie?
  2. Które z praktyk scrum stosowałeś?
  3. Czy był to projekt finansowany przez Ciebie(wewnętrzny), wykonywany na zlecenie w całości, wykonywany na zlecenie w części?
  4. W ilu iteracjach/sprintach (i jak długich) udało Ci się zakończyć projekt?
  5. Ilu ludzi brało udział w projekcie?
  6. Jaki był sposób rozliczenia z klientem?
  7. Czy stosowałeś ją w poprzedniej firmie o której piszesz, a która jak rozumiem przestała istnieć?
  8. Czy projekt był dla Ciebie opłacalny finansowo?

Pytam nie ze złośliwości, ale z ciekawości. Sam jestem zainteresowany tematyką Agile(w praktyce i teorii) od dłuższego czasu. Według mnie najtrudniejszą rzeczą w pełni rozumianym Agile jest konieczność nakłonienia klienta do wejścia w projekt, którego budżet nie jest określony(klient płaci za czas a nie za rezultaty). Dlatego też najlepsze miejsce dla Agile to według mnie projekty wewnętrzne, gdzie przeważnie klient(tu pracodawca, lub przełożony) i tak płaci na za czas(pensja miesięczna). Dodatkowo praca z takim klientem jest łatwiejsza, bo bariera porozumienia z pomiędzy klientem a programistą jest mniejsza.

Zastrzegam, że sam osobiście nie mam doświadczenia w komercyjnym zastosowaniu pełnego agile. Brałem udział w dwóch niekomercyjnych 2-tygodniowych projektach XP.

Ciekawy jestem jakie Ty miałeś doświadczenia w powyższych zagadnieniach?

Proszę też innych o podzielenie się swoimi spostrzeżeniami/doświadczeniami.

P.S. Proszę moderatorów o wyciągnięcie tego pytania do innego wątku jeśli uważają to za stosowne.

Nie wiem na podstawie czego tak rozumiesz, ale wiem że na pewno zrozumiałeś źle. :wink:

Serio, Piachoo. To, że Bartek już w firmie nie pracuje, nie oznacza, że przestała ona istnieć.

Co do reszty Twoich pytań - poczekam aż Bartek nań odpowie, w każdym razie jako “insider” śmiem twierdzić, że Scrum działa.

Nie wiem tylko dlaczego mieszasz Scrum z XP. Scrum, czy ogólnie Agile, nie implikuje TDD ani XP. Ja wiem, że te ładne i modne terminy mogły się pojawić w jednym artykule, ale nie zachowujmy się jak Google-spidery :wink:

Google-spider mnie wkurzył:)

Dla jasności:

Agile Software Development- “filozofia” tworzenia oprogramowania http://agilemanifesto.org/, realizacją tej filozofii są między innymi konkretne procesy:

Scrum- większy nacisk położony na sam proces
XP- większy nacisk położony na konkretne praktyki- testy, integracja, refaktoring

Powyższe dwa procesy mają wiele wspólnych cech:

  • udział klienta lub jego przedstawiciela w procesie
  • podział procesu na iteracje, których wynikiem ma być działający fragment systemu
  • podział zadań według priorytetów
  • poranne spotkania tzw. stand up meetings
  • ważna rola programisty w procesie tworzenia oprogramowania
  • nacisk na komunikację w zespole

Co ciekawe poprzez zaadaptowanie praktyk XP(XP to nie tylko praktyki ale także wartości i aktywności) powstało XP@SCRUM http://www.controlchaos.com/about/xp.php.

TDD- test driven development. Sposób pisania kodu wymuszający zasadę “nie możesz napisać ani linii kodu zanim nie napiszesz testu i ten test co najmniej raz nie zostanie odpalony z wynikiem negatywnym”. Polecam ciekawą dyskuję http://www.infoq.com/interviews/coplien-martin-tdd TDD jest tylko jedną z praktyk XP, którą zresztą można wykorzystywać w zupełnym oderwaniu od niego.

Podsumowując XP i SCRUM to dwa sposoby realizacji idei Agile. TDD to praktyka piania kodu wykorzystywana między innymi w XP.

Co ciekawe skrótu TDD nie użyłem ani razu w swoim poście. Wiem, że to ładny i modny termin, więc może odruchowo wpisałeś ten skrót :wink: Nigdzie też nie napisałem, że Scrum, czy ogólnie Agile implikuje TDD albo XP.

To tyle w ramach wyjaśnienia. Wracając do głównego tematu mojego posta, chodziło mi o to jak wygląda zastosowanie Agile w praktyce, a szczególnie o sposób współpracy i z rozliczeń klientem.

Może więc Ty zechcesz odpowiedzieć na postawione przeze mnie pytania(oczywiście z wyłączeniem 7. :slight_smile: )? Stwierdzenie, że coś działa jest dla mnie cenne, ale jeszcze bardziej chciałbym wiedzieć w jakich warunkach działa.

Wątek przeniesiony.

Nie wiem na podstawie czego tak rozumiesz, ale wiem że na pewno zrozumiałeś źle. :wink:

Serio, Piachoo. To, że Bartek już w firmie nie pracuje, nie oznacza, że przestała ona istnieć.[/quote]
Nigdzie nie napisałem, ani nie dałem do zrozumienia, że firma przestała istnieć :wink: To “lekka” nadinterpretacja. Istnieje, nazywa się Aenima i ma się dobrze, o czym najlepiej zaświadczy Tomek (notabene mój ostatni nabytek ;))

Tomek, powiedz chłopakom żeby jako dyżurnemu ePRowcowi dali Ci dodatek funkcyjny :smiley:

Sukces Aenimy najlepiej świadczy o słuszności łączenia RoR i scruma :slight_smile:

[quote=bartosz.kramek]W nowej firmie, którą założyłem - New Enterprise Management Ltd. - wykorzystując świetny model biznesowy, jakim jest RoR+Scrum, zamierzam stworzyć ludziom warunki do rozwoju idącego w podanych wyżej kierunkach.
Tak żeby rozwój firmy był pochodną samorealizacji pracowników.[/quote]

[quote=piachoo]Z ciekawości zapytam, na jakiej podstawie oceniasz model RoR+Scrum? Dokładniej:

  1. Czy udało Ci się zastosować z powodzeniem tą metodykę w co najmniej jednym ukończonym sukcesem projekcie?[/quote]
    Tak jest.
  • burndown (“żółte karteczki”) ilustrujący progres projektu/ów
  • scrum meetingi
  • planowanie sprintu
  • przegląd sprintu
  • retrospekcje

Oddawanie aplikacji modułami (przyrosty funkcjonalności) jest oczywiste. Samoorganizacja… postępowała:)

W Aenimie dążyliśmy do “pure scrum”. Bywało z tym różnie, zwłaszcza początkowo. Dodatkowo obudowaliśmy scruma jeszcze kilkoma instrumentami. Dużo zależało od project managerów i ich stylu pracy. Transformacja PM w scrum mastera nie zawsze przebiega bezprobemowo. Dla mnie szczególnie istotne były retrospekcje i codzienne scrum meetingi z programistą oraz zasada “presenter first”, zgodnie z którą product owner najpierw zapoznawał się z proponowaną warstwą graficzną i przykładowym interfejsem. Dzięki temu (mial ogólny obraz tego dokąd zmierzamy - wcześniej mógł skonfrotować swoją wizję z rzeczywistością) potem pomagał, a nie przeszkadzał. Uczył się też jak zespół projektowy rozumie jego uwagi, jak optymalizować komunikację w celu otrzymania pożądanego feedbacku. Szybko też przekonałem się o zasadności przeprowadzania testów w trakcie rozwijania kolejnych modułów aplikacji. “W trakcie” rozumiem tutaj po prostu jako opozycję do podejścia “test after”. Nie musi to oznaczać od razu pełnego TDD.

Na etapie wdrożenia były:

  • dozór kodu tj. jego przegląd przez doświadczonego programistę/lidera technologicznego/CTO pod kątem zgodności z architekturą i zwięzłości zapisu
  • TDD

W scrumie realizowaliśmy różne projekty. Klasycznym przykładem może być projekt, nazwijmy go PGI. Był to projekt zewnętrzny, dedykowana aplikacja do gier online - na zlecenie klienta, czyli - cokolwiek to znaczy - “wykonywany na zlecenie w całości” :slight_smile:

Projekt nadal “żył” po moim odejściu. 5-7 sprintów (1 sprint - 4 tygodnie). Czasami sprinty są krótsze (2-3 tygodnie), ekstremalnie mogą potrwać nawet do 6.

PO, SM, programista (okresowo support drugiego), grafik. Realnie (produktywnie) zaangażowanych:) Plątała sie banda świń i kurczaków;)

Sumaryczny czas pracy na podstawie wynegocjowanej stawki godzinowej. Faktura po każdym sprincie.

Jeśli chodzi o metodykę rozliczania z klientem, to tak. Firma istnieje :slight_smile:

Dobre pytanie :slight_smile: Finalnie tak.

Google-spider mnie wkurzył:)

Dla jasności:
(ciach!)[/quote]
Oczywiście masz rację :slight_smile:
Chciałem tylko przerwać lub osłabić kojarzenie filozofii prowadzenia projektu (Agile, Scrum) z różnymi praktykami pisania kodu (TDD, XP itd.).
Różnica jest taka, że o ile Agile w ogólności, a Scrum w szczególności są mi filozoficznie bliskie i uważam owe za warte zachodu, o tyle “czysty” TDD (koniecznie testy przed funkcjonalnością, przekrycie testy:kod co najmniej 1:1, w wersji ekstremalnej blokowanie commitu kodu, który rozwala jakiś test) uważam za, delikatnie mówiąc, mający więcej wad niż zalet. A mówiąc niedelikatnie, za antywzorzec inżynierii oprogramowania, jak wszystkie faszyzmy sztywno narzucające (a przez to upośledzające lub wręcz blokujące) programiście “flow” pracy.

XP mi się podoba i myślę, że coraz więcej ekip wprowadza to w życie w mniejszym lub większym stopniu, czasem pewnie nawet nie wiedząc, że zestaw pewnych praktyk nazywa się XP. To jak z wzorcami projektowymi - istniały grubo przed książką Czworga i są po prostu naturalną konsekwencją mentalności dobrego programisty (inżyniera oprogramowania). Pewnie nawet dziś można by znaleźć świetnych programistów, którzy nie znają formalnej klasyfikacji i nazw osiemnastu “kanonicznych” wzorców, a mimo to “podświadomie” je stosują - myślę że podobnie jest z wieloma elementami XP, zwłaszcza przy “dyletanckim” sposobie rozprzestrzeniania się wiedzy przez internet.

[quote=bartosz.kramek]Na etapie wdrożenia były:
(…)

  • TDD[/quote]
    Na szczęście w Aenimie nie jest (i chyba nie był) to “czysty” TDD opisany wyżej, tylko po prostu zachęcanie programistów do pisania testów, w kolejności dowolnej (przed lub po kodzie implementującym testowaną funkcjonalność) - i takie planowanie sprintów, żeby starczyło na to czasu, osiągając przekrycie testami gdzieś pomiędzy 0.5 a 1.0 (moim zdaniem najzdrowszy zakres).

Żeby nie było - nie jestem przeciwnikiem pisania testów “przed”, sam zresztą popełniłem to w zeszłym tygodniu, zastanawiając się jak pewna funkcja powinna działać (i w definicji zachowania której test-first bardzo pomógł). Tym samym nie jestem też maniakiem pisania testów “po”.
Po prostu uważam, że najpierw powinien być programista, a potem - i w charakterze pomocnika, a nie gestapowca - metodologia prowadzenia projektu.

Nie lubię, kiedy ktoś zakłada mi bezsensowne i dokładniej nieuzasadnione (“bo tak przeczytałem w tekście ewangelistów TDD”) kajdany na mózg. Gdybym miał właśnie w głowie błyskotliwy fragment kodu (czy algorytm) i nie mógł go napisać czy scommitować, bo jeden idiota żąda napisania do tego najpierw testu, a drugi założył blokadę na repozytorium, miałbym nieodpartą ochotę wziąć krzesło i napierdalać obu w głowę aż do znalezienia mózgu.
:wink:

Pocieszające jest to, że nie tylko ja tak myślę:

[quote=ZedShaw]She Blinded Me With Science!

I’ve always had a hatred for people who claim that TDD is so much better and that it should be enforced on everyone with a Gestapo zeal. There’s no real evidence that it does better or worst than any other forms of testing, and all of my statistical evidence and evaluation shows that it doesn’t actually improve quality but rather just maintains what you have.

Enter Mr. Skruffy and his amazing Science tricks who promptly takes the first paper I’ve seen on evidence for TDD, and tears it down quite easily. What’s his secret? See, he actually knows some statistics and he read the paper. He simply went through the data and evaluated it using his own brain to conclude that TDD actually was worse in this case.

I love it when someone can use a paper’s own data to disprove the paper itself. Lovely. Again, got an essay in the works on this one that will be more serious.[/quote]
:slight_smile:

Takie moje 0.02 PLN

PS. Bartek, Twój ostatni post z odpowiedziami na pytania Piacha powinien być przyklejony jako “Practical Scrum FAQ” :slight_smile:
PS2. Dodatku za PR raczej nie będę próbował wyszarpać, przedstawione opinie są wyłącznie moje, takoż ich moc i użyte słownictwo :wink:

[quote=piachoo]Pytam nie ze złośliwości, ale z ciekawości. Sam jestem zainteresowany tematyką Agile(w praktyce i teorii) od dłuższego czasu. Według mnie najtrudniejszą rzeczą w pełni rozumianym Agile jest konieczność nakłonienia klienta do wejścia w projekt, którego budżet nie jest określony(klient płaci za czas a nie za rezultaty). Dlatego też najlepsze miejsce dla Agile to według mnie projekty wewnętrzne, gdzie przeważnie klient(tu pracodawca, lub przełożony) i tak płaci na za czas(pensja miesięczna). Dodatkowo praca z takim klientem jest łatwiejsza, bo bariera porozumienia z pomiędzy klientem a programistą jest mniejsza.

Zastrzegam, że sam osobiście nie mam doświadczenia w komercyjnym zastosowaniu pełnego agile. Brałem udział w dwóch niekomercyjnych 2-tygodniowych projektach XP.

Ciekawy jestem jakie Ty miałeś doświadczenia w powyższych zagadnieniach?[/quote]
Ok :slight_smile: Formułujesz całkiem inteligentne i dotykające istoty rzeczy, czyli realnych problemów pytania.
Ponieważ zasadniczo unikam mówienia o problemach, słowo “problem” wyrzuciłem ze słownika i zastąpiłem terminem “wyzwanie”. Brzmi lepiej :cool:

We challenge you to shape our world.

Najtrudniejszą rzeczą w scrumie jest przekonanie klienta, że brak deadline’ów i brak ustalonej ceny tak naprawdę są dla niego dobre.

Sprzedaż polega na zadawaniu inteligentnych pytań. “Sprzedaż” scruma, co tutaj jest akurat równoznaczne ze “sprzedażą” agile, także.

Po pierwsze należy zapytać klienta, czy zgadza sie ze stwierdzeniem, że czas to pieniądz. Po drugie: zapytać ile czasu zajmie mu napisanie specyfikacji oraz negocjowanie warunków umowy. Po trzecie: czy planuje change requesty i czy zdaje sobie sprawę jaki to będzie miało wpływ na czas, jakość i komfort tworzenia systemu. Co stanie się z budżetem? Co z harmonogramem prac? Czy jest pewny, że efekt końcowy będzie spełniał jego oczekiwania? Że to, co powstanie będzie tym co chciał ujrzeć?

Klient płaci za wartości biznesowe, które generuje każdy sprint. Są one określane na podstawie jego priorytetów. Każdy przyrost funkcjonalności to produkt gotowy do implementacji. Product owner jest integralnym partnerem i uczestnikiem procesu tworzenia oprgramowania. Widzi jak produkt się rodzi, rośnie i rozwija. Widzi jaki wpływ na niego mają jego wytyczne, uwagi i zmiany koncepcji. Widzi, że nic nie trwa zero czasu, a jakość kosztuje. Product owner decyduje o zakresie ingerencji, jaką chce wywierać, o ilości zaimplementowanych features’ów, będąc jednocześnie świadomym, że jego ingerencja przekłada się na czas tworzenia softu, a to na pieniądze. Decyduje, czy bardziej zależy mu na szybszym uruchomieniu aplikacji w warunkach produkcyjnych, czy w dalszym ciągu szlifujemy kod aż będzie błyszczał, czy w danym kształcie może ujrzeć światło dzienne, czy wymaga jeszcze dopracowania. Zatem to klient decyduje o cenie. Tempo, cena, i jakość są determinowane przez klienta. Wszystko jest “under control”.

To będzie uzasadnienie biznesowe. 2w1. Dla klienta i potencjalnego partnera/inwestora. :slight_smile:

przytaczam swoje słowa:

Ruby (już nie tylko “on Rails” :slight_smile: ) - innowacyjna technologia i lekkie zarządzanie agile stanowią wyśmienity model biznesowy. RoR znacząco skraca czas tworzenia aplikacji (realna korzyść biznesowa - zwracam uwagę na aspekt ekonomiczny), ułatwia dbałość o jakość kodu i przywraca developerom radość z programowania. Innowacyjna technologia + sprawny management - to dwie uzupełniające się strony medalu. Jest to również świetne ujęcie marketingowe. Agile odciąża managerów i przeciwdziała robieniu z programistów “coding monkeys”. Korzyści występują na wszystkich polach: project management, finanse, marketing, HR.

Dlatego się w to bawię. I zapraszam do współpracy.

wypowiedziane na http://www.goldenline.pl/forum/agile/80138

Nie jestem specjalistą od “sprzedaży” agile. Jeszcze :slight_smile: Jest taki człowiek w Polsce, nazywa się Paul Klipp. To prezes Lunar Logic Polska. On jest niekwestionowanym wymiataczem. Ma ogromne doświadczenie w prowadzenu projektów opartych na scrumie, pozyskiwaniu, przekonywaniu i przeprowadzaniu klientów przez proces tworzenia softu. Wiele dobrych praktyk w stosowaniu scruma przejęliśmy od nich, nawiązując współpracę outsourcingową na wczesnym etapie funkcjonowania. Firma Paula tworzy dedykowane aplikacje webowe w railsach dla klientów zachodnich, głównie z krajów anglosaskich. To bardzo rozsądne, bo pozwala wykorzystywać polski, relatywnie tani i świetnie wykwalifikowany potencjał społeczny, pracując za zachodnie stawki. Potencjalni klienci z Polski nie są jego targetem. Są dwa wyjaśnienia:

  • rynek polski jeszcze nie dorósł do agile
  • cena usług LLP jest zbyt wysoka

Piachoo niejako sugerował pierwsze. Jednak istnienie Aenimy zdaje się mu zaprzeczać. Chociaż kolejna jaskółka na horyzoncie…

Jest to właściwie druga odpowiedź na pytanie “co jeśli klient nie jest zainteresowany agile”. Pierwszej udzieliłem w poprzednim poście, wskazując kierunki, w których powinna iść perswazja. Druga odpowiedź ma zastosowanie wtedy, kiedy nie działa pierwsza. Paul powiedział kiedyś, że mamy wolny wybór: pracujemy tylko dla wybranych klientów. To ma być zaszczyt dla obu stron. Analogicznie postępujemy w przypadku, gdy klient proponuje nieprzyzwoice niskie stawki za nasze usługi. Sygnalizuje w ten sposób, że nie zależy mu na jakości oprogramowania. Quality is money. Oczywiście nie chodzi o to, żeby obrażać się na klienta, tylko nie dać zeszmacić. Jeśli nie ma klientów w kraju, poszukaj ich na Zachodzie.

Od Paula i LLP zaczerpnąłem też sposób konstruowania umów i model rozliczania usług. Umowy w duchu agile powinny być maksymalnie proste i elastyczne. Istotne klauzule to prawo renegocjowania stawek przez obydwie strony w każdym momencie trwania umowy oraz rozwiązania umowy, czyli zakończenia współpracy po każdym sprincie. Jest to ukłon w stronę klienta, który po uregulowaniu należności za dany sprint może odejść zabierając jego produkt (powstałe dotychczas funkcjonalności). Alternatywnie: umowa na czas nieokreślony, możemy od niej odstąpić jedynie na mocy porozumienia stron. Dlaczego o tym piszę? To istotne w kontekście przekonywania klienta do agile.

Polskie środowisko agile’owe jest skupione głównie w Krakowie, tam też czasami są organizowane dyskusje nt. agile z marketingowego punktu widzenia. Temat jest dosyć obszerny, nie chcę nadużywać metody kopiuj+wklej, więc Piacha i innych zainteresowanych tymi kwestiami odsyłam do:

http://www.it.wkrakowie.org/2006/08/16/paul-klipp-–-nasz-czlowiek/ (wywiad z Paulem, duża część poświęcona agile)
http://www.llp.pl/site/index.php?page=Articles (artykuły autorstwa Paula)
http://www.agileactivist.com/video-about-agile-development/ (blog Paula, filmiki)
http://www.agilers.com/teamblog/ (świetny blog Marcina Niebudka)
http://www.goldenline.pl/grupa/scrum (grupa, którą założyłem na GL, na której nic się jeszcze nie dzieje :slight_smile: - polecam tekst “Dlaczego scrum działa”)

Klient: No dobrze, a ile to będzie właściwie kosztować?
Paul Klipp: To zależy od Ciebie :slight_smile:

:smiley: