Ukryty koszt multitaskingu

4 min. czytania 706 słów

Wstęp

Współczesna praca programisty bardzo rzadko przypomina spokojne wykonywanie jednej czynności od początku do końca. Znacznie częściej wygląda jak nieustanne przełączanie się między komunikatorami, spotkaniami, mailami, kartami w przeglądarce, zadaniami w systemie ticketowym i oczywiście kodem.

W teorii nazywa się to multitaskingiem, ale w praktyce jest to ciągłą zmianą kontekstu. Problem w tym, że ludzki mózg nie jest przystosowany do efektywnego przełączania się między zadaniami. Każda zmiana kontekstu wiąże się z niewidocznym kosztem, czyli spadkiem koncentracji, utratą płynności myślenia, wydłużeniem czasu potrzebnego na ponowne „rozkręcenie się” w zadaniu i po prostu znudzeniem.

To zjawisko określa się jako context switching cost.

Czym właściwie jest context switching?

Context switching to moment, w którym przestajemy wykonywać jedno zadanie i zaczynamy inne.

Na przykład:

  • odpowiedź na maila w czasie pracy nad funkcją,
  • sprawdzenie powiadomień w komunikatorze,
  • przeglądanie tasków podczas czekania na LLM,
  • czy nawet myślenie o innym problemie podczas debugowania.

Choć pojedyncze przełączenie wydaje się niegroźne, problem pojawia się wtedy, gdy takich zmian jest kilkadziesiąt lub kilkaset dziennie.

Mózg człowieka potrzebuje czasu, aby „przełączyć się” na nowe zadanie, przypomnieć sobie kontekst zadania, zbudować mentalny model problemu i zacząć efektywnie pracować. Ten proces może trwać od kilku sekund do nawet kilkunastu minut, w zależności od złożoności zadania i poziomu zmęczenia.

Ukryty koszt estymacji

Estymując zadania, a szczególnie te, które są duże i złożone, często nie bierzemy pod uwagę tego, jak wiele razy będziemy musieli się do nich „przełączyć” w ciągu dnia. Każde takie przełączenie to dodatkowy koszt, który może znacząco wydłużyć czas realizacji zadania.

Przykładowo, jeśli estymujemy duży feature na 5 dni, ale w ciągu tych 5 dni musimy pilnie przełączyć się do innych zadań, odpowiadać na maile, uczestniczyć w spotkaniach, to realny czas potrzebny na ukończenie tego feature może być znacznie dłuższy niż pierwotna estymacja.

Attention residue

Kiedy przechodzimy do nowego zadania, część naszego umysłu nadal pozostaje przy poprzednim. To zjawisko nazywa się attention residue i jest jednym z głównych powodów, dla których multitasking jest tak nieefektywny.

Przykład tego zjawiska zauważyłem już kilka lat temu, w szkole średniej, podczas zajęć. Była to sytuacja, kiedy nauczyciel był skupiony na lekcji i tłumaczył materiał, wtedy dzwonił telefon. Nauczyciel odbierał, rozmawiał przez chwilę, a następnie odkładał go i wracał do pracy. Jednak przez kilka minut po tej rozmowie jego skupienie było wyraźnie obniżone, co sam podkreślił, a tempo nauczania spadło. To właśnie attention residue - część jego umysłu nadal była zajęta rozmową telefoniczną, co utrudniało mu pełne skupienie się na lekcji.

Jak to ograniczać?

1. Grupowanie podobnych zadań

Załóżmy, że masz kilka maili do odpisania, oraz kilka komponentów do przetestowania. Zamiast przełączać się między tymi zadaniami, lepiej jest poświęcić określony czas na skupienie się tylko na mailach, a następnie przejść do testowania komponentów. To pozwala zminimalizować liczbę przełączeń i zmniejszyć koszt context switching.

2. Bloki czasowe skupienia

Słyszałem o firmach, które wprowadzają tzw. „focus hours” - bloki czasowe, podczas których zabronione jest korzystanie z komunikatorów do sytuacji, które nie są krytyczne. To pozwala pracownikom na głębokie skupienie się na zadaniach bez ciągłych przerw.

3. Poprawienie zarządzania w firmie

Często problemem nie jest sama ilość pracy, ale sposób jej organizacji oraz zarządzania priorytetami. Źle zaprojektowany system pracy sprawia, że pracownicy są stale „przerywani” przez nowe zadania, zmieniające się wymagania lub brak jasnych decyzji.

Dobre zarządzanie powinno przede wszystkim:

  • ograniczyć liczbę projektów, nad którymi pracuje zespół,
  • jasno określić priorytety,
  • unikać wprowadzania nowych zadań bez uprzedniego zakończenia poprzednich.
  • komunikacja asynchroniczna - zamiast wymagać natychmiastowej odpowiedzi, pozwolić pracownikom na odpowiedź w dogodnym dla nich czasie.

4. Ukierunkowanie tempa pracy

Nie wszystkie zadania obciążają nasz umysł w ten sam sposób. Część z nich wymaga głębokiej koncentracji i pełnego zaangażowania poznawczego, podczas gdy inne są bardziej rutynowe i mogą być wykonywane przy mniejszym poziomie skupienia.

Przykładowo, pisanie skomplikowanego testu jednostkowego lub debugowanie trudnego problemu logicznego wymaga utrzymania spójnego modelu mentalnego. Przerywanie takiej pracy zadaniami operacyjnymi (np. szybkie odpowiedzi na komunikator) znacząco wydłuża powrót do pełnej efektywności.

Z kolei zadania rutynowe, takie jak przegląd maili czy drobne poprawki w dokumentacji, można grupować i wykonywać w blokach, bez ryzyka utraty głębokiego skupienia.

Świadome dopasowanie typu pracy do momentu dnia pozwala ograniczyć liczbę niepotrzebnych przełączeń kontekstu i utrzymać stabilny rytm pracy, zamiast ciągłego „szarpania” uwagi.