Live and learn
Po raz niewiadomojużktóry przeczucia mojego szefa odnośnie źródła problemu okazały się słuszne, natomiast moje tłumaczenia na temat dlaczego system nie działa jak trzeba -- błędne. Obiektywnie rzecz biorąc faktem jest, że w końcu znalazłem oczywisty test case dla niedziałania i tak długo go drążyłem, aż doszedłem do tego co jest nie tak i najprawdopodobniej owo odkrycie okaże się przełomowe, ale i tak niezmiernie wkurwia mnie fakt, że ja wierzyłem, że moje wcześniejsze wytłumaczenie źródła problemu jest słuszne.
Jest to kolejny raz, gdy przejeżdżam się na obiektywności mojej oceny sytuacji. Miałem świadomość, że to nie jest system, którego jestem autorem i że już nie raz moje mniemanie o sposobie jego działania okazywało się błędne. Gdzieś z tyłu głowy kołatała mi się myśl, że ja tak naprawdę nie wiem jak ten system do końca działa i że tu powinienem szukać źródła problemu. Ale znowu z uporem maniaka wybierałem wytłumaczenie bardziej skomplikowane i właściwie rzecz biorąc logicznie nie trzymające się specjalnie kupy. Zaś gdy dokopywałem się do tekstów, które powinny mnie naprowadzić na właściwy tor, to zdecydowanie zbyt szybko uznawałem je za nieaktualne (bo napisane kilka lat temu).
Nie chodzi mi o sam fakt niewidzenia poprawnego rozwiązania problemu, bo to się zdarza każdemu, że można coś przeoczyć. Piję natomiast do tego, że po raz kolejny nie włączył mi się system ostrzegawczy odnośnie faktu, że operują na podstawie niepełnych danych. W takich przypadkach zawsze powinienem dążyć do uzupełnienia białych plam, zanim zacznę podejmować jakieś decyzje, albo wydawać opinie. No dobrze, może przesadzam, w pewnym stopniu ów system ostrzegawczy mi się włączył, gdyż właśnie dzięki temu udało mi się drążyć testcase tak długo, aż doszedłem do prawidłowego rozwiązania, natomiast było to działanie zdecydowanie zbyt mało świadome (tzn. rozważenie możliwych źródeł błędu i obranie na ich podstawie potencjalnych dróg działania), a za bardzo oparte na jakimś bliżej niezidentyfikowanym przeczuciu. Tak być nie powinno.
W ogóle zaczynam dochodzić do wniosku, że w przypadku dużego systemu, nawet jeśli trzeba coś zrobić na wczoraj, zdecydowanie bardziej produktywne będzie przeanalizowanie krok po kroku działania całości w celu wyeliminowania białych plam i dopiero wtedy podejmowania jakiś działań, a nie robienie pierwszej lepszej rzeczy, jaka przyjdzie do głowy i liczenie na to, że testy wypadną pomyślnie. Nie wypadną. Od tego system jest duży i skomplikowany, żeby istniało bardzo dużo (względnie) prostych i błędnych rozwiązań danego problemu.
Nawiasem mówiąc dzięki obecnej pracy moje wyobrażenie na temat wydajności programistów ulega nieustannej zmianie. Ale to już temat na osobny wpis.
