blog > Programowanie > Gra w programowanie.
Marcin Szewczyk
Fullstack Java Developer
5 listopada 2019
Czy 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ąć wyznaczone w grze cele. 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 (Przepływ).
Stan, w którym jesteś naprawdę zanurzony w to, co robisz. W którym tracisz poczucie czasu, zapominasz o swoich codziennych problemach. Pomysł pochodzi z książki Flow: Psychologia optymalnego doświadczenia, której autorem jest Mihaly Csikszentmihalyi.
Opisuje on to zjawisko 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.
Istnieją 3 najważniejsze składniki pozwalające na osiągnięcie Flow: jasny cel, informacja zwrotna i odpowiednie wyzwanie. Dlaczego wspomniałem o grach wideo? Są one naprawdę dobre w stymulowaniu Przepływu:
Mechanizmy, które działają na nasz umysł, by utrzymać naszą uwagę przed monitorem, podczas grania w ulubioną grę, możesz wykorzystać w swojej pracy.
W większości gier mamy do czynienia z czymś na kształt systemu misji. Musimy wykonać zadania, które powoli doprowadzą nas do realizacji głównego celu: podbicia świata czy pokonania największego wroga. 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. 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.
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.
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.
Spoglądam do backlogu, by wyjąć z niego nowe zadanie. 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.
Wyzwanie sprawia, że mam chęć do zmierzenia się z nim. Jeśli takiego wyzwania nie widzę, pozostaje bezmyślne klepanie, które nie jest przyjemne, więc odsuwam to od siebie tak długo, jak mogę.
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?
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.
Sposoby, które podałem działają doskonale na mnie. Możliwe, że w przypadku niektórych z Was skuteczniejsze okażą się inne techniki. Warto poszukać swoich własnych rozwiązań.
Zaprezentowane powyżej sposoby nie tylko pozwalają nam być bardziej produktywnymi pracownikami. Uważam wręcz, że to mniej ważna z korzyści. Dzięki podejściu do pracy jak do gry i wchodzeniu w stan Flow zwyczajnie czerpiemy więcej radości z pracy. Wymaga to trochę poświęcenia, jednak efekty są naprawdę satysfakcjonujące.
Przypomnijmy jeszcze raz, aby zwiększyć swoje szanse na osiągnięcie Flow:
Zobacz też: 3 Skuteczne Podejścia do Pair Programming
Twój adres e-mail nie zostanie opublikowany. Wymagane pola są oznaczone *
Name
Email
Zapamiętaj moje dane w przeglądarce podczas pisania kolejnych komentarzy. Akceptuję politykę prywatności
Twój adres e-mail nie zostanie opublikowany. Wypełnij wszystkie pola i naciśnij przycisk „opublikuj komentarz”
Comment * CUSTOMIZED
1 czerwca 2022
7min
Czym jest chmura obliczowa i kto jest liderem rynku Którą chmurę wybrać AWS czy Azure Jakie są możliwości... czytaj więcej
3 marca 2022
14min
Marcin Grochulski
Sektor IT jest szczególnie narażony na wypalenie zawodowe spowodowany natłokiem zadań Mind Mapping to jeden z sposobów by radzić... czytaj więcej
15 grudnia 2021
5min
Aleksandra Wiśniewska
Zarobki w branży IT wahają się o kilka tysięcy złotych z uwagi na specjalizację oraz znajomość języków... czytaj więcej
Kontakt
+48 601 654 336
biuro@edge1s.com
Adres
Edge One Solutions Sp. z o.o.
ul. Postępu 14B
02-676 Warszawa
NIP: 701 043 07 63
KRS 0000514404