Wujek Bob kontra Pan Spock – czyli prezentacja o Test-Driven Development

Nie minęło wiele czasu od ostatniego wpisu, w którym relacjonowaliśmy nasze uczestnictwo w prezentacji Wujka Boba (Roberta Martina) o czystym kodzie, a już mieliśmy przyjemność wybrać się na kolejne spotkanie z serii. Tym razem tematem była technika Test-Driven Development (TDD), czyli tworzenie oprogramowania w oparciu o testy.

Przyzwyczajony do ekscentrycznych zachowań Wujka z pierwszej prezentacji, tym razem już nie odczuwałem, by jego rekwizyty czy zmieniająca się scenografia działały rozpraszająco – wręcz przeciwnie, odbierałem je jako ciekawe urozmaicenie. Całość prezentacji miała formę rozmowy Wujka Boba z Panem Spockiem, znanym z patrzenia na świat tylko przez pryzmat logicznego myślenia.

Wujek Bob starał się przekazać słuchaczom, w jaki sposób technika TDD prowadzi do poprawy jakości kodu źródłowego, szczególnie w większych projektach. Wskazał problem, jaki często dotyka programistów pracujących przy złożonych systemach, którzy obawiają się wprowadzania zmian w istniejącym (i działającym) kodzie, ponieważ zmiany mogą spowodować problemy. Gdy strach bierze górę, w projekcie pozostawiany jest kod gorszej jakości.

Zastosowanie rygorystycznych testów pozwala na wyeliminowanie tych obaw, ponieważ programista wprowadzający zmiany może je natychmiast przetestować i dzięki temu przekonać się, czy nie pojawiły się problemy. Warunek? Programista musi mieć pewność, że może zaufać swoim testom. By to osiągnąć, należy trzymać się trzech zasad:

  1. Przed napisaniem jakiegokolwiek kodu produkcyjnego, musi istnieć nieprzechodzący test, który zostanie przez ten kod naprawiony.
  2. Każdy test musi wykazywać określony brak lub błąd w systemie, i musi sprawdzać jedynie minimalny zestaw warunków, wystarczający do niepowodzenia.
  3. Zabronione jest pisanie większej ilości kodu produkcyjnego, niż wystarczająca do naprawienia jednego nieprzechodzącego testu.

Zalety płynące ze stosowania tej techniki są niezaprzeczalne – w dużych projektach TDD pozwala na bardziej efektywną pracę programistów, ułatwia kontrolę jakości, oraz (co już zostało powiedziane) zapewnia bezpieczne wprowadzanie zmian i poprawek w „starym” kodzie.

Nie będę zdradzać zakończenia prezentacji i tego, czy Wujkowi udało się przekonać Pan Spocka do swoich racji. Osobiście nabrałem chęci do wypróbowania TDD w formalny sposób i liczę na to, że w którymś z realizowanych w najbliższej przyszłości projektów będę mieć taką możliwość.

Legend Highlighter – plugin do biblioteki Highcharts

Na naszym profilu na GitHubie pojawił się kilka dni temu nowy projekt – plugin Legend Highlighter dla biblioteki Highcharts, dodający możliwość podświetlania części wykresu stworzonego przy pomocy tej biblioteki.

Plugin powstał przy okazji pracy nad projektem korzystającym z Highcharts, i początkowo miał służyć jedynie do zrealizowania prostego efektu wysuwania fragmentu wykresu kołowego (pie chart). Rozbudowaliśmy go jednak o obsługę innych rodzajów wykresów, aby stworzyć bardziej uniwersalne rozwiązanie. Przygotowaliśmy stronę z kilkoma przykładami zastosowania pluginu (opartymi na przykładach udostępnianych przez Highcharts) dla różnych wykresów – zachęcamy do ich obejrzenia.

Kod pluginu udostępniliśmy na licencji MIT – zapraszamy do jego używania, mile widziane są też wszelkie komentarze i oczywiście forki.

Wspieramy Nginx i Fundację KOTYlion

