środa, 7 sierpnia 2013

This is where the one who knows meets the one who doesn't care

"This is where the one who knows meets the one who doesn't care" - wers z utworu Chrisa Rea; płyty Chrisa towarzyszą mi często w samochodzie gdy godzinami przemierzam trasy prowadzące do kolejnego hotelu...

Dziś będzie o próbach komunikacji i wyzwaniach jakie są z nią związane oraz (niestety) o parszywych manipulacjach. Jako studium przypadku posłuży nam coś w stylu konwersacji dwóch ekspertów, zasłużonych weteranów w naszej branży: Jim Coplien i Bob Martin debatują na temat słuszności TDD.



Zacznę od zaznaczenia, że nie zajmuję stanowiska wobec treści. Nie będę stawał po żadnej stronie w tej dyskusji, skupię się na formie i wybranych wzorcach i antywzorcach jakie możemy obserwować podczas "konwersacji" w naszej branży. Zresztą... jeżeli programujesz już od kilka lat, to zapewne wiesz, że każda nietrywialna technika działa jedynie w kontekście problemu a poza nim może być wręcz szkodliwa.

Źródło autorytetu
Jeden z interlokutorów powołuje się na autorytet własnej osoby. Cytuje sam siebie. Opiera argumenty na definicjach, które sam wymyśla.

Drugi zaś, podpiera się autorytetem zewnętrznym powołując się na cytaty innych osób. O ile nie jest to tak śmieszne jak poprzednia strategia, to czy przez to staje się bardziej wiarygodne?

Generalnie mamy tutaj zderzenie dwóch strategi kognitywnych: "co by powiedzieli inni?" vs "chrzanić innych, ja mówię jak jest".

Piętnowanie
Któż z nas nie chciałby być uważany za profesjonalistę (w polskim rozumieniu tego słowa, a nie angielskim, gdzie jest to ktoś zarabia na danej działalności)?

Jak pewnie zauważyliście, jeden z rozmówców stwierdza na wstępie, że ten, kto nie praktykuje pewnej techniki w swej pracy nie jest profesjonalistą. Techniki, która jest rdzeniem jego komercyjnych produktów:) Nie stoi za tym stwierdzeniem żadna sensowna argumentacja ani odniesienia do badań, po prostu własne "widzimisię" - wynikające ze źródła autorytetu.

Drugi z rozmówców mógłby w tym momencie zastosować tani chwyt zdając pytanie: "a co z tymi setkami tysięcy ludzi, którzy nieszczęśliwie urodzili się przed popularyzacją metodyki, czy byli szmaciarzami?" Zamiast tego powołuje się na badania, które wykazują szkodliwość metodyki (rozumianą jako zwiększenie ilości błędów) - ale pamiętajmy, że badania przeprowadzono w specyficznym kontekście.

Mowa ciała
Jaskrawe niedopasowanie rozmówców możemy zaobserwować na poziomie niewerbalnym. Jeden z nich często gestykuluje do swego centrum (w tym wypadku w kierunku splotu słonecznego). Widać silną inteligencję kinestetyczną, tok rozumowania wspierany wyobrażeniami ruchowymi.

Drugi zaś większość czasu spędza "w głowie". Zamiast dyskusji mamy więc "wymianę sygnałów" pomiędzy intuicją jednego z rozmówców a konstruktami złożonymi z abstraktów drugiego z nich.

Gdy następnym razem będziesz świadkiem jałowej dyskusji podczas spotkania projektowego zwróć uwagę na taki "szczegół" jak dopasowanie postaw rozmówców. Spotkanie będzie generalnie pozbawione sensu, ponieważ obie strony używają zupełnie innych reprezentacji mentalnych, innymi słowy mają w głowie inne modele, oparte na innych założeniach. Na poziomie werbalnym niby wszystko jest ok, ale dyskusja jakoś nie doprowadzi do konkluzji i wspólnego działania.

Pomocyyyy...
Niemowlęta mają w repertuarze swoich zachowań specjalny ruch: odruch Moro. Pomaga to im poczuć się lepiej. U dorosłych ludzi zredukowana wersja odruchu (założenie rąk ponad głowę) pojawia się nieświadomie, gdy chcieliby aby mama przyszła i zabrała ich już z niewygodnej sytuacji. Ew. dodaje nieco otuchy i pozwala zabrać myśli aby przejść do kontrataku z wykorzystaniem klasycznych technik erystycznych.

Tak, tak
Podobno ludzie kiwają głową gdy się zgadzają - ale z samym sobą (wewnętrznie w "myślach"). Tak więc jeżeli widzisz uśmieszek w kąciku ust i kiwanie głową, to masz pewność, że interlokutor przestał właśnie słuchać i testuje pławienie się w rozkoszy riposty jaką przygotował do poprzedniego zdania. Możesz skończyć wydawanie dźwięków, trafiają na /dev/null.

Dreyfus.
Model rozwoju kompetencji Braci Dreyfus jest ostatnimi czasy popularny w naszej branży. Jeżeli się z nim nie spotkałeś/spotkałaś, to zachęcam do zapoznania się z wstępem do wstępu.

Generalnie widać różnicę w targetowaniu przekazu: jeden z rozmówców celuje w odbiorców będących na I i II poziomie Dreyfus, którzy oczekują prostych i bezkontekstowych reguł postępowania. Drugi może być odebrany ze zrozumieniem tylko na kolejnych poziomach.

Nadużywanie słowa "architektura"
Mam takie przemyślenie, że najczęściej używane słowa w naszej branży: komponent, moduł i architektura są rozumiane "intuicyjnie". Czyli nikt nie wie, co to tak na prawdę jest. Szczególnie słowo "architektura" doklejane jest do tytułów książek i prezentacji służąc zwykle do zdobywania ekstra punktów reputacji;)

Obaj panowie zdają się poruszać temat Object Oriented Design, tam gdzie pada słowo architektura. Oczywiście mamy różne skale architektury (aplikacyjna, systemowa, wdrożeniowa, skalowania, bezpieczeństwa), ale generalnie rozumiem to słowo jako "design of design". Czyli w przypadku architektury aplikacyjnej będą to struktury ponad OOD (np, warstwy, heksagony, pipes&filters itd)


Na zakończenie kolejny akcent muzyczny (jeżeli nie przepadasz za starożytną muzyką, to wystarczy intro)




//=================================

A tutaj Paweł Badeński zwraca uwagę na inne ciekawe błędy oraz wyjaśnia dlaczego nasza branża nigdy nie będzie postrzegana poważnie przez tak zwane prawdziwe dziedziny nauki:)

1 komentarz:

Mariusz Sieraczkiewicz pisze...

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.