Русский
Русский
English
Статистика
Реклама

Собеседования

Как научиться проходить собеседование в Google

13.02.2021 12:07:16 | Автор: admin

На этой неделе у нас выступала Ава Катушка тренер в Verbetcetera.

Verbetcetera буткамп для тех, кто хочет подготовиться к интервью в Большой пятерке Google, Amazon, Facebook, Apple и Microsoft. Менторы Verbetcetera распределены по 5 странам, уже работают в компаниях-таргетах, знают все про специфику работы и требования к кандидатам на разных рынках.

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




Меня зовут Ава Катушка. Я училась в МФТИ, на факультете computer science, который называется ФИВТ. Мой третий курс был довольно сложным, у меня было много стресса, экзамены, навалились проблемы со здоровьем, семейные проблемы.

Я помню, я зашла в книжный магазин и увидела книгу О чем мечтать. Мне стало интересно; я помнила, что когда-то о чем-то мечтала, но не помнила, о чем. Я раскрыла эту книгу, и прямо там, в Библио-Глобусе, начала выполнять упражнения из этой книги. И оказалось, что я выполняла ожидания всех людей вокруг моей семьи, учителей, кого угодно, кроме своих собственных. Я тогда сильно разозлилась. Мне стало интересно чего же я, собственно, сама хочу. Позже я сидела в Парке Горького и думала об этом. Я поняла, что хочу путешествовать, хочу завести друзей у меня была с этим проблема и хочу с нуля написать свой вебсайт. И у меня, как по волшебству, в том году все начало сбываться.

Оказалось, что есть такой способ путешествовать, где тебе еще и заплатят за это: стажировка. Так я попала в Google в Нью-Йорке, там у меня была стажировка. Где-то в середине стажировки меня спросили, хочу ли я остаться на fulltime. Я подумала почему бы не попробовать, хотя я и не думала, что меня возьмут. Но меня взяли, и я переехала в Мюнхен. Я работала в качестве software engineer в течение трех лет, у меня довольно разнообразный опыт в этом качестве. Сначала я работала и стажировалась как SRI (site reliability engineer) делала много всего интересного, там была сестринская команда. Но скоро мне показалось, что мне хочется писать больше кода. Я перешла в команду SVI, там мы писали тревел-сайт внутри самой компании, для гуглеров. И под конец я еще узнала, что есть такая специальность UXE, UX-инженер. Стала изучать немного UX и перешла туда, пытаясь объединить два мои интереса по рисованию и программированию. Получилось у меня довольно средне, но это тоже опыт в области.

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

Сначала я хотела сама консультировать, но я нашла совет в книге по бизнесу: если хочешь сделать что-то, то сначала найди людей, которые уже это делают что-то хорошее, и ты сможешь у них очень много чему научиться. Тогда я нашла компанию Verbetcetera, там ребята уже занимались тем, чем хотела заниматься я. Там был уже круг менторов; software-engineering-направление было довольно свежее, то есть, оно началось только в 2020 году Но с 2018 существовало менторство PM-ов, которое протекало довольно хорошо. И мне оказались очень близки ценности этой компании: все менторы прошли путь, сами работают в области. Это были ребята, близкие мне по духу, все были (и есть) из FAANG (Facebook, Apple, Amazon, Netflix, Google). Очень классная собралась команда, было интересно присоединиться и попробовать себя в роли ментора.

Я хотела бы рассказать про технологические интервью, ответить на вопросы. Я буду рассказывать про определенную структуру в интервью, останавливаться, смотреть на вопросы, отвечать и идти дальше. Я бы хотела поговорить о coding-интервью: какие вопросы на них задают, какие мифы с этим связаны, как выглядит, в общем, процесс поиска работы с точки зрения компании и кандидата; что такое system design interview, на что оно влияет и какие там есть мифы и популярные заблуждения.

Coding-интервью что же это такое?


Часто спрашивают, какие вопросы на таких интервью задают. Допустим, один из этих вопросов может быть такой: на вход поступает зашифрованная строка, раскодируйте ее. Строка может быть такая: 3[A]2[BC]. Раскодируется как AAABCBC. То есть, то, что внутри квадратной скобки, повторяется столько раз, какое число перед скобкой. И вам во время интервью нужно написать программу, которая делает раскодирование.

