Pokazywanie postów oznaczonych etykietą coding. Pokaż wszystkie posty
Pokazywanie postów oznaczonych etykietą coding. Pokaż wszystkie posty

niedziela, 23 września 2012

CodeRetreat w Wolfsburgu

No i sie doczekalem. Tym razem CodeRetreat w Wolfsburgu. Zastanawialem sie czego mozna sie nauczyc rozwiazujac kolejny raz to samo zadanie, w tej samej formule (formula CodeRetreat). No wiec oto rzecz, ktore odkrylem tym razem:
  • Podczas jednej z sesji, moj pair-kolega mial laptopa z podlaczona dodatkowa klawiatura. Jedna dla niego, jedna dla mnie. To naprawde bardzo ulatwilo nam prace. Zamiast paluchem pokazywac cos na monitorze, wystarczylo wejsc koledze w slowo po to aby sie zatrzymal, a nastepnie bez przekazywania klawiatury klepac swoj pomysl tak zeby widzial rowniez w kodzie o co chodzi. Sluchajcie, bez zartow, niby taka pierdola ale naprawde duzo, duzo pomaga. Polcam na kazdy nastepny raz i w pracy jak robicie Pair Programming ;)
  • Z innym kolega klepnelismy wszystkie zadane 4 reguly gry w zycie w 4 linikach kodu! TO dlatego, ze wspolpraca szla nam naprawde dobrze. Ja klepalem testy, kolega implementacje. Nazwy metod testowych byly pelnymi zdaniami, wyrazy oddzielalem podkreslnikiem. 
  • Dwie pierwsze sesjie byly ciekawe z tego powodu, ze  mialem osoby zielone z TDD, i bedace pierwszy raz na code retreat. Tu uczylem sie nie wymadrzac, przekazywac wiedze i lamac schematy (ze jakies tam podejscie, ktore kiedys poznalem jest naj). Bardzo cenie sobie te sesje.
W trakcie kazdego takiego warsztatu obserwuje strone organizacyjna i pomysly jakie sa wykorzystywane. Moze bede mogl wykorzystac zebrane doswiadczenia pomagajac przy organizacji Global Day Of Code Retreat.
Jak zawsze takie spotkanie to okazja na nowe znajomosci i luzne z ludzmi z branzy. To sobie bardzo cenie - moc dowiedziec sie jak wyglada branza IT w Niemczech bezposrednio z ust osob z ta branza zwiazanych.

wtorek, 5 czerwca 2012

CodeRetreat w Berlinie

Bardzo sie ciesze, ze kolejny raz moglem wziac udzial w CodeRetreat (CR). Sa to warsztaty integrujace ludzi pracujacych jakkolwiek z kodem. Wedlug mnie dobrym polskim tlumaczeniem "Code Retreat" bedzie: "Rekolekcje dla programistow". CR stwarza mozliwosc do pomedytowania nad kodem, do wymiany refleksji nad jego stanem, do podjecia postanowien, do zmiany myslenia i wreszcie do uczenia sie od siebie nawzajem. Poza hardskillami w naturalny sposob uczysz sie softskilli. Pair programming, zmiana w parach co sesje, retrospekcje, wspolny obiad bez pospiechu - to wszystko sprzyja interakcji.
Tak bylo i tym razem. Dzieki zapalencom (no bo jak nazwac osoby zjezdzajace sie i to w niedziele po to zeby caly dzien razem kodowac) oraz sponsorom: @nokia@crealytics, @klosebrothers udaly sie kolejne rekolekcje. Bardzo ciekawa relacje mozna przeczytac na blogu Staszka.

piątek, 20 kwietnia 2012

Wymowne nazwy metod i kontekst.

