wtorek, lipca 01, 2008

Projekty Informatyczne - Mity ;-)

Z wykształcenia jestem fizykiem, z zawodu i zamiłowania programistą, ostatnio pełnię jeszcze rolę development leada [mówiąc prosto jestem tym na którego wszyscy mogą krzyczeć ;-), dokładniej zaś sprawę ujmując jestem kimś kto łączy developerów z product managerem [używam nazw anielskich bo lepiej oddają znaczenie]]. Moja wiedza więc o programowaniu i prowadzeniu projektów jest mieszanką praktyki nabytej w paru firmach, własnych lektur oraz pewnych szkoleń. Po tym przydługim wstępie przejdźmy do mitów :-)Harmonogramy.
Idea jest piękna i słuszna - każdy wie co, kiedy i w jakim czasie ma zrobić, dzięki temu można podać daty tego kiedy produkt będzie dostępny, można planować kolejne releasy i tego typu sprawy.
Rzeczywistość jest taka, że gdy harmonogramy są ułożone przez kogoś kto je rozumie cały zespół zaczyna grać na harmonogram ;-) Nic nie robisz od dwóch tygodni i przez następne dwa nic nie będziesz robić? Chcesz iść w takiej sytuacji na urlop? Nie możesz, bo jak wprowadzi się Twój urlop do super programu okazuje się, że data zakończenia przesunie się o tydzień....
Częściej jest jednak tak, że harmonogram układa się dla ułożenia. Wiemy, że klient życzy sobie produktu za 3 miesiące więc tak budujemy harmonogram by na papierze trwało wszystko 3 miesiące ;-)Z moich doświadczeń widzę, że najlepszy model w tym przypadku to coś podobnego do Scrum'a [choć bez dodatków które tylko denerwują ludzi]. Developerzy to zwykle dość inteligentni ludzie i potrafią zarządzać swoją pracą tak by zmieścić się w terminach. Wtedy product manager musi wyznaczyć tylko ogólne ramy czasowe, a wszystko się samo ułoży. Dodatkowo developerzy widzą zwykle zależności czasowe i starają się samo-organizować tak by jedyną osobą na którą trzeba czekać z wykonaniem kolejnej czynności była osoba która ją wykona ;-). Jak zauważyłem takie podejście świetnie działa w małych zespołach do 5-6 osób, w większych nie miałem okazji oglądać takiego podejścia.
Zarządzanie.
Jest ważne, sęk w tym że z uporem maniaka wszędzie uczy się takiego prowadzenia projektów w którym developer sprowadzany jest do niezbyt rozgarniętego trybika. Mówiąc inaczej - do zarządzania inteligentnymi i odpowiedzialnymi ludźmi stosuje się metody stworzone do zarządzania normalnymi ludźmi. Taka mała dygresja, przeciętny developer choć w swojej grupie jest przeciętny, to w ogóle populacji utrzymuje się w górnych stanach populacji [im firma lepiej płaci tym wyższe stany to są :-)], mówiąc jeszcze inaczej częsta może być sytuacja w której szeregowi podwładni są inteligentniejsi od menadżera prowadzącego projekt. Dobrzy menadżerowie to wiedzą [i tu też zasada im firma lepiej płaci tym więcej menadżerów którzy to wiedzą :-)] i cieszą się z tego.
Konsekwencją tego stanu jest to, że w większości przypadków developerzy tym lepiej pracują im więcej wiedzą o projekcie, ale w standardowym zarządzaniu gdzie traktowani są jak tribiki nikt im nic nie mówi ponad to co muszą wiedzieć.
Rozwiązanie jest proste - Agile - czyli w najbardziej skrajnym przypadku ;-) totalna samoorganizacja, ludzie sami wprowadzają procedury i standardy. Wystarczy dać im tylko ramy, które stanowi system do bug-trackingu i repozytorium kodu. Wtedy działa to tak, że z jednej strony, poprzez system bug-trackingowy, wrzuca się oczekiwania, a z drugiej strony odbiera się produkt :-)Z doświadczenia powiem, że dla małych projektów z 5-6 developerami to działa na pewno :-)Configuration Management.
Tak naprawdę nikt do końca nie wie co to jest.... oczywiście są ludzie którzy się tym zajmują i wiedzą więcej, ale i tak dla przeciętnego zjadacza obwarzanków sprowadza się to do tego, że jakoś trzeba pracować na aktualnym kodzie jednoczenie mogąc pracować w kontekście "historycznym" ;-)Rozbuchane zasady z mnóstwem gałęzi, splitów, integracji i tym podobnych świetnie wygląda na papierze, ale zwykle jest całkowicie niepotrzebne.
Continous Integration i to w wersji najprostszej, czyli pracy na wspólnym kodzie nawet bez build centerów, automatycznych testów i podobnych pozwala na obejście większości problemów. W końcu jak duża jest szansa, że 2 lub więcej ludzi z 6 osobowego zespołu dotknie tego samego kodu i sobie będzie wzajemnie przeszkadzać? Niewielka, choć szacunkowo zdarza się to w 10-15% przypadków ;-) i narzut wynikły z opóźnień tym spowodowanych jest o wiele mniejszy niż ten wynikły z walki z gałęziami.
Dokumentacja.
To jeden z największych mitów ;-) Wszyscy chcą dokumentację do projektów [sam nieraz chciałem], ale nikt jej nie tworzy ;-) A gdy wymogi każą ją tworzyć to jest traktowana po macoszemu i nikomu nie chce się jej później aktualizować [co zwykle oznacza przepisywanie].
Sens ma dokumentowanie punktów styku między podsystemami, interfejsów, protokołów komunikacji i zamotanych algorytmów, do tego dochdzą jeszcze sytuacje gdy coś jest regulowane przez prawo i trzeba to zaimplementować, wtedy też dobrze napisać dokumentację jak to ma działać. Dobrze jest jeszcze udokumentować pewne szkielety rozwiązań i zrobić listę przykładów do naśladowania i do unikania. Choć może się okazać, że i to by było zbyt dużą liczbą dokumentów. Zwykły JavaDoc wystarcza ;-)Podsumowując mogę stwierdzić, że do developmentu próbuje się wprowadzać formalizm, ale on często zamiast pomagać zabija twórcze podejście. Brak formalizmu jest zły, ale życie dla formalizmów jest jeszcze gorsze. Najzdrowszym podejściem jest podejście rozsądne ;-) Które można wyrazić jako niedogmatyczne trzymanie się zasad ;-)