Dziś 15. dzień miesiąca, niedziela, niby dzień wolny, ale tradycja zobowiązuje – przystępujemy zatem do kolejnej odsłony naszej akcji wspierania projektów open source i organizacji dobroczynnych. W tym miesiącu odbiorców naszej pomocy wybrał Krzysiek Skarbek.

Projekt open source, któremu przekazujemy wsparcie, to Nginx – rozpowszechniany na licencji BSD serwer HTTP, znany ze swojej skalowalności i wydajności. Ze względu na te zalety, często korzystamy z Nginxa w pracy z projektami webowymi – kilka aplikacji, jakie tworzyliśmy dla naszych klientów, zostało wdrożonych przy użyciu tego właśnie serwera. Dziękujemy twórcom Nginxa, w szczególności autorowi jego pierwszej wersji, Igorowi Sysojewowi, i gratulujemy dobrej roboty!

Przekazujemy również pomoc finansową na rzecz Fundacji KOTYlion z Łodzi, zajmującej się pomocą porzuconym i niechcianym kotom. Pozdrawiamy ekipę i wolontariuszy Fundacji, oraz oczywiście wszystkich jej kocich podopiecznych!

Komentarze kłamią! – czyli prezentacja Wujka Boba o czystym kodzie

W myśl idei poszerzania wiedzy o zarówno tych podstawowych, jak i zaawansowanych prawach rządzących światem programistycznym, kilka dni temu wybraliśmy się większością zespołu łódzkiego na wideo-prezentację dotyczącą pisania czystego kodu źródłowego, dostarczoną prosto od Wujka BobaSpotkanie, zorganizowane przez Stowarzyszenie JUG Łódź, odbyło się w budynku Politechniki Łódzkiej, w Katedrze Mikroelektroniki i Technik Informatycznych. Sponsorem tego odcinka była firma Rule Financial, która opłaciła koszty licencji.

Robert Martin zwany popularnie Wujkiem Bobem – to znany amerykański konsultant i autor książek. Jego książka „Clean Code” to swego rodzaju biblia dla programistów, pozycja obowiązkowa dla każdego kto pisze i utrzymuje kod źródłowy. Wujek Bob jest założycielem firmy The Clean Coders, która prowadzi szkolenia w formie code castów, czyli szkoleń wideo. The Clean Coders udostępnia na licencji „community” prezentacje, które można wyświetlić dla 50 osób poza godzinami pracy i tylko jednokrotnie.

Nie żałujemy uczestnictwa. Dobrze jest od czasu do czasu usłyszeć od starszego człowieka wymachującego mieczem samurajskim rozkaz trzymania się odpowiednich standardów!

Usłyszeliśmy, że każdy komentarz w kodzie jest naszą osobistą porażką, ponieważ jest on dowodem na to, że nie potrafimy jasno wyrazić przeznaczenia jakiegoś kawałka kodu poprzez język programowania, w którym w danej chwili pracujemy.

Wujek Bob podkreślał, jak istotne jest trzymanie w projekcie małych plików, zawierających od 60 do 200 linii kodu. Zostało to udokumentowane odpowiednimi statystykami z różnych, dojrzałych projektów.

Pokazana została również różnica między klasą a strukturą danych, do którego z tych obiektów stosujemy domyślną politykę prywatności czy też publiczności danych, a także jak je wykorzystywać do prawidłowego, solidnego projektowania systemów informatycznych.

Mój ulubiony fragment to wyśmianie przez Wujka używanych przez programistów tzw. setterów i getterów. Zawsze mnie to co najmniej niepokoiło, w szczególności wtedy kiedy było to forsowane przez nauczycieli akademickich. Jak dla mnie, i najwyraźniej również dla Wujka Boba, ustawianie zmiennych prywatnymi, a następnie przygotowywanie dla nich funkcji najczęściej nazwanymi „getNazwaZmiennej” jest dowodem na niezrozumienie programowania obiektowego.