Такой вопрос действительно задавали на интервью Bloomberg, Amazon, Apple, Cisco, Google, Microsoft; кажется, довольно простой вопрос, даже если вы не связаны с программированием. Но у него может быть двойное дно например, может быть несколько уровней вложения. Допустим, такая строка: [[[A[[C]].

В таком случае можно сначала расшифровать внутренний слой: ААСС, а потом повторить его три раза то есть, расшифровать внешний слой (AACCAACCAACC). Написанная программа должна справляться с любым уровнем вложений. Если вы хорошо программируете, это не должно составлять проблему.

Какие темы спрашивают в собеседованиях?


Примеры популярных тем массивы, строки (как мы уже рассмотрели), задачи на графы. Иногда сильно замаскированные: например, составить расписание курсов, при том, что у каждого курса есть предварительный курс (пререквизит), который надо взять до него [ГЛЮК ЗАПИСИ]. Есть задачи на рекурсию: например, есть популярная задача про цены. Даются цены на акцию в течение какого-то количества дней, и нужно придумать алгоритм покупки-продажи для максимального дохода. Иногда встречаются задачи из математики или геометрии, но их не очень много; никаких специальных знаний по этим предметам не нужно, нужны самые базовые, но их тоже хорошо уметь решать. Вообще, очень хорошо иметь фундамент в computer science, ощущать себя комфортно, чтобы решение задач на интервью не составляло проблем.

Почему на интервью задают такие вопросы, если рабочий процесс от них сильно отличается? Да, многие люди говорят это не нужно разработчику, зачем эти черно-красные деревья. Это стандартная критика интервью, работа действительно отличается, работа не будет похожа на интервью. Но есть много причин, почему задают именно такие вопросы. Вас хотят протестировать за ограниченное количество времени, посмотреть, как вы справляетесь с незнакомыми, непонятными задачами. Такой скилл действительно на работе часто бывает нужен.
Несмотря на то, что в чистом виде computer science не применяется к работе, базовые знания все равно довольно полезны, когда вы работаете в software engineering. По сути, эти задачи это прокси дальнейшей работы. Вместо того, чтобы спрашивать, хороший ли вы разработчик, вам дают задачи и смотрят, как вы себя ведете с ними. И хорошие ответы на вопросы коррелируют с тем, что вы хороший разработчик.

Какие компании задают такие вопросы на интервью?


Довольно много, и не только FAANG (но и они тоже). У меня есть список: Microsoft, Bloomberg, Uber, Adobe, Oracle, ByteDance, eBay, LinkedIn, Yahoo, VMWare, Salesforce, Cisco на самом деле, я еще многих не вставила. То есть, такие вопросы довольно популярны. Причем, например, в Google и junior, и middle, и senior developer получают одинаковые вопросы, никаких различий нет.

Есть такой популярный миф: важно ли участие в алгоритмических соревнованиях. Меня это сильно волновало: я в них не участвовала ни в школе, ни в институте. Люди часто говорят, что, если ты не участвовал, то твое время уже прошло ты всегда будешь плохо проявлять себя на интервью. Но это не так. Несмотря на то, что, конечно, участие в соревнованиях вам поможет и будет подспорьем, интервью от них отличаются. Вопросы похожи, вам тоже нужно решить задачу за ограниченное время, но ее решение вы презентуете не системе, которая должна пройти тесты, а человеку. Человек смотрит и пытается по решению задачи оценить, хочет ли он с вами работать. Важно не только то, что вы находите решение, но и то, как вы его находите, как вы думали, сколько вариантов рассмотрели, можете ли вы их донести до человека. Это очень важный аспект.
Человек, который вас интервьюирует он инженер, он тоже не решает такие задачи регулярно; скорее всего, последний раз, когда он это делал, был во время его собственного интервью. И он должен найти ответ на вопрос: хочет ли он с вами работать, хорошо ли будет с вами работать. Не нужно его пугаться. Он не хочет поставить вас в суперстрессовые условия; он, наоборот, хочет дать вам позитивный опыт интервью.

Общий фреймворк для coding-интервью


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

Иначе вы можете вообще неправильно понять задачу и начать решать не ту задачу, которая от вас требуется (это сразу большое количество красных флагов).
Часто люди боятся предлагать решения, которые они придумывают; они думают зачем это предлагать, это неоптимально, от меня же хотят оптимального. Не надо так. Начинайте с неоптимального решения, говорите о нем интервьюеру: он поймет, что вы уже достигли некоторого уровня понимания. Потом думайте дальше. Возможно, это чем-то вам поможет в процессе. Здесь нет никакого минуса: наоборот, хорошо, что вы сразу увидели решение.
Важно писать хороший, структурированный код вы хотите показать себя как программиста, который пишет читаемый код. Под конец интервью важно будет оттестировать, для этого можно использовать примеры, которые были придуманы в начале. Так можно отловить ошибки в коде. Потом надо довольно классно подвести итог. Я начал так, я придумал такое и такое решение, у них такие и такие преимущества и недостатки, вот такое тестирование, вот так все работает на примерах. Вот такой пример подхода к интервью.

Q: какой уровень английского желателен?

Желательно свободно разговаривать, чтобы свободно понимать интервьюера и выражать свои мысли. Необязательно super-advanced, intermediate должно хватить.

Q: какие изменения произошли в наборе Google по сравнению с тем, что описано в Cracking Coding Interview?

Тут нужно понять, что именно сравнивать с чем. Но я думаю, что основные мысли из Cracking Coding Interview до сих пор актуальны. Не так сильно все изменилось.

Q: где можно поднять свой уровень технического английского?

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

Q: насколько задания с leetcode отражают актуальную специфику задач, которые задают в Google? Актуальны ли задачи с прошлого, позапрошлого года?

Во-первых, вам важно, чтобы задачу, которая вам попалась на интервью, вы не видели раньше. Если задача будет знакомая, и вы будете заранее знать, как ее делать, то это вам не поможет. Это, наоборот, навредит: это будет заметно. Вам нужно иметь незнакомую задачу, но нужно прорешивать много подобных задач. Leetcode для этого хорошо годится; если вы решаете задачи на разные темы, покрываете популярные темы по computer science в какой-то момент вы станете готовы.

Q: какие языки можно использовать для решения задачи на техническом интервью? Я сейчас решаю задачи с leetcode на JavaScript, но слышала, что нужны Python или C++.

Любой из этих языков JavaScript, Python или C++ годится, здесь все равно. Если вы пишете на JavaScript, хорошо, глубоко его знаете, это ваш язык тогда идите на интервью с JavaScript.

Q: есть ли у вас подход, чтобы правильно оценивать время на каждую задачу на auto code interview, когда есть несколько задач и ограничение по времени?

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

Q: задачи, с которыми сталкивался на интервью Amazon и Google, требовали далеко не базового computer science

Ну, я называю это базовым. Мне так кажется.

Q: если кандидатам на junior и senior задают одинаковые вопросы, то как определяют, на какой grade взять разработчика?

Это определяется не по результатам coding interview, а по результатам system design и behavioral interview.

Q: как вообще Google?

Мне понравилось. У меня был довольно ценный опыт, я бы его не променяла на что-то другое. Довольно классная компания, много офисов в разных городах. Наверно, немного таких компаний, где ты можешь работать и в Европе, и в Америке, и в Азии. Очень много возможностей.

Далее я расскажу о подготовке к интервью: как готовиться, как компании нанимают разработчиков, сколько потребуется времени


В Google и во многих подобных компаниях процесс выглядит так. Сначала нужно быть замеченным, пройти через рекрутера. Потом идет initial screening, где вам дают 1-3 coding interviews те самые вопросы, которые мы обсуждали ранее.

Если вы это прошли, то вы переходите на onsite. Там будет большой набор из интервью, обычно от 2 до 4 coding, плюс system design и behavioral. Если вы хорошо показали себя на onsite, то вы получаете offer. У Google в него включается ваша зарплата, relocation bonus оплата переезда. Часто в offer включат акции компании; я получала такой offer, который их включал но не сразу, а через год работы.

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

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

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

  • краткость: уложитесь в 1 страницу
  • ориентация на результаты: опишите свои достижения достиг X, сделав Y с помощью Z
  • ориентация на данные: опишите масштаб ваших проектов загрузку, прибыль и т.д.
  • ссылки: приведите ссылки для демонстрации ваших проектов
  • оценка: попросите кого-нибудь оценить ваше резюме перед отсылкой
  • меньше специализированных терминов: вас должны понимать

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

Дальнейшая подготовка обычно состоит из решения задач например, на том же leetcode на разные темы, на языке, который вы выбрали. Это может быть JavaScript, Typescript, C++, Java, Python и так далее. Очень многие языки. Еще классно иметь практику в парах проводить практические интервью для тренировки процесса, это называется mock interview. Вы можете практиковаться с друзьями, есть и специальные сервисы; мы тоже предоставляем такую услугу можно приходить и практиковаться с ментором. И еще вы пытаетесь повысить свои шансы получить оффер тем, что вы подаете во многие компании. Проходите интервью, и в итоге куда-то попадаете (туда, куда хотите, я надеюсь); конечно, чтобы эта схема сработала, важно иметь хороший фундамент computer science.

Я интервьюировала нескольких человек, которые недавно проходили в Google, и получалось так: одной-двух недель никому не хватает. Никто не сказал мне, что за две недели подготовился к интервью и прошел. Часто требуется 2-3 месяца, и при этом человек занимается по 8 часов в день. И для этого все равно требуется фундамент из института, со специальных курсов, чтобы такие задачи не были совершенно новыми. Кто-то на leetcode писал, что весь процесс занял год (правда, этот человек одновременно работал).

Q: какие зарплаты предлагают?

Можете посмотреть на Glassdoor, там можно узнать, какие зарплаты в какой компании предлагаются (в среднем).

Q: Есть ли у вас менторы на .NET-стеке?

Мы как бы не готовим на конкретный язык, у нас менторство по алгоритмам и system design. Конкретный язык для нас не имеет значения, мы не подтягиваем по языку.

Разберем последнее интервью system design interview. Что это за интервью, какие тут существуют ошибки и мифы, и как к нему готовиться.

Это интервью определяет ваш grade (уровень) в компании. На нем задаются сложные открытые вопросы. Например, как бы вы написали Google Docs (или Instagram, или Facebook Messenger). Естественно, для system design interview разные ожидания: если вы junior, от вас практически ничего не ожидается. Но, если вы senior, вы должны классно себя проявить.

Я встречала такое мнение, что к этому интервью бесполезно готовиться: либо у вас уже есть знания и опыт, либо нет. Конечно, знания по system design не появляются сами по себе с наработкой опыта (хотя опыт помогает), но я бы рекомендовала готовиться к этому интервью всем и junior в том числе.

Структурирование опыта здорово помогает. Вы начинаете видеть за пределами своего маленького кусочка кода, видеть компоненты, видеть целиком процесс, то, как выглядит продукт, из каких серверов, балансировщиков, кэшов он состоит, где в этом продукте могут быть узкие места и уязвимости, как его можно расширить, что делать, если он будет расти. Подготовка к system design interview помогает расти как разработчику, она существенно влияет на offer и позицию. Если вы по сути senior или хороший middle, но вы не готовитесь, то вас, видимо, возьмут на позицию junior, и вам придется уже внутри компании проходить процесс promotion подтверждения peer review и все остальное, чтобы прийти на позицию, которую вы уже, возможно, занимали в другой компании. Поэтому есть большой смысл готовиться, чтобы сэкономить себе время и получить сразу классный offer. Конечно, offers на позиции senior и junior сильно отличаются в Google это десятки тысяч евро.

Готовиться к system design interview гораздо сложнее, чем к coding. Нет никакой тестовой системы, которая скажет, что было правильно, а что неправильно. Важно иметь какого-то человека (обычно какого-нибудь senior-разработчика), который бы дал тебе feedback на то, насколько адекватно ты отвечаешь на вопросы. Очень классно иметь базу структурированных знаний и много практиковаться в парах. Можно приходить на system design mock interview, которые мы делаем в Verbetcetera. Также мы думаем когда-нибудь сделать курс по system design.

Общий фреймворк того, как вести себя на system design interview, очень похож на фреймворк для coding interview. Не надо торопиться в начале, надо задавать уточняющие вопросы, пытаться понять, в чем состоит задача. Никогда не нужно сразу начинать решать или давать какой-то ответ, который вы запомнили с какого-то сайта; возможно, в голове у вас и у интервьюера совершенно разные задачи важно изначально это согласовать, очень много внимания уделять общению и пониманию. Второй этап после согласования задачи начертить высокоуровневый дизайн для задачи, и его тоже согласовать. После этого надо обсудить, какие в этом дизайне могут возникнуть проблемы, что в нем наиболее интересно, и погрузиться в самую важную и интересную проблему. Под конец интервью надо еще раз пройтись по нему, резюмировать свое решение и предложить какие-нибудь идеи насчет того, что еще может быть сделано и улучшено. И все это нужно сделать минут за 45 (даже меньше, потому что бывают всякие технические заминки) это очень сложно сделать с ходу, нужно готовиться.

Q: где-то есть профили всех менторов?

Мы пока не делаем этого открыто. Пока могу сказать, что наши менторы работали (работают) в FAANG и не очень заинтересованы в том, чтобы открыто рассказывать о себе. Это может немного смутить, но такой вопрос анонимности.

Q: по каким направлениям ментор оценивает? Только навыки программирования, или еще английский и навыки самопрезентации?

Вас оценивают по навыкам программирования, по умению решать задачи; английский должен быть достаточным для коммуникации (не нужен супер-уровень). Самопрезентация, наверно, тоже влияет, но не так сильно. Наверно, сильнее влияет то, насколько вы адекватный человек? Если вы придете на behavioral interview и говорите, что ненавидите клиентов, наверно, вам не дадут offer, несмотря на навыки самопрезентации.

Q: если senior завалил system design, то предлагают ли ему позицию middle/junior?

Да, обычно просто даунгрейдят. Это распространенная ситуация: senior просто не готовится к system design, заваливает его, и ему предлагают начальную позицию. Но, естественно, если у человека действительно есть level, то он может быстрее обычного расти внутри компании. Немного обидно будет, конечно, что не взяли сразу на senior после интервью.

Q: Эти mock interview по дизайну в РБ (не расслышал название, где и как проводятся, можно более точную ссылку?) у вас проходят на английском или на русском языке? Вообще, менторы у вас из каких стран?

Все mock interview проходят на английском, потому что в реальности они будут проходить на английском. Менторы распределены; я в России, большинство в Европе, в Англии. Довольно разрозненная компания из разных уголков мира. Ссылка, наверно, будет в описании ролика.

Q: можно ли будет скачать презентацию?

Я не думаю, но можно будет посмотреть в ролике.

Q: mock interview онлайн или оффлайн для москвичей?

Об опции оффлайн мы еще не думали, пока все в онлайне.

Итак, мы сегодня обсудили coding interview какие вопросы на них задают, популярные ошибки и мифы, как готовиться, сколько времени это занимает (чтобы вы реалистично подходили к процессу и не думали, что у всех это занимает всего 2 недели). И system design зачем к нему готовиться, и как это вам поможет.

Еще я хотела сделать объявление. Мы хотим набрать курс: если кто-то из ребят хочет разобраться в алгоритмах, которые нужны для tech interview мы набираем группы, с марта. Группы маленькие, по 3-5 человек или меньше (почти индивидуальные занятия), для работы с менторами из FAANG. Мы в течение трех месяцев будем проходить все основы, которые нужны для подготовки к техническим интервью. Чтобы, если вы чувствуете, что вы на этой теме провисаете, у вас сложился наконец-то хороший фундамент, и вы себя почувствовали уверенно. Это особенно подходит для людей, которые не могут выделить fulltime для подготовки к интервью, которые работают активно такой формат курса может подойти.

И, если у вас скоро интервью приходите к нам на mock interview. По алгоритмам, по system design; когда мы его сделаем, будет курс по system design. Я буду очень рада, если вы придете.

Q: будут ли еще наборы, например, в мае?

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

Будьте готовы, вкладывайте в себя и в свои знания. Вы все классные, у вас все получится.

Подробнее..

Личный опыт Как простой парень из Подольска стал Lead Product Designer в Mail.Ru Group?

11.01.2021 22:22:18 | Автор: admin

Вблоге мымного рассказываем про карьеру программистов. Сравниваем изкаких стран лучше работать ичто выбрать: российскоеIT, релокейт или ремоут. Идля программиста сценарий переезда кажется вполне понятным иреальным, нокак это выглядит удизайнеров?

Мыпоговорили сПавлом Карповым @paul86, Lead Product-дизайнером вMail.Ru Group. Напервый взгляд, онвсе всвоей карьере сделал неправильно, нопри этом добился впечатляющих результатов.

Даже если выучились дизайну сами, аневБританке. Если высшее увас непопрофилю. Если нет реального опыта работы. Если вынезнаете никаких языков, кроме русского. Увас все равно есть шанс науспех, втом числе ивдругой стране.

Павел рассказал, какие навыки помогают вразвитии, как интенсивно расти вкарьере ипопасть наработу вMail.Ru Group без профильного образования. Кстати, вэтом году онбудет расширять свою команду вМэйле, поэтому если выхотите попробовать свои силы, встатье есть пара рекомендаций.

Изинженера вдизайнеры

Уже напятом курсе МАДИ Павел понял, что изучать фотошоп ему интереснее, чем думать окарьере инженера. Покопался внастройках программы ирешил попробовать сделать сайт заметил, что уфутбольной команды Подольска Витязь его еще нет. Работу Павла увидели руководители клуба, иему предложили стать внештатным дизайнером, апозже работу вадминистрации ФК. Формально онсчитался футбольным функционером, нозарплата была небольшой, азадач неочень много. Зато была возможность прокачиваться вдизайне изаниматься тем, что нравится. В20092010годах большую часть дня Павла занимало самообразование всфере дизайна, ас2011 года онстал создавать простенькие сайты за1520тысяч рублей как фрилансер.

Вначале дизайнерской карьеры Павел пытался программировать сам, нопонял, чтосконцентрироваться стоит начем-то одном.

Втот момент небыло онлайн-школ.Британская высшая школа дизайнатолько начинала свою работу, ноценник заобучение там был около200300тысяч рублей. Втовремя для Павла это сумма была космической, деньги нужны были нажизнь, поэтому онвыбрал путь саморазвития. Доконца 2012 работал иучился, нопочувствовал стагнацию ив2013 году перешел наофисную работу вкомпанию Forward Media Group. Вофисе больше чувствовался профессиональный рост. Работа бок обок сдругими дизайнерами иобмен опытом помогает быстрее расти иучиться уних новым фишкам. Компания платит заобучение. PROFIT

Портфолио, собеседование ирелокация

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

Вначале 2015года, CEO одного изиспанских стартапов нашел портфолио наDribbble ирешил позвать его наинтервью. Приглашение попало вспам, иеслибы Павел нерешил почистить эту папку, никто незнает, как сложиласьбы его карьера. Компания занималась разработкой решения для подбора персонала вIT.

Как составить портфолио чтобы тебя заметили? Рекомендации Павла

  • Неворуйте чужие работы инезавышайте свои знания.Вас обязательно попросят выполнить тестовое задание, которое покажет реальный уровень.

  • Несоздавайте презентацию вPower Point открывать ееилистать никому неудобно, унекоторых нетPP накомпьютере. Архивы RAR тоже лучше неотправлять ихвообще неоткроют, тоесть ваше портфолио неувидят. PDF-файлы вариант, возможно ихпосмотрят. Нолучший выбор онлайн-портфолио.

  • Если натекущей работе выделаете скучные ишаблонные проекты, которые стыдно добавлять впортфолио,готовьте две версии работы: одну для портфолио, вторую для проекта.Шаблонный вариант для руководства иинтересный для портфолио.

  • Всегда держите портфолио вактуальном состоянии.Недобавляйте работы, вкоторых неуверены, удаляйте старые проекты, утратившие актуальность. Например, точто было стильно-модно-молодежно 10лет назад, сейчас кажется избитым. Нехраните старые работы, даже если они вам кажутся удачными. Необманывайте себя, ваши первые работы 100% хуже текущих.

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

  • Если выищете работу вдругих странах, повозможности неиспользуйте русский язык винтерфейсах. Сделайте новый вариант наанглийском.

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

Собеседование наанглийском без знания английского. Whaaaat?

Сразу пройти собеседование Павел немог из-за того что незнал английский. Мой лексикон заканчивался нафразе: London isthe capital ofGreat Britain.

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

Совет тем, кто планирует переезд вдругую страну учите языки заранее. Желательно нетолько английский, ноеще иязык той страны, вкоторую выхотите релоцироваться.

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

Как переехать вИспанию порабочей визе

Подготовка документов

  • Свидетельство орождении +апостиль+ заверенный перевод

  • Свидетельство обраке + апостиль + заверенный перевод

  • Свежий загранпаспорт на10лет

  • Апостиль дипломов + заверенный перевод

  • Справка спрошлого официального места работы + заверенный перевод

Апостиль международная стандартизированная форма заполнения сведений озаконности документа для предъявления натерритории стран, признающих такую форму легализации. Штамп Апостиль ставится наоригиналы икопии документов.

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

Оформление визы

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

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

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

Вмае 2015 года Павел ссемьей переехал вМадрид.

Адаптация исмена работы

Первый месяц Павел адаптировался кязыку именталитету коллег. Впервый день работы прошел повсем ипожал руку, взнак приветствия изнакомства. Навторой день снова прошелся повсем ипожал руки, начто испанцы ответили: Зачем? Мыже знакомы

Павел подтягивал свои знания вобласти английского языка, новИспанииоколо 94% жителей говорят только наиспанском языке, инезнают английского. Аколлеги разговаривают наспанглише. Это смесь английского ииспанского.

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

  • испанский (официальный);

  • каталанский;

  • галисийский;

  • баскский;

  • аранский.

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

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

Возвращаться вРоссию Павел неторопился иискал работу вИспании, нодля подстраховки проходил собеседования народине иполучил два предложения оработе. Через некоторое время пришел оффер изиспанского Uber Cabify.

Почему вернулся народину?

Павел быстро развивался, ивCabify ему стало скучно. Штат дизайнеров увеличивался, азадачи неприбавлялись, витоге получалось, что онделал недельную работу запару дней инезнал чем себя занять. То, что сейчас Павел скомандой вРоссии делает задва дня, там растягивается нацелую неделю.

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

Втот момент наглаза попалась вакансия вMail.Ru Group. Павел выполнил тестовое задание, прилетел вМоскву насобеседование ичерез пару недель получил оффер.

Работать вкрупных компаниях намного интереснее, чем внебольших стартапах. Особенно новичкам. Вкаждой крупной компании свои фишки. Например, вМэйле есть UX-лаборатория, вкоторой постоянно проводят исследования пользовательского поведения. Дизайнеру полезно присутствовать натестах, потому что это уникальная возможность посмотреть навзаимодействие пользователей синтерфейсом вреальном времени.

Респонденты пользуются сайтом, пока заними следит исследователь. Замеряют всё: насколько секунд оностановился натой или иной картинке, как быстро нажал накнопку итак далее. После теста группе респондентов задают вопросы поизменениям всайте. Аналитика пользовательского поведения влияет нарешения дизайн-команды. Например, главная Mail.ru Cloud Solutions постоянно тестируется влаборатории, авсе решения иизменения основаны наанализе этих тестов. Так главная страница загод изменилась около пятнадцати раз, нопользователь, скорее всего, ничего незаметил. Главное увеличилась конверсия.

Что еще нужно дизайнеру, чтобы найти работу

Конечно, портфолио

Вэтом году Паша планирует открыть набор всвою команду иотбирать будет попортфолио, анерезюме: интереснее, какими навыками обладает дизайнер, ареального опыта работы может инебыть. Если виден потенциал, человека принимают вштат без лишних вопросов. Достаточно сделать портфолио наbehance.net иdribbble.com ивыполнить тестовое задание.

<рекламная пауза>

Настройка ботаНастройка бота

Следите зановыми вакансиями внашем боте @g-jobbot. Вакансия кПавлу внем тоже появится.Подпишитесь, чтобы неупустить возможность попасть вкоманду Mail.Ru Group.

</рекламная пауза>

Возраст непомеха?

Дизайнер очень молодая для России профессия. Сейчас, скорее всего, сложно найти людей50+, которые работают вэтой сфере. Вкомпаниях средний возраст колеблется от22до40лет.

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

Что нужно дизайнеру чтобы добиться успеха вкарьере

Высшее образование для дизайнера сегодня вторично. Даже крупные компании могут взять человека без профильного высшего, носотличным портфолио играмотно выполненным тестовым. Навыки дизайна первичны.

Существует миф, что компании требуют отдизайнера знания программирования, ноэто нетак примерно в99% случаев. Да, программирование дополнительный плюс, хорошо, если дизайнер умеет верстать или понимает как это делается. Так некоторые вещи можно будет отсечь еще наэтапе идеи, инепотерять время направки. Изучение Pythonа тоже необязательно, ноесли выего знаете, это будет плюсом. Например, Python активно используется архитекторами ипромышленными дизайнерами для алгоритмического моделирования вRhinoceros при помощи плагина Grasshopper.

Как выглядит идеальный продуктовый дизайнер

На60% инженер. Взадачи продуктового дизайнера входит нетолько делать красивые картинки, ноипроектировать, строить ирушить гипотезы, выбирать лучшее решение для проекта. Такое мышление как раз присуще инженерам.

На30% креативщик. Перед ним стоит задача сделать нетолько лучший продукт, ноиуникальный.

На10% ондолжен состоять изграмотности икоммуникабельности. Работа дизайнера это работа скомандой. Без общения неполучится довести проект доума.

Важноли иметь впортфолио громкие кейсы

Существуют компании, которые требуют только коммерческий опыт. Имважно, чтобы проекты изпортфолио обязательно вышли впродакшен. Если выизтех, укого допродакшена доходит1520 %работ, итепод NDA, смотрите всторону других работодателей.

Например, Mail.Ru Group иЯндекс такого нетребуют. Имважно исполнение инавыки, аневыход проекта впродакшен. Павел до2016 года делал только краткосрочные проекты, которые заканчивались наэтапе рекламной кампании.

Можноли получить оффер, выступая наконференциях ифорумах?

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

В2016 году Павел прошел отбор намероприятие ииз608 участников попал в20-кулучших. Онненадеялся даже пройти даже отбор наRDC, авитоге занял 4место втурнире. Сразу после этого получил около 10предложений оработе. Компания изЛондона даже предлагала просто пройти собеседование, без тестового задания.

Поэтому участие вподобных мероприятиях увеличивает возможность получить отличный оффер.

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

Полная версия вебинарананашем канале:

Подписывайтесь нанаш блог: публикуем расшифровки вебинаров сполезными ссылками, истории IT-специалистов игайды порелокации.

Подробнее..

Перевод Как проходить собеседование на дата-сайентиста в Amazon в 2021 году

04.02.2021 18:19:53 | Автор: admin
image

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

В: У пары есть двое детей, и пара знает, что один из детей мальчик. Какова вероятность того, что другой ребенок будет мальчиком?

Здесь нет подвоха. Вероятность того, что один ребенок будет мальчиком, не зависит от другого, поэтому она равна 50%. Вы можете запутаться из-за вопроса Леонарда Млодинова, где ответ одна треть, но это совершенно другой вопрос, не относящийся к нашему.

В: Объясните, что такое p-значение.

Если вы погуглите, что такое p-значение, то получите такой ответ: Это вероятность получить для данной вероятностной модели распределения значений случайной величины такое же или более экстремальное значение статистики (среднего арифметического, медианы и др.), по сравнению с ранее наблюдаемым, при условии, что нулевая гипотеза верна.

Многословный ответ, по той причине, что значение p очень специфично по значению и часто понимается неправильно.

Более простое определение p-значения: Это вероятность того, что наблюдаемая статистика возникнет случайно, с учетом распределения выборки.

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

В: Есть 4 красных и 2 синих шара, какова вероятность того, что они будут одинаковыми в двух выборах?

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

  • Вероятность 2 красных = (4/6) * (3/6) = 1/3 или 33%
  • Вероятность 2 синих = (2/6) * (1/6) = 1/18 или 5,6%

Следовательно, вероятность того, что шары будут одинаковыми, составляет примерно 38,6%.

Q: Опишите дерево, SVM и случайный лес. Расскажите об их преимуществах и недостатках.

Деревья решений: древовидная модель, используемая для моделирования решений на основе одного или нескольких условий.

Плюсы: легко реализовать, интуитивно понятно, обрабатывает пропущенные значения.
Минусы: высокая дисперсия, неточность

Плюсы: точность при большой размерности
Минусы: склонность к чрезмерной подгонке, не дает напрямую оценок вероятности

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

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

В Википедии говорится о четырех преимуществах уменьшения размерности:

  • Сокращает необходимое время и место для хранения.
  • Удаление мультиколлинеарности улучшает интерпретацию параметров модели машинного обучения.
  • Становится легче визуализировать данные при уменьшении до очень малых размеров, таких как 2D или 3D.
  • Избегает проклятия размерности.

Нам нужно сделать некоторые предположения по этому вопросу, прежде чем мы сможем на него ответить. Предположим, что есть два возможных места для покупки определенного товара на Amazon, и вероятность найти его в месте A составляет 0,6, а B 0,8. Вероятность найти товар на Amazon можно объяснить так:

Мы можем переформулировать вышеизложенное как P (A) = 0,6 и P (B) = 0,8. Кроме того, давайте предположим, что это независимые события, а это означает, что вероятность одного события не зависит от другого. Затем мы можем использовать формулу

P (A или B) = P (A) + P (B) P (A и B)
P (A или B) = 0,6 + 0,8 (0,6 * 0,8)
P (A или B) = 0,92

В: Если есть 8 шариков равного веса и 1 шарик, который весит немного больше (всего 9 шариков), сколько взвешиваний необходимо, чтобы определить, какой шарик самый тяжелый?



Потребуются два взвешивания (см. Части A и B выше):

Вы должны разделить девять шариков на три группы по три и взвесить две группы. Если весы уравновешиваются (вариант 1), вы знаете, что тяжелый шарик относится к третьей группе шариков. В противном случае вы возьмете группу с большим весом (вариант 2).
Затем вы выполните тот же шаг, но у вас будет три группы по одному шарику вместо трех групп по три.

Q: Что такое переобучение?

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

Q: У нас есть две модели: одна с точностью 85%, другая 82%. Какой ты выберешь?

Если нам важна лишь точность модели, то ответ 85%. Но если бы об этом спросил интервьюер, вероятно, стоит узнать, в каком контексте задан вопрос, т.е. что модель пробует предсказать. Это даст нам лучшее представление о том, действительно ли метрикой оценки должна быть точность или другая метрика, такая как recall или оценка f1.

Q: Что такое наивный байесовский алгоритм?

Наивный байесовский классификатор популярный классификатор, используемый в Data Science. Идея, лежащая в основе этого, основана на теореме Байеса:

image

Говоря простым языком, это уравнение используется для ответа на следующий вопрос. Какова вероятность y (моей выходной переменной) при X (моих входных переменных)? И из-за наивного предположения, что переменные независимы для данного класса, вы можете сказать, что:

image

Кроме того, убрав знаменатель, мы можем сказать, что P (y | X) пропорционально правой части.

image

Поэтому цель найти класс с максимальной пропорциональной вероятностью.


Q: Как изменение основного членского взноса повлияет на рынок?

Я не уверен на 100% в ответе на этот вопрос, но постараюсь сделать все возможное!

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

Для покупателей влияние увеличения основного членского взноса в конечном итоге зависит от эластичности спроса по цене для покупателей. Если эластичность цены высока, то данное повышение цены приведет к значительному падению спроса и наоборот. Покупатели, которые продолжают покупать членские взносы, вероятно, являются самыми лояльными и активными клиентами Amazon они также, вероятно, будут уделять больше внимания продуктам с премией.

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

Спасибо за внимание!

Что мне нравится в этих собеседованиях и рассматриваемых на них проблемах, так это две вещи:
  • Они помогают вам изучить новые концепции, с которыми вы до этого не были знакомы.
  • Они открывают концепции, которые вы знаете, с новой стороны.

Надеюсь, все это поможет вам в подготовке к вашему путешествию в мир Data Science!

Комментарий к статье Вячеслава Архипова, специалиста в области Data Science AR-стартапа Banuba и консультанта по учебной программе онлайн-университета Skillbox.

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

Но среди этих вопросов нет ни одного со звездочкой. На этот стандартный набор вопрос ответит практически любой выпускник ВУЗа. Если бы я проводил собеседование, то добавил бы парочку вопросов, вскрывающих знание не только стандартных определений, но и тонких нюансов.

Ну например:
1) Как можно получить случайную величину с заданным распределением, имея в наличие реализацию нормальной СВ?
2) Что такое корреляция случайных величин и какова ее геометрическая интерпретация?
3) Как можно бороться с переобучением?
4) В чем преимущество метода главных компонент по сравнению, например, с процессом Грама-Шмидта?
5) Как можно улучшить классификацию, имея набор слабых классификаторов?

