Люди, дотошно и сознательно организующие свой рабочий день по какой-либо пришедшей извне методике, вызывают у меня уважение и лёгкую боязнь – кажется, надо быть немножко девиантным, чтобы работать и жить (тут никак иначе отрешиться вне офиса же) по графику, бумажке, алгоритму.

Сам для себя выработал всего две опоры рабочего (да и остальных, впрочем) дня:

  • распорядок должен учитывать мои особенности;
  • сначала планирование, затем действие.

Ну т.е. я не должен ломать себя, зачем? Вы же не обрезаете ногу под обувь, но ищете удобную обувь, которая позволит вам с той же ногой ходить и бегать быстрее, не натираясь. Так и тут.


Основная особенность как личности, так и работы: многозадачность. Мне нужно переключаться между занятиями, между задачами, между информационными потоками, чтобы чувствовать себя комфортно. Соответственно, рабочий день я составляю из разных пакетов, компонуя их так, чтобы в итоге получился цельный результат. Если утром скажу себе «сегодня делаю задачу X восемь часов подряд», тут же стану унылее обычного.

В этом нет ничего сложного. На верхнем уровне активность программиста в 99% случаев укладывается в шесть классов:

  1. Изучить (чтение учебников, просмотр лекций, курение документации).
  2. Подумать (собственно, решение задач в голове или на листочке, а то и пырясь в облака).
  3. Спланировать (спрогнозировать граф своих / чужих действий).
  4. Покодить (когда уже изучил, подумал и спланировал).
  5. Поговорить (встречи, совещания, созвоны и т.п.).
  6. Аудит (кошмаришь чужой код, грубо говоря).

Если с год-другой понаблюдать за собою, обнаруживаешь одни и те же циклы с шаблонами. Скажем, цикл изучения:

  1. Первичный поиск (взять первые попавшиеся книги).
  2. Первичная индексация найденного (полистать, взять ключевые слова, посмотреть библиографию).
  3. Поиск (уже целево найти правильные источники).
  4. Углубление в тему (бегло листается общее, глубоко прорабатывается нужное).
  5. Осмысление (фаза укладывания знаний в системы головы).

Или цикл кодирования:

  1. Написать каркас («архитектуру») решения.
  2. Написать на живую нитку путь от входа до выхода, определяя, удобен ли, верен ли каркас.
  3. Поправить, если надо.
  4. Написать всё остальное.
  5. Тесты.

Что важно, в процессе вы начинаете накапливать статистику потраченного времени. Вы уже будете знать, сколько минут тратите на код класса, если класс уже в голове написан. Знаете, как долго читаете страницу текста такого-то уровня. Знаете, на чём обычно тормозите (скажем, прокрастинация при написании тестов, да), потому в планировании накинете запас. И т.п. Из этих мелких знаний можно собрать опорный тайминг задачи.


Всё это, накопленное за N лет, позволяет вполне удобно спланировать день. А делаю я это вечером и утром.

Вечером осмысляется пройденный день. Что сделал, какие результаты. Какие задачи разблокировались, какие подвисли. Пристрелочно набираю цели следующего дня. Скажем, вот так:

  • доделать модуль A;
  • доделать тесты B;
  • начать работы по модулю C.

Утром на свежую голову план 9-часового дня квантуется на шаги к цели, попутно перемешивается для того, чтобы голова не унывала:

  1. 30 минут – прочитать мануалы для A.
  2. 60 минут – написать модуль A.
  3. 30 минут – покрыть тестами класс B1.
  4. 120 минут – нудно перебить стандарт C в код, отвлекаясь на соцсети.
  5. 60 минут – обед.
  6. 60 минут – дописать модуль A.
  7. 30 минут – покрыть тестами класс B2.
  8. 180 минут – разбросанные по дню думы.

Важно понимать, что это не точный план по будильнику. Любую задачу можно сделать чуть раньше или чуть позже. Также за день множество отвлекающих или меняющих план событий происходит. Тут главное другое – появляется каркас дня, внутри которого можно ясно понимать, что нужно сделать к вечеру.


Фундамент такого подхода – память. Я не пользуюсь ежедневниками или блокнотами для такого планирования. Всё строго в голове. Оказалось очень полезным и правильным держать в фоновой памяти состояние задач, планы проектов, тексты тикетов и т.п. Здесь работает многолетняя привычка к чтению. Программирование – работа с грузовыми составами текста (всё текст – от сообщения в чате до талмуда в шкафу, от письма в почте до проекта в репозитории). Чтение помогает вам научиться держать в постоянном «подвесе» множество разных вещей и прыгать от контекста к контексту. В понедельник прервался на задаче, в пятницу спокойно продолжил с того же места.

Также часть фундамента – формулировки. Старайтесь каждый квант (ну клёвое слово же) информации формулировать одной фразой без лишней воды. Так и запоминать проще, и в попытке найти формулировку задача понимается лучше, и порою после удачной (отшелушившей всё словоблудие) формулировки понимаешь, что с задачей какая-то фигня, ибо нафига нам вдруг «срочно приделать пятое колесо к собаке».

Также часть фундамента – списки. Настолько натурально этот инструмент вошёл в мою жизнь, что теперь только списками и думаю. Список позволяет выстроить последовательность. Список с хорошими ёмкими формулировками позволяет одним взглядом окинуть крупное. Список приучает к дисциплине мышления. Список делает информацию читаемее и запоминаемее (память опирается на «до» и «после»). Списки рулят.

А и всё.

Записываю я только тактическое и в большую тетрадь с указанием даты. Т.е. вместо того, чтобы чертить алгоритмы на разбросанных листиках (половина из которых потом пропадёт), используется гроссбух. Вот это прям полезно, рекомендую.


Могу ли сказать, что как-то организовал работу? Да фиг знает. Как-то организовал. Такой подход позволяет мне:

  • понимать, чем я буду заниматься весь день;
  • в случае чего оперативно перекомпоновать день, не убившись об «ну вот, все планы рухнули»;
  • не погрязнуть в монотонной многочасовой рутине;
  • в любой момент времени ясно и чётко объяснить, чем занимался, чем занимаюсь, чем буду заниматься;
  • заранее обдумывать (и заранее кодить в голове) задачи в какие-нибудь совершенно нерабочие и бездумные промежутки времени, в которые не читаю, например – т.к. я знаю, чем буду заниматься.

Подойдёт ли такое другим людям? Да фиг знает. У внешнего наблюдателя может сложиться впечатление, что вы мечетесь между задачами или всё время смотрите в соц.сети (бывают дни, когда начальство как специально умудряется зайти ровно в те минуты, которые вы используете для переключения между задачами), тут надо смочь снова чётко и снова ясно доказать (в том числе и сделанными вовремя задачами), что вы так работаете, всё нормально.

Ну… Как-то так.