Pouczające było również uświadomienie tego, że baza danych nie zawiera rzeczywistych obiektów pochodzących prosto z biznesowego świata. Zawiera ich reprezentację w postaci odpowiedniej struktury danych (gdzie kolumny to publiczne pola takiej struktury).

Całość prowadzona była w dobrej atmosferze i z humorem, jednak rekwizyty Wujka Boba w pewnym momencie zaczęły wytrącać mnie ze słuchania (dla przykładu, jednym z przedmiotów była magiczna różdżka). Ogólnie jednak oceniam prezentację pozytywnie.

Jako że spodobała nam się ta forma, a następne prezentacje z cyklu potrzebują sponsorów, to jest wysoce prawdopodobne, że nasza firma zasponsoruje jedną z nich (o czym na pewno poinformujemy na blogu).

Wspomagamy Fundację Apache i Fundację „IRMA”

Pora na kolejną rundę naszej comiesięcznej akcji wspierania projektów open source i organizacji prowadzących działalność dobroczynną (wyjątkowo 14. dnia miesiąca, bo 15. przypada dzień wolny). Organizacje, które wspomagamy w tym miesiącu, zostały wybrane przez Piotra.

Pierwszą ze wspieranych organizacji jest Fundacja Apache (Apache Software Foundation), która istnieje od 1999 roku i zajmuje się opieką nad licznymi projektami open source. Najbardziej znanym z nich jest serwer HTTP Apache, który nieprzerwanie od ponad 15 lat jest najczęściej używanym serwerem na świecie. I my od dawna używamy go w naszej pracy, zarówno w roli narzędzia deweloperskiego, jak i platformy, na której uruchamiamy aplikacje naszych klientów. Korzystamy też z wielu innych programów powstających w ramach projektów Fundacji Apache, takich jak Lucene, Cordova, czy JMeter. Dziękujemy Fundacji za stworzenie dogodnych warunków dla rozwoju tych znakomitych projektów.

Przekazujemy ponadto pomoc finansową na rzecz Fundacji “IRMA z Poznania, zajmującej się szerzeniem idei ratownictwa z wykorzystaniem psów. Nazwa Fundacji pochodzi od imienia suczki owczarka niemieckiego, Crumstone Irmy, która podczas II Wojny Światowej w Londynie pomagała w odnajdywaniu ludzi uwięzionych pod gruzami zbombardowanych budynków. Fundacja istnieje od niedawna (nie ma jeszcze roku), jednak działa intensywnie i szybko się rozwija. Życzymy “Irmie” wszystkiego dobrego!

Wspieramy Fundację Wikimedia i Fundację R²

Dziś przypada ten uroczysty dzień w miesiącu, w którym przekazujemy pomoc finansową projektom open source i organizacjom prowadzącym działalność charytatywną. Wyborem organizacji otrzymujących naszą pomoc w tym miesiącu zajął się Karol Janyst.

Robimy tym razem swego rodzaju wyjątek, ponieważ pierwszym odbiorcą naszego wsparcia nie jest projekt open source, lecz Fundacja Wikimedia, opiekująca się Wikipedią (oraz między innymi projektem open source MediaWiki, więc może nie jest to aż taki wyjątek). Przez lata naszej działalności, Wikipedia wielokrotnie okazywała się bezcennym źródłem informacji, więc czujemy się zobowiązani odwdzięczyć się w ten sposób. Bardzo dziękujemy Fundacji i wszystkim Wikipedystom za ich wysiłki.

Drugą ze wspieranych organizacji jest Fundacja R², prowadząca od 2003. roku motocyklowe ochotnicze pogotowie ratunkowe. Wybór Karola wynika między innymi z tego, że on sam jest zapalonym motocyklistą.  O tym, jak pracują i ćwiczą motocyklowi ratownicy, można się przekonać oglądając ciekawy film zamieszczony na YouTube. Ochotnikom pogotowia R2 dziękujemy za ich pracę i życzymy wszystkiego dobrego.