А так же у меня возник бы вопрос к соискателю, почему он приводит в качестве источника информации именно Википедию и по каким материалам еще он учился.
Подробнее..

Почему бухгалтеров мы можем обучать, а программистов нет

11.02.2021 00:06:26 | Автор: admin

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


Позвали Григория Петрова, DevRelа Evrone.com (ex. Voximplant, Radmin, Digital October Center) ивдохновителя сообщества Moscow Python, рассказать, как писать хороший код самому инаучить команду. Аеще обсудили, как понять, какие механизмы нас тормозят, икак посмотреть нанейрофизиологию через призму прикладной разработки ируководства технической командой. Разговор оказался настолько интересным, что сделали статью поего следам.


Наш гость сам себя называет генералистом. Пишет набольшинстве мейнстримовых языков разработки, кроме Haskell, иинтересуется нейрофизиологией. Вкакой-то момент онпосмотрел насвой предыдущий опыт работы ипонял, что ему нравится писать документацию, объяснять сложные вещи простым языком иобщаться сразработчиками, нонеруководить. Поэтому позиция DevRel (Developer Relations) оказалась для него оптимальной.





Хороший код, что это?


Объективные критерии назвать сложно, укаждого свое мнение. Главное понять, для чего мыпишем код. Конечно, есть разработчики, которые относятся ккоду как кискусству, новосновном оннужен бизнесу, чтобы решать бизнес-задачи ипозволять людям взаимодействовать друг сдругом исинформацией. Добавим, чтоIT как индустрии всего лет 2030, иневсе компании понимают, что именно они хотят икак написатьТЗ спервого раза. Иногда самое интересное открывается только после начала разработки. Поэтому хороший код это поддерживаемый код, который негниет отсобственной сложности заполгода, его можно расширять вразные стороны или пивотнуть влюбое время. Новые разработчики смогут разобраться схорошим кодом заразумное время.


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



Вчем, собственно, проблема?


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




Взято наBonkersworld.

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


Кпримеру, уГригория обучение разработчика доуверенного мидла занимало три года. Всреднем порынку разработчик меняет место работы через полтора поэтому онначал искать способы ускорить обучение. Ведь если мыумеем учить бухгалтеров, топочему сразработчиками так сложно?


Герой перебрал немало методов иостановился нанейрофизиологии, которая дала ответы нанекоторые вопросы омозге икак его правильно использовать.





Немного теории


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


Сейчас готовых ответов иинструкций, что конкретно делать, чтобы получить результат, нет, ноесть вполне интересные теории. Например, теория Грациано (Attention Schema Theory) описывает, что такое личность икак работает сознание. Врусской нейрофизиологии есть прекрасная теория когнитома Константина Анохина.




Когнитом. Изпрезентации К.В.Анохина от2015 года

Для нас вэтой теории самое ценное, что вмозге кроме нейронов иихконнектома (всех связей нейронов одного организма) есть дерево смыслов когнитом.


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


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


Укогнитома есть два режима: быстро думать уже известным способом, либо очень медленно обучаться. Кажется, все происходит вреальном времени, как вшутерах отпервого лица (FPS), анасамом деле, большую часть времени внашем мозгу исполняется когнитом, который обучился задесятки лет нашей жизни.


Например, Григорий утверждает, что завремя нашего разговора, оннеможет ниувидеть, ниподумать, нисказать ничего нового. Онможет только креативно комбинироватьто, чему уже научился.



Чем нам это поможет напрактике? Решить ссегодняшнего дня делать все правильно недостаточно


Мыговорим джуну: Тебе надо давать читаемые имена идентификаторам, инам кажется, джун, как вFPS, взял новый BMG изDoom ипошел вбой. Нонет, джун впошаговой стратегии: чтобы новый навык приобрести, ему нужно множество раз повторить одно итоже действие.


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


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


Для запоминания нового обязательно используйте интервальные повторения (Spaced repetition). Можно пользоваться приложениями наподобие Anki или специализированными программами. Даже вIDE есть функции, которые подсказывают, что здесь можно было использовать hotkey, аздесь такую-то особенность языка. Сотни повторений вразных контекстах верный путь куспеху.


Мыестьто, что мыделаем: недумаем, немечтаем, аименно делаем. Если просто слушаем ичитаем что-то онавыке, томыте, кто хорошо читает ислушает, нонете, кто этим навыком владеет.


Чтобы добиться результатов, нужно:


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

Звучит просто, анапрактике? Рассмотрим напримере онбординга.



Онбординг разработчика сразных точек зрения


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


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


ВEvrone перед новым бойцом стоит задача освоить весь инструментарий запервые три месяца инаучиться импользоваться. Для внутреннего общения разработчиков используются slack-каналы. Например, для фронтендера будет доступен канал его проекта иканал фронтендеров. Можно задавать анонимизированные вопросы как вканал фронтендеров, так ивобщий технический чат. Также укаждого сотрудника есть доступ кдашборду, где онотслеживает свой текущий уровень ивекторы развития.




Взято наTeamLead Conf

Современная разработка софта это командная игра. Какбы нибыл крут сотрудник, онобязан освоить процессы компании.



Можноли подготовиться квыходу вновую компанию?


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



Как все-таки писать хороший код вреальных условиях?


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


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


Если удалось избавиться отнедоделок, тоостается проблема. Как написать простой код, понятный другим разработчикам? Из-за того, что индустрия молодая инет универсального обучения мывсе самоучки, несмотря напрофильное высшее образование. Пятнадцать лет назад обучали ООП, асейчас Rust иGo считают наследование антипаттерном. Как результат, когнитомы увсех разные. Если взять двух хороших программистов, топересечение деревьев смыслов уних может быть всего 1015 %. Код будет понятным программистам сболее похожими участками когнитомов. Поэтому читаемый код это код, написанный привычными конструкциями. Привычными вэтом языке, вэтом стеке ивэтом году.


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



Способность кобучению ивозраст


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


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


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



Универсальное заклинание


Поделимся методом, который наш спикер использует сам ирекомендует другим.


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


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



Что такое пять участков?


Приведем пример. Вызапоминаете подряд семь названных вам цифр (пример такого ряда: 1 9 8 4 4 5 1). Каждая цифра это один элемент, который необходимо удерживать впамяти. Если вашему мозгу удалось распознать паттерн или проассоциировать эти цифры сдатами или книгами, товпамяти нужно будет удерживать только две единицы информации (1984 и451 поФаренгейту), анесемь. Этот прием называется группированием или свертыванием (Chunking).


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


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



Рекомендации: что почитать ипосмотреть



  • Книга Кто заглавного (Майкл Газзанига) для тех, кто интересуется работой мозга.


Полное видео беседы сГригорием:



<рекламная пауза>
По статистике g-mate, минимум 3050% работодателей готовы рассматривать удаленку, а релокейт среди локаций на второй месте по популярности. И надоевший всем коронавирус не препятствие: за время пандемии и в России, и за рубежом наём ускорился в 3 раза.
Регистрируйтесь в @g_jobbot, подходящие вам вакансии с релокейтом будут приходить в Телеграм.
</рекламная пауза>
Подробнее..

Правила хорошего интервью

03.05.2021 00:11:12 | Автор: admin

Всем привет!

Занимаюсь усовершенствованием процесса найма Java специалистов. Для улучшения процесса интервью составил свод правил и рекомендаций по проведению интервью. Хочу поделиться своими разработками с комьюнити. Возможно, кому-то пригодится =) И так, погнали!

Каких целей я пытался добиться:

  1. Сделать интервью менее стрессовым мероприятием как для кандидата, так и для интервьювера.

  2. Помочь кандидатам понять свои слабые и сильные стороны и как развиваться дальше в ИТ.

  3. Показать, что компания ценит людей и время, которое кандидаты потратили на интервью

Зачем нужна программа сертификации интервьюера?

Программа появилась не случайно. Ведь нужно было решить следующие задачи:

  1. Повысить качество проводимых интервью. Хоть процент плохих отзывов об компании очень мал - это не значит, что сам процесс найма идеален.

  2. Стандартизировать процесс интервью. Так мы уменьшим время, потраченное на одного кандидата и сможем гарантировать определенный минимальный уровень качества.

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

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

  5. Упростить взаимодействие рекрутмент отдела с экспертами по интервью.

Техническая подготовка

1: Навести порядок у себя в календаре и внести в него все свои активности

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

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

2: Камера

Начинаем интервью с включенной камерой.

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

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

Если вам проще проводить интервью без камеры, можете спросить у кандидата, не будет его смущать, если вы выключите камеру. Почему камера не обязательна и даже может быть вредна на интервью, можно почитать вот тут и тут.

3: Проверить интернет соединение: оно должно быть хорошим и стабильным

Я оказался не готов к таким проблемам. Мой провайдер выдавал всего 100 Mbit/s, а Wifi роутер работал только на частоте 2.4 ГГц. Все бытовые приборы, телефоны и телевизоры, которым нужен интернет, были подключены к одной частоте. Качество связи было таким плохим, что я использовал 4G для видеозвонков. Сменил интернет-провайдера на такого, который мог выдать 1000 Mbit/s и купил двухканальный роутер. Этот роутер может работать на частоте 5.0 ГГц и 2.4 ГГц. На частоту 5.0 ГГц подключен мой рабочий ноутбук, а все остальные устройства - на 2.4 ГГц.

4: Ознакомиться с матрицей компетенции

Для чего это нужно? Чтобы понимать, какие требования предъявляются к кандидатам на разные уровни. Если не успеете ознакомиться - не так уж и страшно, потому что в фидбек форме уже есть матрица компетенции.

5: Ознакомиться со стандартными вопросами на интервью

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

Подготовка к конкретному интервью

  1. Прочитать требование по вакансии. Это очень важно, так как требования у разных клиентов разные. Нужно проверить требования проекта, знание каких специфических фреймворков и подходов ему нужны, какой должен быть опыт у кандидата и другие важные аспекты. Возьмем простой пример вакансии, где нет упоминания популярных в мире java фреймворков, таких как Spring и Hibernate. Если их нет в описании, то и спрашивать их на интервью не стоит. Наоборот правило тоже работает: если есть в требованиях знание Kafka и TDD практик, то интервью должно строиться вокруг этих требований.

  2. Прочитать CV кандидата, проверить что у него есть соответствующий опыт для данной вакансии. Если такого опыта нет - нужно предупредить кандидата через рекрутера, который с ним работает, что интервью будет проводиться вокруг требуемых технологий и убедиться, что он готов к этому.

Интервью

  1. Включите камеру и попросите соискателя сделать тоже самое.

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

  3. Представьтесь. Расскажите немного о себе. Например, меня зовут Даниленко Максим, я занимаю должность тимлида на проекте XYZ.

  4. Расскажите о плане интервью и сколько оно займет времени. Например: интервью будет занимать 1 час, мы поговорим про алгоритмы, core java, spring и hibernate.

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

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

  7. Не обязательно: можно пройтись по CV и позадавать вопросы по CV. Поговорить про то, кем видит себя человек на проекте. Какая у него была роль на предыдущих проектах.

    Заметка: этот пункт больше для менеджеров, чтобы оценить софт скилы кандидата.

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

  9. Тайминг: следите за временем. Интервью не должны превышать 90 минут. Желательно тратить на него не более 60 минут. Важно оценивать не только как правильно человек ответит, но и за какое время. Если вы выясняли сложность такой структуры данных, как Map, более 30 минут, а кандидат пришел на вакансию Senior - это явный показатель, что кандидат плавает в этом вопросе и что можно идти дальше.

  10. Если хотите дать задачку на java или sql, не стоит заставлять человека писать ее в блокноте. Пусть это будет его IDE, к которой он привык и комфортно себя чувствует. Ему не обязательно шарить экран. В IntelliJ IDEA, например, можно использовать фичу code with me. Если даете задачу и ее нужно будет решать в IDE - то не стоит тратить время человека и свое на создание проекта, настройку и написание тестов. Заранее создайте на GitHub проект вместе с тестами, и перед (или на) интервью попросите человека скачать его. Это уменьшит стресс кандидата и сэкономит всем участникам время.

  11. Прощаемся. Еще раз благодарим за уделенное время и продуктивную дискуссию. Если кандидат показал себя хорошо в определенных темах, так ему об этом и скажите и похвалите. В мире IТ много хейта, нужно исправлять ситуацию. Результат интервью желательно кандидату сразу не объявлять. Возьмите немного времени, чтобы лучше взвесить все за и против.

После интервью

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

  2. Если кандидат не прошел (ну, обычно это происходит из-за незнания каких-то тем), напишите, где ему можно про это прочитать, чтобы в следующий раз он успешно прошел интервью. Например, кандидат не ответил на вопрос по executionServices. Так и напишите, что ответ можно найти в книге Concurrency in practice глава такая-то. Можете еще каких-то дополнительных статей кинуть. И не забудьте похвалить там, где человек хорошо отвечал. Нет большой трагедии в том, что человек не показал сегодня все свои знания или чего-то не знал. Нам нужно помочь ему закрыть пробелы в знаниях и я уверен, что в следующий раз кандидат обязательно пройдет. Главное дать материалы, по которым он сможет подготовиться.

Выводы

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

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

Мне бы хотелось узнать о правилах или хороших практиках, которые есть в других компаниях. Было бы прикольно увидеть их в комментах. Пишите)

Полезные ссылки

  1. Как проводить и проходить собеседование в IT: краткий курс молодого бойца, link

  2. Алгоритм проведения IT собеседования, link

  3. Не нужно включать камеру, link, link

Подробнее..

Как проходит собеседование начинающего разработчика наС что нужно знать и как подготовиться

15.12.2020 16:09:41 | Автор: admin

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

В этом посте я собрал подборку понятий и терминов, которые у вас могут спросить на собеседовании на вакансию Junior С++ разработчика, и описал, к чему в принципе вам стоит готовиться. Предупрежден значит вооружен. Вкратце о себе: меня зовут Турмец, я работаю в Яндексе, параллельно учусь в Школе Анализа Данных и занимаюсь ревью кода на курсе Разработчик С++ в Практикуме.

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

Поехали.

Оценка soft skills

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

Образование. Расскажите о том, где учитесь или учились. Если вы прошли дополнительные курсы в Практикуме, на Coursera или еще где-то, обязательно упомяните их. Также не стоит забывать о дополнительном офлайн-образовании. Если у вас в копилке есть какой-нибудь пройденный интенсив или достижения на олимпиадах по программированию, поделитесь и этим.

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

Говорить нужно только правду, ведь интервьюер может углубиться в тему и задать пару вопросов о проекте. Вы должны быть способны ответить на уточняющие вопросы.

Если у вас мало опыта в коммерческой разработке, расскажите про учебные проекты, которые вы выполняли, pet-проекты, упомяните участие в хакатонах и конкурсах, профильных конференциях.

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

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

Заранее продумайте, как вы ответите на такие вопросы.

  1. Случались ли у вас провалы? Расскажите о самом большом из них. Ответ на этот вопрос покажет, как вы умеете рефлексировать над ошибками, какие выводы делаете после неудач.

  2. Какими проектами вы гордитесь? Выберите один-два проекта и в деталях расскажите, как вы участвовали в них: в чем была сложность, как вы подошли к решению, какие проблемы возникали в работе, как вы их решали, какие получились результаты.

  3. Какая была самая сложная ситуация, которую вам удалось разрешить? Ответ на этот вопрос покажет, готовы ли вы брать инициативу, насколько вы самостоятельны, умеете ли работать в стрессовой ситуации, не теряетесь ли в сложных условиях.

Оценка hard skills

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

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

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

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

Итак, вы точно поняли задачу, пора решать. В процессе решения рассуждайте вслух: так же как и с вопросами, в этот момент интервьюер делает выводы о вашем подходе к задаче. Я стараюсь идти по следующему пути при решении задачи: 1) предложить самое простое решение; 2) попытаться улучшить узкие места. Если чувствуете, что, скорее всего, сможете решить лучше, так и скажите: Вот идея навскидку, но будет лучше. То есть идите от простого к сложному.

Давайте предположим, что вам досталась задачка сложного уровня и у вас нет идей. В этом случае снова задавайте вопросы, можете попросить подсказку. Помните, что просить помощи не значит провалить собеседование. Задавать вопросы это нормально.

Вы придумали решение, что дальше? Нужно его проанализировать и написать. Проанализировать это значит посчитать асимптотику по времени и памяти. То есть вы должны уметь спрогнозировать, насколько итоговая программа будет быстро работать и сколько памяти ей нужно. Хорошее решение предполагает оптимальное использование времени и памяти.

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

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

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

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

  1. Бинарный поиск

  2. Сортировки

  3. Два указателя

  4. Сканирующая линия

  5. Обход в глубину

  6. Обход в ширину

Еще упомяну два важных понятия. Полноценными алгоритмами их не назовешь, но знать их необходимо:

  1. Префикс-/постфикс-сумма, также известная как предподсчет

  2. Рекурсия

Структуры данных. Теперь посмотрим на список по структурам данных, которые необходимо знать:

  1. Вектор

  2. Связный список

  3. Дек

  4. Стек

  5. Очередь

  6. Куча

  7. Деревья поиска, в частности бинарные

  8. Хеш-таблица

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

Чтобы подготовиться к вопросам об алгоритмах и структурах данных, я рекомендую посмотреть курс Максима Бабенко Алгоритмы и структуры данных поиска в Школе анализа данных.

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

Конечно, вы должны быть знакомы с синтаксисом. Не обязательно знать все возможные интересные слова, типа explicit, external и volatile, но то, как объявить класс, наследоваться от него и задать оператор меньше, вы знать должны.

