niedziela, 30 października 2011

Popatrzec na program okiem uzytkownika

Niessamowite doswiadczenie mialem w piatek. W ramach wdrozenia wyslany zostalem wraz z kolega z projektu na szkolenie dla uzytkownikow systemu, ktory programujemy. Grupa szkoleniowa to osoby z dzialow zakupow +my.
Spotkanie z uzytkownikami softu, ktory klepie to moje zawodowe marzenie. Sugerowalem przelozonemu cos takiego jednak okazalo sie, ze jest inna grupa za to odpowiedzialna i w sumie nikt nigdy czegos takiego nie robil.... musze bardziej nad nim popracowac :)
..wiec stalo sie, jestem na szkoleniu.
Postanowilem nie proznowac i notowalem wszystkie obserwacje uzytkownikow. Pytalem jak klikaja, czego uzywaja, czego nie uzywaja (wow tu bylem mocno zaskoczony), co jest dla nich trudne. Notowalem wszystkie uwagi, na temat kolorow, ukladu, niejasnosci, gdzie sie gubili. Mam materialy na 2-3 misiace pracy. To byl czad! Kiedy pokazywalem niektorym osobom jak cos mozna lepiej zrobic, byli zachwyceni. Co za soft! Dla nich to cenne informacje pozwalajace oszczedzic czas i usprawnic prace. Dodatkowo poznalem lepiej proces zakupow. Uslyszalem wiele przykladow z zycia codziennego co dalo mi nowe spojrzenie nie tylko na sam system ale ogolnie na prace, ktora wykonuje. Jak wazne jest dobre zrozumienie tematu, przygotowanie uzytecznego rozwiazania i komunikacja.
Takie spotkanie polecam kazdemu kto pisze soft dla ludzi.

czwartek, 27 października 2011

Prawie jak SVN :)

Jesli pracujesz z CVS to masz szanse natknac sie na taki oto problem:
Programista Henio przychodzi do pracy i synchronizuje sie z repozytorium cvs. Wszystko mu sie pieknie zbudowalo. W trakcie testowania czegos zauwaza, ze cos jednak w programie dziala nie tak jak wczoraj. Hmmm, pewnie ktos cos pozmienial. Zaraz sprawdzimy. I tu Henio sie orientuje, ze standardowy plugin w jego eclipsie nie pozwala pokazac jakie pliki zostaly zmienione w konkretnym commicie. Ojjojjoj jak dobrze bylo uzywac svn. I jak sie teraz dowiedziec kto, co i kiedy zacommitowal.

Heniowi pyta wujka Googlek o rade, a on wskazuje na ten oto adres:
Eclipse CVS ChangeLog Plugin. Henio instaluje plugin w swoim eclipse, wszystko ladnie dziala. Teraz juz wiadomo kto co ostatnio commitowal, latwiej znalez co zostalo popsute. CVS stal sie prawie jak SVN tak na 5 minut.

wtorek, 25 października 2011

Czytanie między wierszami ma swoje minusy

Dużo dobrego słyszałem o polskich programistach, którzy z byle jakie specyfikacji potrafią zmajstrować solidny program. Jak oni to robią? Z tego co udało mi się zaobserwować stosuję metodologię CzytajMiędzyWierszami. A kim są ci, którzy bardzo lubią tą metodologię? Są to ludzie, którzy z różnych powodów opracowują niestarannie wymagania klienta, piszą nieprzemyślaną specyfikację, później to zatwierdzają i przekazują dalej (cokolwiek to znaczy).

