Jarosław
Żeliński
Analityk i
Projektant Systemów
Temat: TDD, testowanie i inne takie
Damian Sromek:
Z tego co można wywnioskować po wypowiedziach Jakuba to pracuję dla super klientów, z super analitykami, super projektantami, super programistami i wszystkim super, więc w takim środowisku rzeczywiście głupim byłoby wdrażanie nowych technik.
Nic tylko pozazdrościć.
myślę, że ironizowanie nie jest dobrym pomysłem, Jakub może operuje skrajnościami ale moim zdaniem takie dyskusje uczą pokory, i wymagają troszkę ambitniejszych odpowiedzi niż "bo tak"... nawet jeżeli gdzieś nie ma racji to warto postarać się o jakiś logiczny wywód zamiast "Agile/TDD jest dobre bo każdy tak mówi".
Mogę z doświadczenia powiedzieć, że relatywnie małe projekty Agile w znanym środowisku radzą sobie bardzo dobrze, zaczynają się schody gdy rośnie złożoność logiki biznesowej a metody sprint/scrum itp. sprowadzają się do odkrywania wymagań metodą szczura w labiryncie.
Często słyszę, że metody zwinne w 20% czasu dostarczają 80% funkcjonalności. Warto tu jednak dodać, że owe mityczne 80% funkcjonalności dostarczone w 20% czasu to najczęściej proste, z minimalną logiką, CRUD’y. Schody zaczynają się gdy trzeba zaimplementować skomplikowaną logikę. Nie jest problemem implementacja usługi wystawienie faktury, schody się zaczynają, gdy np. cennik produktów przestaje być zbiorem wartości wpisywanych „z palca” a zaczyna być pewną logiką promocji, kosztów, cen bazowych i limitów kupującego… wtedy zwinne metody najczęściej się kończą… trzeba tę logikę najpierw zrozumieć, potem opisać, opracować model (pomysł na) implementacji i na końcu dopiero implementować.
Nie raz mam możliwość widzieć ten sam projekt realizowany „dwiema metodami” (jestem często angażowany do projektów nieudanych by zacząć jeszcze raz to samo). Z moich obserwacji i wyliczeń wynika, że projekty „zwinne” zaczynają mieć kłopoty gdy wartość pracy przekracza 75/100 tys. zł. Drugi przypadek, to projekty, w których logika systemu nie była znana i zrozumiana w momencie rozpoczęcia i jej złożoność zaskoczyła wszystkich.
Sugeruje operować konkretnymi przykładami i zrezygnować z górnolotnych Agile/SCRUM/Sprint bo to tylko metody zarządzania projektem i nic ponad to...
Co do TDD rozumiem to i traktuje jako testowanie interfejsów czyli "projektowanie i testowanie" wymagań na interfejsy. Problem w tym, że najpierw trzeba je skądś brać (dostać) ... jak tak pomyśleć, to dobrze opracowane wymagania przekazywane developerowi to model dziedziny systemu i właśnie specyfikacje interfejsów (klas dziedzinowych), developer mając je napisze sobie testy i zacznie implementację...
Uwierzcie mi, że w projektach większych (umowne 75 tys. i więcej) gdy coś nie wychodzi, z reguły analityków angażuje się by posprzątali po Agile a nie odwrotnie...Jarek Żeliński edytował(a) ten post dnia 04.11.12 o godzinie 22:07