Dan.
Wszystkie wpisy

Debugowanie o 3 w nocy

Jest pewien szczególny rodzaj szaleństwa, który ogarnia cię po północy. W przeglądarce masz trzy otwarte zakładki z bugtrackerem, kawa dawno wystygła, i jakoś — jakoś — nadal jesteś przekonany, że zaraz to rozgryźiesz.

Zaczyna się niewinnie. Miałeś skończyć o 22:00. Obiecałeś sobie. Powiedziałeś to nawet na głos: „Poprawię tylko tę jedną rzecz." Słynne ostatnie słowa. Z tej jednej rzeczy zrodziły się dwie kolejne, i teraz jest 3:00 w nocy, a ty czytasz sześcioletni wątek na Stack Overflow, napisany przez kogoś, kto od tamtej pory porzucił branżę.

Mózg o 3:00 w nocy to zupełnie inne zwierzę

Oto czego nikt ci nie mówi: twój mózg o 3:00 w nocy działa dziwnie. Jest wystarczająco zmęczony, żeby przestać się za siebie wstydzić, co oznacza, że zaczynasz próbować pomysłów, które w południe odrzuciłbyś jako głupie. I czasami — irytująco — działają.

Kiedyś spędziłem cztery godziny na debugowaniu race condition, wypróbowałem wszystko, co sensowne, poddałem się, wpatrywałem się w sufit, a potem wpisałem poprawkę tak przeklętą, że roześmiałem się na głos w swoim pustym mieszkaniu. Działała idealnie. Zrobiłem commit z wiadomością please don't ask i poszedłem spać.

„Najlepsze sesje debugowania zdarzają się wtedy, gdy jesteś zbyt zmęczony, żeby bać się wyjść na głupka."

Rytuały

Każdy nocny programista ma swoje rytuały. Moje wyglądają mniej więcej tak:

console.log("WHY") jest fundamentem całej konstrukcji. Nie pomijaj go.

Ten moment

I wtedy to się dzieje. Ten moment. Dostrzegasz to — brakujący średnik, błąd off-by-one, zmienną o nazwie data przesłaniającą inną zmienną również o nazwie data — i cała sprawa zapada się w żenującą prostotę. Bug, który pożarł twój wieczór, miał trzy znaki długości.

Poprawiasz go. Uruchamiasz testy. Zielone. Wszystko zielone. Wymachujesz pięścią w ciemności, jakbyś właśnie strzelił zwycięskiego gola na stadionie pełnym nikogo.

Wiadomość commita jest poetycka o 3:00 w nocy. „fix: resolve the thing". Twoje przyszłe ja będzie miało pytania.

Dlaczego to robimy

Dużo o tym myślałem. Dlaczego nie śpimy? Deadline nie zawsze jest prawdziwy. Bug nadal będzie tam rano, prawdopodobnie bardziej oczywisty po śnie.

Myślę, że chodzi o ciszę. Świat na zewnątrz zasnął i jesteś tylko ty i maszyna, negocjując. Żadnych pingów ze Slacka, żadnych spotkań, żadnego context-switchingu. Tylko czysty, dziwny, skupiony flow — nawet jeśli ten flow to głównie rozpacz.

Jest też coś głęboko osobistego w kodzie, który piszesz o 3:00 w nocy. Jest bardziej surowy i szczery niż cokolwiek, co wysłałbyś w ciągu dnia. Są na nim twoje odciski palców.

Więc oto toast za późne noce, zimną kawę, przeklęte poprawki i commity, których nikt nigdy nie zakwestionuje. Niech wasze bugi będą płytkie, a sen — w końcu — głęboki.