Есть базовые знания, которые должны иметь все разработчики, независимо от языка программирования: что такое ООП, базовая работа с Git, базы данных. На этих пунктах я не буду останавливаться. Я сформулировал список обязательных знаний для разработчика С++. Рекомендую изучить его:

  1. Шаблоны

  2. Наследование и полиморфизм, виртуальные методы

  3. Правило пяти

  4. Процесс компиляции и линковки

  5. Инвалидация итераторов

  6. Модель памяти в C++

  7. Move-семантика

  8. Умные указатели

  9. Идиома RAII

  10. Перегрузка операторов

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

После собеседования

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

Полезные ссылки для подготовки к собеседованию

  1. leetcode.com сайт, где вы можете решать задачи, похожие на те, что задают на собеседованиях.

  2. Информатикс ресурс, где можно найти много полезной информации об алгоритмах и структурах данных.

  3. Статья Как проходят алгоритмические секции на собеседованиях в Яндекс.

  4. Курс лекций Максима Бабенко Алгоритмы и структуры данных поиска.

Подробнее..

Из филолога в Python-разработчики как переучиться и чего ждать от новой профессии

03.04.2021 00:05:49 | Автор: admin

Стать разработчиком, если ты не технарь и у тебя нет профильного диплома, вполне реально много подобных примеров можно найти в сети. Считается, что Python один из самых простых способов войти в эту профессию, но есть масса нюансов, которые могут повлиять на обучение. О том, как его построить, чтобы не обжечься на первом языке программирования, рассказываетпреподаватель Python в GeekBrains и главный инженер Сбера по разработке в Data Analytics Вероника Голубева.

Вероника Голубева, преподаватель Python в GeekBrains и главный инженер Сбера по разработке в Data Analytics Вероника Голубева, преподаватель Python в GeekBrains и главный инженер Сбера по разработке в Data Analytics

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

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

Достаточно легкоязык программирования Pythonдается гуманитариям лингвистам, филологам. По сути, он как иностранный язык, только легче: так же нужно изучать синтаксис, но больше логики, строже правила и нет исключений. Перейти на Python с другого языка программирования очень легко, но, если вы новичок и выбираете, с какого языка начать, начните с Python. На нём будет гораздо легче, чем на условном Java, обучиться базе циклам и объектно ориентированному программированию.

Вообще, к нам накурсы Pythonприходят люди с разными целями и навыками: есть и технари, которые хотят углубиться в профессию, и люди из не связанных с программированием сфер им тяжелее, но программа гибкая, поэтому успешны и первые, и вторые. Накурсах программирования Pythonмы ставим задачи, максимально приближённые к тому, с чем придётся столкнуться будущим разработчикам на работе, и это хорошо для наших студентов. Я в университете учила C++ решала задачи на программирование шахматной доски. В дальнейшем эти знания мне нигде не пригодились, а время и силы потрачены.

Чтобы начатьобучение языку Python, достаточно восстановить базу по информатике из школьной программы: алгоритмы, блок-схемы. Если у вас есть понимание алгоритмов и вы можете построить алгоритм решения квадратного уравнения, этого достаточно.

Как и где учиться

Чтобы быть крутым разработчиком, важно быть терпеливым и усердным. Во время работы нужно будет разбираться в интерфейсах, находить логи, уметь их читать, искать ответы в Google скорее всего, на английском. На один и тот же вопрос Google может ответить десятками почти одинаковых статей отличаться они могут одним предложением, но именно в нём и будет скрыт ответ.

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

Чтобы сохранить мотивацию, можно смотреть видео о профессии: на YouTube есть классные ролики о том, что можно научиться делать, они цепляют.

Программирование на Python это сложно. Не понимать что-то нормально.

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

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

Что-то не понимать нормально. Нужно просто двигаться дальше: писать, учить. Это ужасный момент разочарования, но, если продолжать биться, потом поймёшь, что на самом деле это было очень просто.

Чтобы было легче, нужно много читать: про типы данных,основы программирования на Python, циклы, условия. Перед тем как начать кодить, рисуйте блок-схемы, пишите решения задач русскими буквами. Это первый шаг к пониманию. После этого повторите на синтаксисе языка. Сделали? Значит, вы уже что-то можете.

К типам данных (словари, списки) я советую регулярно возвращаться в течение всего обучения. Получаешь опыт возвращаешься снова: тогда и понимаешь, для чего это тебе было нужно. А ещё про эти самые типы очень любят спрашивать на собеседованиях.

Можно учиться самостоятельно, но это сложно: нет программы, структуры и понимания, как это делать. В интернете бездна информации, ты пытаешься её изучать, систематизировать, но тонешь и не понимаешь, как её применить. Так можно упустить важное и заморочиться на мелочах. Одна моя одногруппница так же училась Python-разработке: решала сугубо теоретические задачи. В результате у неё нет понимания, как применять полученные знания в работе.

И некоторые учебники не предполагают самостоятельногоизучения Python, например Марка Лутца немногие смогут дочитать до конца. Такие книги хороши для закрепления знаний. Как вариант, можно попробовать занятия на Coursera или подобных ресурсах. Есть сайты и даже игры с базовыми задачками по программированию. Но в большинстве своём они далеки от того, что придётся делать на работе.Обучение Pythonна курсах дополнительно экономит время: вам не нужно искать ответы самостоятельно. Вы можете задавать их преподавателю, чтобы лучше разобраться в теме. Но читать учебники нужно. Они дают возможность глубже вникнуть.

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

Лучший учебник для новичков, по моему мнению, Изучаем Python. Программирование игр, визуализация данных, веб-приложения Эрика Мэтиза. Ещё можно послушать онлайн-лекции на YouTube, напримертакие.

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

Как устроиться на работу джуном

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

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

Для работы нужно знать треть от требуемого в вакансии.В списке требований практически любой вакансии джуна куча библиотек, часть из которых на самом деле не понадобится. Если вы знаете хотя бы 3040 % из того, что требуется, смело идите и пробуйте.

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

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

Продолжайте учиться.В первые 3 месяца на новом месте вас может настигнуть стресс: вы будете осваиваться, привыкать, вникать, что делает компания и для чего. А потом стоит выдохнуть: как только поймёте, что справляетесь с базовыми задачами, ищите, как сделать лучше. Это способ быстро дорасти до мидла.

По сути, джуниоры отличаются от мидлов только опытом работы: у первых есть только знания, которые они учатся применять, а мидлы уже понимают, на чём они специализируются и как эффективно решать рабочие задачи. Мидлам нужно хорошо знать библиотеки и понимать, какие алгоритмы они используют и почему. Алгоритмы это база: их спрашивают даже на собеседованиях в Google и Amazon. Без знаний алгоритмов невозможно заставить код работать хорошо и быстро. Если вы пытаетесь прокачаться до мидла, попробуйте прочитать книгу Python Cookbook Дэвида Бизли.

Как проходить собеседования

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

Учитесь на ошибках.Джунам на собеседованиях задают практически одни и те же вопросы. Если вы не смогли ответить на них, запомните их и найдите ответы. На Хабре была яркая история про разработчика, который в Кремниевой долине ходил по собеседованиям на мидла, а потом дома разбирал сложные вопросы. Походив полгода, он устроился сеньором на гораздо более высокую зарплату, чем планировал изначально.

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

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

Список самых частых вопросов

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

  • изменяемые и неизменяемые типы данных это спрашивают практически на любом собеседовании;

  • итератор, генератор, декоратор;

  • разница между листом и генератором об этом обязательно спросят;

  • магические функции;

  • реализация алгоритма сортировки слиянием Python;

  • multithreading vs. multiprocessing.

Вотздесьможно посмотреть подробнее про типовые вопросы.

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

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

Подробнее..

Возможные неопределенности в карьере программиста. Часть 2

10.06.2021 20:10:36 | Автор: admin

Доброго времени суток, Хабровчане!

Спустя аж три года с момента написания первой части статьи Возможные неопределенности в карьере программиста решил, что, возможно, будет интересно а кому то, я надеюсь, даже полезно (в первую очередь начинающим программистам) узнать продолжение истории. Что начал делать Ваня чтобы повысить свои навыки? Как прошел интервью в новую компанию? Обо всем по порядку.

Так больше нельзя, пора... уходить в другую компанию

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

Бывает обидно, когда подходишь к руководителю, сообщаешь ему о своем решении изменить мир к лучшему сменить место работы, а он просто соглашается с твоим решением. "Т.е. как, в смысле? Вы даже не будете умолять меня остаться?!". Так и произошло с Ваней. Интересно, что на его место не взяли и даже не стали никого искать - этот момент очень задел чувства нашего разработчика, но не все так плохо как кажется. Стоит понимать, что если работодатель соглашается с вашим решением об уходе, это не значит, что вы плохой сотрудник или не нужны компании, вероятнее всего есть другие причины. В любом случае, стоит сохранять позитивный настрой, дабы сохранить свои нервы, и не искать виноватых. Если вы уходите из компании, уходите красиво, возможно, вам еще придется вернуться или встретиться с коллегами в будущем, мир, как известно, круглый, а ваша репутация бесценна.

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

Поиск новой работы и заполнение пробелов в знаниях

Хотелось бы сказать, что Ваня начал свои поиски с заполнения резюме, и учетом своих достижений (да-да, было и такое), полученных во время работы в строительной компании, но нельзя так сказать. Ваня начал с того, что постарался объективно оценить свои возможности, локализовать и устранить пробелы в знаниях, и изучить требования к вакансиям. Последний аспект, кстати, оказался очень важным, т.к. занимаясь мониторингом требований, при желании можно не только разобраться с тем, что актуально в данный момент на рынке, но и подтянуть какие-то общие моменты и заполнить пробелы. Например, Ваня позиционирует себя как веб-разработчик C#/PHP - именно эти два языка он использовал в свой работе, но по факту, веб-приложения разрабатывал только на php/laravel. В связи с этим, он решает восполнить свои знания ASP.NET стеке, и без каких-либо промедлений изучает книгу ASP.NET MVC 5 для профессионалов Адама Фримена. Безусловно, знание технологии важны, но так как у нашего героя уже был опыт с MVC фреймворком, в этой книге Ваню очень зацепил архитектурный момент. Это очень подогрело интерес не только к технологии, но сформировало желание погрузиться в изучение нового.

Параллельно c изучением книг и статей, Ваня начал рассылать резюме в различные компании, откликаясь и на вакансии где требовались php и c# разработчики. Первая компания, которая согласилась продолжить диалог, выслала тестовое задание где нужно было разобраться в коде какого-то легаси, и выполнить определенные требования. Максимальная полезность для Вани была в том, что он увидел настоящий код проекта, написанного другими разработчиками, посмотрел как и что устроено, познакомился с DI, начал разбираться с паттернами (кстати, это была одна из задач - написать какие паттерны проектирования используются в проекте), и еще больше погрузился аспекты разработки ПО. Этот опыт был похож на снежный ком - знания потихоньку накапливались, наслаиваясь друг на друга, приходилось многое изучать и пробовать разрабатывать свое. Постепенно складывалась более четкая картинка того, что ждет начинающего разработчика в ИТ компании, какие навыки требуются и почему. На этом этапе я бы отметил два момента: если вы хотите научиться программировать, обязательно читайте чужой код, любой, разбирайте его по частям, изучайте логику проекта, а то, что для вас не понятно - гуглите и запоминайте, второй момент - пиши код, много кода, сами.

В итоге у Ваня было 4 интервью в 4 ИТ компаниях города. Стоит отметить, что 3 из них были на позицию C# разработчика и только 1 на php девелопера. На всех технических собеседованиях, когда его спрашивали про предыдущие проекты, Ваня успешно рассказывал над чем приходилось работать, и отвечал на вопросы, связанные с реализацией каких-то моментов. Это была его фишка, четко и без запинок, как будто бы заучено. Об этих проектах он знал все, так как был единственный разработчик в строительной компании. И все же, Ваня испытывал небольшие трудности на все четырех интервью, где-то ему даже казалось, что фидбэка от компании можно не ждать, но не стоит делать поспешные выводы и плохие мысли лучше сразу гнать в сторону. Не буду томить - статья и так уже получилась довольно большой, как мне кажется, от всех четырех компаний Ваня получил предложения о работе. Это может показаться фантастикой, выдумкой автора статьи, но ,тем не менее, так все и было на самом деле. Я бы хотел выделить два момента: обязательно мониторьте рынок вакансий и подготавливайтесь к каждому интервью - таким образом закрепите знания и будете чувствовать себя увереннее, и второй момент, никогда не расстраивайтесь если получите отказ после собеседования, продолжайте устранять пробелы в знаниях и проходить собеседования на новые позиции, ваша компания обязательно найдется!

Все ясно, но что было дальше?

Как уже было сказано выше, Ваня получил возможность выбора нового места работы среди нескольких. Он выбрал компанию, занимающуюся разработкой веб-приложений на C# (если вкратце), где отработал почти 2.5 года, после чего уже без особых проблем перешел в другую :)

Заключение

Спасибо, что дочитали статью до конца! Если она будет полезна хоть кому-то, значит я потратил свое время не зря :) Сейчас вспомнил, что не упомянул еще пару моментов, которые будут полезны новичкам не только в программировании, но и вообще в ИТ. Изучайте английский (без него ну прям никак) и прокачивайте ваши soft skills, это позволит вам стать более ценным специалистом.

Подробнее..

Кого вы хотите принять на работу?

21.03.2021 12:21:06 | Автор: admin

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

Почему я решил об этом написать?

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

Специалист должен знать базовую теорию (?)

ООП, SOLID и еще целая куча принципов, без которых разработка зайдет в тупик. Если берете на работу преподавателя информатики, обязательно все это спросите.

Но, вы берете разработчика. Должен ли он это знать? Давайте разберемся.

Должен ли он это понимать? Да. Но как проверить? Самый простой способ - спросить. То есть он должен знать. В конце концов, ответить идеально на теорию сможет только что окончивший ВУЗ студент. Но это еще ничего не значит. Или надо попытаться найти способ проверить, как он их понимает? Благо, принципы эти имеют самое прямое практическое применение. Может, стоит предложить ему пару простых задач? Ведь на работе он будет именно решать задачи.

Специалист должен знать как устроен изнутри инструмент, с которым ему предстоит работать (?)

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

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

Так как же понять, что специалист вам подходит?

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

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

Вот один из них:

- Есть дорога, ее ширина А. Есть лягушка. Длина ее прыжка Б. Лягушка сидит на краю дороги. За сколько шагов она окажется на другой стороне дороги?

- А / Б... А нет, А / Б + 1... Хм... а что если А == Б? Или А % Б == 0... - Скажу сразу, я тут немного запаниковал. Задача то не сложная и меня не покидало ощущение, что тут есть подвох. А подвох действительно был!

- Ну да, как то так.

- А в чем подвох?

- Хорошо, что ты не начал решать через цикл.

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

Так же, мне предлагали решить небольшие прикладные задачи проектирования. Чуть позже я вспомнил, что про шаблоны проектирования меня на этом собеседовании не спрашивали. Но при решении задачи мне пришлось составить композицию этих шаблонов. Тем самым я и знание этих самых шаблонов показал и умение ими оперировать. А если бы меня спросили: "Какие шаблоны проектирования вы знаете?". Вероятно, я бы замялся, вспомнил какие-то, ведь это поиск в куче. У меня в голове шаблоны связан с ситуациями, с назначениями, но никак не с "Шаблоны проектирования". Я ведь регулярно применяю их на практике, а не рассказываю про них студентам.

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

А вот не так давно меня спросили: "Назовите типы инкапсуляции в C#".

Я представляю, собирается в переговорке группа разработчиков для решения какой-либо задачи.

- Коллеги, ну и как нам это решить?

- Я думаю, нам поможет инкапсуляция!

- Хм. А какой именно ее тип?

- Наследование!....

Я в очередной раз глупо хихикал, когда это писал, представляя эту сцену на фоне символики Comedy Club. На практике же было бы как-то так: "Смотрите, реализуем интерфейс в абстрактном классе, вот этот функционал у нас будет общий, но в нем будут особенности реализации. Вынесем их в абстрактные методы и оставим для потомков".

А откуда брать все эти задачи? Ну, вы не первый день на рынке. Уверен, ваши легендарные разработчики на своем пути сталкивались с необычными проблемами и решали их с переменным успехом. Опросите их, соберите список задач. Спросите, как они шли к решению, с какими сопутствующими проблемами столкнулись, как решали. Возможно, что-то вовремя не учли и теперь живут с этим. Будет хорошо, если ход мыслей рекрута будет похожим. А может быть, он учтет то, чего не учел ваш солдат.

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

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

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

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

Итоги

Резюмирую все, что написал выше.

  1. Вопросы по базовой теории стоит оставить младшим специалистам. Серьезным ребятам нужен серьезный вызов.

  2. Серьезный вызов - это попытка балансировать между несколькими не полностью правильными решениями с целью выбрать лучшее из зол. Задавайте прикладные задачи.

  3. Хорошо подумайте, для чего вы берете человека. Какие задачи он должен выполнять. Отсюда возьмутся сами задачи.

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

Подробнее..

Перевод Проваленное собеседование, которое дало мне больше, чем три удачных

30.04.2021 14:04:59 | Автор: admin


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

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

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

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

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

Моей задачей на этом собеседовании было спроектировать сервис для сокращения ссылок.
Функциональные требования приводились следующие:

  • Сервис должен генерировать для загруженного адреса короткую версию, в которой за доменным именем следует ключ длиной в семь символов. Это называется короткой ссылкой: например, shorturl.com/9zck6rc.
  • Когда пользователь пытается перейти по короткой ссылке, сервис должен перенаправить его на исходный адрес.

Нефункциональные требования были такими:

  • У системы не должно быть никаких проблем с доступом, иначе перенаправление по ссылкам начнет давать сбои.
  • У двух разных адресов не может быть одинаковых коротких ссылок.
  • Предположительное количество пользователей составляет около тысячи в день.

Для начала я определился с тем, какие конечные точки нам понадобятся, чтобы создавать короткие ссылки и как мы будем извлекать ссылки исходные. Получался простой сервис с базой данных, где будут храниться все id, long_url, short_url, и created_at. По ходу дела у нас с собеседующим состоялось обсуждение нескольких вопросов.

