Niektórzy słyszeli pewnie o zjawisku, które nazywa się Cognitive Switching Penalty. W uproszczeniu chodzi w nim o to, że w momencie, gdy przełączamy się miedzy zadaniami, tracimy czas i skupienie, a rośnie nasz poziom stresu i frustracja (ciekawy wątek w temacie). Widać to dobrze na przykładzie liderów zespołów, którzy starają się też programować, a którym ciągle ktoś przerywa, i nie są oni w stanie skończyć prostych zadań, które zaplanowali sobie na najbliższy czas.
Napotykam na zbliżony problem zarówno wówczas, gdy zaczynam rano pracę, jak i wtedy, gdy siadam do programowania po południu. Wówczas załadowanie kontekstu z poprzedniego dnia może mi zająć kilka dobrych minut. Odkryłem sposób, który skraca czas ładowania kontekstu z poprzedniego dnia. Od razu zaznaczam, że najpewniej nie odkryłem go jako pierwszy, niemniej zrobiłem to samodzielnie.
Sposób jest następujący: zarówno w biurze, jak i w domu kończę pracę, zostawiając sobie nieprzechodzący test jednostkowy. Wówczas, gdy siadam po przerwie do kodu, od razu mam proste zadanie, które muszę zrobić: muszę zaimplementować kod, aby test zaczął przechodzić. Zaimplementowanie kodu, by test się zazielenił, może wtedy zająć trzy minut, może zająć pięć minut, i to wystarczy, bo po takim czasie mam już odpowiedni flow, który pozwala mi płynnie przechodzić do kolejnych zadań.
Podobnie skuteczne w ładowanie kontekstu z poprzedniego dnia jest zostawienie niedokończonego testu do już zaimplementowanego kodu produkcyjnego. (Kto zawsze pisze testy przed kodem, niech pierwszy rzuci kamień.)
Ta metoda nie sprawdza się tak dobrze w przypadku prac utrzymaniowych, jak w przypadku implementacji nowych funkcjonalności. Minusem jest też to, że kto w ogóle nie pisze testów, nie będzie w stanie jej zastosować.
Nie stosuję tego sposobu zbyt restrykcyjnie, ale gdy wiem, że do końca dnia pracy lub programowania w domu zostało mi około kwadransa, zaczynam planować, gdzie w obszarze, w którym właśnie pracuję, mógłby powstać nieprzechodzący test, od którego mógłbym zacząć następnego dnia.
Ciekawy pomysł z tym ładowaniem kontekstu, spróbuję tego w najbliższym czasie.