Podobne postybeta
Starzeję się ;-)
"Ja? Niech ktoś inny płaci" ;-)
Kiedy zmieniać pracę i po co? (w IT)
Nie, Scrum nas nie "uratował" od Waterfalla... za to powoli sam się nim staje ;-)
4 dniowy tydzień pracy - idea piękna... ale obawiam się, że tylko zwiększy rozwarstwienie

Rok Darwina czas zacząć :-)

Gdyby nie wpis Pawła Wimmera na jego blogu - Poradnik Webmastera, przegapiłbym jedną z ważniejszych dat w historii nauki i ludzkości.Dokładnie 150 lat temu na spotkaniu The Linnaean Society of London [Stowarzyszenie Lineuszańskie ;-)] odczytano liczący 18 stron referat zawierający listy Karola Darwina i Alfreda Russela Wallace'a mówiące o tym jak dobór naturalny wpływa na ewolucję i zróżnicowanie gatunków.To przedstawienie nie odbiło się zbyt szerokim echem, dopiero publikacja O pochodzeniu gatunków spowodowało ożywioną dyskusję.Z powodu tej 150 rocznicy czas zacząć obchodzenie Roku Darwina :-)Więcej na Wired [w języku angielskim]


Podobne postybeta
Jadę na konferencje :-) tzn. chyba jadę ;-)
Działamy
Me Hacker ;-)
Dzień Darwina
12 stycznia - Dzień Darwina

Największy przekręt w Polsce?

