Алгоритмы и написание кода на собеседованиях — полезно, но необязательно

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

Прежде чем перейти к статье, хочу вам представить, экономическую онлайн игру Brave Knights, в которой вы можете играть и зарабатывать. Регистируйтесь, играйте и зарабатывайте!

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

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

Кажется, проблема лежит глубже, и все смешалось в кучу.



О многомерности вопроса собеседований


Тут можно очень много говорить, но в целом, вопрос в определениях. Люди рассуждают о собеседованиях, не задав уточняющие вопросы (как на собеседовании — к задачам).

Во-первых, какие бывают области разработки ПО? Вспомним миры Джоэла Спольски. Уже это будет давать разные требования к собеседованиям.

Во-вторых, что за компания? Стартап, big tech, галера, веб-студия, интернет-магазин, или контора с IT-отделом, где основной бизнес — другой?

В-третьих, что такое сеньор? В комментариях к посту верно отметили, что в сеньора смешивают все — архитекторов, ведущих программистов, узкоспециализированных специалистов и так далее.

Далее, какие цели и какого собеседования? Бывают собеседования для поточного набора, бывают поиски звезд, бывают поиски людей с конкретными навыками работы и опытом в технологии, и так далее.

О роли пути в профессию


И, конечно, не стоит забывать про культуру. Знаете, в музыке или в науке есть особое разделение на «своих» и «остальных». Типа, есть у тебя образование профильное и стандартный путь, или нет (в музыке это выражается в обучении более 10-15 лет: ДМШ — училище — консерватория, к примеру). И мне, имеющему опыт без музыкального образования выступления на сцене с профессиональными музыкантами, хорошо знакомы вопросы «ты что заканчивал / у кого учился», которые выделяют своих от остальных.

Программисты получают образование в области CS. Нередко многие из них проходят отбор через олимпиады, где решают специализированные задачи. Учат тонну матана и разных других дисциплин — в том числе уже набившие оскомину структуры данных и алгоритмы.

Думаю, немалая часть противостояния лежит в том, что часть программистов имеют профильное образование и считают тру программистами тех, кто прошел схожий с ними путь. А другая часть — самоучки (вспомним знаменитое «Google: 90% of our engineers use the software you wrote (Homebrew), but you can’t invert a binary tree on a whiteboard so fuck off.»).

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

Какие предварительные выводы?


В общем-то, если принять вышеописанное во внимание, то все становится на свои места.
Если в компании Гугл есть культура людей, которые впитали с вуза, что программист — это человек со знанием алгоритмов и структур данных, то они таким образом и построят набор.

Считайте, как поступление в вуз — все сдают математику и физику, готовятся к экзаменам (и потом успешно забывают к концу учебы — тут, правда, замечу, что поступал до ЕГЭ и у нас в каждый вуз были свои типовые задачи и по ним готовились отдельно). Возможно, за этим есть A/B тесты бизнес-подхода к набору, где алгоритмы наиболее эффективно определяют качества человека (способен ли тупо физически выучить все, может ли думать так, как думают будущие коллеги), который будет успешен в компании.

Если в компании АльфаБетаГамма (название выдумано) работают с Джавой и нужно знание нюансов всего стэка, то будет разумнее спрашивать пет-проекты или нюансы по технологии, ибо нужен будет опыт.

При этом, если зарплата хорошая и поток большой нубов из-за большой суммы — да, поставят на входе задачи типа «напишите пузырек», чтобы не тратить время (собеседование — минимум полдня — подготовка + созвон + вернуться обратно в рабочий режим) на тех, кто решил попытать удачи (на Хабре уже была статья про «войти в айти», и не одна).

Если же в компанию ДельтаДзета (название тоже выдумано) берут по рекомендации архитектора на серьезную должность, то с ним пообщаются по профессии, с уважением, и не будут задрачивать на дебильных задачах.

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

Немного о пользе алгоритмов


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

Со временем, изменил свое отношение, и считаю, что это как школа. Ты тупо впитываешь знания, полученные лучшими умами за прошлые десятилетия. Чтобы понять, и если потом нужно будет — быстро нагуглить или написать самому. Стал испытывать удовольствие, когда прорешал N задач на Codewars, и прочитав на русском + проработав упражнения отличной книги «Питон и алгоритмы» (всем рекомендую, есть еще на английском).

Поднимается самооценка, когда в общении с коллегами знаешь такие термины. Плюс ощутимо развивается мозг, который познает новое. После этого даже взялся за два пет-проекта (на Джанго и node.js), возможно, выложу на Хабре и в опен-сорс, как доведу код до смотрибельного состояния, чтобы в комментариях не сильно распекали.

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

Рано или поздно, начинается граница, для которой нужно иметь некий запас знаний и навыков (например, в играх — математику, работу с графами, памятью, рекурсией и тд; в data science, как хорошо недавно писали — линейную алгебру, статистику + системы аналитики), которые придется освоить.

И лучше сделать это по кайфу и размеренно, в рамках собственного развития, чем, как пишут, насильно и имея два набора знаний — для работы и для собеседований.
Источник: https://habr.com/ru/post/532600/


Интересные статьи

Интересные статьи

Совмещать много действий в одном выражении языка C++ плохо, так как такой код тяжело понимать, тяжело поддерживать, так в нём еще и легко допустить ошибку. Например, создать баг, совмещ...
При создании программного обеспечения все мы, как команда, соглашаемся следовать набору рекомендаций, которые обычно считаются лучшими практиками. Но во время разработки разработчики...
За несколько недель до 14 февраля системе Dodo IS немного поплохело под нагрузкой. Одной из причин стало то, что в backend’ах мобильного приложения и сайта не совсем корректно работал...
Компания Microsoft выпустила «Microsoft Application Inspector», кросс-платформенный опенсорсный (!) инструмент для анализа исходного кода. Читать дальше →
Привет, друзья! Меня зовут Петр, я представитель малого белорусского бизнеса со штатом чуть более 20 сотрудников. В данной статье хочу поделиться негативным опытом покупки 1С-Битрикс. ...