Metoda malych kroczkow wprowadzam do kodu, z ktorym na codzien pracuje pewne konwencje. Piszac testy staram sie nazwac metode testowa tak aby w pewien sposob oddala kontekst testu. Jednak na nic te konwencje jesli tylko ja bede ich uzywal. Wiec pokazalem jednemu koledze moj kod z takimi dlugasnymi nazwami metodami (okolo 100 znakow na nazwe) i poprosilem o komentarz. 100 znakow! WTF! No wybacz, sa taki jezyki (nie programowania), ktore potrzebuja duzo miejsca. Podobno jezyk finski przebija wszystkie.

zwracaTrueDlaProcesowZewnetrznychTechnicznieZwalidowanychWersjonowanieRozpoczete

No wiec pokazje koledze pierwsza motode.... a on czytajac ja w polowie dostal stackoverflow. Czyta drugi raz i znowu. Mowi do mnie, ze to nie przejdzie, ze to do dokumentacji, ze jak dla niego 3 wyrazy i basta. Na koniec podkreslil jeszcze dobitnie, ze to za duzo. Sie zdziwilem, ze tak od razu, ze sie nie reebotuje i nie walczy no ale coz. Dla mnie jego zdanie jest wazyne bo przeciez na jednym kodzie pracujemy. Staram sie jednak mu pomoc i go zachecic. Czytam mu nazwe metody i robie przerwy. On to zwuwazyl i mowi mi, ze z tymi przerwami juz kmini ale ich w nazwie nie widzi. No wiec edytuje kod:

zwracaTrue_DlaProcesowZewnetrznych_TechnicznieZwalidowanych_WersjonowanieRozpoczete

Kolega jeszcze sie krzywi, no jest lepiej ale. Pokazuje mu inna, stara nazwe metody testowej:

rodzajSourcinguZmieniony

i pytam czy ta nazwa mu cos mowi. Kolega zaczyna parsowac, glowi sie, patrzy w kod (zaslonilem mu na chwile ;)). No nic, z samej nazwy metody nic nie wyprodukuje, nie wie w ktorym kosciele dzwoni. Odslaniam kod testu. W sumie pogorszylo tylko sprawe :D
No ale nie cisne na sile. Skoro jemu trudno to odczytac i woli w dokumentacji to mu pokazuje dokumentacje klasy i szeroko opisan kontekst. Swieteni, robi sie jasniej. Zmarszczki na czole powoli sie prostuja ( mam nadzieje, ze pod czaszka nastepuje proces odwrotny). W powietrzu czuc porozumienie. No to ide za ciosem. Cialo metody:

// GIVEN
wstepny kontekst, setup, ustawienie stanu systemu
// WHEN
zdarzenie faktycznie testowane (np. wywolenia metody)
//THEN
sprawdzenie wynikow tesotwanej metody, asercja

I tu pozytywna reakcja. Weszlo jak w maslo, sa pochwaly, jest dobrze. Rownoczesnie patrzymy na inne metody testowe napisane dawno temu. Czy ktos myslal kiedys o tym, ze inni beda je czytac szukajac powodu defektu? Czy ty myslisz o tym, piszac kod?


wtorek, 13 grudnia 2011

Testy Alibi

Spotkalem sie dzisiaj z nowym rodzajem testow. Tak mi sie on spodobal, ze zechcialem wspomniec o nim na blogu. Chodzi o Testy Alibi. Moja definicja tego pojecia jest nastepujaca:

Testy Alibi - to takie testy, ktorych glownym celem jest istnienie samo w sobie.

Jesli ktos pyta czy do danego kodu napisane sa testy to w przypadku testow alibi mozna odpowiedziec, ze oczywiscie tak. Najlepiej odpowiedziec na tyle stanowczo zeby nie otrzymac kolejnego pytania na ich temat.

piątek, 9 grudnia 2011

S.O.L.I.D i refaktoring

Wszystkim zainteresowanym tematem polecam mocno wg mnie dobre darmowe e-booki traktujace temat SOLIDnego projektowania i refaktoryzacji.

piątek, 2 grudnia 2011

