- BrainTools - https://www.braintools.ru -
Я решил перестать гадать, почему к вечеру код превращается в тыкву, а мозг [1] — в перегретый сервер. Вместо очередного поста про выгорание я полез в нейрофизиологию, собрал немного собственных данных, поигрался с ЭЭГ-гарнитурой, трекером сна [2] и статистикой коммитов. В этой статье — что реально происходит с вниманием [3], рабочей памятью [4] и дофаминовой системой разработчика в течение 8 часов за ноутбуком. Будет и биология, и цифры, и немного кода.
Все мы знаем это состояние. Утром открываешь IDE — и как будто видишь всю архитектуру насквозь. После обеда — уже начинаешь перечитывать один и тот же метод три раза. А к вечеру ловишь себя на том, что тупо листаешь код, не понимая, что хотел сделать.
Раньше я думал, что это просто усталость. Но однажды я заметил странную вещь: количество логических ошибок в моих вечерних коммитах было стабильно выше. Не синтаксических, а именно логических. Те, которые не ловятся компилятором, но ломают прод через неделю.
Я выгрузил историю коммитов за 3 месяца и посмотрел распределение по времени. Параллельно я начал читать про рабочую память, префронтальную кору и нейромедиаторы. Оказалось, что 6–8 часов непрерывной когнитивной нагрузки — это почти марафон для мозга.
Самое неприятное — субъективно мы не чувствуем падение качества мышления [5] сразу. Нам кажется, что всё ок. Но скорость принятия решений падает, вариативность гипотез снижается, а мозг начинает выбирать более простые решения.
У вас бывало такое: в конце дня выбираешь более костыльный вариант, хотя утром бы точно сделал красиво? Это не лень. Это нейрофизиология.
Если сильно упростить, то большую часть дня у разработчика активно работает дорсолатеральная префронтальная кора. Это та часть, которая держит в голове контекст: стек вызовов, бизнес-логику, ограничения системы.
Рабочая память — штука ограниченная. В среднем 4–7 элементов одновременно. Когда мы дебажим сложную асинхронную логику [6], мы постоянно держим в голове состояние нескольких потоков, флагов, зависимостей.
Проблема в том, что при длительной нагрузке снижается эффективность синаптической передачи. Уровень дофамина и норадреналина меняется, а это напрямую влияет на фокус.
Я ради интереса [7] провёл мини-эксперимент. Использовал потребительскую ЭЭГ-гарнитуру и замерял относительную мощность бета-ритма (ассоциируется [8] с активной концентрацией) и тета-ритма (часто растёт при утомлении).
Вот пример обработки сырых данных в Python:
# language: python
import numpy as np
import pandas as pd
from scipy.signal import welch
def bandpower(data, sf, band):
low, high = band
freqs, psd = welch(data, sf, nperseg=sf*2)
idx = np.logical_and(freqs >= low, freqs <= high)
return np.trapz(psd[idx], freqs[idx])
df = pd.read_csv("eeg_session.csv")
sf = 256 # частота дискретизации
beta_band = (13, 30)
theta_band = (4, 8)
results = []
for hour in range(8):
segment = df[df["hour"] == hour]["signal"].values
beta = bandpower(segment, sf, beta_band)
theta = bandpower(segment, sf, theta_band)
results.append({
"hour": hour,
"beta_theta_ratio": beta / theta if theta != 0 else 0
})
print(pd.DataFrame(results))
График получился довольно показательный: после 4–5 часов непрерывной работы отношение бета к тете падало. Это косвенный признак снижения концентрации.
Интересно, что субъективно я в этот момент ещё чувствовал себя нормально.
Теперь про дофамин. В IT мы живём в системе мелких вознаграждений: прошёл тест — маленький всплеск, закрыл тикет — ещё один, получил апрув — отлично.
Но когда мы параллельно держим открытыми мессенджеры, почту и трекер задач, мозг переходит в режим постоянного переключения контекста. А каждое переключение — это не бесплатно.
С точки зрения [10] нейрофизиологии, частые микропереключения увеличивают когнитивную стоимость задачи. Мозг тратит ресурсы на восстановление контекста. И вот тут начинается самое неприятное: префронтальная кора устает быстрее.
Я написал простой скрипт на JavaScript, который анализировал активность переключений окон (через логирование фокуса в рабочей среде):
// language: javascript (Node.js)
const fs = require('fs');
const data = JSON.parse(fs.readFileSync('window_activity.json'));
let switches = 0;
let lastWindow = null;
data.forEach(event => {
if (lastWindow && event.window !== lastWindow) {
switches++;
}
lastWindow = event.window;
});
const hoursWorked = (data[data.length - 1].timestamp - data[0].timestamp) / 3600000;
console.log("Switches per hour:", switches / hoursWorked);
В дни, когда переключений было больше 60 в час, вечером я чувствовал себя буквально выжатым. И это совпадало с ростом количества мелких багов.
Может, стоит иногда закрывать лишние вкладки не ради эстетики, а ради нейронов?
Я решил проверить ещё одну вещь — как меняется скорость реакции [11] и принятия решений к концу дня. Для этого написал простой тест на Go, который запускал серию задач на выбор правильного ответа с ограничением по времени.
// language: go
package main
import (
"fmt"
"math/rand"
"time"
)
func main() {
rand.Seed(time.Now().UnixNano())
start := time.Now()
correct := 0
for i := 0; i < 50; i++ {
a := rand.Intn(100)
b := rand.Intn(100)
answer := a + b
var input int
fmt.Printf("%d + %d = ", a, b)
fmt.Scan(&input)
if input == answer {
correct++
}
}
duration := time.Since(start)
fmt.Println("Correct:", correct)
fmt.Println("Time:", duration)
}
Я проходил этот тест утром и вечером. Разница во времени выполнения достигала 18–25 процентов. Количество ошибок росло.
И это на примитивной арифметике. Представьте, что происходит, когда вы вечером проектируете сложный распределённый сервис.
Плюс добавляется ещё один фактор — глюкозный обмен. Мозг потребляет до 20 процентов энергии тела. При длительной работе без перерывов падает доступность глюкозы в активных областях. Это напрямую влияет на скорость нейронной передачи.
Вы замечали, что после тяжёлого созвона хочется сладкого? Это не просто привычка.
После всех этих наблюдений я перестал героически сидеть 8 часов подряд.
Я разбил день на когнитивные блоки по 90 минут с обязательной паузой. Самые сложные архитектурные задачи — только в первые 3–4 часа после начала работы. Рефакторинг средней сложности — во второй половине дня. Рутину и код-ревью — ближе к вечеру.
Количество багов в вечерних коммитах снизилось. Я стал реже откатывать свои же решения на следующий день.
Самое важное — я перестал верить ощущению, что если я сижу за ноутбуком 8 часов, значит работаю эффективно все 8 часов.
Мозг — не сервер с линейной деградацией производительности. Он скорее как система с нелинейной просадкой после порога нагрузки.
И если честно, меня немного пугает, что в IT мы оптимизируем latency в микросекундах, но игнорируем то, что наш главный процессор перегревается каждый день.
Автор: isergeymd
Источник [12]
Сайт-источник BrainTools: https://www.braintools.ru
Путь до страницы источника: https://www.braintools.ru/article/26290
URLs in this post:
[1] мозг: http://www.braintools.ru/parts-of-the-brain
[2] сна: http://www.braintools.ru/article/9809
[3] вниманием: http://www.braintools.ru/article/7595
[4] памятью: http://www.braintools.ru/article/4140
[5] мышления: http://www.braintools.ru/thinking
[6] логику: http://www.braintools.ru/article/7640
[7] интереса: http://www.braintools.ru/article/4220
[8] ассоциируется: http://www.braintools.ru/article/621
[9] Image: https://sourcecraft.dev/
[10] зрения: http://www.braintools.ru/article/6238
[11] реакции: http://www.braintools.ru/article/1549
[12] Источник: https://habr.com/ru/articles/1004324/?utm_source=habrahabr&utm_medium=rss&utm_campaign=1004324
Нажмите здесь для печати.