Ponieważ odpowiedź na post Sławka nieco się rozrosła, więc postanowiłem zamieścić ja również tutaj. Przeczytaj najpierw ten post, bo tylko w jego kontekście ma sens to, co napisane poniżej.
------------------------------------------
Osobiście do słów nadużywanych obok architektury, komponentu, modułu dodałbym słowo "kontekst" ;-) Sam go używam, więc biję się w pierś :)
Odnosząc się do ostatniego akapitu: nie ujmowałbym niczego naszej branży. Jest to naturalny proces, który towarzyszy również innym dziedzinom, które ponoć są bardziej naukowe i mają dłuższy staż. Na przykład w medycynie odnośnie żywienia jest wiele zagadnień, co do których panują różne interpretacje interpretacje naukowe, często sprzeczne. Co więcej są badania, które prowadzą do innych wniosków. Dzieje się tak dlatego, że złożoność problemu jest tak duża (i ilość czynników, które mają na niego wpływ), że podejście naukowe będzie zawsze redukcjonistyczne (ograniczone do bardzo wąskich kontekstów).
Osobiście uważam, że poszukiwanie dowodów naukowych nie ma większego sensu. Pod tym kątem jednak bliżej jest naszej profesji do psychologii i socjologii. Przede wszystkim posługujemy się modelami, które są uproszczeniem rzeczywistości.
Nie można przeprowadzić dowodu: TDD działa/nie działa. To jest generalizacja. Nawet ograniczenie kontekstu nie wiele zmienia, bo i tak złożoność problemu pozostaje ogromna.
Jakie można przeprowadzić badanie naukowe:
* że w zespole 5 osobowym, gdzie 2 osoby miały rok doświadczenia, 2 osoby miały 3 lata doświadczenia, a 1 osoba miała 10 lat doświadczenia, która tworzyła projekt w Javie, 150KLOC, przez 5 miesięcy w metodyce Agile, używając TDD, gdzie klientem był doktorant, który poświęcił 30% swojego czasu na to... itd. itp. Problemem jest kontekst - każdy z tych elementów (ilość osób, doświadczenie, metodyka, wielkość kodu, język, i przynajmniej kilkanaście innych) ma wpływ na wynik.
Czy wynik takiego badania naukowego miałby jakąś przydatność? Co najwyżej byśmy się dowiedzieli, jaki był efekt w tym konkretnie kontekście. A co jeśli byłoby 7 osób? A co baza kodu miała 500 KLOC? A co gdyby używano Kanbana? Ile bardzo szczegółowych badań tego typu należałoby wykonać, żeby dokonać wiarygodnych generalizacji nawet w odniesieniu do kontekstu?
Dlatego co nam zostaje? Heurystyki (strategie). Modele.
Jeśli chodzi o dyskusję Copliena i Uncle Boba, to każdy z nich ma jakąś (ciekawą) koncepcję do sprzedania. Każda z nich jest praktycznie nie do udowodnienia. Toteż pozostają różne metody wpływu, które spowodują, że ludzie się tym zainteresują, będą dyskutować, sprawdzać w działaniu. I tu widzę największą wartość. Prawda nie istnieje. Co najwyżej prawda intersubiektywna.
piątek, 23 sierpnia 2013
Tagged under: agile, clean code, czysty kod, efektywność, metodyki, najlepsze praktyki, tdd, życie
Prawda nie istnieje (dowody też)
Subskrybuj:
Posty (Atom)