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:
- Przyciemnij ekran do ciepłej, bursztynowej poświaty (sprawia wrażenie, jakby monitor cię rozumiał)
- Włącz playlistę, która jest albo całkowicie bez słów, albo w języku, którego nie znasz
- Zrób gorący napój, którego nie skończysz
- Otwórz kod, zamknij, otwórz ponownie
- Wstaw gdzieś
console.log("WHY")
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.