Про работу в потоке
Заметил что моя продуктивность на долгих задачах снижается. Стало интересно разобраться как так получается.
Вот я, когда пишу кровавый тырпрайз на шарпе, жуть как не люблю добавлять поля в базу данных. То есть нет, сама операция-то простая — закинуть проперть в класс, заскаффолдить миграцию... А дальше?
А дальше это всё надо как-то отдебажить. И это, блин, долго: нужен сервер БД для дебага. Хорошо если есть docker-образ, чтобы быстренько поднять локально. А если его нет? А если надо ставить MSSQL и создавать базу данных или восстанавливать бекап? А если надо подключаться через VPN к существующему серверу? Вот все эта мелочёвка отнимает тонну времени. Что при этом происходит в голове?
А в голове я держу названия 3-5 классов в коде, столько же методов, представление как это всё лежит на диске и как взаимодействует. Помню какую переменную куда добавил, какой метод куда докинул, какую сборку подключил. Это позволяет быстро принимать решения и воплощать их в коде. Это и называется "работать в потоке". Так вот, когда работающий в потоке мозг сталкивается с необходимостью подождать — ощущение, будто поезд, несущийся во всех парах втыкается в скалу.
При том с современным тулингом ждать приходится долго так, основательно. До нескольких минут. Ждать пока сраный VPN подключится, билд пройдёт, виртуалка поднимается, бэкап развернётся, фронтенд соберётся. Что делать в это время? Обычно я стараюсь сохранить состояние потока до последнего и переключиться на другую задачу, или ответить коллеге, или прочесть почту. Но если ждать надо дольше 5 минут — я из потока вываливаюсь. Иду твиттер читать, ютубчик глядеть, телефон проверять. Всё, здравствуй прокрастинация.
Вот так я обнаруживаю, что сижу и тупо скроллю интернет. А пока я его скроллю — контекст задачи из головы выветривается. Помилуйте, ну какая задача? Там вон сиськи показывают, в подкасте KUJI что-то интересное рассказывают, в твиттере опять феминистки сцепились. Мозг остывает и к работе я возвращаюсь через полчаса минимум. Медленно влезаю обратно в поток, подгружаю контекст задачи...
Так, что я там хотел сделать? А, поле в базу добавить!
...
В первом сезоне Halt and Catch Fire протагонист толкал отличный тейк о том, что отклик машины менее 400мс — это совершенно иной опыт взаимодействия. Когда ждать надо долго — хочется отвлечься. Поглядеть телек, положить вещи в стиралку, сделать себе кофе. Отклик менее 400мс мозг воспринимает как мгновенный. А когда машина мгновенно отвечает на твои команды — она тебя засасывает. Приковывает твоё внимание. Отвлекаться не хочется совершенно. Это и есть состояние потока.
Это я всё к чему? Подозреваю, что не у меня одного голова так работает. И мораль тут следующая: архитектурное говно, тонна завивимостей, уебанский доступ к инфраструктуре, долгая сборка и запуск на дебаг — всё это снижает development experience и повышает когнитивную ёмкость. Разрабы прокрастинируют как описано выше, и фичи пилятся медленно. Всё то рабочее время, которое оплачивается каждый месяц, уходит просто на бесполезное ожидание, переключения контекста и прочее нагревание воздуха в помещении. А если ещё сдобрить парой созвонов, ммм...
Понимаете, если разработка идёт медленно — проблема не в разрабах. Разве что буддийский монах сможет сидеть и 10 минут смотреть в прогресс-бар, сохраняя концентрацию. Ваша команда может сплошь состоять из супер-быстрых и умных литкод-ниндзей, но если проект не располагает к оптимальному использованию когнитивных ресурсов, то толку от ваших top-3%-профессионалов будет не больше чем от команды джунов.
Когнитивная ёмкость и development experience — просто непаханное поле для исследований и разработок. Но современная архитектурная мысль движется, мне кажется, в диаметрально противоположном направлении: чем сложнее — тем лучше. А покуда оно так — всё у нас будет через жопу.
Такие дела