Материалы / Истории / Помидорный снайпер против Lazy Query
История

Помидорный снайпер против Lazy Query

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

Макс задумчиво крутил в руках мышку, уставившись в экран. Перед ним висела задача из разряда «нужно проверить лог, поправить конфиг и закрыть тикет». Но руки будто не подчинялись.

«Почему я готов распутывать истории с deadlock’ами, оптимизировать тормозящие запросы и даже разбираться с чужим кривым кодом — но вот это… это просто убивает?»

В рабочем мессенджере всплыло сообщение:

Артём:

— Макс, ты с тем конфигом разобрался? он нам нужен.

Макс вздохнул и честно написал:

— Нет. Я его открыл, потом полез в доку, потом… в общем, ещё не начинал.

Артём усмехнулся (Макс почувствовал это через экран).

— А если бы там был баг, роняющий продакшн — уже бы сделал?

— Конечно! — Макс даже обиделся. — Там же вызов! А это… ну, скукота.

— Вот и вся проблема, — написал Артём. — Ты ждёшь, что работа будет сплошным квестом. Но так не бывает. Даже в самых крутых проектах есть рутина.

Макс хотел возразить, но вдруг осознал: да, он действительно верил, что где-то есть такие места, где задачи только сложные и интересные. А скучных нет.

— Ладно, — сдался он. — А как ты справляешься? Ты же всё успеваешь.

— Я слежу за собственными задачами, как ты за базой, — ответил Артём и через минуту прислал запрос:

-- блокировки реальной жизни
SELECT
t.task_id AS "Что ДЕЛАТЬ надо",
t.priority,
d.distraction AS "Что ДЕЛАЮ вместо",
d.blocking_time AS "Уже потеряно"
FROM
real_tasks t
JOIN
distractions d ON t.progress = 1
WHERE
d.blocking_time > interval '10 min'
ORDER BY
t.priority DESC,
d.blocking_time DESC;

— Смотришь на запрос, — продолжил Артем, — и kill -9.

— Предлагаешь kill -9 самому себе? — улыбнулся Макс.

— Ты нам ещё нужен. kill -9 — блокирующим транзакциям: мемам, соцсетям или чему там ещё. Буквально четыре важных шага:

1. Три главные задачи в день

Всё остальное — фоновые процессы, как autovacuum.

2. Разбивай задачи на небольшие подзадачи

Каждая подзадача — на 20–30 минут работы. Так проще отмечать прогресс и не терять мотивацию.

3. Ставь таймер

Основной — на 25 минут, как в технике «помидор». Дополнительный — на десятую минуту: если к этому времени прогресса нет, пора понять, что тебя блокирует, и убрать отвлечение.

4. Делай перерывы

Перерывы — лёгкие SELECT: кофе, прогулка, мемы. Не начинай в это время новые задачи, чтобы не открывать лишние транзакции в голове.

Макс запустил в терминале две команды:

Terminal window
$( sleep 600 && echo "Есть прогресс?" ) &
$( sleep 1500 && echo "Перерыв" ) &

К 9-й минуте он реально уже правил конфиг. «Прогресс есть — alarm10 отменяется». К 14-й минуте нашёл кривой путь к логам. Когда таймер пискнул, раздел global settings уже был готов.

Во втором «помидоре» Макс обновил доку, прогнал тесты и закрыл тикет. На часах было 14:05.

Попробуйте следить за задачами, как за зависшими запросами. Нет прогресса за десять минут — ищите блокировку между вами и дедлайном.