Comments 6
По моим ощущениям, system design это просто очередная модная чепуха какая-то. Собеседования по этой теме (которые являются обязательными в некоторых компаниях типа Авито или Яндекса) провоцируют на поверхностное изучение каких-то шаблонов, имитацию знаний в широком спектре технологий без реального опыта. Например, мне кажется, что не работав с различными базами данных на практике рассуждать об их масштабируемости как-то смешновато чуть-чуть. Да и критерии прохождения такого собеседования размытые.
По-моему далеко не каждый сеньор-девелопер обладает знаниями, достаточными для построения архитектуры сложной системы с нуля. Но это не означает, что он не тянет на свой грейд.
В общем, это что-то вроде алгоритмического этапа - мало имеет отношения к работе, но без этого не пройти.
Я проходил достаточно собесов за 18 лет работы в зарубежных компаниях. Обычно меня нанимали туда где я был уже нужен и часто без собесов как таковых. Я думаю что и алгоритмы и систем дизайн нужны. Такая боль смотреть на глупый код, где разработчик вообще не понимает сложность алгоритмов и пишет дико тормозные вещи (не замечая этого на своих локальных тестовых наборах). А так же разработчик должен знать хотя бы поверхностно об инструментах современных, плюсы минусы, примеры использования, принятые практики проектирования. Он должен уметь рассуждать в данной предметной области. Сколько совершенно диких применений я видел различных технологий, потому что человек просто не знал что есть другие адекватные инструменты и технологии для этого. Что бы подтянуть алгоритмы для собесов требуется не больше месяца по паре часов в день. То же самое на систем дизайн. В чем сложность я не пойму вообще? И вас никто не будет просить проектировать сложные системы, простую сделайте хотя бы, но с Cache, CDN, RTC хотя бы.
Ну, сложного там особо ничего нет, если не углубляться в детали...
простую сделайте хотя бы
Я так и сделал однажды, но в паре моментов ошибся, т.к. не работал с ними (шардирование БД, к примеру), в итоге не прошёл )) Наверное ещё где-то накосячил. Проблему вижу в том, критерии прохождения сего мероприятия нечёткие, и решения могут быть разные. Зависит во многом от интервьюера.
Да, вы все верно говорите. Но попробуйте сами нанять сеньор разработчика к себе в проект. Да так, что бы он всю архитектуру нормально сделал, то же шардирование прикрутил. И все на новый проект допустим который вам очень важен, ведь инвесторы дали вам кучу денег и потом за это спросят. Желательно, что бы не выяснилось через полгода что всю систему нужно переделывать, а лучше сделать заново на что нужно еще денег и еще полгода. Причем ваши полгода и ваших денег, которые вы торчите инвесторам. Вот тут то мозг и переключается в режим, а как же найти того кто это сможет сделать? Попробуйте соискателям предъявить свои четкие требования. Проблема "четких" требований в том что под них легко подстроиться.
Конкретно по вашему примеру может вы тоже были ок, просто кто-то оказался лучше, а может даже хуже но дешевле.
7 рекомендаций по System Design