Oto programista Henio dostaje do wyklepania CRa. Widzi jego opis zarejestrowany w BTS, widzi komentarze, jakieś dodatkowe wyjaśnienia, linki do UseCase'ów, widzi maile z kolejnymi potwierdzeniami od specyfikatorów i testerów, wszystko jest ok. Henio jest pilnym programistą i już niejedno na swojej programistycznej ścieżce widział. Po pierwszym czytaniu Henio widzi, że to co jest w BTS i to co jest w UseCase'ach to nie to samo. Henio zna metodologię CzytajMiędzyWierszami wie kiedy jest deadline i wie jeszcze, że żeby odkręcić te kilka szczegółów trzeba porozmawiać (Henio wie, że maila wysyła się, kiedy nie trzeba czegoś szybko załatwić) z 3 osobami, wyjaśnić im co jest nie tak, poprosić o komentarz, posłuchać ich wyjaśnień i dostać od nich poprawione wersje. Do tego wszystkiego dochodzi jeszcze pośrednio kierownik projektu, który zablokował pliki, ponieważ dostał informację, że wszystko jest zapięte. Tak się składa, że do pokoju Henia przyszedł Zenek. Henio przedstawił sprawę Zenkowi i zapytał co by Zenek zrobił. Zenek też zna metodę CzytajMiędzyWierszami do tego zna jeszcze NieCzytajMiędzWierszami. Zenek pyta Henia co się stanie jeśli CR zostanie wyklepany i pójdzie do testów. No jak to co? Testerzy przeczytają specyfikację i go przetestują, tzn przetestuję część. To co stoi między wierszami pominą. W końcu po to mamy specyfikację i wymagania, żeby na nich polegać. CR trafi na produkcję. Przyjdzie kilka bugów, się poprawi i jakoś będzie - pochodna code and fix. Ktoś nie dostanie na czas swojego samochodu, ktoś dostanie paczkę z tygodniowym opóźnieniem, innych 1000 osób będzie musiało dalej drukować i pewne dokumenty zamiast móc je przekazywać drogą elektroniczną. No chyba, że Heniu poświęci swój cenny czas, jaki spędza w pracy na zrobienie czegoś naprawdę dobrze i na poziomie. Co zrobi Heniu? A co zrobisz ty w takiej sytuacji?

piątek, 21 października 2011

FritzBox - telefonia internetowa

Oto moj modem FritzBox 7170
Nie ma to jak przyjaciele i ich dobre rady. Po jednej z nich zakupilem ten model, ktory jak dla ma bogata funkcjonalnosc. To z czego obecnie korzystam i bardzo jestem zadowolony to wbudowane w niego bramka VOIP. Numer niemiecki zakupilem u lokalnego dostawcy, numer polski w strefie 071 easycall.pl (5zl/rok). Do routera podlaczylem zwykly telefon stacjonarn. Router pozwala zarejestrowac kilka numerow telefonu i podpiac je pod jeden telefon. I tak oto rodzina z Polski dzwoni na moj numer ze strefy 071 i placi lokalnie, znajomi z Niemiec dzwonia do mnie jak do volksdojcza. Ja wybierajac odpowiedni prefix dzwonie przez 071 do polski (0.08 gr/min), a do Niemiec przez odpowidni inny prefix. Jestem bardzo zadowolony z tego rozwiazania. Jesli ktos chce znac szczegoly to chetnie podziele sie na priv.


ThoughtWorks - relacja

Na wyklad przyszla ponad setka osob.

Wolf Schlegel: "Dos and don'ts of Continuous Integration and Delivery"
Wolf zadal takie oto pytanie: Ile czasu zajmuje dostarczenie nowej wersji na produkcje po dodaniu jednej linijki kodu?
Mozliwos szybkiego i sprawnego dostarczenia nowej wersji jest kluczowa. Decyzja o tym kiedy nowy releas wejdzie na produkcje jest sprawa marketingowa, umiejetnosc zrobienia tego jest sprawa techniczna. I ta umiejetnosc czesto przesadza o tym kto zagarnie nowych klientow.
Znane sa sytuacje kiedy programista nie zdarzyl sie wyrobic i pewna czesc funkcjonalnosci przesunieta zostala do kolejnego release (np. na 3 miesiace)
bo taki jest plan.
A co gdyby po kazdej wprowadzonej zmianie mozna bylo miec mozliwosc latwego dostarczenia nowej wersj na produkcje?
Oznacza to m.in.:
  • latwosc zarzadzania wersja
  • sprawne przeprowadzenie testow (np. automatyzacja)
  • sprawny proces budowy nowej wersji, sprawny deployment (lacznie z backupami danych)

Erik Dörnenburg: "Lean for enterprise architecture"
Erik twierdzi, ze architektura oprogramowania ma wbrew pozorom wiecej wspolnego z ogrodnictwem niz z klasyczna architektura i budownictwem.
Tu przpomina mi sie czesc artykulu Martina Fowlera http://www.thoughtworks.com/the-new-methodology. Jakims sposobem zapamietalem prawi nic z jego sesji ale moze dlatego ze
nie bylo w niej nic nowego poza tym co napisal Fowler we wspomnianym artykule. Musze jednak zaznaczyc, ze sesja Erika podobala mi sie najbardzie.