Вопрос первый: SQL или NoSQL


Я начал с того, что выбрал подходящий тип базы данных для сервиса. Я предложил NoSQL совсем вылетело из головы, что, раз объем аудитории у нас небольшой, о масштабировании можно не беспокоиться. Аргументы в пользу NoSQL я приводил довольно убедительные, но для нужд инструмента, который мы проектировали, вполне хватило бы и SQL обосновать, почему выбор должен непременно пасть именно на систему NoSQL, мне не удалось. Я стал приводить примеры сервисов, которые используют NoSQL, типа систем бронирования, и оседлал этот конёк надолго.

Ошибка первая: Я увлекся объяснениями. Да, нужно пояснять для того, кто проводит собеседование, почему вы выбираете именно такой вариант, но слишком долго излагать лишние подробности всё-таки ни к чему. Я несколько минут проговорил о том, что в реальности можно было бы объяснить в нескольких фразах. Очень важно уметь себя остановить, чтобы не продолжать развивать мысль до бесконечности.

Рекомендация: вызывайте собеседника на обратную связь. Диалог не должен превращаться в монолог.

Вопрос второй: генерация короткой ссылки


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

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

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

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

Вопрос третий: репликация базы данных


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

Ошибка третья: мне не хватило духу сказать: Не знаю. Если в чем-то разбираешься плохо, лучше просто это признать. На собеседованиях по проектированию систем у меня такое случалось неоднократно: задают вопрос, ответа не знаю, прекрасно понимаю, что не придумаю ничего толкового, но всё равно упорно продолжаю попытки что-то выдумать.

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

Рекомендация: не бойтесь сказать: Не знаю, если это сбережёт вам время на более важные вещи.

Вопрос четвёртый: кэширование


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

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

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

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

Рекомендация: здесь можно только пожелать всем верить в себя. Если в чем-то разбираетесь значит разбираетесь.

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

HR-автоматизация за один день как экономить 8 часов в неделю на рекрутинге

15.12.2020 18:16:33 | Автор: admin
Привет, Хабр. Меня зовут Шагане Мирзоян, я отвечаю за продуктовую аналитику в СберМаркете. Мы с командой следим за тем, что происходит с нашим пользователем на сайте и в приложении, и ищем в этом процессе точки роста. Сегодня я расскажу, как мы пережили рост сервиса в 15 раз за 2020 год, а рост команды с 6 до 29 человек за 6 месяцев.

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

Почему у нас нет стартового собеседования с рекрутером? Обычно такие нужны при поиске ребят младших позиций и призваны для того, чтобы отобрать самых классных. Мы решаем эту задачу иначе и отбираем самых мотивированных ребят тестовым заданием, которое помогает экономить время HR и ускорять подбор. Так ни нам, ни кандидату не придется ожидать свободного слота в календаре менеджера по персоналу.

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





Раньше процесс подбора новичков был устроен просто. Отклики летели на нашу общую почту команды. На первый взгляд это отличное решение:

  • Все в одном месте.
  • Любой член команды аналитики может просмотреть CV и дать фидбек.
  • Push-уведомления при новых откликах мы всегда в курсе, что происходит.
  • Когда в команду требуется 2-3 новых члена в год, это очень удобно. Но если количество коллег растет по экспоненте (в какой-то момент мы стали получать по 1000 писем в неделю), общая почта сплошной бардак
  • Отклики на разные вакансии перемешиваются (теперь все в одном месте не такой уж и плюс).
  • Google очевидно завидует вашему кратному росту и ругается, когда в аккаунт пытаются зайти с десятка разных устройств. В итоге получение доступа к почте становится квестом.
  • Кто-то может случайно открыть чужое письмо и отклик потерян, а по ту сторону экрана грустит расстроенный кандидат.




Просуммирую: так историю изменений непросто найти, а кандидатов легко потерять. Хочется, конечно, наоборот.

Автоматизация на коленке


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

В Airtable можно создать view по определенным условиям, например, показать только те записи, которые были созданы вчера. Zapier умеет в качестве триггера принимать появление новой записи в отдельном view. Таким образом, мы можем построить цепочку Если произошло событие Х, то нужно сделать действие Y.
Кастомизировать эти истории под себя можно сколько угодно этим мы и занялись. Теперь у нас появилась своя CRM-ка с кандидатами. Соискатели и их тестовые задания лежат в одном месте с привязкой к вакансии и статусу. Отклики приходят не на почту в Google, а в таблицу, как и любят все аналитики :). Бонусом буквально в пару кликов с помощью такого же принципа можно настроить пуши в Slack. Это помогает нам следить за прогрессом и вовремя отвечать соискателям. Бот тэгает только ownerа вакансии и не отвлекает остальных членов команды.

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



Как это выглядит на примере воронки джуна



  1. Общая форма для всех вакансий. Кандидат выбирает, на что хочет откликнуться, пишет короткое сопроводительное письмо, прикрепляет CV.
  2. Ответ после отклика уходит автоматически это красивое сверстанное письмо с приветствием, ссылкой на тестовое и кнопкой отправить работу. Ссылка на задание вставляется динамически и может отличаться для разных вакансий. Кнопка с сабмитом тоже хитрая, об этом ниже.
  3. В Airtable появляется карточка со всеми данными по отклику.
  4. В наш канал в Slack падает уведомление о новом кандидате и тегом owner-а вакансии (я знаю, что вы уже догадались, что тег тоже подтягивается динамически). В один клик мы можем получить об отклике всю доступную информацию.




Фронт и бэк откликов :)

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



Для каждого отклика у нас есть SLA-отбивка. Например, мы обещаем вернуться с фидбеком на тестовое задание в течение трех рабочих дней. Мы создаем ожидания у кандидатов и должны им соответствовать, поэтому в тот же Slack приходят автоматизированные алерты для ownerа вакансии, если тот опаздывает с ответом Оговорюсь, что иногда мы все-таки факапим: теряем кандидатов или отвечаем позже обещанного срока. Здесь всегда есть человеческий фактор, но автоматизация позволила значительно его снизить и ошибаться реже.

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



Для каждой вакансии есть шаблон письма: заскриптованные комментарии по типичным ошибкам и наблюдениям от тестовых заданий. Если нужно, я дописываю в нем что-то прямо в Airtable: например, могу указать джуну на конкретные ошибки или похвалить за удачные решения.



Результат 8 свободных часов в неделю



Это достаточно усредненная цифра. Она зависит от вашего количество откликов, но оценить его просто. Минимум 5 минут с каждого отклика уходит на переключение контекстов и интерфейсов (со вкладки с тестовым кодом в gmail, с отвеченного письма на неотвеченное и так далее). Когда у тебя 100 тестовых заданий, эти минуты превращаются в часы.

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

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



Для этого поста мне даже не пришлось считать воронку. Все можно сделать силами того же Airtable

P.S.
А ещё мы продолжаем расширять команду Data & Growth СберМаркета и ищем новых коллег! Наши вакансии:

Middle Product Analyst
Middle/Senior DS на персонализацию сервиса
Marketplace Efficiency Analyst
Junior Finance Analyst
Middle Finance Analyst
Подробнее..

В Reddit через PayPal и Alibaba без релокации и смс

20.01.2021 20:22:57 | Автор: admin

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

Мы нашли человека, который построил впечатляющую карьеру в IT, принимая нетипичные решения. Он уходил от инженерных задач в управленческие, его карьеру не назвать ни вертикальной, ни горизонтальной. Backend Engineering Manager в Reddit Максим Алексеев поделился опытом работы в PayPal и Alibaba.

За 17 лет в IT Макс побывал тимлидом и техлидом, консультировал компании Кремниевой долины в области распределенных кешей и дата-гридов, отвечал за бэкенд, DWH, ML и руководил стартапом SCORR.

Максим рассказал про особенности трудоустройства в американские tech-гиганты и почему он отказывался от релокейта в США. И конечно, мы расспросили, как он набирает специалистов в свою команду в Reddit. Послушать вебинар и посмотреть на Максима можно в нашем видео. Ниже обзор для тех, кто предпочитает читать.

Определяющее решение настарте. Grid Dynamics

Максим начинал инженером: кодил наJava, Scala, Python, затем Kotlin. В2011 собеседовался сразу вдве компании: вхорошо оплачиваемый системный интегратор ивмосковский офис Grid Dynamics. Предложение Grid Dynamics было вдва раза менее денежное, нозадачи итехнологии намного интереснее. Максим выбрал задачи инепрогадал. Grid Dynamics работали сновыми технологиями, которые позже становились мейнстримом. Было много проектов наоптимизацию распределенных систем уклиентов под еще больший трафик инагрузки, нередко использовались публичные иприватные облака. Позже такой набор задач исопутствующих технологий стали именовать highload. Так выбор впользу меньшего посумме оффера оказался более удачным.

Grid Dynamics лидер вобласти технического консалтинга. Поэтому всилу специфики работы Максиму приходилось ездить вСША. Самая короткая подлительности командировка вСанта-Монику заняла пять дней, асамая длинная полгода вкампусе PayPal вСан-Хосе.

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

Бодишоп: хорошо или плохо?

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

  • появляется возможность переехать вдругую страну;

  • это отличная практика иностранного языка;

  • можно набираться разнопланового технического опыта;

  • есть опытные коллеги укоторых можно многому научиться;

  • вфирме хорошо налажены бизнес-процессы.

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

Поэтому лучше быстро набраться опыта иследующим шагом выбрать продуктовую компанию. Здесь плюсы очевидны:

  • договор заключается напрямую скомпанией, минуя третье лицо;

  • всегда есть идеология продукта;

  • мотивацию сотрудников подогревают существенными бонусами ивознаграждениями.

Многие русские коллеги Максима поGrid Dynamics успешно переехали вСША. Максим тоже получил предложения оработе вКремниевой долине, нотогда отних отказался.

Стоит ли соглашаться на переезд любой ценой?

В2012 Grid Dynamics закрывали офис вМоскве ипредложили два варианта релокации: впитерский или американский офисы. Чуть раньше Максиму поступило заманчивое предложение напрямую отPayPal. Мечта разработчика сбылась? Возможно. Ноонпризадумался ивыбрал другой путь.

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

Кампусы IT-компаний оборудованы навысшем уровне, работать вних комфортно икруто, номалоэтажная жизнь оказалась слишком скучной после мегаполиса. Любимым развлечением там были поездки наприроду, вэтом смысле Америка бесспорно великолепна. Путешествие попарку Йосемити запомнилось Максиму навсю жизнь. ВСША стоит поехать как минимум, чтобы посетить Редвуд иЙеллоустоун. Новсамих апарт-комплексах Долины ему было нечем заняться: нехватало ощущения хоть какой-то городской жизни.

Жить вСан-Франциско былобы интереснее, ноэтот вариант проигрывал сфинансовой точки зрения. Калифорния один изсамых дорогих штатов вСША. Поданным сайтаGobankingrates.com, еежители тратят нажизнь всреднем на35% больше, чем жители других штатов.

ПоданнымNumbeo.com, стоимость жизни вСан-Франциско такая:

  • Ориентировочные ежемесячные расходы семьи изчетырех человек без арендной платы 323 372,77 (4366,36$).

  • Ориентировочные ежемесячные расходы наодного человека без арендной платы 89 077,47 (1202,77$) .

  • Индекс стоимости жизнивСан-Франциско на126,98% выше, чем вМоскве.

  • Аренда вСан-Франциско всреднем на314,63% выше, чем вМоскве.

Витоге отвсех трех предложений Максим отказался впользу нового опыта.

Актуальные технологии иинтересные задачи ему казались важнее финансовой стабильности имеждународной карьеры разработчика.

Изинженеров вдиректора. Плюсы работы встартапах

Впроцессе поиска работы Максиму попался стартап, который впоследствии назвали SCORR. Австартапах есть возможность работать синтересными новаторскими технологиями.

Изначально Максим собеседовался надолжность CTO, нонаодном изэтапов интервью сучредителями ему предложили еще исменить нынешнего CEO. Отсутствие подобного опыта никого несмутило, ис2013 года Максим стал совмещать сразу две должности. Так онполучил первый опыт именно как менеджер. Пришлось освоиться сKPI, представлением своей компании ипродукта, практикой продаж иразвить способность видеть бизнес-составляющую. Этот опыт очень пригодился позднее.

Проект был чертовски интересным истехнической точки зрения. Посути, это был сбор информации изоткрытых источников (соцсети, объявления), очистка этой информации ипостроение объединенных профилей интернет-пользователей. Информация использовалась для просчета рисков ипрогнозов для МОФ, страховых, банков (для выдачи кредитов, антифрода, форензик расследований ит.д.) Максим сам написал краулер для одной изсоцсетей, нобольше выступал вроли менеджера. Воснове стартапа была работа сbig data имашинным обучением.

В2013 году проект презентовали, активная работа велась до2015, апотом онпостепенно стал номинальным директором ипофакту отдыхал, работая12дня внеделю. Ничего нового уже несоздавали. В2017задумался, что пора двигаться дальше.

Изстартапа вкомпанию-гигант. Опыт работы вAlibaba Group

Предложение отAlibaba было случайностью: втовремя они невыкладывали вакансии воткрытый доступ, аперсонал подбирали через рекрутинговое агентство. Оказалось, что Максим контактировал сэтим агентством порабочим вопросам. Вобщем, нетворкинг вдействии. Когда поступило предложение пройти собеседование вАлибабу, онсогласился.

Насобеседованиях нужно было написать код наJava, решить задачу наsystem design, пройти техническое интервью сколлегами изКитая потелефону иответить наихвопросы. Несмотря нахороший уровень английского, было непросто.

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

Вначале работы там Максим много кодил сам наJava иKotlin. Набирал команду, которая создала верхнюю часть бэкенда российского Tmall наAliExpress ифронтенд поиска наJava для московской команды. Работа накитайского гиганта предполагала командировки вштаб-квартире вХанчжоу. Атмосфера похожа наКремниевую долину, нонауровне ощущений было нетак комфортно, как вСША. Максиму нехватило американской мультикультурности иевропейской еды :)

Через год-полтора появились другие команды, иуМаксима стало больше менеджерской работы. Программирование ушло навторой план. Появлялись задачи типа написать ad-hoc запрос наSQL, чтобы проверить гипотезу наработоспособность. Рабочий процесс налажен, стабильная карьера навзлете время наслаждаться успехом. Так решилибы многие, нонеМаксим. Внезапно занесколько дней онподнял планку нановый уровень иизменил всё.

Стать первым EMReddit, нанятым неизШтатов

Здесь тоже все решил нетворкинг ирекомендации. Летом 2020 года Reddit ещё неразмещал вакансий, нобывший коллега Максима изGrid Dynamics порекомендовал имего кандидатуру. Интервью состоялось пятого июня, ипредложение оказалось настолько интересным, что через 10дней Максим Алексеев стал первым EMReddit, нанятым неизШтатов.

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

Как попасть вReddit

Что учесть врезюме

Обязательно, обязательно создайте профиль наLinkedIn. ВСША это основной инструмент HR. Они могут нечитать резюме, нопрофиль посмотрят точно. Такие компании, как Facebook, Google иReddit, восновном ищут именно черезLinkedInили повнутренней реферальной программе.

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

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

Американские компании смотрят ненагеографию, анаконкретные скиллы иопыт. Недостаточно просто указать языки, которыми владеете, описывайте конкретные задачи, которые вырешали.

Опыт разработки вOpen Source проектах будет большим плюсом. Это говорит отом, что человек любит свое дело, иему интересно программировать всвободное отработы время. Если выразвиваете личный бренд, это тоже привлечет дополнительный интерес.

<рекламная пауза>

Вg-mateмного вакансий с ремоутом: можно работать из России или другой страны мира назарубежную компанию. Например, есть вакансия Software Engineer (Backend) вReddit.

</рекламная пауза>

Нужныли сертификаты

Особой роли наличие сертификатов неиграет. Насобеседовании будут смотреть нареальные знания изадавать вопросы поним. Но, возможно, дипломы отпризнанных центров сертификации (pythoninstitute.org,education.oracle.com) будут небольшим плюсом. Сертификатыcoursera, edx.org, udacity.com врезюме наLinkedInтоже увеличат шансы. Самое важное уних должна быть актуальная дата.

Как работать: удаленка или офис

Сейчас Reddit активно набирает бэкенд-, фронтенд- имобильных разработчиков. В2021 планируется развитие внутреннегоQA, ноэти вакансии появятся нераньше января. Обычно Reddit предлагает два варианта работы. Первый удаленно, как правило поконтракту. Или full-time employee (FTE) полный рабочий день вофисе или удаленно напостоянной основе вШтатах, Канаде, Великобритании, Ирландии. Можно сначала пойти наконтракт, апотом решить, хотители выпереезжать водну изпредложенных стран.

Вэтом году коронавирус внес поправки вэту схему: Reddit объявил переход навечную удаленку, втом числе идля FTE. Новшество поначалу вышло боком для тех, кто решил перебраться изСан-Франциско вменее затратный город или другую страну. Внекоторых компаниях Долины переехавшим сотрудникам понизили зарплату, пересчитав под зарплатные расценки нового города. Тоестьте, кто получал хорошую зарплату померкам Сан-Франциско, после переезда стали получать сопоставимо хорошую зарплату, например, для Остина.

Оценив ситуацию, Reddit ввел свою политику, отказавшись отпринципа per city. Теперь зарплатную сетку самого дорогого города встране (для Америки это Сан-Франциско иНью-Йорк) Reddit расширил навсю территорию США. Сотрудник будет получать доход как вСан-Франциско, работая изМайами или сфермы вТехасе. Аналогично это работает ивдругих странах присутствия Reddit.

Этапы собеседования

