TGViewer
Software Engineering - Евгений Сулейманов Software Engineering - Евгений Сулейманов @esuleimanov · 4.25K subscribers
Post #381 3.47K
Хороший разработчик и хороший инженер - не всегда одно и то же.

Чем дольше я работаю с ПРОД-системами, тем сильнее разделяю две способности: хорошо реализовывать решение и хорошо принимать инженерные решения.

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

Причем локально код может быть совершенно нормальным.

Возьмем простой пример.

Внешний сервис периодически отвечает по таймауту. Разработчик добавляет ретрай с бэкофом. Код хороший, библиотека подходящая, тесты зеленые.

Но инженерный вопрос начинается чуть раньше:

а можно ли эту операцию вообще безопасно повторять?

Если внешний сервис успел выполнить операцию, а потерялся только ответ, ретрай может выполнить ее второй раз.

И тогда проблема вообще не в реализации ретрая.

Проблема в том, что мы неправильно поняли семантику операции.

То же самое происходит постоянно.

Можно идеально реализовать кэш - и получить устаревшие данные там, где пользователь ожидает актуальное состояние.

Можно красиво вынести работу в Kafka - и внезапно превратить понятную синхронную ошибку в пятнадцатиминутное отставание данных, которое никто не мониторит.

Можно сделать корректную транзакцию - но держать ее открытой во время сетевого вызова и однажды положить пул соединенийl.

Можно поднять Prometheus, Grafana - и все равно не иметь возможности ответить на вопрос: получил ли пользователь правильный результат?

Во всех этих случаях разработчик мог хорошо выполнить свою работу.

Но инженерная задача была шире самой реализации.

Поэтому мне все меньше нравится оценивать сильного специалиста по тому, насколько сложный код он способен написать.

Код - только один из артефактов инженерного решения.

Гораздо интереснее, какие вопросы человек задает до того, как начинает писать код.

• Что произойдет при частичном отказе?
• Какую гарантию мы действительно даем?
• Что будет при конкурентном выполнении?
• Где находится источник истины?
• Что произойдет, если зависимость станет отвечать в десять раз медленнее?
• Можно ли это решение безопасно изменить через два года?
• Как мы узнаем в ПРОДе, что оно перестало выполнять свое предназначение?

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

Наверное, поэтому хороший инженер для меня - это не человек, который обязательно знает больше технологий.

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

И здесь, кстати, ИИ ничего принципиально не меняет. Он просто делает эту разницу заметнее.

Получить качественно написанную реализацию становится все дешевле.

А понять, какую реализацию вообще можно считать правильной, по-прежнему сложно.

Поэтому одна из самых ценных инженерных привычек сейчас - после вопроса:


"Как это реализовать?"


научиться автоматически задавать второй:


Что после этого изменится в системе и что может пойти не так?"


Вот где, на мой взгляд, разработка заканчивается как просто производство кода и начинается инженерия.
  • 🔥 67
  • 👍 11
  • 👏 9
  • ❤ 5
  • 🤔 5
More from @esuleimanov
  1. Oct 1, 2026CPU почти пустой. А сервис уже лежит. Друзья, вышла запись моего доклада с JPoint - "Анато…
  2. Sep 28, 202610 лет преподавания. Друзья, в этом году уже 15 лет, как я разрабатываю системы и 10 лет к…
  3. Sep 25, 2026Друзья, все-таки Пятница, поэтому техничесий материал уже завтра. А пока, на фоне хайпа ку…
  4. Sep 24, 2026Искусство, которое мы заслужили… Готовимся к годовому перфоманс ревью ☺️
  5. Sep 23, 2026Друзья открываю набор на обновленный "Системный дизайн в деле". Это финальный набор в 2026…
  6. Sep 21, 2026Как меняется обучение? В этом году уже 10 лет, как я занимаюсь преподаванием и сейчас дела…
Threads Profile ViewerView any public Threads profile without an account.Open ThreadLook →Writing with AI? Make it sound human.Metric37 rewrites AI drafts so they read naturally. Free AI detector, 1,500 words free.Try Metric37 →