Недавно я подал заявку на должность младшего разработчика в ИТ-компании. Во время интервью мне удалось четко указать, с какими технологиями и языками я лучше знаком, и все прошло хорошо.
После собеседования мне прислали задание, по сути, создать простое веб-приложение, и им были ясны следующие два момента:
Прочитав руководство по выполнению заданий, я знаю, что могу очень хорошо справиться с технологиями, с которыми у меня больше опыта.
Во время интервью мне удалось узнать, какие технологии они используют на более регулярной основе, и я уже работал с этим в течение очень короткого времени, что ставит меня перед следующей дилеммой:
Должен ли я выполнять задание с помощью технологии, с которой я более знаком, то есть я сделаю работу быстрее и качественнее, даже если эта конкретная технология на самом деле не будет использоваться мной, если меня наймут?
Или я должен использовать технологию, которую я знаю, которую компания использует в своих проектах, а это означает, что мне придется немного изучить, как ее использовать, и что это займет у меня больше времени и, вероятно, с более низким качеством, чем первый вариант?
Думаю, стоит отметить, что интервьюер много спрашивал о моем опыте работы с технологиями, которые они в данный момент не используют .
Если бы они прямо сказали вам использовать любую технологию, которую вы хотите, и даже были бы в восторге от технологии, которую вы знаете, то я бы посоветовал вам использовать ту, с которой вы более знакомы.
Таким образом, вы будете создавать код более высокого качества , чем если бы вы прямо сейчас изучали другие технологии.
Вы также покажете им больше «настоящего себя» как профессионала, что позволит им лучше оценить вас как кандидата и увидеть, что вы можете принести компании. Они также увидят, какие новые вещи они могут узнать от вас или какие новые технологии они могли бы рассмотреть для внедрения.
Используйте технологию, с которой вы лучше всего знакомы.
Компания, скорее всего, хочет узнать, как вы думаете, не обязательно, знаете ли вы тонкости и синтаксический сахар PHP, Perl, Ruby и C. Не так давно я начал работать в компании, которая использует Ruby on Rails, никогда не написал строчку RoR в своей жизни. Возможно, вам даже сойдет с рук псевдокод, но я бы не рекомендовал его.
То, как вы думаете, важнее, чем точка с запятой.
Отказ от ответственности: у меня есть только 1 полный год опыта работы, я только что перешел на свою вторую работу с полной занятостью и был нанят не на основе заданий, а скорее на коротких тестах и рабочих собеседованиях.
Прежде всего, даже если нет надлежащего крайнего срока, было бы продемонстрировано хорошую рабочую этику, чтобы завершить его своевременно.
У любого варианта есть свои плюсы (а может и минусы).
Вариант 1, Лично Знакомая Технология , (Плюсы):
(Минусы):
Вариант 2, стандартная технология компании (плюсы):
(Минусы):
Минусы на самом деле не так уж и плохи, но я полагаю, что они сводятся к тому, что вы хотите сделать: показать, что вы можете сделать с тем, что вы знаете, или использовать это как возможность бросить вызов себе и познакомиться с их технологиями.
Я бы посоветовал OP выбрать то, с чем вы больше всего знакомы , для выполнения этого задания, и я бы перечислил некоторые из причин, по моему мнению, поскольку я сам тоже новичок в компании, и я прошел через это несколько недель назад.
Компания предпочла бы, чтобы у вас было сильное логическое мышление и навыки программирования, а не знание большего количества языков программирования, но слабые навыки программирования и логическое мышление. Это связано с тем, что навыки программирования гораздо важнее, чем количество языков программирования, с которыми вы знакомы. Если вы хорошо справляетесь со своим заданием на языке, с которым вы знакомы, то компания будет полагать, что изучение новых языков/фреймворков не займет у вас много времени и усилий, поскольку они знают, что у вас хорошие навыки кодирования и логическое мышление.
Позвольте компании решить, какие языки программирования или фреймворки вам следует изучить, после того, как они рассмотрят ваше задание. В некоторых случаях в компании применяется более одного языка/фреймворка в зависимости от проекта. Высшее руководство решит, какую команду вам назначить, и, таким образом, выучит новые языки/фреймворки. Я полагаю , что у вас будет достаточно времени, чтобы наверстать упущенное в этом случае.
Так почему бы вам просто не сделать все возможное в задании, чтобы показать им, что у вас есть?
Должен ли я выполнять задание с технологией, с которой я лучше знаком, или мне следует использовать технологию, которую я знаю, которую компания использует в своих проектах?
Здесь много факторов, но я думаю, что вы должны использовать технологию, которую использует компания.
why?
Во-первых, инженеры в основном оцениваются по параметрам «умеют разобраться» и «делают дело». Если бы я хотел оценить это задание, мне было бы все равно, что вы уже знаете, но тем более, если вы можете применить то, что знаете, для решения незнакомых задач. Это будет отражать то, что инженер делает каждый день. Кроме того, хороший (веб) инженер должен probably
быть в состоянии создать базовое веб-приложение на любой технологии, даже если он с ней не знаком.
Во-вторых, вы действительно можете продемонстрировать готовность погрузиться и решить сложные проблемы (сложность из-за незнакомости). Это значительно поднимет вас по сравнению с другими кандидатами.
В третьих. Вам нечего терять, если действительно не приближается крайний срок. Если окажется, что это слишком сложно сделать с их технологией, просто вернитесь к тому, что вы знаете. Они никогда не узнают, если ты им не скажешь.
Как уже говорили другие, у обоих подходов есть свои плюсы и минусы. DarkCygnus и gitguddoge высказали мнение, которое я считаю, пожалуй, самым важным. Они, вероятно, оценивают, насколько хорошо вы знаете то, что знаете, и насколько хорошо вы понимаете общие принципы.
Существует множество способов решения одной и той же проблемы кодирования, и эффективность различных решений может сильно различаться. Например, предположим, что вы недостаточно знаете о внутреннем устройстве языка, чтобы знать, что элемент, который выглядит как примитивная переменная, на самом деле реализован под капотом как атрибут объекта, таким образом, размещаясь в куче, а не в стеке, а затем вы включаете его в большой цикл? Вы, конечно, обнаружите, что это работает намного медленнее, чем если бы вы сначала преобразовали его в значение на основе стека. Именно такие вещи замечают оценщики вашего кода.
Вот пример четырех способов сделать одно и то же в JavaScript, которые, хотя все они решают указанную проблему, работают при этом с очень разным уровнем эффективности. Некоторые из решений довольно элегантны, они используют регулярные выражения для сокращения необходимого кода до нескольких строк. А также немного медленнее, чем более прозаичный подход с итеративным циклом.
Я думаю, что ваше мастерство лучше продемонстрирует, если вы сможете написать действительно эффективный и хорошо работающий код в том, с чем вы лучше всего знакомы, чем если вы сможете решить проблему неэффективно, быстро приобретя практические знания о какой бы технологии они ни были. с использованием. Имейте в виду, что вы можете попасть на другое собеседование, где вас попросят обосновать свой выбор кода, и вы будете звучать гораздо более осведомленно, если сможете убедительно подтвердить их.
Так что я хочу сказать, придерживайтесь того, что вы знаете лучше всего, особенно если это то, о чем они просят. Если это то, о чем они просят, скорее всего, они хотят увидеть, насколько хорошо вы знаете то, что знаете.
DarkCygnus
Дауд ибн Карим
Стив-О
ДонКуиКонг
БобРодес
Белль