Po co nam te javadocki, komantarze, etc...

Grzebiac w kodzie znalazlem kilka metod opatrzonych takim oto komentarzem:

"Life is too short..."

Autor mial zapewne wazniejsze rzeczy do robienia podczas pisania kodu i niepisania javadoca. Ocenil sytuacje i stwierdzil, ze szkoda jego cennego czasu, jego zycia na takie pierdoly. Po jakims czasie ja trafiam na to miejsce starajac sie zrozumiec jak cos dziala. Co z moim czasem, z moim zyciem? Patrzac z szerszej perspektywy, ktos bedzie musial za to zaplacic i z pewnoscia nie autor, ktory zaoszczedzil swoj czas.
Podumowujac:
Kod wiecej razy czytamy niz piszemy. Dlatego tak wazne jest zeby juz napisany byl czytelny i zrozumialy. Wszystkim piszacym kod polecam ksiazke "Clean Code" by Robert C. Martin (Uncle Bob).

niedziela, 6 listopada 2011

Jak dziala hibernate'owy cache

Jako, ze w kolejce czekaja zadania z optymalizacji aplikacji. Postanowilem zbadac jak dziala cache w hibernate. Zanim bede czytal kod hibernate (glownie na potrzeby second-level-cache) zapoznalem sie z tekstami innych programistow. Ten artykul uwazam za jeden z ciekawszych:
http://blog.dynatrace.com/2009/02/16/understanding-caching-in-hibernate-part-one-the-session-cache/

Kolejne czesci latwo wskaze uncle Google.

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, 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.

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....

piątek, 30 września 2011

Mylyn i code review

Generalnie jestem zwolennikiem tekiego code review gdzie nie ma wyznaczonego jednego guru, ktory to robi. Ludzie w projekcie sprawdzaja nawzajem swoj kod. Guru patrzy na wazniejsze kawalki. Zalozmy jednak, ze ty - guru yoda - jestes namaszcony zeby robic co jakis czas review swiezego kodu. Pisze go 10 koderow. Jak w prosty sposob przekazac tym koderom swoje uwagi i nie namacic w kodzie? Jak wskazac im te miejsca, ktore trzeba przepisac. Moze Excel ;P moze wstaei komentarze do kodu..
Tu z pomoca przchodzi znowu Mylyn! Oto super prosty i skuteczny, sprawadzony przez wielu przepis, a juz jak grupa jest rozproszona to nie ma lepszego...
Otoz kazde review traktujesz jako odrebne zadanie mylyna. Aktywujesz zadanie, przegladasz kod napisany przez Martina, a mylyn tworzy kontekst. Zeby nie smiecic w kodzie zbedynmi komentarzamie dodajesz bookmarki. Na koncu zapisujesz nowe zadanie jak np. bug przydzielasz Martinowi i dodajesz do niego utworzony przez mylyna kontekst. Martin przychodzi do pracy odpala swojego sexclipsa i widzi na swojej liscie nowe zadanie. Aktywuje je, otwiera mu sie kontekst i juz wie na co ma zwrocic uwage. Czyz to nie super narzedzie ten mylyn !!?

W mylynowym kontescie nie widac wszystkich plikow

Po co widziec te wszystkie pliki? Po to sa rozne kontesty zeby latwiej bylo sie w nich poruszac (moje proste wyjasnienie). To kwestia przestawienia sie na Task Focused Programming. Jednak moj kontekst sie szybko "brudzil".
Byly ku temu dwa powody:

1. A to w trakcie pracy nad problemem A zapragnalem na chwile wskoczyc w problem B
2. A to ktos przyszedl do mnie, zeby sie o cos spytac w kodzie

