С какой задачи вы предпочтёте начать работу: простой или сложной?

Ответ

Начну с простой или средней по сложности задачи.

Почему так?

  • Быстрый вход в поток: Позволяет разобраться с кодовой базой, процессами и инструментами, не погружаясь сразу в глубины архитектуры.
  • Ранняя победа и feedback: Завершение первой задачи даёт положительный импульс команде и позволяет получить обратную связь по стилю кода и процессам.
  • Снижение рисков: Сложная задача часто содержит неизвестные неизвестные. Начав с простой, можно выявить скрытые проблемы окружения или зависимостей, которые затем будут учтены в сложной задаче.
  • Практический пример: Вместо того чтобы сразу проектировать распределённую систему кэширования, лучше сначала добавить метод в сервис и его интеграционные тесты. Это подтвердит, что сборка, деплой и мониторинг работают корректно.

Такой подход ("от простого к сложному") систематически снижает неопределённость и наращивает уверенность.

Ответ 18+ 🔞

А, ну ты глянь, классика жанра! Только пришёл новый человек в команду, а ему уже суют какую-нибудь ебучую задачу про перепроектирование ядра системы на микросервисы с нуля. Пиздец, да? Сразу в омут с головой.

Так вот, слушай сюда, мой совет — не надо так. Не надо сразу лезть в эту архитектурную жопу с руками. Это как сразу попросить человека, который только сел за руль, поехать по «Кольцу» в час пик. Он просто обосрётся и въебется в первую же иномарку.

Начинать надо с простого. С хуйни средней степени залупленности. Почему?

Ну, во-первых, быстрый вход в поток. Пока он будет эту простую хуйню делать, он заодно и разберётся, где у вас код лежит, как его собирать, как тесты запускать, куда деплоить и кто тут главный пидарас. Без этого он на сложной задаче просто утонет в незнакомых терминах и процессах, и будет сидеть, как Герасим, и мычать «Муму» в монитор.

Во-вторых, ранняя победа, ёпта! Человек сделал таску, закоммитил, запушил, всё прошло, его похвалили. У него сразу волнение ебать спадает, и появляется уверенность, что он не полный мудак и может тут работать. Команда тоже видит: о, чувак не просто так деньги получает, он уже что-то полезное сделал. Всем пиздато.

В-третьих, риски снижаются, блядь. В каждой, даже самой простой, на первый взгляд, задаче могут сидеть скрытые подводные ебли. То окружение не соберётся, то зависимость какая-нибудь ебанутая вылезет, то процесс деплоя окажется написан инопланетянами. Лучше эти проблемы выловить на какой-нибудь фигне вроде «добавить поле в ответ API», чем когда ты уже полгода проектируешь распределённый кэш и понимаешь, что твой шедевр нихуя не деплоится.

Практический пример, чтобы было понятно. Вместо того чтобы сразу орать «давайте перепишем всё на Rust и разнесём по двадцати подам!», дай человеку сначала, например, добавить новый эндпоинт в существующий сервис. И написать к нему тесты. И убедиться, что это всё собирается, деплоится, логи пишутся, метрики считаются. Вот это вот — реальный, осязаемый кусок работы. Он как чек-лист: если с этой простой хуйней всё прошло гладко, значит, базовые процессы работают. А если нихуя не прошло — ну, значит, сначала надо починить эти базовые процессы, а уж потом лезть в сложную архитектуру.

Короче, подход «от простого к сложному» — это не трусость, а, блядь, системное снижение неопределённости. Ты постепенно, как краб, наращиваешь уверенность и понимание, вместо того чтобы одним махом впендюрить себе в проект кучу неизвестных неизвестных. Понял да?