Използвай силата на “flow”, за да не усещаш как минава времето, когато програмираш (дори и на работа)!

Едно много интересно явление от психологията (което всъщност е много релевантно и в работата/програмирането) е т.нар. “flow”.

Благодарение на това смея да кажа, че почти никога не изпитвам “скука” на работа и всъщност съм доста благодарен за това, че работя като програмист, защото програмирането е сравнително лесен начин да постигнеш този “flow”. Реших да ви споделя някои неща за него, които може да са ви интересни и/или полезни. 😎

“Flow” общо взето е състоянието, в което си погълнат от дейността, която извършваш. Не усещаш как минава времето, не си парализиран от мисли за себе си или за това, което мислят другите за теб. Не мислиш за миналото/бъдещето и т.н. Просто си тук в настоящето и се чувстваш сякаш имаш пълен контрол в това, което правиш.

Според психолога, който е открил това явление (Михай Чиксентмихай), хората сме най-щастливи именно когато умът ни работи активно върху някаква задача, която ни носи развитие и следователно вътрешно удовлетворение. Може да сте го изпитвали, когато играете някоя игра, свирите на инструмент, танцувате, спортувате, решавате тежка умствена задача, погълнати сте от разговора с някой нов интересен човек… или когато програмирате! 😅

Как да навлезеш в т.нар. “flow”? Процесът е прост (но не задължително лесен). Нужни са 4 неща:

  1. Задача, която отговаря на уменията ти (не е нито прекалено трудна, нито прекалено лесна)
  2. Ясна цел от задачата (трябва да знаеш към какво ТОЧНО се стремиш, защото неясните цели водят до неясни резултати)
  3. Обратна връзка от задачата (трябва ти начин да разбереш дали се доближаваш до завършването на задачата)
  4. Концентрация (не трябва да се разсейваш със странични дейности, иначе няма как да навлезеш във flow)

Пример: да играеш шах. Имаш някакви умения (в случая познаваш правилата на шаха) и играеш с опонент, който е долу-горе на твоето ниво (ако е много по-слаб, ще ти е скучно, а ако е много по-добър, ще се сдухаш и откажеш). Целта ти е ясна: да победиш. Имаш обратна връзка: виждаш кои фигури си спечелил, кои си загубил, наблюдаваш царя на дъската и вътрешно усещаш дали се приближаваш към победата. Фокусиран си само върху играта. Играейки с тези условия налице, ще бъдеш погълнат от играта и няма да усетиш как времето минава.

По същия начин работят нещата и в контекста на програмирането:

1. Първо имаш някакви умения.

Например запознат си с основните принципи на програмирането, познаваш някой език за програмиране, също така някой framework и т.н.

2. Второ имаш някаква ясна задача, която отговаря на уменията ти.

Например да имплементираш някоя нова функционалност в проекта, по който работиш. Обаче задачата не е твърде лесна, нито твърде трудна — знаеш какво точно трябва да свършиш, знаеш КАК да го свършиш и това е предизвикателно, но не чак до такава степен, че чак да се парализираш.

3. Получаваш обратна връзка.

Тестваш написания код и виждаш дали това, което си свършил, работи. Ще видиш какво казват компилаторът, unit тестовете ти, REST заявките ти, а и самото приложение (така ясно виждаш дали нещата са станали както искаш). Дори и да получиш съобщение за грешка, това ти дава насока как да продължиш напред.

4. Концентриран си.

Може би си си пуснал и музика на фона, но като цяло си фокусиран само върху писането на код. И ето, вече си погълнат от това, което правиш, а в резултат времето лети!

А какво да правиш, когато задачата е твърде лесна или твърде трудна? Споменатото горе звучи супер, но е оптимална ситуация. На практика често задачите на работа са или твърде лесни/прости/монотонни (например рефакторирай 1000 неща в кода) или трудни/неясни (например “имплементирай ей тази функционалност, обаче в Jira ticket-a няма подробности и само един човек знае как точно ще стане това, което се опитваме да направим”).

Когато е задачата е твърде лесна (или може би по-скоро твърде ПРОСТА, за да ангажира ума ти дълбоко), аз обикновено редувам работата по нея с нещо странично. Малко работя по скучната задача, малко превключвам към нещо друго свързано с програмиране: някой курс/книга/видео или дори друга задача от backlog-a. Така работата по първоначалната задача става малко по-поносимо и малко по малко се приближавам към завършването й. 😅

Ако задачата е твърде трудна/сложна/неясна, приоритет ми става раздробяването й на малки части и изясняване на макс всичко по нея, което не ми е ясно. Ако дори и след това пак ми се струва малко “too much”, редувам работата по нея с нещо по-простичко. Така, отново, малко по малко се движа напред към завършването й.

Това е засега. Може да прочетете още за това явление в книгата “Поток” на Михай Чиксентмихай (на английски “Flow” на Mihaly Csikszentmihalyi). Успех! 😎

--

--