Так много технологических компаний нанимают сотрудников, но почему так сложно нанять или найти работу в технологической отрасли? Основные проблемы заключаются в том, что степень по информатике не позволяет подготовить людей в достаточной степени, процесс собеседований проходит повсюду, и компании не хотят тратить значительное количество времени на обучение. Будучи членом комитета по найму в течение четырех лет, я обнаружил, что нанять инженера-программиста - сложная задача, потому что редко можно увидеть идеального кандидата, а иногда даже кандидата, который удовлетворяет всем минимальным требованиям.

При отсутствии степеней специализации или сертификатов в мире программного обеспечения каждая технологическая компания создает свои собственные «вступительные экзамены» для потенциальных инженеров-программистов. Типичное техническое интервью состоит из одного-трех телефонных интервью и собеседования на месте с участием четырех-семи интервьюеров, чтобы найти идеального кандидата. Интервьюеры зададут вопросы об основах информатики, предметных вопросах, поведенческих вопросах и проведут тест по кодированию, чтобы оценить текущие навыки человека и его потенциал роста.

Навыки и знания

Как я выяснил, степень в области информатики - это всего лишь флажок, потому что это требование типа «вы должны быть таким высоким, чтобы ездить», которое можно обойти с помощью учебных лагерей и предыдущего опыта работы. Почему диплом по информатике не ценится высоко? Технологии меняются быстрее, чем университеты могут за ними успевать, поэтому они будут преподавать общие основы, но не углубляться в специальные знания, которые нужны технологическим компаниям. Кто бы мог предсказать, что криптография станет привлекательным навыком из-за биткойнов? Учебные лагеря по коду - это маршрут, который обучает специальным знаниям, таким как веб-разработка, криптография с блокчейном, машинное обучение и многое другое. Часто они не преподают общие основы информатики, но для некоторых компаний эти инженеры достаточно хороши.

Технический стек и знания предметной области

Обычно задают вопрос о знании предметной области, связанной с вашим стеком технологий, но ошибка заключается в тестировании только внутри стека технологий. Компании ожидают, что инженеры знают язык программирования, который они используют, но на университетских курсах и в учебных лагерях по программированию обычно преподаются языки Python, Javascript и Java. Это требование усложняет поиск младших инженеров, и многие компании отказываются от приема на работу младших инженеров целиком. Для старших инженеров довольно сложно переключаться между различными специализациями в мире программного обеспечения, поскольку требования к языку программирования составляют x лет.

Со временем изменится и популярность языков программирования. Github показывает текущую тенденцию языков программирования:



В пятерку лучших входят Javascript, Java, Python, PHP и C ++. Раньше Perl был популярен, но он больше не входит в десятку лучших. Есть еще Ruby, который раньше был популярен, но немного упал. Затем появляются новые развивающиеся языки, такие как Go, который в последнее время становится популярным, поскольку многие компании его принимают.



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

Домашний тест кодирования

Перед собеседованием на месте обычно дается домашнее задание по кодированию, чтобы оценить способности кандидата к кодированию и отсеять людей, которые не хотят тратить время. Этот метод работает некоторое время, но в конечном итоге кто-то опубликует задание по кодированию в StackOverflow, где кто-то другой напишет отличное решение. Некоторые люди обманывают тесты, и домашнее задание по программированию ничем не отличается. Самое смешное, что у читеров есть разные качества. Я видел некоторых, кто представил свои работы, но понятия не имел, как объяснить какие-либо принятые дизайнерские решения. Затем некоторые люди могли ответить на основные вопросы о том, как, но им было трудно погрузиться глубже, чтобы понять проект в целом. Это по-прежнему отличный способ проверить чьи-то навыки программирования, несмотря на вероятность того, что кто-то обманывает.

Доска

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



Напишите функцию, которая проверяет, является ли строка палиндромом

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

Живой тест кодирования

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

История повторяется

Если кто-то совершал великие дела в прошлом, он обязательно повторится.

Трудовая книжка

Изучение предыдущего опыта кандидата - отличное место, чтобы почувствовать, чего он может достичь. Однако он по-прежнему не дает полной картины, потому что интервьюер не имеет представления о том, насколько сложен проект или насколько кандидат участвует в нем. Большинство программных проектов выполняется в командах, поэтому все интервьюеры будут глубже изучать историю своей работы. Новым выпускникам, пытающимся попасть в отрасль, труднее из-за более легкого стажа работы, но они могут компенсировать это проектами. Люди, которые работают в отрасли в течение длительного времени, имеют отличный опыт работы, чтобы продемонстрировать свои достижения, но могут испытывать трудности с объяснением, почему это было таким большим достижением. Иногда единственная разница - это точка зрения интервьюера и респондента.

Другая проблема с резюме заключается в том, что названия должностей в технологических компаниях довольно беспорядочные, потому что нет стандарта, поэтому названия в разных компаниях могут плохо сочетаться друг с другом. Технический директор в стартапе, состоящем из менее чем десяти человек, может быть эквивалентен техническому менеджеру в крупной компании, насчитывающей более 1000 человек. Кроме того, существуют «нестандартные» названия должностей, которые плохо переводятся, например, руководитель инженерного отдела, который может быть техническим менеджером, техническим директором или вице-президентом по инженерным вопросам. Не удивляйтесь, если ваше текущее название будет переводиться как другое название, потому что ролевые обязанности этой конкретной компании различны.

Персональные проекты

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

У вас нет GitHub? Попробуйте веб-сайт онлайн-курса, например Khan Academy, или примите участие в проекте с открытым исходным кодом:



Культура Соответствие

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

Поведенческий

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

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

Корпоративная жизнь против стартапа

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

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

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

Ключевые моменты

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

  • Замедлять! Рискуйте и инвестируйте в людей. Инженер сможет осваивать новые языки и технологии.
  • Разработка программного обеспечения быстро превращается в множество различных вертикалей. Университеты должны идти в ногу с тенденциями, чтобы лучше готовить новых инженеров. Должен быть естественный способ переключаться между разными вертикалями.
  • Технологической индустрии нужно прекратить заниматься доской. Используйте живой тест кодирования!
  • Интервьюеры могут не понимать влияние или сложность проектов в истории профессиональной деятельности человека. Иногда это вопрос перспективы.
  • Названия должностей - беспорядок, и они могут плохо переводиться между компаниями.
  • Попробуйте внести свой вклад в проект с открытым исходным кодом или изучите новые навыки на онлайн-курсах, таких как Khan Academy. Настоятельно рекомендуется размещать проекты кода на GitHub для демонстрации.
  • Культура важна! Наем человека, основанный только на навыках, может повлиять на динамику команды или даже на всю компанию.