Wylaczenie aktywnego zadania powodowalo, ze wszystkie edytory byly tez zamykane. Wtedy ja szukalem tego co mi bylo potrzebne. Ewentualnie nie deaktywowalem zadania nad ktorym pracowalem i wtedy kontekst "wybogacal sie" o rzeczy z nim niezwiazane. Znalazlem na to 2 rozwiaznia. Oto one:
Rozwiazanie 1. Utworzylem sobie nowe lokalne zadanie o nazwie WTF (wiadomo). Mozna tez AnyOtherBusiness lub DevNull jak kto woli. Ilekroc ktos ma do mnie jaki biznes przelaczam sie na moje specjalne smietnikowe zadanie i szafa gra.
Rozwiazanie 2. Zauwazylem ze w widoku "Projec Explorer" kiedy zatrzymam myszke na ikonce projektu lub pakietu pojawia sie obok niej taki maly "+". Po nacisnieciu dostaje sie pelny widok jednak nie jest on dodawany do kontekstu dopukni nie otworze pliku.
Rozwiazaniem podzielilem sie z kolega obok i bardzo mu sie spodobalo.Tteraz obaj mamy zadanie WTF na naszych listach :)

piątek, 23 września 2011

Bookmarki + mylyn = jeszcze lepsza dystrybucja informacji

Czy wiesz, że mylyn w kontekście aktywnego taska zapamiętuje również bookmarki? Rewelacje... czyli teraz mogę opisywać (poza oficjalnymi komentarzami w kodzie) różne dodtkowe, istotne rzeczy.... Takie proste a jak cieszy!

piątek, 16 września 2011

Czytelne nazwy metod a jezyk ojczysty kodera

Jestem jak jak najbardziej za pisaniem takich nazw metod, ktore dla osoby czytajacej to po mnie beda zrozumiale. Czy mi to zawsze wychodzi? Nie, nie zawsze. Wciaz sie pilnuje i sile nad takimi sensownymi nazwami. Robie to po to abz utrzymanie tekigo kodu bylo w przyszlosci latwiejsze i przez to tansze. Dzisiaj pokazalem koledze kawalek kodu (testu) ktory napisalem z prosba o komentarz. Zapytalem tez czy to jest dla niego czytelne. Zasugerowal mi, ze ladniej bedzie jak uzyje jezyka niemieckiego zamiast angielskiego. I oto jaka nazwa mi wyszla:
konstenArtAenderungVonNichtVerkaufserloeseNachVerkaufserloeseSollNichtZulaessigSeinVorgangImStatusAnfrageGestoppt

środa, 14 września 2011

Dzień Programisty

Wczoraj tj 256 dnia roku obchodziliśmy Dzień Programisty.
Wszystkim programistom i programistkom życzyłem wczoraj żeby nie przestawali kodować.

czwartek, 8 września 2011

Mylyn + bugzilla - jak pomóc innym i sobie


Będzie krótko. Spędziłem kilka ostatnich dni na analizie i korekcie defektu. Przeorałem GUI (Swing+litenery), poszedłem na serwer, kopałem tam jakiś czas i dokopałem się do źródła. I jak teraz opisać innemu programiście całą tą moją wycieczkę żeby w razie potrzeby dotarcie do tego źródła oszczędził czas? Mylyn + jego context.



Jako bugtrackera używamy bugzilli. Defekt importuję do IDE jako nowy zadania (Mylyn się cieszy). Ja buszuję w kodzie a Mylyn tworzy kontekst. Przed zamknięciem defektu wywalam z kontekstu śmieci i załączam go do zadania (defektu). Submit i teraz każdy kto będzie musiał coś dotknąć w tym miejscu i odnajdzie tego bugu w bugtruckerze będzie mógł zaimportować stworzony przeze mnie kontekst i mieć mapę z drogą do żródła.

Scrapbook page - one of the most undervalued and forgotten features of Eclipse

Zachęcam wszystkich mówiących w języku java do zapoznania się z:
One of the most undervalued and forgotten features of Eclipse - Scrapbook page'ami.
http://www.eclipsezone.com/eclipse/forums/t61137.html