Martin Fowler: "Software Design in the 21st Century"
Na tego pana czekalem z duzym zainteresowaniem. Do tej pory czytalem tylko jego ksiazki, bloga i artykuly. Tym razem mialem okazje chwile go poobserwowac i zamienic slowo.
Martin opowiadal o wzkorzystaniu podejscia przy projektowaniu. Glowynm argumentem za bylo mozliwosc przywrocenia systemu do danego stanu za pomoca zalogowanych eventow.
Latwa reprodukcje defektow na podstawie sekwencji eventow. Mozliwosc badania systemu w roznych stanach i latwosc uzyskiwania tach stanow. Szczegoly sa tu http://martinfowler.com/eaaDev/EventSourcing.html

W drugiej czesci omawiany byl software design ogolnie. Nie obylo sie bez Uncle Bob i kwesti moralnej kazdego programisty wsickajacego codziennie guzik(i). Poruszony zostal rowniez temat dlugo technicznego (technical debt) http://martinfowler.com/bliki/TechnicalDebt.html. Jak to z kazdym dlugiem, trzeba go kiedys zwrucic, czesto z odsetkami. Chodzi tu o sytuaje kiedy management cisnie na zrobienie czegos na wczoraj zeby dzialalo, nie wazne jak, zaby tylko klient mogl przeklikac. I nie ma nic w tym zlego. Kredyty sa zaciagane na przerozne rzyczy. Jedyne o czym trzeba pamietac to splata - ona kiedys nastapi. Moze nie podczas trwania projektu, a juz w fazie utrzymania. Nie wazne - zaplacic wkoncu trzeba, a zaplaci pewnie klient.

We wszystkich wystapiniech czuc bylo mocno podejscie adaptacyjne i nacisk na bardzo bliska wspolprace z klientem oraz profesjonalizm w wytwarzaniu oprogramowania. Wszystko po to zeby stworzyc nie tyle sam produkt ile srodowisko pozwalajace przygotowac taki produkt, ktory da sie:
  • latwo dopasowac do zmian na rynku (dodanie nowzch funkcjonalnosci, zmiana istniejacych) good design
  • sprawnie wprowadzac na rynek - WPROWADZAC i WPROWADZAC ciagle - continues integration and delivery
  • tworzyc przy nierozlacznej wspolpracy biznesu z IT - klient jest aktywna czescie zespolu tworzacego oprogramowanie
W tym srodowisku najwazniejsi sa ludzie. "Put people first" i moja parafraza pewnego sloganu "People matter, results come". Ten caly agile jest po prostu dla ludzi, a nie dla projektow czy tam procesow. To znaczy, sa ludzie, ktorzy beda w takim systemie dobrze pracowali i sa tacy ktorym on bedzie nie na reke. Jednak te male robaczki z samego dolu programistycznego padolu sa waze, a nawet bardzo. Nazywane przez niektorych resource'ami sa jak to pisze Fowler indywidualnosciami przeznaczonymi do tworczej pracy. Jak to wlasciwie jest ?

wtorek, 18 października 2011

Software Design in the 21st Century by ThoughtWorks

Dzisiaj po pracy jade do Berlina na: Software Design in the 21st Century. Przy okazji chcialem podziekowac Marcinowi za informacje o tym wydarzeniu. Networking dziala! Czytalem troche Fowlera i postanowilem nie przepuscic tej okazji. Udalo mi sie namowic kolege z projektu wiec jedziemy razem, bedziemy mieli okazje na dluzsza rozmowe.

poniedziałek, 17 października 2011

Malgosia i Janek sind schon da....

wczoraj w nocy przyjechalismy razem do Wolfsburga... Janek zniosl droge (5,5h) zaskakujaco dobrze, wiekszosc czasu spal. Teraz czas na adaptacje w nowym terenie, w nowej konfiguracji.

piątek, 14 października 2011

Mylyn + bookmarki pro task

W poprzednim wpisie pochwalilem mylyna zapamietywanie bookmarkow pro task. On to rzeczywiscie robi i dodatkowo mozna bookmarki filtrowac i widziec aktualnie tylko te zwiazane z aktywnym zadaniem. Postanowilem napisac do userow mylyna na forum Moze cos sie z tego urodzi....