ВReddit проходит четыре отборочных этапа:

  1. Скрининг резюме. Все резюме просеиваются поключевым требованиям: наличие требуемых квалификации, опыта, знания технологий ит.д. Дальше ихделятнадве категории: точно нет иможетда. Кандидаты, которые пишут сопроводительное письмо отом, почему хотят работать именно вReddit, привлекают больше внимания наэтом этапе.

  2. Backend интервью. Здесь проверят базовые знания (алгоритмы, concurrency, базы данных, web, software design). Соотношение вашего опыта ирезультатов. Причем вопросы будут зависеть отдолжности, накоторую претендует кандидат. Кпримеру, для джуниоров имиддлов будет важно, где учился истажировался, пригодятся результаты насайтах, где решают задачи онлайн:HackerRank,Codility. Авот для синьоров будет важно, вкаких проектах принимал участие ивкакой роли.

  3. System design интервью. Наэтом этапе нужно спроектировать систему. Здесь важно уточнять требования, обоснованно объяснять, почему спроектировал именно так, ипоразмышлять натему, что делать дальше: как деплоить, что икак мониторить, ит.д.

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

  5. * Интервью сменеджером проекта итимлидом. Вфинале собеседований проверяются софт скиллы исмотрят, подходитли человек вкоманду. Здесьже учитывается, куда можно поставить кандидата наусловной шкале higher potential lower potential. Насколько активно человек стремится кличному профессиональному росту. Бывали случаи, когда кандидатам отказывали наэтом этапе, поэтому важно подготовиться ксобеседованию пософт скиллам.

Особенности устройства наработу вСША

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

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

Наудаленке небойтесь, что придется полностью перестраиваться наамериканское время. Большинство разработчиков сами строят рабочий график так, как имудобно. Обычно запланированы только встречи всей команды. Аони, как правило, проходят с1819до22мск.

Рекомендации Максима: что почитать иизучить

  1. Grady Booch.Object-Oriented Analysis and Design with Applications.

  2. Андрей Робачевский.Операционная система UNIX

  3. Сайты поSystem Design:infoq.com,highscalability.com,blog.acolyer.org

  4. Технологии, которые пригодятся влюбойIT компании: Python, SQL, технологии Big Data, Data Lake, Spark Streaming, Apache Flink.

Крутые работодатели интересные задачи. Зовите /human в нашем боте: @g_jobbot.

Подробнее..

Часть 2. Циан удаленка. Как мы нанимаем? Над чем еще работаем?

05.02.2021 16:09:35 | Автор: admin

Привет!

Меня зовут Слава, я технический руководитель направления Застройщики в Циан. Внутри направления работают 25 человек. Из них 18 разработчики и тестировщики. С середины 2019 года мы участвовали в экспериментах по удаленной работе в Циан.

18 декабря я опубликовал статью о переходе на удаленку в Циан. Это ее продолжение.

Наем на удаленке

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

Наем программистов состоит из следующих этапов:

Диалог с HR

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

После этого рассказываем о продукте, команде и задачах. Если кандидату интересно, договариваемся о втором этапе техническом собеседовании.

Техническое собеседование

Собеседование проводится нашими сеньорами. На нем говорим только о техническом опыте.

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

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

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

Финальное собеседование

Для всех, кто успешно прошел техническое собеседование и хочет продолжить общение с Циан, назначается последнее собеседование.

Основная цель - это определить риски по кандидату и сможет ли он быть результативным и успешным работая в конкретной команде, какой возможный карьерный путь в Циане. На нем присутствуют лиды команд, которым интересен кандидат, и HR бизнес-партнеры направлений.

Соответствие ценностям компании очень важная характеристика кандидата. При соответствии ценностям новому человеку будет проще влиться в команду и добиться успеха в будущем. и кандидату и нам будет легко и приятно работать вместе.

Наши ценности

  • Давай результат. Мы принимаем все решения внутри компании для достижения результата. Любой, даже хорошо отстроенный процесс будет изменен, если он не ведет к результату. Результат чаще всего это продукт, который поменял метрику на значение Х и был запущен к сроку Y. За достижение результата любой человек в Циан готов взять на себя ответственность.

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

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

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

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

Раньше финальные собеседования всегда проходили очно. Кандидатов из других городов мы привозили в Москву или Санкт-Петербург в зависимости от места работы команды. Даже удаленные кандидаты приезжали на финалы. Сейчас все происходит полностью удаленно. Больших трудностей при переходе на удаленное собеседование мы не испытали, так как до этого у нас уже был опыт технических собеседований.

Сбор рекомендаций

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

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

До удаленки сбор рекомендаций был необязательным при найме в разработку. Мы запрашивали их редко: только для самых неоднозначных финалов. После удаленки этот этап стал обязательным для всех позиций. Таким образом мы хотим снизить риски возникающие из-за отсутствия личного общения. В случае если кандидат отказывается давать какие-либо контакты, мы завершаем общение.

Оффер, договор и оборудование

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

Адаптация и испытательный срок

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

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

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

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

Что сработало хорошо?

Деплоймент и технические аспекты отработали хорошо. Эксперименты с удаленкой до пандемии позволили решить большую часть проблем с VPN и окружением до начала массового перехода. (Часть 1)

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

Для посещения офиса появилась система бронирования мест. Всегда можно посмотреть, кто будет в офисе в один день с тобой. При посещении офиса получаешь брендированную маску. (Часть 1)

Над чем работаем?

  • Сильно пострадали тимбилдинги. До сих пор у нас нет устойчивого решения для них. Раньше не реже раза в квартал мы командой совместно развлекались: лазертаг, картинг, уличные квесты и многое другое. Также были большие тимбилдинги на уровне компании и вечеринки в офисе. Сейчас всего этого нет. Мы внутри попробовали проводить онлайн-встречи, онлайн-тематические встречи, но пока это выглядит скудно.

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

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

  • Причастность к компании. В формате удаленной работы мало что меняется при работе в разных компаниях. Уходит единое пространство общения. У нас есть запас причастности для тех, кто работал в офисе, эти сотрудники знают, какие интересные люди работают в компании. Как это перенести в удаленку пока непонятно. Работаем над этим.

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

Итоги

Культура экспериментов очень помогла при переходе на удаленку. Много технических проблем мы устранили еще до введения коронавирусных ограничений.

Компания хорошо адаптировалась. Все основные процессы для разработки, найма и планирования перенесли в онлайн. Разработчик сейчас может работать из любой точки мира. В нашей команде Застройщики участники распределились по нескольким городам: Москва, Санкт-Петербург, Краснодар, Одесса, Челябинск, Омск, Сочи, Волгоград. Это часовые пояса от GMT+3 до GMT+6.

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

Есть проблемы, над которыми мы работаем. Может быть, у вас есть опыт их решения: поделитесь в комментариях своим опытом, пожалуйста.

Ссылка на первую часть

Подробнее..

Перевод Как отвечать на собеседовании, чтобы побудить нанять вас

28.04.2021 20:06:12 | Автор: admin

На первый взгляд может показаться, что эта статья очередная из ряда "Выворачивайся наизнанку, чтобы тебя взяли!". Но это не так. Её скрытый, истинный смысл в том, чтобы напомнить, что любая работа в сущности искусство, о том, что очень важно любить свои инструменты и свою работу. Быть человеком не ремесла, но именно тончайшего искусства. И даже если вы вообще не собираетесь идти на собеседование, вы можете прочитать статью просто потому, что она может вдохновить вас.


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

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

Боязнь прямого общения с незнакомыми людьми не единственная их особенность. У них начисто отсутствует практическая смётка. Когда программисты выходят на собеседование по Zoom с выключенными камерами и отключённым микрофоном, мне остаётся только развести руками. Через десять минут после начала собеседования они внезапно вспоминают, что у них выключен звук и начинают его настраивать. А после того как прошло уже достаточно времени и со звуком вроде бы разобрались, передо мной на экране возникает какая-то тёмная фигура, главное желание которой не вылезать из своей норы.

За последние две недели таких недособеседований было более чем достаточно. В конце каждого из них я украдкой поглядывал на часы и надеялся, что, на худой конец, оборвалась связь. Некоторые кандидаты понятия не имели, что у них написано в резюме, другие, когда я их просил рассказать о себе, не могли связать двух слов. Я понимаю, что собеседования могут проходить довольно нервно, но всему же есть предел. Так, один программист, обращаясь ко мне, назвал своё имя...

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

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

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

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

Кстати, за час до собеседования я просмотрел резюме соискателя. В резюме всё было прекрасно, не подкопаешься, но в ходе собеседования мне хотелось поговорить с живым человеком. Меня бы совсем не устроило, если бы он начал просто повторять то, что написано в резюме.

Зарядившись чашкой свежего кофе, я сел за стол и нажал в Zoom кнопку "Присоединиться к разговору". Но, не успел я задать первый вопрос, соискатель меня приятно удивил. Он поблагодарил меня за возможность пройти собеседование и уделённое мною время такую обходительность нечасто встретишь. Используя открытый язык тела, он заглянул в камеру и улыбнулся!

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

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

Как же это было по-человечески, как же прекрасно! Он влюбил меня в себя с первого взгляда.

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

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

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

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

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

Мой соискатель, как настоящий Пикассо, накладывал и накладывал кистью всё новые мазки на эту картину. Это была не просто картина, а автопортрет художника с любимой клавиатурой подмышкой за рабочим столом с монитором, на который во время загрузки системы выводится ASCII-графика. Как же он гордился тем, что он программист! Он демонстрировал мне кинофильм, режиссёром которого был он сам, а я стоял за кулисами и смотрел.

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

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

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

Как вы обычно развлекаетесь?

Никак!

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

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

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

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

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

Для вас как для соискателя такие вопросы дают возможность раскрыться, рассказать о себе не только как о любителе нулей и единиц. Отвечая именно на такой вопрос, вы сможете рассказать, как именно ваше участие может усилить команду. Именно от вас зависит, в какую сторону склонится чаша весов интервьюера. Если вы всё делаете правильно, интервьюер начнёт непроизвольно кивать и это значит, он ваш!

Как вы изучаете новые технологии?

Высококлассные специалисты знают, что учиться никогда не поздно.

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

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

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

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

Если вы только начинаете учиться и самосовершенствоваться, продемонстрируйте на собеседовании свою страсть, проявите себя человеком. Отбросьте все условности и честно расскажите о себе. Спросите себя, если бы это была ваша собственная компания, кого бы вы хотели нанять в первую очередь?

Нарисуйте схему последней архитектуры, над которой вы работали

В основном люди в резюме пишут о себе правду, но любые приукрашивания могут стоить вам как времени, так и денег.

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

Если ответ соискателя звучит примерно так: "Я делаю то, что мне говорят", я начинаю искать благовидный предлог, чтобы свернуть разговор.

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

Главный совет, который я могу дать программисту, пришедшему на собеседование, будьте человеком. Говорите как человек. Превратите ваше собеседование во встречу умов, а не в тест, который надо пройти. И тогда вы придётесь по душе большинству специалистов по подбору персонала. Если они остановят свой выбор на вас, они не только заполучат в команду высококлассного специалиста, но и смогут прекратить, наконец, поиски и вернуться к повседневной работе.

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

Вот вам одна простая хитрость интервьюеры должны получать именно те ответы, которые хочет услышать. Они могут задавать вопросы о кодировке, но, отвечая на них, помните: в действительности интервьюеры хотят услышать от вас ответ на вопрос, почему компании стоит вас нанять. Задавайте вопросы сами, и тогда вы поймёте, как связать ваш опыт с их требованиями.

Дело не в вас, а в них. Если вы сможете убедить их, что, нанимая вас, они приобретают ценного сотрудника, для них уже будет не так важно, что иногда ваше ПО работает не совсем так, как надо.

Не со всеми тезисами автора можно согласиться, но в чем автор точно прав так это в том, что учиться никогда не поздно. Даже более учиться необходимо на протяжении всего карьерного пути IT-специалиста. Если хочется оставаться востребованным, если хочется создавать новое и получать максимум возможностей. И чтобы обучение не доставляло боль нужно сделать его максимально приятным, как раз этим и занимаемся мы, дополняя наши программы поддержкой опытных менторов, внутренними хакатонами и другими вещами, которые делают обучение интересным. "Поверните ключ", выбрав программу по душе и полетели! :-)

У нас много программ для специалистов со стажем и совсем новичков:

Другие профессии и курсы
Подробнее..

Лайфхаки как получить больше обратной связи после собеседования

11.03.2021 22:20:44 | Автор: admin

Когда человек проходит собеседование или выполняет тестовое задание, компания даёт ему обратную связь: вы красавчик, вот оффер / извините, вы нам не подходите. В случае отказа обычно примерно так и пишут: извините, вы не подошли. А вот что именно было плохо и какие навыки нужно прокачать непонятно!

Я хочу дать вам пару лайфхаков, как можно получить чуть больше обратной связи:

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


Лайфхак 1. Просто попросите!

Да-да, всё так просто! Попросите более подробный фидбек. За спрос не бьют!

Если вы сидите на собеседовании и решаете тестовое здесь и сейчас, то после окончания задачи спросите:

А что я еще пропустил? О чем не подумал? Насколько вообще все хорошо или плохо? Что можно почитать / погуглить?

Если на собеседовании растерялись и не спросили фидбек, попросите его позже. Напишите письмо такого плана:

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

Если вы сделали тестовое задание и вам пришел сухой отказ, попросите чуть больше обратной связи:

Добрый день! Расскажите, пожалуйста, что именно не понравилось в моем решении? Что я сделал не так? Может быть, вы можете посоветовать мне, какие навыки прокачать и какие статьи прочитать? Я ещё только учусь, ваш отзыв мне очень поможет! (чем душевнее запрос, тем больше шансов)

Важный нюанс!

Просьба не гарантирует обратную связь. Она повышает шансы получить детали, и только.

Вашу просьбу могут проигнорировать. Или ответить извините, не дадим. И это тоже нормально. Но за спрос не бьют, так что попробовать стоит!


Лайфхак 2. После фидбека исправьте тестовое

Допустим, вы сделали тестовое и получили отказ. Использовали лайфхак 1 и попросили рассказать подробнее, что не учли. Работодатель ответил:

Вы додумали требования, сразу проверили негатив, не тестировали границы

Пройдитесь по каждому пункту замечаний:

Так, где в моем решении я додумал требования? (читаем каждый пункт) Ну тут строго по ТЗ сделал. Так, а тут предположил, что речь о России, надо было бы уточнить. А тут

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

Внесите исправления в своё решение. А потом отправьте работодателю обновленный вариант + сопроводительное письмо, написанное от души. О том, что вам интересна именно эта компания и вы хотите попробовать ещё раз.

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

Так вы можете получить приглашение на собеседование. Или второй фидбек, который добавит ещё немного знаний и опыта в вашу копилку. И поможет не совершить тех же ошибок в дальнейшем!

Но тут важно уметь вовремя остановиться. Дали фидбек, переделали и снова не то? Ну сорри, вы уже в пролете. Не путайте человека из компании с личным тренером, который будет вас сопровождать по граблям, пока не получится круто!. Хотите пятый, шестой, десятый фидбек? Идите на курсы по тест-дизайну.

Важный нюанс!

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

Особенно если вам дали именно детальный фидбек, разобрав все ошибки. В чём тогда состоит ваша переделка? Исправили по замечаниям? Здорово, но не особо впечатляет ))

См также:

Лайфхак для HR: как дать более подробный фидбек кандидату

PS больше полезных статей ищитев моем блоге по метке полезное. А полезные видео намоем youtube-канале

Подробнее..

4 месяца борьбы за место DS джуна (перекатиться в 37 лет)

03.01.2021 20:22:24 | Автор: admin

Делюсь собственным опытом, т.к., наверняка, это будет интересно таким же как я, но может и не только. Заранее предупрежу, многие термины и сокращения будут понятны только тем, кто имеет базовые знания и какой-то опыт в Data Science и Машинном обучении.

Итак, в наличии на август 2020:

  • 8-летний бэкграунд в интернет-торговле и таргетированной рекламе

  • 4 курса известной в ds-тусовке Machine Learning специализации Яндекса на курсере

  • пара курсов по нейронным сетям на "стэпике"

  • слегкавзъерошенный в памяти вышмат

  • пара сертификатов по питону

Вот с таким багажом начал подбирать подходящие вакансии и готовиться отбиваться от предложений.

1. Поизучал резюме коллег по поискам, закинул пару тем и само резюме в ветку карьеры в slack Open Data Science (ODS) - получил обратную связь и вердикт, что такой джун никому не нужен. Поправил резюме, стало хотя бы визуально приятно. Но явное отсутствие практики бьет прямо в сердце.. Откликнулся на несколько стажерских вакансий. Тишина, один отказ.

Тем не менее, легкий самопиар не проходит даром. Где-то упомянул, что проанализировал частоты упоминания необходимых технологий в текстах вакансий из ветки jobs в том же слаке ODS. Местный рекрутер просит скинуть резюме. Есть nlp вакансия в Гомеле. А там как раз повсеместные протесты и винтилово, видимо нормальные кандидаты ехать не хотят я бы поехал, "но у меня нет знаний в nlp, даже вид сделать не могу". Мимо.Получил рекомендации по содержанию резюме.

2. То было время датафеста ODS и стажерского чемпионата от Мегафона на каггле. Это мой шанс

Абстрактный, как мне показалось, рукотворный набор данных, 3 несбалансированных класса и метрика f1-макро. Идея: отбор фич по корреляциям с учетом множественной проверки гипотез, рандом форест и максимум внимания пропускам. На каждой фиче с пропусками своя регрессия, которая эти пропуски заполняет. Кажется я в топ-10

3. Заглянув в телеграм чат DS в своем городе, обнаружил намечающуюся через неделю тусовку. И, о чудо, один всем известный в ODS человек как раз едет к нам и просит оказать ему услуги гида по городу. Ну т.е. просил 2 дня назад но мы ж все интроверты тут) пишу - я готов, если никого не нашел. Конечно, не нашел.

Через неделю забираю его от гостиницы, полдня катаемся по городу, общаемся, а вечером - в кальян бар, принадлежащий, кстати, на правах хобби ds-тимлиду местного банка. Все, естественно, пьют и в какой то момент начинают обсуждать судьбы джунов в моем конкретно взятом лице. Таня печалится, что джуны сбегают после первой же запиленной модели, хотя компания комфортная и вполне известная в узких кругах. "Я не сбегу - честно)".

4. Обьявлены результаты в Мегафоне. 14е место из около 100. Обидно. К тому же еще и днем сдачи ошибся. Думал что день еще есть. Пара часов экспериментов - усреднил 10 сидов своего же "леса" и обошел на привате победителя с каким то диким стекингом. Ну хотя бы так. Выложил итоговый ноутбук с указанием скора. Добавил в резюме и 14е место и наличие решения топ1.

