Tag: produktywność

  • Gra w programowanie – Motywacja i produktywność w jednym

    Siedzę i wpatruję się skupiony w ekran. Jestem absolutnie pochłonięty tym, co robię. Nie wiem nawet, ile czasu minęło, od kiedy zacząłem. Godzina, dwie? Chyba straciłem poczucie rzeczywistości…

    “Marcin, masz minutę?” — głos mojego kolegi, chociaż niezbyt głośny, brzmi dla mnie w tym momencie jak odgłos młota pneumatycznego albo startującego samolotu. A to dlatego, że dosłownie sekundę wcześniej byłem w zupełnie innym świecie. W świecie problemów do rozwiązania. Albo by być bardziej precyzyjnym — Problemu do rozwiązania. Ponieważ w tym momencie dla mnie istniał tylko jeden Problem. Ja i Problem — można powiedzieć, że nosiło to pewne znamiona romantycznego zbliżenia, bo czułem, że właśnie dobieram się swojemu Problemowi do tyłka. Już miałem wszystko poukładane w głowie, wystarczyło przelać moje myśli na kod. I właśnie wtedy głos kolegi…

    Kolega zdecydował, że Mój Problem nie jest ani w ułamku tak ważny jak Jego Problem. I uznał, że może przerwać moje wysiłki. Z jego perspektywy, nic wielkiego. Zadał pytanie, odpowiedziałem, całość zajęła może pół minuty i wróciłem do pracy. Z mojego punktu widzenia, to było zdarzenie, które być może zdecydowało o tym, że nie udało mi się dowieźć ważnej funkcjonalności na czas.

    Jak to możliwe, że tak banalne zdarzenie okazało się mieć tak doniosłe znaczenie dla mojej wydajności? I jak udało mi się użyć pewnej techniki, aby stać się nie tylko znacznie bardziej wydajnym, ale też czerpać dużo więcej radości ze swojej pracy?

    Trochę wcześniej…

    Siedzę i wpatruję się skupiony w ekran. Jestem absolutnie pochłonięty tym, co robię. Nie wiem nawet, ile czasu minęło, od kiedy zacząłem. Godzina, dwie? Chyba straciłem poczucie rzeczywistości…

    “Marcin, masz minutę?” — aż podskakuję na krześle, słysząc te słowa. Odwracam się. “Ile już grasz? Wyłącz ten komputer i zajmij się lekcjami!” “Mamo! Kiedy tu weszłaś? Nie mogę teraz skończyć, walczę z końcowym bossem!” — patrzę błagalnym wzrokiem. “Dosyć gadania, wyłączaj!


    Grałeś kiedyś w naprawdę wciągającą grę wideo? Pewnie tak. Kiedy jesteś zanurzony w grze, czas i świat dookoła przestaje istnieć. Jesteś skupiony i gotowy poświęcić wiele, by osiągnąć swoje cele. Niektórzy są w stanie nawet poświęcić niektóre potrzeby fizjologiczne… nie wchodźmy może w ten temat…

    Cóż, granie pewnie nie jest najbardziej produktywną rzeczą, jaką możesz robić w swoim życiu (chyba że jesteś profesjonalnym, wygrywającym międzynarodowe turnieje gamerem, wtedy… może?). Jednak wciąż, mechanizm, któremu ulega gracz siedzący przed ekranem przez wiele godzin, jest naprawdę potężny i… użyteczny. Można go wykorzystać w wielu obszarach życia. Ten mechanizm został opisany jako Flow, czyli Przepływ (przyznam, że angielska nazwa dużo bardziej przypadła mi do gustu).

    Flow

    Jeśli kiedykolwiek grałeś w jakąś grę przez cały dzień lub próbowałeś rozwiązać jakiś problem w pracy i po prostu straciłeś poczucie czasu albo na przykład układałeś puzzle i nawet się nie zorientowałeś, ile czasu minęło, prawdopodobnie doświadczyłeś stanu Flow. To stan, w którym jesteś naprawdę zanurzony w to, co robisz. W którym tracisz poczucie czasu i zapominasz o swoich codziennych problemach.

    Pomysł pochodzi z książki Flow: Psychologia optymalnego doświadczenia, której autorem jest Mihaly Csikszentmihalyi. Opisuje on ten stan następująco:

    Człowiek staje się tak zaangażowany w to, co robi, że aktywność staje się spontaniczna, prawie automatyczna. Przestaje być świadomy samego siebie jako osobnego bytu, czegoś oddzielnego od tego, co robi.

    Dlaczego wspomniałem o grach wideo? Są one naprawdę dobre w stymulowaniu Przepływu. Naprawdę… cholernie dobre. Tak właściwie, to są one tworzone dokładnie w tym celu, by pozwalać nam wejść w ten stan.

    Jeśli jesteś zainteresowany szczegółami, odsyłam do książki, jest to naprawdę dobra i ważna lektura. Co musisz wiedzieć w tym momencie, to istnieją trzy najważniejsze składniki pozwalające na osiągnięcie Flow:

    • Jasny cel
    • Natychmiastowa informacja zwrotna
    • Wyzwanie dostosowane do kompetencji

    Jeśli jeszcze raz spojrzysz na gry komputerowe, łatwo zauważysz, że te trzy warunki są spełnione w każdej dobrej grze. To dlatego są one tak wciągające.

    Masz jasny cel — rozgrywka narzuca Ci pewne zrozumiałe zadania do wykonania. Zabij potwora, znajdź pokemona, zdobądź miasto.

    Gdy Ci się udaje, zazwyczaj od razu dostajesz o tym informację i jakąś formę nagrody za to osiągnięcie — przedmioty pozostawione przez potwora, punkty doświadczenia, pieniądze. To jest natychmiastowa informacja zwrotna.

    Co więcej, gry zwykle starają się dopasować swoją trudność do gracza. Pomijając już poziomy trudności, zwykle zaczynamy rozgrywkę od samouczka, później dostajemy proste zadania. A podczas gdy uczysz się rozgrywki, wyzwania stawiane przed Tobą są coraz większe.

    Czy z takim interfejsem praca nie byłaby dużo ciekawsza?

    To właśnie te trzy elementy w połączeniu czynią gry naprawdę pochłaniającymi.

    Potraktuj pracę jako grę!

    Te same mechanizmy, które działają na nasz umysł doskonale, by utrzymać naszą uwagę przed monitorem, podczas grania w ulubioną grę, działają dokładnie tak samo w każdym momencie (o ile spełnione są wspomniane warunki)

    Granie w gry pewnie nie jest Twoim celem życia (mam nadzieję…). Jednak może jesteśmy w stanie nauczyć się czegoś od twórców gier i użyć tej wiedzy w naszej codziennej pracy (a może nie tylko)? Skoro gry są tak dobre w utrzymywaniu naszej uwagi, to czemu nie… potraktować naszej codziennej pracy jak gry!

    Więc, jak to osiągnąć?

    Jasny cel

    Jeśli grałeś kiedykolwiek z jakąkolwiek dłuższą grę, pewnie zauważyłeś pewne prawidłowości w tym, jak jesteśmy przez nią prowadzeni. Ostatecznym celem jest pokonanie największego wroga, odnalezienie kogoś czy podbicie świata. Jednak nigdy gra nie rzuca nam tego wyzwania już na samym początku i nie zostawia z tym samych sobie.

    W większości gier mamy do czynienia z czymś na kształt systemu misji. Musimy je “odhaczyć”, co prowadzi nas powoli do ostatecznego zadania. Przy okazji dostajemy też jakieś nagrody. Chęć uzyskania kolejnej nagrody trzyma nas przy ekranie, nawet jeśli robimy aktualnie coś bardzo nudnego.

    W taki sposób przez cały czas wiemy, co mamy robić. Wykonywanie mniejszych zadań pozwala nam nie pogubić się w ogromie możliwości, cały czas mieć jakiś cel w zasięgu wzroku i móc się cieszyć z sukcesów od samego początku rozgrywki. Te małe zwycięstwa sprawiają, że bardziej się angażujemy. Wyobraź sobie, że aby wygrać, musisz najpierw przemierzać wirtualny świat przez wiele godzin, nie mając po drodze wiele do roboty. Brzmi jak przepis na baaardzo nudną grę…

    Mniejsze zadania, jak misje w grach, pozwalają nam cały czas mieć jakiś cel w zasięgu wzroku

    Podobnie jest w przypadku pracy, gdzie idealnie jest mieć niewielkie zadania, których wykonanie to bardziej kwestia godzin, niż dni. Taki drobny podział pozwala na uchwycenie całości tego, co mamy do zrobienia i koncentrację na rozwiązaniu obecnego problemu, co sprzyja wejściu w stan Flow. Problem w tym, że taki podział jest często utopią. W praktyce często to, nad czym pracujemy, jest bardzo duże, albo nie do końca na początku zdefiniowane. Można grzmieć na Product Ownera, który źle podzielił pracę zespołowi, a można próbować radzić sobie z tym samemu.

    Świetnie, jeśli user story lub zadanie, za które się zabieramy, jest już podzielone na mniejsze subtaski. Jednak nawet jeśli tak nie jest, warto podzielić je sobie samemu na własne potrzeby. Można stworzyć własną checklistę i odhaczać sobie poszczególne zadania.

    Podzielenie zadania na mniejsze punkty do odhaczenia pozwala nam nie pogubić się w działaniach

    Najlepiej jeśli jedno zadanie nie jest przewidziane na więcej niż godzina, dwie. Wtedy w każdym momencie pracy mamy na horyzoncie osiągnięcie jakiegoś małego celu, co ogranicza ryzyko błądzenia bez celu — z moich doświadczeń jednego z większych zabójców produktywności.

    Natychmiastowa informacja zwrotna

    Pamiętasz sytuacje, gdy napisałeś fragment kodu i, żeby upewnić się czy działa, musiałeś przebudować i postawić na nowo całe środowisko testowe? Gdy musiałeś czekać kilka minut, patrząc tępo w ekran i czekając na efekt uruchomienia jakiegoś skryptu?

    Jesteśmy niecierpliwi i jeśli musimy czekać więcej niż kilka sekund na ocenę naszych starań, to zabija naszą produktywność, bo od razu nasza uwaga zaczyna odpływać. Przypomnijmy sobie, jak działają gry — tam informacja o rezultatach naszych działań i ewentualna nagroda są natychmiastowe.

    Dlatego właśnie uwielbiam TDD. Piszę linię kodu, odpalam przygotowany wcześniej zestaw testów… i natychmiastowy werdykt: działa albo nie. Od razu mogę wrócić do pracy i poprawić kod albo napisać następny test. Złapałem się nawet na tym, że zielona ikonka obok nazwy testu w IntelliJ-u działa na mnie jak nagroda. Zupełnie jak punkty doświadczenia po zabiciu potwora. Strzał dopaminy, który daje mi motywację do dalszej pracy w oczekiwaniu następnych nagród.

    Zdarza mi się napisać z góry sporą liczbę testów, które dany fragment kodu ma przejść. Potem staram się po kolei spełniać kolejne wymagania i patrzę, jak wyniki testów stopniowo zmieniają kolor z czerwonego na zielony. Takie podejście potrafi być naprawdę satysfakcjonujące. Swoją drogą, czy widzisz tutaj także pewien mechanizm występujący powszechnie w grach?

    Pasek postępu typowy dla gier RPG
    Pasek postępu typowy dla gry w programowanie

    Trochę więcej o testowaniu możesz przeczytać również w moim wpisie:

    Więcej niż Given-When-Then

    Wyzwanie

    Patrzę do backlogu, by wyjąć z niego nowe zadanie. Spoglądam na pierwszego taska i… opadają mi ręce. Kolejne zadanie polegające na dodaniu checkboxa na UI-u, kolejne kopiuj-wklej. Cóż, to się zdarza i takie sytuacje skutecznie zabijają zapał do pracy.

    Tego typu zadania niekiedy zajmują mi więcej czasu niż te dużo bardziej skomplikowane. Po prostu nie mogę się zebrać w sobie, by wziąć się do roboty.

    Wyzwanie sprawia, że mam chęć do zmierzenia się z nim. Jeśli takiego wyzwania nie widzę, pozostaje bezmyślne klepanie, które przyjemne nie jest, więc odsuwam to od siebie tak długo, jak mogę. Unikanie za wszelką cenę banalnych zadań może nie przejść i czasem coś takiego nam się trafi.

    Jednak dużo zależy od naszego podejścia. Niekiedy wyzwanie możemy sobie stworzyć sami. Można potraktować proste zadanie jako okazję, by dokonać dawno proszącego się refactoringu w klasie, w której mamy dokonać zmiany. Może istnieje przestrzeń do poprawy wydajności kodu?

    Jeśli spojrzymy tylko odrobinę poza kawałek funkcjonalności, nad którą pracujemy, często widać dużo pola do poprawy.

    Programiści mają tendencję do narzekania na brak czasu na refactoring. Takie zadania to idealna okazja, by wykonać je błyskawicznie i mieć trochę czasu na zmianę, do której od dawna się przymierzaliśmy. Nie tylko stajemy się w ten sposób lepszym programistą, ale tworzymy wyzwanie tam, gdzie pozornie go nie ma i sprawiamy, że praca staje się bardziej wciągająca.

    Co jest jednak istotne, wyzwanie nie może być zbyt duże. Problem pojawia się w momencie, gdy zaczynamy mieć poczucie, że nie jesteśmy wystarczająco kompetentni do wykonania zadania. Zabija to Flow jeszcze skuteczniej niż brak wyzwania. Znalezienie odpowiedniej równowagi jest kluczowe.

    Co jednak, jeśli konieczność zmierzenia się z pozornie zbyt dużym wyzwaniem jest nieuniknione? Można zacząć od prostszej części. Odhaczając coś z naszej listy do zrobienia, nadajemy naszej działalności pęd i zabranie się do tej trudniejszej części może być prostsze.

    Jeśli jednak już ostatecznie utknąłeś, nie wahaj się, tylko szukaj pomocy u kogoś, kto może znać rozwiązanie. W szczególności nie próbuj rozwiązywać koła na nowo, jeśli wiesz, że ktoś już wcześniej zmierzył się z podobnym wyzwaniem.

    W ostateczności, jeśli nie ma innego wyjścia, a jest to możliwe, możesz nawet oddać to zadanie komuś innemu, kto akurat w tym poradzi sobie lepiej. Nikt nie lubi przyznawać się do porażki, jednak uwierz mi, ugrzęźnięcie na wiele tygodni w zadaniu, które pogrąża nas w frustracji, jest dużo gorsze.

    Poszukiwania

    Sposoby, które podałem działają doskonale dla mnie. Możliwe, że w przypadku niektórych z Was skuteczniejsze okażą się inne techniki. Warto poszukać swoich własnych rozwiązań. Pamiętaj jedynie, że muszą one wspierać któryś z tych trzech elementów.

    Na przykład możesz zapewnić sobie lepszą informację zwrotną przez używanie narzędzi do analizy jakości kodu, jak choćby Sonar, by od razu wiedzieć, jak dobre oprogramowanie piszemy. W ten sposób możesz sobie też zapewnić wyzwanie, celując w napisanie kodu bez żadnych nowych brzydkich zapachów 🙂

    Jak widać, jeden sposób może działać na więcej niż jeden element. Tego typu pomysły można mnożyć i na pewno niektóre z nich już stosujesz, niekoniecznie zdając sobie z tego sprawę. Jeśli właśnie zdałeś sobie z tego sprawę, napisz w komentarzu, jaki to sposób i jak pomaga Ci w wciągnięciu się w pracę (z którym z trzech elementów się wiąże).

    Ostatni składnik

    Trzy składniki wymienione wyżej powinny pomóc Ci w wejściu w stan Flow. Jednak pamiętasz historię z początku artykułu, o koledze, który przerwał mi moją pracę? Wchodzenie w stan Przepływu jest niełatwe i może zająć Ci wiele minut (czasem nawet godzin), jednak utracenie go to kwestia niekiedy paru sekund. Tak było też wtedy — krótka zmiana kontekstu okazała się bardzo kosztowna dla mojej produktywności.

    Naszą uwagę atakują w każdej chwili tysiące różnych bodźców. Koledzy w pracy, artykuły w Internecie i oczywiście najwięszy złodziej uwagi…

    CallOnTheGo Mobile auto dialer app Call Center http://www ...

    Oj, telefon to straszliwa bestia, jeśli idzie o kradzież czasu i koncentracji…

    Walka przeciwko rozpraszaczom jest naprawdę ciężka. Jesteśmy przyzwyczajeni do sprawdzania powiadomień na telefonie co kilka minut, plotkowania ze współpracownikami i częstego czytania newsów. Doszliśmy do takiego punktu, że utrzymanie uwagi przez wiele godzin jest prawdopodobnie poza zasięgiem większości z nas.

    Jednak choć nie każdy jest w stanie utrzymać skupienia przez dwie godziny, prawdopodobnie każdy jest zdolny do skupienia się przez krótszy okres czasu. Na przykład 25 minut. To nie tak długo, prawda?

    Technika pomodoro jest chyba najpopularniejszym modelem przerywanej pracy w skupieniu, pewnie jest znana części z was. Polega ona na nastawieniu minutnika (w przypadku autora techniki to urządzenie miało kształt pomidora, stąd jej nazwa) na mierzenie określonego czasu — zwykle jest to 25 minut. I przez te 25 minut pracujemy tylko nad jednym zadaniem.

    Bycie skupionym kilka godzin to brzmi dziś jak coś niemożliwego. Ale już 25 minut…

    Po prostu usiądź i zajmij się robieniem tego, co sobie wyznaczyłeś. Nie szukaj sobie pracy, nie skacz od jednej sprawy do drugiej, nie sprawdzaj powiadomień na telefonie, pełne skupienie na jednej rzeczy. Jeśli coś Cię rozproszy lub coś Ci przyjdzie do głowy, po prostu to zapisz na kartce i wróć do zadania. Wrócisz do tego, gdy minie czas.

    Po 25 minutach nie zapomnij, żeby zatrzymać się i zrobić sobie przerwę, nawet jeśli czujesz (a to zdarza mi się często), że idzie Ci tak dobrze, że nie chcesz przerywać. Technika wydaje się trywialna, ale konsekwentnie stosowana, naprawdę sprawia, że szybciej niż się spodziewaliśmy, robota jest zrobiona.

    Ja używam banalnie prostego minutnika na stronie tomato-timer.com. Otwórz ją na nowej karcie i wróć do niej, gdy już w pełni skupienia dokończysz czytanie, na razie jeszcze chwila koncentracji! 🙂

    Nie jest to artykuł o technice Pomodoro, jednak to co napisałem, to esencja, która pozwoli Ci wystartować i już daje Ci pewnie 90% korzyści, jakie możesz z niej wyciągnąć. Jeśli chcesz wejść w temat głębiej, w internecie łatwo znajdziesz mnóstwo artykułów rozkładających ją na czynniki pierwsze i doradzających, jak można wykorzystywać ją jeszcze lepiej.


    Warto zwrócić uwagę, że przytoczone wyżej sposoby nie tylko pozwalają nam być bardziej produktywnymi pracownikami. Wręcz uważam, że to mniej ważna z korzyści. Podejście do pracy jak do gry i wchodzenie w stan Flow nie tylko pozwala nam lepiej pracować. Dzięki temu zwyczajnie czerpiemy więcej radości z pracy. Wymaga to trochę poświęcenia, jednak efekty są naprawdę satysfakcjonujące.

    Złóżmy wszystko w całość

    Przypomnijmy jeszcze raz, aby zwiększyć swoje szanse na osiągnięcie Flow:

    • Wyznacz sobie jasny cel i skup się tylko na nim
    • Zapewnij sobie szybką informację zwrotną
    • Dopasuj wyzwanie do swoich kompetencji

    Do tego, aby z użyźnionej przez powyższe składniki gleby wykiełkował nam optymalny stan, potrzebujemy okresu skupionej pracy, w czym doskonale pomaga Pomodoro.

    Jak już wspominałem, warto szukać własnych technik. Nikt nie mówi, że na przykład Pomodoro musi być najlepsze dla Ciebie, choć na pewno jest dobre na start. Z czasem sam poczujesz, czy lekka zmiana podejścia nie będzie korzystna.

    Jeśli dla Ciebie lepiej niż to, o czym pisałem działa co innego, koniecznie podziel się tym z innymi w komentarzach. Przyglądanie się swojemu działaniu i zmienianie go ma wielką wartość. Ostatecznie nawet z szukania sposobów na osiągnięcie Flow można uczynić… grę.