Béton brut

printf z pyska
⌜ Technologia ⌟

2011-08-24

Dehumanizacja. Automatyzacja. Deratyzacja. Dwie z trzech „zacji” są uznawane za pożądane właściwości w procesie testowania oprogramowania. Trzecią „zację” wstawiłem tylko dlatego, że nie mogłem wymyśleć następnej odnoszącej się do tematu tego tekstu.

Ostatnio 1 wielką popularność wśród programistów zdobyły tzw. testy jednostkowe. Całość polega na pisaniu programów, które testują programy. Genialne w swojej prostocie. Zanim wrzucisz aktualizację na serwer produkcyjnych, testy sprawdzą, czy funkcja, która musi zawsze zwrócić jeden rekord, wyrzuca po zmianach trzy, czy operacje na datach nie zepsuły się po zabawach z lokalizacją, strefami czasowymi i tym podobne.

Możesz myśleć o takim teście jak o automatycznej kontroli jakości na taśmie produkcyjnej firmy oświetleniowej. Żarówki jadą sobie taśmą, są umieszczane w zasilanym gnieździe a fotorezystor „patrzy”, czy świeci. Świecące przechodzą test (w Pythonie sprawdzilibyśmy ten binarny stan metodą assertTrue), zepsute trafiają do kosza. W przypadku kodu zostalibyśmy poinformowani, że klasa Lightbulb nie inicjalizuje się zgodnie z naszym oczekiwaniem.

Nie będę jednak pisał o testach jednostkowych. Nie znam się na tym za dobrze, a właściwie to w ogóle.

Dehumanizacja i automatyzacja są dobre. Usuwają z procesu czynnik ludzi i przyspieszają wykonywanie testu. Są jednak chwile w których żaden assert nie podpowie Ci rozwiązania. Czasem przychodzi Ci pracować z kodem, który ma wielu ojców — niepiśmiennych alkoholików. W innym znów przypadku dwa plus dwa jest cztery i wychodzi cztery, ale nie wiesz czemu wychodzi Ci cztery w programie do rysowania kiedy wybierasz paletę kolorów.

Rzeczy mają tendencje do bycia w stanie „bez sensu”. Dobra, robię tu projekcje własnego życia, ale trochę tak jest. Co zrobić kiedy program do słuchania plików muzycznych odtwarza tylko satanistyczne piosenki, do tego wstecz? Satanistyczne piosenki wstecz mówią o miłości do bliźnich, zdrowej diecie i wstrzemięźliwości w wydawaniu opinii, co jest strasznie nudne i irytujące. 2

Czas na odpluskwianie z kaczuchą!

Tak, odpluskwianie z kaczuchą. Nie ma co robić min. Ci sami ludzie 3 dali nam GIMP-a, ksh, tcsh, system operacyjny Breezy Badger, akronimy rekurencyjne i inne cuda od których marketerom strzelają oczy.

Żeby wykonać rubberduck debugging (już Wam oszczędzę mojego potworka językowego) potrzebne są dwie rzeczy: problem i słuchacz. Słuchacza osadzamy w fotelu i opisujemy lub demonstrujemy nasz problem. W tym czasie słuchacz powinien się zamknąć i potakiwać niczym pławiąca się w wannie gumowa kaczka. Celem tego eksperymentu jest werbalizacja problemu, co często powoduje nagłe olśnienie.

Ręka do góry, kto odwrócił się zrozpaczony do kolegi w biurze i wypowiedział następujące słowa:

„Nie rozumiem. Mam formularz z obiektu, dodaję tekst, ale za każdym razem, gdy edytuję wcześniejszy wpis, dostaję błąd z IDID…”

Następnie, bez słowa wyjaśnienia, obracasz się do komputera i naprawiasz problem wstydząc się, że tak długo umykała Ci oczywistość.

Podobną metodę zaproponował kiedyś Scott Adams w jednej ze swoich książek (nie, nie będę sprawdzał tytułu). Był to jeden z jego testów na sensowność pomysłu: test śmiechu. Należy znaleźć kogoś, komu nie zależy na naszym dobru, ale jest na tyle leniwy by aktywnie nie szukać naszej zguby. Jeżeli po przedstawieniu naszego pomysłu, z możliwie wieloma detalami, nie zsunie się on pod stół ze śmiechu to są duże szanse, że nie jesteśmy zupełnie w odbycie z naszym pomysłem.

Często robię za takiego gościa słuchając pomysłów na startapy. Nie śmieję się jednak maniakalnie. Przekręcam delikatnie głowę na bok i pytam — „Serio?”. Jeżeli potrzebujecie kogoś takiego to jestem dostępny pod e-mailem.

To była dygresja. Wracając na chwilę do gumowych kaczek w pianie. Cenię sobie tę metodę bardziej niż inne. Wielu z nas widzi programistów w roli samotnych kowbojów. Przybywamy do kodu źródłowego opanowanego przez bandytów, wchodzimy do saloonu, wypijamy drinka z tego drogiego ekspresu do kawy, który zwykle jest w korporacjach posiadających kod opanowany przez bandytów, potem urządzamy strzelaninę i podbijamy serce sekretarki. Nie możemy jednak z nią zostać bo pociąg odjeżdża o 17:37 w kierunku zachodzącego słońca. 4

Mit ten jednak często powoduje, że siedzimy sfrustrowani, odrzucamy pomoc i pragniemy tylko bohaterskiej śmierci lub totalnego zwycięstwa. Wypłakanie się w ramię barmana, który nie słucha nas, metodycznie przecierając ladę lub szklankę, wydaje się być ponad nami.

„Widzisz szefie. Jesteśmy otoczeni. A ja mam tylko ten pas naboi. Do tego mają bazę w tej starej fortecy. Co tam było? Skład dynamitu… dynamitu…”

Gościnne odpluskwianie treści zapewniła Karolina. Obrazek ukradziony Wikipedii.

  1. relatywnie ostatnio
  2. Go! Go! Cywilizacjo Śmierci
  3. w sensie: nerdy
  4. Przynajmniej tak wygląda mój dzień pracy.
QR for printf z pyska