5. Внезапно приходит приглашение на собес в Мегафон. Готовлюсь. Мой первый собес по специальности. За день перебираю все изученное ранее. В голове конечно же каша. Беседа на 1 час. Свяжемся с вами. Всю неделю гоняю в голове свои ответы. Статистика, p-value, гипотезы - вроде все ок. ROC AUC "а что если она меньше 0.5?" - как же я затупил! Позорище про регрессию пропусков почему то не рассказал ладно. Приходит ответ: в 2х словах, иди еще поучись.

6. Пошел поучиться. Вписался в Deep Learning School МФТИ. Вдруг пишет Таня: "пришли резюме и немного о себе в свободной форме. Только учти, у нас решения долго принимают, к тому же в явном виде вакансий нет, нужно под тебя найти задачу. А кстати, не хочешь с нами в хакатоне поучаствовать?"

Конечно, хочу!

Начинается неделя подготовки к региональному этапу "Цифрового прорыва". Выбираем наиболее интересную задачу из имеющихся. Гео-ML. Таня вспоминает, что похожие задачи решались в соревновании на площадке "бустерс". Ушел искать. Отлично, есть видео с разбора топ-3 решений по поиску мест для банкоматов. Все законспектировал. Разобрался с библиотекой парсинга beautiful soup ис пакетным геокодированием, нашел бесплатный сервис для разработчтков, api, примеры. Качество чуть похуже Яндекса, зато бесплатно, быстро и много (100тыс точек за пару минут - изи).

7. Хакатон. 48 часов решаем задачу для Почты России. Спим по 3 часа. Определить наилучшие места для размещения постаматов в Хабаровске, лучшие места для отделений почты, что еще можно продавать в отделениях. На выбор. Есть база всех строений города с координатами, с приписанным населением и типами организаций/обьектов в этом строении (магазины, банки, тюрьмы, библиотеки и тп). Критериев успешного решения нет. Каких либо финансовых данных для трейна нет. Придумайте сами Прикольно.

Делаем ставку на максимально простое, но работающее и интерпретируемое решение. Интерактивная карта. Рекомендации по местам. Визуализация, какие соседние обьекты влияют на рейтинг каждого места. Все работает. На мне - обработка данных и банальная KNN модель. Спотыкаюсь на каждом шагу... работа с json форматами, парсинг, генерация фич с KNN - ощущаю себя невероятно тупым. Cтранно, но что-то в итоге получилось.

Смотрим презентации. Единственные, у кого все работает - мы. У соперников работают лишь презентации, как "космические корабли будут бороздить Большой театр". 5 место из 7 и приглашение во всероссийский финал. Очень странно, ну да ладно.

8. Улеглись страсти по хакатону, а я сел допиливать решение для Почты. Просто чтоб было и чтобы не чувствовать себя тупым, если снова встречусь с чем-то похожим. Разобрался со всем, где споткнулся. Json, knn, генерация фич, регулярки, github, catboost. Через неделю готова нормальная модель, прогнозирующая вероятности успешного размещения постаматов исходя из размещений постоматов конкурентов и всех прочих данных в наличии. Красивая карта с плавно перетекающими цветовыми оттенками вероятностей. Не стыдно показать. Заливаю на github. Добавляю в резюме.

9. Скидываю полюбоваться команде и на след. день получаю приглашение на собес в Танину компанию. Общаемся: я, Таня, ее босс и hr. "Обьясни как работают сверточные нейросети обычному человеку". Объясняю на примере красной кофточки hr. Hr смущённо улыбается. Остается впечатлить босса. Но его что-то смущает. Забавно, но вакансия опять в nlp. Морально я уже готов вливаться, чуть ли не на любых условиях, но виду не показываю. Ответим через неделю. Пишу Тане: "все плохо?". "Нет, наоборот. Но все зависит от решения босса."

Через неделю босс решил, что человек на данную позицию в принципе не требуется.

10. Новый виток. Учусь в DLS МФТИ, прошел курс по основам linux, поставил себе kubuntu и напрочь забыл про винду, посмотрел о чем там вобще git. Разослал свежее резюме по всем джуновским вакансиям из ветки jobs за последний месяц, включая data аналитиков.

Собес в известном банке, построение риск моделей. В письме любезно указывают имена интервьюеров. Нахожу своего возможного начальника на ютубе с выступлением на 3хчасовой конфе о валидации риск моделей в банках. Узнаю, что "валидация" в банке имеет совсем другой смысл, и что в качестве метрики все используют Джинни, причем исключительно на регрессионнных моделях, потому что в случае отказа кому-либо надо уметь пояснить центробанку причины этого отказа. И модель худо-бедно должна их давать.

Собес. Аж 5 начальников. Самая главная начальница спрашивает исключительно о прошлом опыте в бизнесе. Изредка прилетают вопросы, типа "какие метрики качества ты знаешь?". В конце самая главная начальница заключает, что скорее всего мне у них будет скучно, но они подумают. Если через неделю ответа не будет, то не будет никогда. "Вы уж извините." Прикольно)

11. Видимо мое резюме доросло до какого-то стартового предела и начался движ. Откликаюсь на аналитика и на ds. Везде свое резюме и сопроводительное письмо. Закинул резюме на hh. Мне начали писать HRы. Сами.

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

Собес и тестовое из известной IT компании на продуктового аналитика. Дана гиговая SQL база. Нужен отчет и прогноз продаж продукта на год. 3 дня на освоение sql. Максимум статистики. Куча графиков. Регрессия на восстановленные признаки. Вышло хорошо, говорят впечатлил.

- "А откуда вы знаете такие техники?"

- "А как думаете, нужны такие статистические расчеты в реальном бизнесе?"

- "А вы готовы работать в режиме многозадачности, когда времени ни на что не хватает? А как?"

Пара дней ожидания. "Вам у нас будет скучно". Дежавю. Скучно! Ну ок

Тестовое на data scientist в местную сеть магазинов косметики и парфюмерии. Несмотря на неожиданное место, задачи вполне боевые и интересные. Тестовое - аналогичноe задаче M5 на kaggle от Wallmart. Разбираю, осознаю. Много предобратотки данных. Параллельно идет предыдущее тестовое на прод. аналитика. Успеваю сделать приличный препроцессинг и eda, но не хватает времени на нормальную модель. Делаю минимум, чтоб работало, описываю как космические корабли будут бороздить местный оперный театр, если применить хитрую метрику из М5 и доработать модель. Отказ. Есть более подходящий кандидат.

Еще пара приглашений совсем мимо специальности. Снова в Мегафон, только уже аналитик в экселе. И даже местный Водоканал. А я еще шутил, что пойду трубоукладчиком, если с data science не выйдет.

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

Считаю, главное - идти вперед и не торопиться. Все будет.

Продолжение следует

Подробнее..

Из таксиста в дата саентисты (перекатиться в 37 лет). Часть 2

12.05.2021 14:11:23 | Автор: admin

Часть 1. "4 месяца борьбы за место DS джуна" - тут: http://personeltest.ru/aways/habr.com/ru/post/536014/

ТАКСИ

- "А у вас тоже свой бизнес, а такси так, для души?" - пошутил пассажир на заднем сидении.

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

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

- "Нет, к счастью, никакого бизнеса у меня нет."

На самом деле, историй из прошлого про бизнес у меня более, чем достаточно. Но это закрытая страница. Мог бы завести разговор, что не так давно решил рискнуть и начал учиться Data Science. Но не стал. За время поездки я вряд ли объясню обычному человеку, что значат эти два слова. Да, честно говоря, тогда и сам еще не до конца понимал.

Желание это было еще не до конца оформлено и существовало только в виде тетрадки (которую я завел несколько лет назад, понятия не имея ни про какой "машин лёрнинг") с размытыми идеями о том, как бы я разрабатывал свой искусственный интеллект, если бы делал его с нуля.

К этому времени уже 4 месяца я сидел за рулем одновременно в Яндекс.такси и Убере, катаясь по 12-14 часов в сутки 5-6 дней в неделю.

- "Такси, как наркотик. Я вот 12 лет назад пришел подработать, и до сих пор здесь", - сказал как-то управляющий моего первого таксопарка. Очень обнадеживающе.

Прогрессивная шкала. Ежедневная погоня за максимальной ставкой. Абсолютно бесполезная техподдержка. Пьяные, надменные, иногда вончие пассажиры. Бесконечные пробки. Говорили, что кто-то умудрялся даже по 50-60т.р. в месяц зарабатывать. Но это - один перерыв на 15 минут за 12 часов, педаль в пол, постоянные нарушения. И дежурная чекушка для снятия стресса, как только сдал ключи сменщику.

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

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

Было, конечно, в этой работе и что-то хорошее. Иногда попадались интересные люди: вертолетчик-ликвидатор пожара на ЧАЭС, директор областной школы для детей с задержкой в развитии с амбициями регионального депутата, участник команды Уральские пельмени, техник-водитель в арктической экспедиции.

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

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

Для начала я пересел на свою машину. На парковой или арендной первые 6-8 часов ты, по сути, отбиваешь аренду, потом уже работаешь на себя. На своей можно хоть что-то заработать даже за 4 часа. Время важнее. Число смен сократил до 3-4х в неделю, чтоб оставался необходимый минимум денег на жизнь. Если ответственно относиться к бюджету и отложить на неопределенный срок все, что не горит, вполне можно прожить и на 20т.р. в месяц. Если есть ради чего (должен отметить, что без поддержки близких было бы куда тяжелее). Остальное время - учеба.

Тут наверно многие скажут:

- "Ага, ага, как же. Что за развод? Какой-то тупой таксист затащил вышмат и залез в технологичную сферу, рассказывай..."

Ок, я не платные курсы, поэтому не буду убеждать, что так может каждый. Вероятно, не каждый. Тут уж надо себя адекватно оценивать. Тем более, если сейчас ты - таксист :)

Вообще, я учился в одной из лучших физ-мат школ Екатеринбурга, потом поступил на мат-мех. На 3м курсе пошёл на вторую вышку. Еще через год вместе с братом открыл компанию, став партнером СКБ Контура. И вобщем-то неплохо развернулся, продавая и обслуживая контуровский софт. Даже немного поруководил партнерской сетью Контура в Москве. Так что IT для меня - это не дальний космос. Да и софт скилы какие-никакие есть.

Но в жизни всякое бывает. Случилась долгая черная полоса (хотя это совсем другая история). А мат-мех был 15 лет назад, опыта в разработке - ноль, и мне уже стукнуло 37. Успех мероприятия был совсем не очевиден.

С марта 2020 началась самоизоляциия, и из такси я ушел в учебу на 100%, самоизолировавшись в саду, где регулярно поливал морковку, редис и даже вырастил полную теплицу огурцов, чтобы было чем отвлечься в перерывах.

- "Куда уходишь то?" - поинтересовался управляющий моего последнего таксопарка.

- "Учиться делать беспилотное такси", - подколол я.

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

На том и попрощались.

Когда на меня нападает прокрастинация, я вспоминаю это "прекрасное" время и понимаю, что не хочу больше в него возвращаться НИКОГДА. И сразу хочется учиться и работать.

УЧЕБА

В первой части меня спрашивали, где и как конкретно я учился. Отвечаю.

Платил по 5т.р. в месяц только за специализацию на coursera.org, да и то оказалось, что можно было написать письмо на фин. помощь и учиться бесплатно. Говорят, никому не отказывали, по крайней мере раньше.

1. STEPIK

Программирование на Python: https://stepik.org/course/67

Введение в Linux: https://stepik.org/course/73

Нейронные сети: https://stepik.org/course/401

Нейронные сети и компьютерное зрение: https://stepik.org/course/50352

Практикум по математике и Python: https://stepik.org/course/3356

Линейная алгебра: https://stepik.org/course/2461

Python: основы и применение: https://stepik.org/course/512

Теория вероятностей: https://stepik.org/course/3089

Что-то пройдено полностью, что-то в достаточном для понимания объеме.

2. COURSERA

Легендарная специализация "Машинное обучение и анализ данных": https://www.coursera.org/specializations/machine-learning-data-analysis

Первые 4 курса - must have любому, кто хочет вкатиться в тему. 5й и 6й курс - тут уже по желанию. На мой взгляд, за практикой лучше сразу идти на kaggle.com и/или на собесы, решать тестовые задания.

3. ODS

Открытый курс машинного обучения: http://personeltest.ru/aways/habr.com/ru/company/ods/blog/322626/

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

4. Ну и какой-нибудь из известных онлайн-транажеров по SQL.

Я тут занимался: https://learndb.ru

5. Вся моя практика - это 1я часть истории, с сентября 2020 до января 2021: http://personeltest.ru/aways/habr.com/ru/post/536014/

JUNIOR DATA SCIENTIST

Три недели назад я узнал, что успешно прошел испытательный срок в питерской компании ADRIVER (группа компаний Internest). Собственно, этого момента и ждал, чтобы написать продолжение. А то было бы забавно... "Всем привет. Я стал дата саентистом, но не вытащил"...

Думаю, AdRiver это лучший вариант куда я мог попасть, с учетом моего прошлого опыта и пути развития.

За три месяца работы я уже успел поработать над несколькими задачами.

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

Задача - оценить вероятность клика в каждом конкретном случае и, исходя из прогноза, предложить свою максимальную ставку. Короче говоря, то же, что я делал руками, настраивая тергетированную рекламу ВКонтакте, только теперь Data Science, Big Data и вот это вот всё.

Компания существует много лет, команда отличная (в этом я уже убедился, даже пожаловаться не на что), клиенты - в плюсе. Даже странно, что до работы здесь я никогда про нее не слышал, хотя наши технологии используют серьезные бренды и рекламные агентства, вроде Ламоды, МВидео, Digital BBDO и т.д.

Но есть одно маленькое "но".

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

Собственно, я и делаю. И тут уже такой простор для творчества, что можно только позавидовать самому себе. Штатно в задачах "click prediction" используется градиентный бустинг.

Пришлось погрузиться в тонкости XGBOOST, CatBoost, форматы данных libsvm, написание скриптов для сбора статистик из файлов на 30-80млн. строк и фильтрации 400тыс. признаков, формирования всяких выборок и т.д. Погонять модели, поискать гиперпараметры для обновленных моделей. (А тут, знаете, модель в полном фарше может и сутки учиться). Короче, реальный Data Science - это вам не Титаник на Kaggle).

Сейчас начал изучать Hadoop и Java, чтобы мог сам вытаскивать данные для моделей. Дальше - больше. У нас есть баннеры, площадки, посадочные страницы. Это все кладезь информации, которая должна помочь улучшить модели в условиях надвигающегося дефицита. Здравствуйте, нейронки. Bert для выдергивания фичей из текста. CV-нейросетки. Данных - тьма! Скучно не будет. Что-то уже начал проверять.

Первая моя задача, чтобы влиться в работу, тоже порадовала.

Нужно было разобрать действующий в компании алгоритм визуальных рекомендаций(читай ResNet на Keras, который я в глаза не видел). Разобраться и оценить перспективы модели CLIP, выложенной за неделю до начала моей работы в компании. Если есть смысл - поменять ResNet на CLIP.

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

На выходе получилась модель, выдирающая признаки с картинок и их описаний в виде определенного вида векторов. А по этим векторам можно уже и расстояние оценить. Русские части описаний картинок предварительно переводятся на английский другой нейросеткой(CLIP-то на английский заточен). И если кому-то на Ламоде приглянулось модное платье, модель готова предложить 10 похожих по стилю, бренду, цвету и фасону. Визуально выглядит очень круто, как само по себе, так и по сравнению с ResNet50.

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

Подводя итог, все хорошо! Даже не верится. Но потом вспоминаешь, сколько сил и нервов ушло. И тогда вполне верится.

ЧБД (ЧТО БЛО ДАЛЬШЕ?)

В течение недели после публикации первой части я получил 3 оффера (еще до конца новогодних каникул). Один из них был как раз в AdRiver. Еще один в стартап по обработке документов. И еще один в белорусскую компанию, тоже по части NLP. Везде было неплохо, но AdRiver подкупил предстоящей широтой задач, на которых можно учиться новому.

Удивительно, но в отличие от всех прошлых собеседований, до статьи, по каждому из офферов меня совсем никак не гоняли по теории. Просили рассказать о прошлом опыте, о проекте для Почты России с хакатона, в стартапе дали 2 задания на время (пару несложных алгоритмов за 3 часа написать). И никакой теории.

Было еще несколько предложений "поднять data science" в каких-то непонятных проектах, где я так и не понял, что от меня хотят.

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

Гоняли по всем возможным темам и разделам, заставляли "зашэрить" экран и писать код в блокноте, засыпали перекрестными вопросами. Больше половины вопросов жестко слил. Думал - без шансов. Но нет:

- "Все, конечно, на базовом уровне...", - и дали тестовое задание на следующий этап.

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

Подробнее..

Собеседование на позицию Data Scientist 20 типичных вопросов

08.04.2021 12:19:54 | Автор: admin

Проверка знаний на собеседованиях обычная практика. И мы сейчас не о глупых Где вы видите себя через 5 лет?, а о нормальных вопросах по специальности. В этой статье мы собрали топ-20 вопросов, которые задают дата-сайентистам, чтобы проверить их уровень знаний. Все это реальные вопросы на реальных собеседованиях в российских компаниях. Но нас попросили не упоминать названия, чтобы не давать соискателям лишнего преимущества. Некоторые вопросы простые, другие посложнее. Не будем затягивать, поехали.


1. В чём разница между контролируемым и неконтролируемым машинным обучением?

Контролируемое машинное обучение:

  • Использует известные и маркированные данные в качестве входных.

  • Имеет механизм обратной связи.

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

Неконтролируемое обучение:

  • Использует немаркированные данные в качестве входных.

  • Не имеет механизма обратной связи.

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

2. Перечислите этапы построения дерева решений.

  1. Взять весь набор входных данных.

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

  3. Рассчитать прирост информации по всем атрибутам (информацию о том, как отсортировать разные объекты друг от друга).

  4. Выбрать атрибут с наибольшим объёмом информации в качестве корневого узла.

  5. Повторить ту же процедуру для каждой ветви, пока узел решения каждой ветви не будет завершён.

3. Что такое проблемы взрывающегося и затухающего градиента?

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

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

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

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

4. Как рассчитать точность прогноза, используя матрицу путаницы?

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

Формула точности:

Точность = (истинно положительные + истинно отрицательные) / общее количество наблюдений.