Gdy jakakolwiek państwowa instytucja zleca jakąś usługę, lub gdy dokonuje zakupu musi ogłosić przetarg, ogłosić zamówienie publiczne lub coś podobnego. Wszystko w celu uniknięcia korupcji. Tak by każda nawet najmniejsza złotóweczka wydana z państwowych pieniędzy została wydana w sposób właściwy.Okazuje się jednak, że ten system omija łukiem działalność na którą państwo wydaje od 1 do 7 mld złotych rocznie [taka rozpiętość wynika z niemożności prostego oszacowania kwoty].W Wojsku Polski, Policji, Straży Granicznej, więzieniach i paru podobnych instytucjach usługi w zakresie "opieki duchowej" świadczone są z ominięciem ustawy o zamówieniach publicznych. Nie było na nie przetargu.Identyczna sytuacja występuje w szkołach, państwo zleciło prowadzenie religii, ale zrobiło to bez procedur obowiązujących w innych miejscach.Mówiąc inaczej, olbrzymie kwoty pieniędzy z naszych podatków wyprowadzane są z budżetu państwa i samorządów do kilku instytucji [w większości do jednej] z całkowitym pominięciem przetargów.Myślę, że obecny rząd, który tak dużo mówi o wolności gospodarczej powinien zaproponować ustawę, która ureguluje ten problem i wprowadzi doroczne przetargi na "usługi duchowe" i prowadzenie religii w szkołach. Myślę też, że PiS jako partia która walkę z korupcją wpisała sobie na sztandary poprze ten projekt, a jeszcze wcześniej poleci swojemu dziecku - CBA - zbadanie kto dopuścił do takiego gigantycznego przekrętu!!![tak, drę łacha ;-)]


Podobne postybeta
Zemsta niepełnosprytnych
Na co "idą" moje podatki?
"Herbatka"
I bądź tu przedsiębiorczy
Żenada....

sobota, czerwca 28, 2008

Wszyscy jesteśmy małpami

Kilka dni temu portale podały wiadomość, że w Hiszpanii mocno zaawansowane są prace nad prawem dającym małpom człowiekowatym ekwiwalent praw człowieka.Nie ma się zresztą czemu dziwić, wg. dzisiejszych badań na poziomie genów jesteśmy z wszystkimi innymi człowiekowatymi praktycznie identyczni [mamy wspólne około 97% genów], dodatkowo małpy człowiekowate spełniają takie kryteria jak tworzenie kultury, odczuwanie "wyższych" emocji, tworzenie i posługiwanie się narzędziami czy też posługiwanie się językiem, które przyjmuje się jako elementy definiujące człowieczeństwo.Oczywiście naraz podniosły się głosy krytyki z tej strony sceny politycznej, która ciągle znajduje się w XIX wieku gdy człowiek był "koroną stworzenia" [przy założeniu że był biały, był mężczyzną, należał do odpowiedniej klasy i wierzył we właściwego boga]. Krytyka przebiega mniej więcej standardowo jak dla prawicy, czyli od "oczywistych oczywistości" w których przyjmuje się a priori, że człowiek to coś innego niż zwierzę, następnie krytycy podkreślają, że Hiszpania to kraj gdzie zgodzono się na małżeństwa homoseksualne, po czym można dowiedzieć się, że fakty nie są faktami, bo to nie może być prawda, że dzielimy z człowiekowatymi 97% genów. Zapewne za chwilę wypowiadać zaczną się "bioetycy", którzy udowodnią, że jedynie człowiek ma prawo do ochrony, a pomysły Hiszpanów to skutek ich odejścia od tradycyjnego modelu rodziny i przyszedł im do głów od używania prezerwatyw. Jak to czytam to zawsze się zastanawiam jak ci ludzie poczuliby się gdyby to np. małpy były w posiadaniu techniki i gdyby dla swoich eksperymentów przeprowadzały badania na ludziach, gdyby rozdzielały rodziny by mieć osobniki do ogrodów zoologicznych.Planeta Małp nie była o tym jakie to małpy są złe, ale o tym jacy my jesteśmy.A pomysł Hiszpanów jest tylko realizacją idei stojącej za Great Ape Project, pomysłodawcy projektu i jego sympatycy pragną po prostu by zapewnić naszym najbliższym krewnym prawo do życia, prawo do wolności i prawo do ochrony przed torturami. W końcu jakby nie patrzeć to my też jesteśmy małpami, z tym że mamy trochę chudsze włosy. Dlatego może zamiast akcji "Wszyscy jessteśmy Bolkami" zacząć by akcję "Wsztscy jesteśmy małpami"? :-)PS. tekst pisany na moim Asus EEE 900, którego klawiatury jeszcze nie wyszułem w 100% więc przepraszam za wszelkie literówki :-)


Podobne postybeta
"Skoro ludzie wyewoluowali z małp to czemu małpy nadal istnieją?"
Podwójne standardy - Tybet a Arabia Saudyjska.
Komunizma!=Faszyzm
Promptem w ToDo ;-)
Go dla Java'owca ;-) odcinek 2 "kontenery dwa ;-)"

