Tuesday, May 5, 2009

Broken Window Theory...

Teoria


Nie pamiętam już gdzie ale jakiś czas temu czytałem o "teorii rozbitej szyby". Termin ten kojarzony jest przede wszystkim z Rudolphem Giulianim burmistrzem Nowego Jorku.
Teoria ta w skrócie mówi iż jedna zbita szyba pozostawiona w budynku sprawi że będzie on dalej niszczony w dużo szybszym tempie.
Sam widziałem zastosowanie tej teorii w praktyce widując pozostawione na długie tygodnie/miesiące samochody. Gdy były "całe" nikt ich nie dewastował, wystarczyło że ktoś wybił pierwszą szybę, reflektor (i nikt go nie wymienił,nie zakleił folią szyby), a dewastacja następowała lawinowo z dnia na dzień. Milczące przyzwolenie sprawiało, że ludzie czuli się mniej odpowiedzialni, a odpowiedzialność za zniszczenie samochodu stawała się coraz bardziej rozmyta na wiele osób.


Problem


W wielu projektach w których byłem widziałem rozwiązania mało eleganckie lub wręcz sprzeczne z powszechnie przyjętymi zasadami tego rzemiosła. Gdy po krótkim dochodzeniu udawało się zlokalizować winnego ten tłumaczył się, że zrobił tak samo jak było to rozwiązane w innym miejscu. Na argument, że jest to zrobione w sposób nieprawidłowy, odpowiadał, że jemu też się to rozwiązanie nie podoba, ale przecież w innych miejscach ktoś inny też tak postąpił, więc nie wpłynie to istotnie na jakość projektu. Gdy udało się znaleźć tego kto zapoczątkował złą praktykę okazywało się, że to było rozwiązanie "tymczasowe" i "później" miało być zrobione to lepiej (lub w inny sposób tłumaczone deadline-ami). Bardzo szybko jedna zbita szyba zamieniła się w 2, potem 3 i liczba ta stale rosła. Co więcej wszyscy zaczęli narzekać na wyjątkowo niską jakość projektu, któremu "nic" już nie zaszkodzi, więc wszystkie chwyty stały się dozwolone.


Rozwiązanie ?


Sam muszę przyznać że zdarzało mi się rozwiązywać problem "łatając" coś w sposób brzydki ("skoro wszyscy tak robią"). Ale gdy ktoś zwrócił mi uwagę na pierwszą rozbita przeze mnie szybę zwykle od razu starałem się ją naprawić. Większość programistów, gdy popełnią taki błąd i zostanie im zwrócona uwaga nie jest dumna z tego faktu. Taki "winny developer" stara się jak najszybciej poprawić swój błąd/niedopatrzenie/lenistwo.
Burmistrz Giuliani zwiększył uprawnienia Policji i wypowiedział bezwzględną walkę graficiarzom, a co może zrobić architekt/lead developer/kierownik projektu ?


Myślę, że powołanie "Policji projektowej" nie jest złym pomysłem ;) Być może brzmi to śmiesznie, biurokratycznie i formalnie ale można spojrzeć na to pod innym kontem.
Policjant będzie to rola odpowiedzialna za jakość kodu. Może być nią jedna osoba lub grupa osób, może być to także funkcja "przechodnia". Policjant nie musi całymi dniami przeglądać kodu w poszukiwaniu "zbrodni". Wystarczy, że gdy przypadkiem ją zauważy nie przejdzie obok niej obojętnie. Być może przydało by się miejsce w którym takie fragmenty były by wypisywane (np. bug tracker, tablica korkowa) nawet anonimowo bez dochodzenia kto je popełnił. Osoba mając w danej chwili więcej czasu mogła by je poprawić i zdjąć z tablicy, mógłby zrobić to także sam autor widząc swoje "dzieło" na tablicy. Czy takie rozwiązanie sprawdziło by się w praktyce ? Prawdopodobnie tak, ale pewności nie mam gdyż nigdy nie widziałem jego zastosowania.
Na pewno najlepszą metodą dbania o jakoś kodu jest pisanie kody wysokiej jakości, ale jak sami widzimy różnie z tym bywa. Czasami taki błąd może być źródłem pośpiechu, niezrozumienia danego fragmentu aplikacji czy braku umiejętności. Jak pokazuje praktyka takich sytuacji uniknąć się nie da, ale to nie znaczy, że nie można z nimi walczyć.
Inną metodą przeciwdziałania są rewizje kodu. W takim podejściu każdy kawałek kodu musi zostać zaakceptowany przez innego programistę. Jest to metoda bez wątpienia bardziej skuteczna ale zarazem wymaga poświęcenia większej ilości dodatkowego czasu oraz skutecznego jej egzekwowania (np. za pomocą odpowiednich narzędzi zintegrowanych z repozytorium).

Saturday, January 10, 2009

SpringSource w Warszawie

Przeglądając sobie stronę SpringSource trafiłem na informację, że jeden z kursów z podstaw Springa odbędzie się w Warszawie.
Szkolenie będzie miało miejsce w Warsaw Financial Center, a jego koszt to jedyne 2000 Euro i potrwa 4 dni.

Tutaj znajdziecie link do szkolenia:
http://www.springsource.com/training/spr001/waw-20090310

To chyba pierwsza tego rodzaju wizyta Panów ze SpringSource w Polsce.

PS. Jeżeli ktoś z Was będzie uczestniczył w tym szkoleniu zapraszam do podzielenia się wrażeniami.

Sunday, November 23, 2008

Warsjava08 - subiektywnie...

No i po konferencji. Myślę, że wysiłek oranizatorów w tym roku bardzo się opłacił. Konferencja była naprawdę dobrze zoorganizowana (olbrzymi krok do przodu w stosunku do '07).
Co mi się podobało:

- duża ilość uczestników i obowiązek rejstracji przez sieć, który sprawił że organizatorzy mogli zapewnić każdemu posiłek (a nawet można było iść po dokładke ;) ).

- którsze prezentacje, dzięki temu można było posłuchać o różnych rzeczach, a jak ktoś danym tematem nie był zainteresowany to mógł łatwo przeczekać.

- fajna impreza integracyjna :)

- koszulki dla wszystkich

- adrenalina towarzysząca losowaniu nagród

Co mi się troszke niepodobało (ale tylko troszkę...):

- trochę brak dyscypliny niektórych prelegentów (chyba właściwie jednego) sprawił, że prezentacje Łukasza i Jacka zostały mocno skrócone. Prezentacja Jacka mogła być naprawdę bardzo ciekawa gdyby miał więcej czasu. Ważne jest też robienie przerw, dzięki którym można rozporostować nogi, porozmawiać i odzyskać świeżość umysłu do słuchania kolejnych prezentacji.

- prezentacja o Eclipse RCP i web'ie. Uważam, że poziom tej prezentacji był średni, a prowadzący pokazał coś (RAP-a) o czy nie umiał, wiele więcej powiedzieć. Sama aplikacja w SWT to przecież nie jest jakieś wiekie osiągnięcie, a to co miało robić różnicę czyli RAP, zostało dość pobieżnie nakreślone i tak naprawdę niewiele o tym rozwiązaniu się dowiedzieliśmy.

- brakowało mi takiego wstępu oraz podsumowania wygłoszonego przez ktogoś z organizatorów (prelegentów).

Podsumowując...

Licze na to, że prezentację Jacka o web-appie i OSGi jeszcze kiedyś w całości usłyszę. Temat jest gorący i wart zainteresowania, a Jacek prezentacje przygotowuje naprawdę solidnie.

Wielkie brawa dla organizatorów i dużego postępu jaki zrobiła Warsjava w ciągu tego roku. Brawa dla sponsorów za to, że mogliśmy nakarmić nie tylko umysły, a potem się wspólnie spotkać i porozmawiać przy piwku.

Może, warto zaprosić na spotkanie JUGowe Tomasza Zieleniewskiego, aby opowiedział nam wiecej o SIPie, SIP servletach i SLEE, bo temat jest dość interesujący. Ale na JUGu przydała by się raczej bardziej techniczna, a mniej marketingowa prezentacja.