Skip to content

Обо мне

Фотография Кирилла Зайцева

Я инженер-программист, который в основном работает с web-системами, frontend-архитектурой и проектированием библиотек.

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

Как я обычно работаю

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

Обычно я стараюсь понять:

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

Что особенно привлекает мое внимание

В моей работе снова и снова повторяются одни и те же темы. Я замечаю границы модулей, форму зависимостей, эргономику API, именование, изменяемость и стоимость внедрения. Мне обычно важно не только то, работает ли решение, но и то, как его будут понимать, расширять, тестировать и объяснять другим.

Наверное, поэтому меня так тянут библиотеки, extension-системы и общие инженерные инструменты. В этих областях мышление быстро становится более явным: расплывчатые проектные решения там вскрываются особенно быстро.

Инженерный темперамент

Я не считаю себя догматичным, но считаю себя довольно точным. Для меня важно называть вещи своими именами, разводить рядом стоящие, но не тождественные понятия и не пользоваться концептуальными упрощениями, которые сегодня делают разговор удобнее, а завтра мешают пониманию.

На практике это обычно означает следующее:

  • я не смешиваю старый код, техдолг и спорные технические решения в одну категорию
  • я не считаю дублирование и плохую абстракцию равноценными проблемами
  • я не считаю, что простота равна отсутствию структуры
  • я не считаю, что больше архитектуры автоматически означает лучшую архитектуру

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

О совместной работе

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

Даже в продуктовой разработке я часто привношу платформенное мышление: локальные инструменты, тестовое окружение, документация и developer experience важны для меня потому, что именно они определяют, как команда реально движется вперед.

Если нужна более явная формулировка моего подхода к проектированию, компромиссам и терминам, она вынесена на страницы Подход и Глоссарий. Публичные пакеты, организации и open-source работа собраны на странице Проекты.

Книги, которые обычно лежат рядом

Есть несколько книг, к которым я регулярно возвращаюсь, потому что они помогают заново настроить взгляд на код, структуру и проектные компромиссы.

  • Роберт С. Мартин, в первую очередь Clean Code: A Handbook of Agile Software Craftsmanship и Clean Architecture: A Craftsman's Guide to Software Structure and Design
  • Мартин Фаулер, в первую очередь Patterns of Enterprise Application Architecture
  • Крэг Ларман, в первую очередь Applying UML and Patterns: An Introduction to Object-Oriented Analysis and Design and Iterative Development; в русских изданиях эта книга обычно известна как UML 2.0 и шаблоны проектирования
  • Егор Бугаенко, в первую очередь Elegant Objects

Я не воспринимаю эти книги как догму, но воспринимаю их как полезную оптику. Они помогают раньше замечать структуру, ответственности, именование и точки, в которых дизайн уже начинает испытывать давление.

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

Last updated: