Pull to refresh

Comments 8

Я не очень понимаю, зачем спрашивать верхнеуровневую архитектуру у разработчика. Для этого есть архитекторы. Разработчик должен уметь проектировать детали исполнения задания в коде. Уровень паттернов. Но если уж вас спрашивают, то:

  • основной фокус на детали задания - можно додумать, что там не указанно, но нельзя игнорировать то, что написали

  • фокус на безопасности - это всегда ограничивающий фактор

  • затем отказоустойчивость (восстановление, масштабируемость)

  • ну и автоматизация (тестирование, деплой и тд)

И вот после этого можно начинать рисовать кубики без деталей.

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

Я думаю, что горизонт архитектора намного дальше и шире, чем у разработчика. Это разные уровни профессии. Это всё равно, что спрашивать про задачи и решения директора. Вы же не менеджера нанимаете. Отличная практика, спросить на один уровень выше (тимлид/техлид), но не на два-три.

Конечно, он (программист) должен уметь рассказать о системе и понять систему. Так же как и понимать работу своего непосредственного лида. Но не проектировать, так как понимание "почему" уже намного глубже чем "как". И часто встречающийся, худший вариант собеседования - интервьюер сам не понимает глубоко предметную область и ожидает, что ему выдадут именно то решение, которое у него, а остальные не верные. Медсестра трансплантационной клиники нанимает санитара и просит построить план операции по пересадки сердца. Странновато, правда?

Собеседование на архитектора в крупных компаниях похоже на курсовую. Вам дают задание на недельку и потом надо подать несколько архитектурных документов и презентацию с защитой перед комитетом (panel interview). То есть изначально, подобная "секция" у разработчика, ввиду ограничений, может как максимум показать то, что он уже делал. Так просто попросите его рассказать архитектуру одного из прошлых проектов.

Перечитайте еще раз книжки про проектирование распределенных систем

Кто-нибудь, посоветуйте, пожалуйста, хорошую книжку на эту тему. Можно на английском.

Мартин Клеппман: Высоконагруженные приложения. Программирование, масштабирование, поддержка.


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

Одна из типичных рекомендаций - Designing Data Intensive Applications от Martin Kleppman, в простонародье "кабанчик" (по рисунку на обложке издательства O'Reilly). На русском издавал Питер, под названием Высоконагруженные приложения, Клеппман Мартин.

Помимо книг посмотрите вот такой репозиторий на гитхабе: https://github.com/donnemartin/system-design-primer

Не из книг, но весьма ценятся в украинско-русском сообществе по подготовке в FAANG два вот таких курса:

Sign up to leave a comment.

Articles