Dominującym od czasów pandemii sposobem komunikacji stała się komunikacja asynchroniczna. Oznacza to, że nie oczekujemy odpowiedzi od razu, lecz wtedy, gdy druga osoba znajdzie na to czas. Komunikujemy się często za pomocą wielu różnych mediów, takich jak Slack, e-mail, Jira, dokumenty z komentarzami, commity, pull requesty czy kod.
Czym jest komunikacja asynchroniczna?
Komunikując się asynchronicznie, nie powinniśmy oczekiwać natychmiastowej odpowiedzi. Zamiast tego warto zająć się w międzyczasie innymi zadaniami. Dzięki temu oszczędzamy czas, unikając nagłych call’i czy przeciągających się spotkań. Jednocześnie jest to wyraz szacunku wobec drugiej osoby – nie przerywamy jej pracy, tylko dlatego, że potrzebujemy odpowiedzi “na już”. Dajemy jej przestrzeń na odpowiedź, kontynuując swoją część pracy niezablokowaną brakiem informacji.
Według badania The cost of interrupted work: more speed and stress z 2008 roku, przerywanie pracy może kosztować nawet 23 minuty dodatkowego czasu na powrót do pełnego skupienia. Dlatego warto unikać zakłócania pracy innych osób, chyba że jest to absolutnie konieczne.
Dlaczego warto komunikować się asynchronicznie?
Jako programiści potrzebujemy głębokiego skupienia, aby tworzyć wysokiej jakości oprogramowanie. Przerywanie sobie nawzajem pracy obniża efektywność i jakość wykonywanych zadań. Komunikacja asynchroniczna pozwala unikać takich sytuacji.
Dodatkowo spotkania mają tendencję do przeciągania się. Często kwestie, które można rozwiązać kilkoma wiadomościami, przeradzają się w długie dyskusje lub ciąg dygresji podczas spotkań na żywo.
Jakie wyzwania generuje komunikacja asynchroniczna?
Komunikacja asynchroniczna niesie ze sobą pewne wyzwania:
- Trudności w interpretacji tonu wiadomości.
- Opóźnienia w odpowiedziach.
- Potrzeba samodyscypliny w organizacji własnej pracy i śledzeniu postępów rozmów.
W przypadku bardziej złożonych tematów dyskusje asynchroniczne mogą być problematyczne. Wątki na Slacku potrafią się rozciągać na dziesiątki lub setki wiadomości, co utrudnia nadrobienie zaległości przez członków zespołu.
W takich sytuacjach lepiej zorganizować spotkanie, aby szybko ustalić kluczowe kwestie. Po spotkaniu warto sporządzić notatki zawierające podsumowanie ustaleń i listę zadań do wykonania. To również dobra praktyka dla osób, które nie mogły uczestniczyć w rozmowie.
Jakich narzędzi używamy jako deweloperzy do komunikacji asynchronicznej?
Deweloperzy korzystają z wielu narzędzi ułatwiających komunikację asynchroniczną. Każde z nich ma swoje zalety i wady – kluczowe jest ich świadome używanie i dostosowywanie do rodzaju przekazywanej informacji.
Slack (lub inny komunikator firmowy)
Slack to praktycznie serce komunikacji zespołowej. Jednak informacje tam zawarte łatwo mogą “zginąć” w natłoku wiadomości. Dlatego warto przenosić kluczowe ustalenia do bardziej trwałych miejsc.
Dobre praktyki korzystania ze Slacka:
- Wykorzystuj wątki do dyskusji pobocznych.
- Używaj reakcji do potwierdzania odbioru wiadomości.
- Przypinaj kluczowe informacje do kanałów.
- Zawsze zastanów się, czy piszesz na odpowiednim kanale – prywatne wiadomości mogą ograniczać dostęp innych członków zespołu do istotnych informacji.
E-mail najlepiej sprawdza się przy oficjalnej komunikacji lub przesyłaniu ważnych informacji wymagających trwałego zapisu. Dyskusje prowadzone przez e-mail bywają jednak mało efektywne – lepiej przenieść je na Slacka lub zorganizować spotkanie.
Jira (lub inne narzędzie do zarządzania projektami)
Narzędzia takie jak Jira czy GitHub Projects pełnią rolę centralnego źródła prawdy o projekcie. To tam powinny znajdować się wszystkie informacje dotyczące zadań.
Dobre praktyki korzystania z Jiry:
- Linkuj dyskusje ze Slacka.
- Dodawaj ważne dokumenty i notatki.
- Regularnie aktualizuj statusy zadań.
- Załączaj makiety lub inne materiały powiązane z zadaniem.
Integracje z innymi narzędziami (np. GitHub) mogą dodatkowo ułatwić pracę zespołu i zapewnić płynny przepływ informacji.
Commity i pull requesty
Commity i pull requesty są kluczowe dla wymiany wiedzy w projekcie. Ważne jest jasne opisanie zmian w kodzie – pomaga to:
- przeprowadzać code review,
- wymieniać wiedzę o projekcie,
- debugować,
- dokumentować zmiany.
Kod
Czytelność kodu to temat na osobny artykuł lub nawet książkę. Warto pamiętać, że kod częściej czytamy niż piszemy – dlatego powinien być przejrzysty, dobrze udokumentowany i łatwy do zrozumienia dla innych deweloperów (oraz przyszłego siebie).
Podsumowanie
Komunikacja asynchroniczna to nie tylko sposób na unikanie przerywania sobie nawzajem pracy. To także metoda organizowania informacji w sposób uporządkowany i dostępny dla wszystkich członków zespołu wtedy, gdy tego potrzebują.