czwartek, czerwca 26, 2008

Wirtualna wycieczka po Los Angeles :-)

Pisałem ostatnio, że bawię się wtyczką Google Earth Plugin.
Zobacz w nowym oknie
Jak na razie udaje mi się sterować kamerą przy pomocy danych które nagrałem sobie kiedyś z GPS :-).W trakcie implementacji najtrudniejsze było przypomnienie sobie jak to było z tym tangensem w trakcie obrotów ;-) [Jeśli kogoś to interesuje to do ustalenia kąta kamery biorę wektor utworzony z aktualnej pozycji i kolejnej :-)]Do zobaczenia efektu konieczne jest posiadanie Google Earth Plugin.


Podobne postybeta
Widoczki ;-)
Wygląda na to, że Windows nie jest mi pisany ;-)
Idziesz grać w ingres, kończysz jako obsługiwant parasola chroniącego kamerę TV ;-)
OOo2GD 2.1.0 - filtrowanie, sortowanie [dla niektórych ;-)] i bardziej *nixowe nazwy
CosmoPlayer w Google Chrome

środa, czerwca 25, 2008

Asus EEE 900 ;-)

Tak wygląda mój Asus EEE 900 ;-) na pokładzie ma Windows XP Home EN, do tego StarOffice 8 i MS Works [pierwszy raz w życiu próbowałem tego użyć :-)].Jak na razie uczucia mam mieszane ;-) Urzeka mnie zgrabność tego cosia, ale razi trochę mała klawiatura, na której co jakiś czas przesuwam się o jedną literę w prawo. Mam też problemy z WiFi, nie potrafię zestawić połączenia ad-hoc z moim laptopem.Pani na tapecie jest w oryginale mniej niebieska ;-) [jakby kogoś interesowało to jest to Summer Glau]

Podobne postybeta
Terminator
Asus EEE 900 - Tips & Tricks ;-)
Joost - TV w komputerze
Connectify - zmień swoje Windows 7 w hot spota :-)
Zmusiłem Asus MyPal A636N do pracy z WiFiFoFum :-)

niedziela, czerwca 22, 2008

Widoczki ;-)


Bawię się wtyczką Google Earth Plugin i steruje kamerą przy pomocy JavaScript. Jako dane dla kamery używam ścieżki GPS nagranej w trakcie wyjazdu do Los Angeles.

To na górze to scena w drodze do oceanu :-) Już widać ocean :-) Jak dopracuję "animację" to wrzucę do bloga :-)



A to Pacific Coast Highway :-)

Podobne postybeta
Wirtualna wycieczka po Los Angeles :-)
Nimbus vs. Ocean - nowy Look And Feel w Swing
Idziesz grać w ingres, kończysz jako obsługiwant parasola chroniącego kamerę TV ;-)
Tak tworzy się przyszłość
CosmoPlayer w Google Chrome

Wrrr... no co to ma być to całe =ZAOKR.DO.NPARZ() ?

Wrrr... nie lubię tego, że kiedyś jakiś geniusz wpadł na pomysł lokalizacji któregoś z arkuszy kalkulacyjnych [chyba Excela, ale głowy nie dam]. Przez to dał znak w złym kierunku i od wtedy wszystkie polskie wersje arkuszy używają koszmarków w stylu =PIERWIASTEK() albo =POTĘGA(), choć w swej makabrze mało co pobije =ZAOKR.DO.CAŁK() czy =ZAOKR.DO.NPARZ().I co komu szkodziły, uczciwe i ładne nazwy takie jak =SQRT() czy =POWER()?Chyba zacznę znów używać anglojęzycznego OpenOffice.org :-) bo na szczęście jedyny komputer gdzie mam Excela to firmowy laptop, a tam mam całego MS Office po angielskiemu ;-)


Podobne postybeta
OOo2GD 1.5.0 - drżyjcie arkusze! ;-)
Wrrr.... złe API ;-)
Jak zwiększyć swoje IQ?
OpenOffice.org i Google Docs, nowa wersja rozszerzenia
PROPFIND, czyli jak przechytrzyć HttpURLConnection

BigInteger i liczby pierwsze ;-)

Pytanie:
Jak szybko sprawdzić w Java'ie czy dowolnie duża liczba jest pierwsza? :-)

