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

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

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

Определите десятку главных компаний в этой отрасли. 

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

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

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

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

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

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

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

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

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

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

Реклама

Инструментарий программиста

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

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

Документация и код

Документация на ПО содержится в коде. 

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

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

Код дает окончательный ответ.

Если документация содержится в коде, значит и требования к коду предъявляются особые:

  1. Код должен быть удобочитаемым, чтобы читатель кода мог быстро понять, что делает код и получить ответ на вопрос по поведению системы. 
  2. Код должен быть кратким
  3. Код должен придерживатся единого стиля, принятого в программе, и единых подходов

Хорошие книги по этой теме:

  1. Clean code  Роберта Мартина. В русском переводе она продается под названием «Чистый код»
  2. Art of readable code

Скоростной метод инженера Грабина

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

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

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

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

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

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

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

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

Далее Грабин приводит пример того, как его скоростной метод пытались перенять другие военные заводы. Так как метод формально не был описан, при внедрении другие заводы пользовались слухами и догадками и своими собственными домыслами. В начале 1941 года Грабина пригласили на коференцию, где он должен был рассказать о своем методе директорам и конструкторам других заводов. На коференции перед ним выступали другие докладчики, которые хвастались, что метод Грабина у них уже внедрен. И жаловались что метод не работает. Грабин с ужасом слышал, как его метод заменяли обычной штурмовщиной, авралами и переработками гигантских ресурсов в брак. Ничего не напоминает? Cargo cult методологий в программировании?