Предположим, что истинно положительных значений у нас 2981, истинно отрицательных 110, а всего 3311. Используя формулу, находим, что точность прогноза составляет 93,36 %.

5. Как работает ROC-кривая?

ROC-кривая это графическое изображение контраста между показателями истинно положительных и ложноположительных результатов при различных пороговых значениях.

Если считать TPR и FPR для фиксированного порога [0,1], то их можно представить в виде функций от аргумента :

TPR = TPR(), FPR = FPR(). При этом обе функции монотонно возрастают от 0 до 1, а значит, определена функция:

ROC(x) = TPR(FPR-1(x)), x [0,1]

ROC-кривая это график функции.

Как правило, у хорошего классификатора кривая лежит по большей части либо целиком выше прямой y=x. Это связано с тем что при хорошей классификации надо получать максимальный TPR при минимальном FPR.

6. Объясните алгоритм машинного обучения SVM

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

Его основная идея построение гиперплоскости, которая разделяет объекты выборки максимально эффективным способом. Сделать это можно с помощью алгоритма линейной классификации.

7. Что такое ансамбль методов?

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

8. Что такое Random Forest?

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

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

9. Какой метод перекрёстной проверки вы бы использовали для набора данных временных рядов?

Нормальная k-кратная процедура перекрёстной проверки может быть проблематичной для временных рядов.

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

  • сгиб 1: тренировка [1], тест [2];

  • сгиб 2: тренировка [1 2], тест [3];

  • сгиб 3: тренировка [1 2 3], тест [4];

  • сгиб 4: тренировка [1 2 3 4], тест [5];

  • сгиб 5: тренировка [1 2 3 4 5], тест [6].

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

10. Что такое логистическая регрессия? Или приведите пример логистической регрессии.

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

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

В этом случае результат прогноза будет двоичным, то есть 0 или 1 (выигрыш/проигрыш). В качестве переменных-предикторов здесь будут: сумма денег, потраченных на предвыборную агитацию конкретного кандидата, количество времени, затраченного на агитацию, и так далее.

11. Что вы понимаете под термином нормальное распределение?

Нормальное распределение одно из основных распределений вероятности.

Плотность нормального распределения выражается функцией Гаусса:

Где математическое ожидание, среднеквадратическое отклонение, дисперсия,медиана и мода нормального распределения равны математическому ожиданию .

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

12. Что такое глубокое обучение?

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

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

13. В чём разница между машинным обучением и глубоким обучением?

Машинное обучение позволяет обучать компьютерную систему без её фактического программирования. А глубокое обучение это подвид машинного обучения, который основан на аналогии нейронных сетей человеческого мозга. Это похоже на то, как наш мозг работает для решения проблем: чтобы найти ответ, он пропускает запросы через различные иерархии концепций и связанных вопросов.

14. Что такое рекуррентные нейронные сети (RNN)?

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

Они используются преимущественно для задач, где нечто цельное состоит из ряда объектов, например при распознавании рукописного текста или речи.

15. Что такое обучение с подкреплением?

Обучение с подкреплением очень схоже по смыслу с обучением с учителем, но в роли учителя выступает среда, в которой система может выполнять какие-либо действия.

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

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

16. Объясните, что такое регуляризация и почему она полезна.

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

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

17. Что такое рекомендательные системы?

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

18. Какова цель A/B-тестирования?

A/B-тестирование это статистическая проверка гипотез для рандомизированных экспериментов с двумя переменными, A и B.

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

19. Что такое закон больших чисел?

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

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

К примеру, при бросках шестигранного кубика. Чем больше бросков, тем больше среднее значение близится к математическому ожиданию 3,5.

20. Назовите несколько фреймворков для глубокого обучения.

  • Pytorch.

  • TensorFlow.

  • Microsoft Cognitive Toolkit.

  • Keras.

  • Caffe.

  • Chainer.

Естественно, в этой выборке только теоретические вопросы, ведь практических задач (под реальные бизнес-кейсы компаний) просто бесконечное количество. Но всему этому мы учим на наших курсах по профессиямData ScientistиData Analyst, а карьерные консультанты помогают подготовиться к собеседованию. Про общую подготовку к собеседованию читайте здесь.

У нас еще много направлений для состоявшихся профи и новичков
Подробнее..

Перевод Один совет, благодаря которому я успешно прошёл несколько собеседований

27.12.2020 18:22:59 | Автор: admin
Что вы скажете, если я попрошу вас разработать сервис, который обрабатывает тысячи запросов в секунду с минимальной задержкой?

Хм Я скажу, что у вас в компании возникла такая проблема. Но у вас нет идей и вы обсуждаете её на собеседованиях с кандидатами :)

Именно так я ответил, когда мне впервые задали вопрос по архитектуре. Мы хорошо посмеялись. Но потом интервьюер всё-таки заставил меня спроектировать сервис.

С тех пор минуло десять лет и бесчисленное количество собеседований с обеих сторон стола. Я работал в Microsoft, Google, Stripe и получал предложения от многих других компаний. Когда я сам проводил собеседования, то понял одну вещь: стандартные советы по интервью крайне недостаточны.

Зачем неделями практиковаться в решении задач, если на собеседовании голова совершенно пустая от волнения? Все говорят, что нужно остерегаться рекрутеров, но что, если это не так? Как вы можете показать себя с лучшей стороны, если вы слишком боитесь?

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

По какой-то причине никто не говорит о некоторых специфических аспектах собеседования, которые мне неоднократно помогали:

  • Использовать рекрутеров в своих интересах
  • Проходить реальные собеседования для тренировки
  • Не упускать возможности обучения во время собеседований
  • Поддерживать навык даже тогда, когда вы не ищете работу

Совет 1. Использовать рекрутеров в своих интересах


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

И они действительно обсуждают. Но не так, как вы думаете.

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

Теперь рекрутер хочет работать с вами. Его задача заключается в том, чтобы вас приняли. Они знают, что у среднего кандидата плохие навыки подготовки к собеседованию, и с радостью помогут исправить этот недостаток. Зачем отбрасывать сильных кандидатов, которые не могут хорошо пройти собеседование? Они хотят помочь каждому показать себя с лучшей стороны.

Как вы можете этим воспользоваться?

Задавайте им вопросы! Например, такие:

  • Что мне делать, чтобы подготовиться к собеседованию?
  • Какие ценности компании было бы хорошо подчеркнуть во время интервью?

И будьте откровенны о любых проблемах, с которыми столкнётесь.

  • Если вы заболели за день до собеседования, позвоните рекрутеру и попросите перенести собеседование. Он же хочет назначить собеседование, когда вы в лучшей форме!
  • Запарка на работе не оставила времени на подготовку? Всё ещё можно назначить другую дату. В худшем случае они скажут: Извините, мы не можем этого сделать. Это не ухудшит ваши шансы.

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

Совет 2. Проходить реальные собеседования для тренировки


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

Научитесь справляться с давлением.

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

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

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

Научитесь отвечать на двусмысленные вопросы.

После каждого собеседования записывайте все вопросы, которые вам задавали. В тот же вечер просмотрите их, пока они ещё свежи в памяти. Сосредоточьтесь особенно на поведенческих и архитектурных, у которых нет конкретного правильного ответа. Подумайте, как на них ответить лучше. Есть ли истории из вашей жизни, на которые можно сослаться? Подождите несколько дней и посмотрите снова на эти вопросы. И тогда вы найдёте ответ получше.

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

Соображайте быстро.

Во время тренировочных собеседований вы можете обнаружить, что компания на самом деле интересная. Рекрутеры рассчитывают на такой вариант. Они предлагают попробовать пройти собеседование даже если вы говорите, что компания не интересная. И у меня такое случалось неоднократно.

Совет 3. Не упускать возможности обучения во время собеседований


Я узнал об этом случайно, но это реально окупается.

Как-то на ярмарке вакансий в колледже я ходил и осматривался вокруг. Мой взгляд упал на кучу кубиков Рубика, которые раздавала компания, о которой я никогда не слышал. Мне очень хотелось заполучить такой! Конечно, я не мог просто подойти и попросить его прямо, поэтому пошёл и поболтал с парнем, который работал на стенде. Его звали Винс. Через несколько минут я ушёл с драгоценным кубиком Рубика в руке. В тот же вечер мне позвонил Винс и предложил пройти настоящее собеседование в кампусе. У меня уже было предложение о работе от компании, которая мне нравилась, но я подумал: Конечно, почему нет? Опыт не лишний.

Я не собирался у них работать, это был какой-то скучный финансовый бизнес. Терять было нечего. Поэтому во время интервью я мог свободно задавать любые вопросы. Когда мне казалось, что я неправильно ответил, я спрашивал: Кажется, тут я дал маху. А как правильно? (я хотел узнать ответ для будущих собеседований!) Когда мне задавали сложный вопрос, я с улыбкой наслаждался решением проблемы, а не беспокоился, насколько плохо это отразится на мне (помните мой остроумный вопрос в начале статьи? так выглядело то собеседование).

Оказывается, компаниям нравится подобное поведение: на следующий день мне предложили другую работу. На значительно более высокую зарплату, чем первая. Да, и они хотели через две недели отправить меня в Нью-Йорк, чтобы познакомиться с компанией. Я всё ещё не хотел к ним идти, но бесплатная поездка в Нью-Йорк Ладно, записывайте! Название компании: Bloomberg.

У Bloomberg были опытные рекрутеры. Они по полной программе использовали два дня, чтобы кандидат остался в восторге от компании (я был очень близок к тому, чтобы принять их предложение). Во время той поездки Винс сказал, что я произвёл большое впечатление, когда бесстрашно задавал вопросы, даже будучи в полном тупике.

С тех пор я без колебаний задаю любые вопросы на собеседовании. Ничем не ограничивайте любопытство! И как интервьюер подтверждаю: искренний интерес это всегда хороший знак.

Совет 4. Поддерживать навык даже тогда, когда вы не ищете работу


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

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

Я и сам время от времени принимаю приглашение от рекрутера (для этого полезно завести аккаунт на LinkedIn). Я не утруждаю себя подготовкой, по крайней мере, на первом этапе. Эти собеседования позволяют понять, в каких областях нужно освежить знания, а где меняется отраслевая практика.

Например, на техническом собеседовании прошлым летом я сразу не понял, что они хотят увидеть реальный рабочий код. Вместо обычного псевдокода в Google Docs интервьюер попросил выбрать нужный язык в онлайн-IDE. А у меня нет особых предпочтений по языку. На работе я использую много инструментов и меняю языки примерно каждые пять месяцев. Поэтому даже такие простые вещи, как создание массива, обычно приходится гуглить. Поэтому что выбрать? Ну, я выбрал C#.

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

Через четыре месяца ко мне обратилась компания под названием Stripe. Они также ожидали рабочий код и даже разрешили использовать свою IDE. На этот раз я был готов. И теперь там работаю.

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

Что общего у всех этих тактик? Они убирают страх. Страх, который мешает вам максимально проявить себя. Тренируйтесь почаще, и комнаты для допросов превратятся для вас в игровую площадку.

Никогда не показывай, что тебе трудно, говорил мне Винс. Но когда ставки смешные и вы развлекаетесь, какие проблемы?
Подробнее..

О стажировках для тех, кто еще не ) Эпизод 2

19.04.2021 16:09:25 | Автор: admin

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

Вас пригласили на собеседование что делать?

Ответить

  • внимательно читайте инструкции в приглашении скорее всего вся необходимая информация там уже есть;

  • подтвердите, что будете участвовать, как можно скорее это важно для тех, кто координирует собеседования;

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

  • уточните часовой пояс тех, кто будет проводить интервью, и сообщите свой, если он отличается;

  • уточните место или способ видеосвязи; убедитесь, что вы понимаете, где найти нужную ссылку;

  • спросите, кто будет проводить собеседование и как вы можете к нему подготовиться; на каком языке будет общение (вдруг на английском? это лучше знать заранее).

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

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

Подготовиться

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

Что поможет вашим собеседникам как можно лучше разглядеть ваши сильные стороны сквозь естественное и здоровое волнение?

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

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

В-третьих, дьявол в деталях ;)

Оффлайн

  • заранее продумайте маршрут и заложите время на поиск офиса, пробки, непредвиденные задержки;

  • приезжайте за 10-15 минут до назначенного времени собеседования, чтобы успеть отдышаться и настроиться, и дать эту возможность встречающей стороне;

  • отключите телефон, когда вас уже встретили ничто не должно вас отвлекать и мешать общению.

Онлайн

  • подключайтесь по ссылке за 2-3 минуты до начала;

  • лучше звонить с компьютера собеседование может включать live-coding;

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

  • проверьте, что аккаунт приложения отображает ваши имя и фамилию, а не никнейм (в идеальном мире ваш адрес электронной почты также основан на ваших реальных имени и фамилии);

  • проверьте оплату интернета и стабильность сети;

  • камера обязательна проверьте, что с ней всё хорошо;

  • загрузите во все приложения свою портретную фотографию крупным планом (это очень помогает в процессах коммуникации, причем любых);

  • используйте наушники или гарнитуру, проверив что они заряжены и работают без помех;

  • убедитесь, что вам хватит зарядки; питание от сети пусть будет включено заранее;

  • проходите собеседование в тихом помещении без посторонних шумов и по возможности с нейтральным фоном это поможет и вам, и другим лучше сосредоточиться и слышать друг друга;

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

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

Настроиться на нужный информационный контекст

Заранее почитайте (если еще не) или вспомните прочитанное ранее:

  • про компанию;

  • про проект и продукт;

  • про руководителя и команду.

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

Подготовьте уверенный рассказ:

  • о вашем интересе к этой стажировке и компании;

  • о релевантном опыте, пусть даже он только из учебных или личных проектов;

  • о том, какие идеи у вас есть в отношении предложенной для стажировки задачи (подумайте про это заранее; поищите похожие проекты и посмотрите на них);

Подготовьте встречные вопросы вашим собеседникам. Например:

  • Каковы ценности компании? Почему вам здесь нравится?

  • Как организована работа в команде?

  • Какая зона ответственности будет у стажера?

  • Каким будет обучение и цель стажировки?

  • Какие перспективы и возможности в этом проекте?

  • Каков идеальный кандидат на эту стажировку?

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

Когда всё уже началось

Помните, что волнуетесь и вы, и ваши собеседники. Они также заинтересованы в том, чтобы ваша стажировка успешно состоялась.

Фокусируйтесь на смысле вопроса не на себе и не на том, какое впечатление производите. Внимательно слушайте вопросы: в них заложена ожидаемая формула ответа. Говорите только о том, что спрашивают.

Если вас поставили в тупик рассуждайте вслух. Задавайте встречные или уточняющие вопросы.

Признавайте свои ошибки. Спрашивайте, какое решение было бы правильным или наиболее оптимальным по мнению интервьюеров. Будьте честными и искренними в том, что вы чего-то не знаете.

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

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

Техническое интервью

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

Ключевая часть интервью может включать:

Вопрос-размышление: как бы вы реализовали Х?

Вопросы по технологии: погуглите самые популярные вопросы на собеседованиях по вашему стеку - их, как правило, не больше ста ;)

Live coding:

  • проговаривайте свои шаги;

  • пишите тесты.

Код на листочке/доске: попробуйте это заранее дома.

Code review:

  • что этот код делает?

  • проверьте ошибки;

  • проверьте крайние случаи;

  • performance, примеры использования кода.

Тестовое задание на дом

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

На что стоит обратить внимание при подготовке тестового:

  • воспринимайте как реальный проект;

  • поймите, в чем задача (при необходимости уточните);

  • оцените время (если не установлен дедлайн) и уложитесь в него (max = 2 недели);

  • если что-то не успеваете к дедлайну опишите, что хотели бы улучшить;

  • будьте готовы к повторному собеседованию по результатам задания.

Ну, и ловите check-list для самопроверки:

  • тесты;

  • документация (описание проекта, как запустить);

  • внятные commit message / git rebase;

  • убрать мусор из репозитория;

  • запустить inspect code и добиться, чтобы ошибок не было;

  • протестировать на разных платформах/браузерах;

  • клонировать репозиторий и открыть с чистыми настройками;

  • UI: попросите кого-нибудь о конструктивном взгляде со стороны;

  • предполагаемые улучшения.

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

Пользуясь контекстом сама скажу здесь Спасибо! Екатерине Смаль (Team Lead in Educational Products, JetBrains) за экспертизу по части технического интервью и тестового задания :)

Когда вас пригласили на стажировку

Выдыхайте, но на самом деле всё только начинается!

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

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

  • знакомьтесь с командой;

  • знакомьтесь с культурой компании;

  • задавайте вопросы;

  • погружайтесь в контекст;

  • активно вовлекайтесь во все процессы;

  • проявляйте интерес и инициативу;

  • будьте самостоятельны;

  • запрашивайте фидбек руководителя/ментора;

  • учитесь управлять своим временем;

  • развивайтесь!

Развивайтесь в любом случае

Если вы не прошли отбор на стажировку, оберните это в новые возможности для себя. Запросите обратную связь и проанализируйте полученный опыт. Учитесь. Практикуйтесь на open source проектах. Попробуйте иные варианты стажировок. Если вам не хватает какого-то опыта получите его:

  • хакатоньте;

  • участвуйте в студенческих стартапах;

  • пробуйте фриланс;

  • создавайте свои проекты;

  • реализуйте интересные учебные и научные работы.

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

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

Всем драйва!

Подробнее..

Категории

Последние комментарии

  • Имя: Макс
    24.08.2022 | 11:28
    Я разраб в IT компании, работаю на арбитражную команду. Мы работаем с приламы и сайтами, при работе замечаются постоянные баны и лаги. Пацаны посоветовали сервис по анализу исходного кода,https://app Подробнее..
  • Имя: 9055410337
    20.08.2022 | 17:41
    поможем пишите в телеграм Подробнее..
  • Имя: sabbat
    17.08.2022 | 20:42
    Охренеть.. это просто шикарная статья, феноменально круто. Большое спасибо за разбор! Надеюсь как-нибудь с тобой связаться для обсуждений чего-либо) Подробнее..
  • Имя: Мария
    09.08.2022 | 14:44
    Добрый день. Если обладаете такой информацией, то подскажите, пожалуйста, где можно найти много-много материала по Yggdrasil и его уязвимостях для написания диплома? Благодарю. Подробнее..
© 2006-2024, personeltest.ru