Odpowiedź:
Użyć metody isProbablePrime(int) klasy BigInteger :-)
Dzięki temu, że metoda ta używa testu prawdopodobieństwa Miller'a-Rabina, możemy by z prawdopodobieństwem 1-1/1024 ustalić czy dana liczba jest liczbą pierwszą, użyć kodu:
BigInteger bi = new BigInteger(str);if (bi.isProbablePrime(10)) { System.out.println(bi+" is [probably ;-)] prime :-)");}
By zrobić to z prawdopodobieństwem 1-1/1048576 wystarczy jako parametr do metody isProbablePrime(int) przekazać 20 :-) W ogólności prawdopodobieństwo to jest równe 1-2-n ;-)
Przy okazji BigInteger może nam także znaleźć liczbę prawdopodobnie pierwszą ;-)

sobota, czerwca 21, 2008

Gdy więcej znaczy trafniej ;-)

Pisałem tu kiedyś o tym dla jakich firm warto pracować ;-) Pisałem wtedy o procesie rekrutacji, dziś pozwolę sobie na rozwinięcie jednego z punktów.Wytłumaczę czemu trzeba uciekać jeżeli testuje nas 1 osoba zamiast 2 czy więcej.O firmach, w których tylko prezes prowadzi rekrutację należy zapomnieć z definicji.Czemu im więcej osób oceniających tym lepiej?Działa tu magia statystyki zwana centralnym twierdzeniem granicznym, ale wytłumaczymy to na przykładzie :-)Przyjmijmy, że kandydat do pracy może zostać oceniony w skali 0-10, gdzie 0 to kompletny brak umiejętności, a 10 to geniusz. Załóżmy 2 scenariusze, w pierwszym mamy 1 oceniacza który może pomylić się o w ocenie o 2 i robi to z jednolitym rozkładem prawdopodobieństwa pomyłki, mówiąc inaczej, przyjmujemy, że tak samo prawdopodobne jest, że pomyli się o 2,1,-1,-2 jak i nie pomyli się w ogóle.W scenariuszu drugim mamy 2 oceniaczy, którzy także mogą się mylić o 2 punktu, dla każdego z nich rozkład pomyłek jest także jednolity, czyli równie prawdopodobne jest, że oceniacz pomyli się o -2, -1, 0 jak i 1 i 2.Każdy z oceniaczy może pomylić się z osobna w 80% przypadków.Nasi 2 oceniacze mogą mylić się wspólnie w taki sposób:
Błąd średni błąd
oceniacz 1 oceniacz 2
-2 -2 -2,0
-2 -1 -1,5
-2 0 -1,0
-2 1 -0,5
-2 2 0,0
-1 -2 -1,5
-1 -1 -1,0
-1 0 -0,5
-1 1 0,0
-1 2 0,5
0 -2 -1,0
0 -1 -0,5
0 0 0,0
0 1 0,5
0 2 1,0
1 -2 -0,5
1 -1 0,0
1 0 0,5
1 1 1,0
1 2 1,5
2 -2 0,0
2 -1 0,5
2 0 1,0
2 1 1,5
2 2 2,0
Co daje nam taki rozkład błędów:
średni błąd liczba ocen z danym błędem prawdopodobieństwo błędu
-2,0 1 0,04
-1,5 2 0,08
-1,0 3 0,13
-0,5 4 0,17
0,0 5 0,21
0,5 4 0,17
1,0 3 0,13
1,5 2 0,08
2,0 1 0,04
O maksymalnie 1 punkt pojedynczy oceniacz pomyli się w 3 przypadkach na 5, czyli w 60% przypadków, 2 oceniaczy zrobi to w 84% przypadków, 4 zaś w 89% przypadków. Widzimy więc, że zwiększając ilość oceniaczy poprawiamy trafność oceny.Dlatego bardziej powinniśmy być zainteresowani firmami, które używają większej liczby osób oceniających. W ich procesie rekrutacji jest mniej błędów, a przez to i nasi przyszli współpracownicy będą lepsi :-)


Podobne postybeta
Nieistniejący rynek
My Tracks mówi "budujmy więcej autostrad" ;-) albo jakoś tak ;-)
O wyższości podejmowania decyzji partiami zamiast per sztuka ;-)
Tajemnica PKP....
Java i liczby pierwsze, odsłona druga