Крис Касперски
Бессистемные заметки о поиске работы за рубежом
ton-rai-plai-dee
(bad beginning good ending)
Тайская пословица
Многие люди (особенно IT-специалисты) хотят уехать отсюда, но не знают, как найти хорошую работу за рубежом. Автор, имея более чем десятилетний опыт удаленной работы, наконец-то нашел компанию своей мечты, стоящую того, чтобы оторвать свой хвост от кресла и сменить Северный Кавказ на Сан-Франциско. Хотите и вы найти работу своей мечты?
…Как все начиналось
Обычно, на программистских форумах в разделе «О работе» постоянно задаются одни и те же вопросы: «Какие языки/технологии наиболее востребованы здесь и там?», «Что в первую очередь следует изучать?». Начнем с того, что язык – это вообще-то средство выражения мысли и применительно к программированию, с одним только знанием языка на работу берут только кодеров, которые тупо кодят то, что им скажут. Кодер – это не программист. Это как писарь и писатель, и если писатель говорит «сократить период постинга», то писарь так и пишет, а ведь мог бы слегка оптимизировать текст, заменив его на «пишите почаще».
Программист должен знать не только язык, но и определенную предметную область, решая поставленные задачи, за каждой из которых стоит если не научное исследование, то по крайней мере инновация. Конечно, от рядового программиста не стоит ждать существенного улучшения «движка» программы распознавания речи или машинного перевода. Этим занимаются научные работники, результатами которых и «кормятся» программисты, ну а кодерам программисты передают уже четко сформулированные задачи, реализация которых не требует специфических познаний. Достаточно разбираться во всем зоопарке готовых библиотек и помнить, какую из них и когда следует применить.
Вот, скажите, какие банальные мысли автор высказывает. Это же всем и так известно! Хм, но ведь на форумах прежде всего спрашивают о языках, что изначально загоняет человека в рамки кодера, а «там» наши кодеры никому не нужды и гораздо более востребованы индусы с азиатами, потому что едят мало, кодят много (хоть и криво), неприхотливы и т. д. Причем при реорганизации фирмы (а реорганизации там не редкость), кодеры (особенно иноземные) «вылетают» в первую очередь. Потом, правда, к фирме приходит понимание, что кодить все-таки надо, и она вновь открывает кучу вакансий, но… как только индусы вместе с азиатами (и небольшим количеством «счастливчиков» из России) съедают весь бюджет, они снова возвращаются в родные пенаты.
Более того, позиционируя себя, например, как C#-кодера, вы вынуждены конкурировать с толпой юниоров, едва осиливших книжку «C# for dummies» и соорудивших из кучи готовых компонентов какое-то подобие чего-то как бы работающего. А сказать, что вы крутой кодер, имеющий более чем десятилетний опыт работы с C#, вы не можете, потому как платформе .NET еще нет десяти лет, а если говорить об опыте (работы), то из этого срока необходимо выбросить несколько лет, ушедших на обучение (чтение книг, стандартов, написание первых неработающих программ). Скажите – пять лет и вам поверят с большой натяжкой. Три года звучат намного более реалистично, но сколько еще таких же, как вы? И сколько тех, кто приврал в резюме? А к тому моменту, когда у вас действительно появится опыт работы с C#, весьма велика вероятность, что мода на него схлынет, Microsoft забросит .NET (кстати говоря, разные версии которой уже страдают хронической несовместимостью) и C# станет чем-то вроде MFC.
Это не значит, что учить C# не нужно. Почему же? Учите себе на здоровье. Только вероятность найти работу выше юниора (особенно за рубежом) достаточно невелика, хотя юниором можно устроиться в любой момент пространства-времени: от столицы до уездного городка. И с возможностью карьерного роста.
Сравнительно большое число людей проскакивает эту стадию, изучая язык дома или параллельно с другой работой, создавая программы, которые реально нужны им самим. А знание языка (не важно какого) в совокупности с определенной предметной областью – это уже программист, но никак не кодер. Программисты – довольно ценный продукт, подобный винам с многолетней выдержкой, и здесь уже можно рассчитывать на индивидуальный подход, существенно упрощающий процедуру трудоустройства. Распознать программиста можно с первого взгляда: перечень языков программирования у него идет в самом конце резюме и часто огранивается одним-двумя языками, хотя программист может более или менее сносно изъясняться на добром десятке из них (например, я указал всего лишь C и x86-ассемблер, поскольку я слишком хорошо знаю C++, чтобы понять, что в действительно я его не знаю). Зато список предметных областей стоит на первом месте, и потенциальный наниматель сразу видит, с кем он имеет дело.
Так уж сложилось, что автор этих строк обладает довольно редкой профессией, если не сказать «экзотичной». У меня хорошо получается дизассемблировать программы, реконструируя исходный алгоритм, чуть хуже выходит с разработкой защитных механизмов, но определенные наработки в этой области все-таки есть, хотя коммерчески успешных проектов (реально внедренных и действующих) совсем немного. Казалось бы, на что тут можно претендовать?! Тем не менее на хлеб с маслом хватает.
Узких специалистов всегда немного (и чем уже предметная область, тем их меньше), и стандартные рыночные отношения здесь не работают, ибо рынок подразумевает наличие спроса и предложения. А какой спрос на тех, кто знает дизассемблер? Даже названия для такой профессии не придумано. Кадровые агентства не рассылают резюме об их найме, фирмы не открывают вакансий. Компания Secunia (secunia.com) на своем сайте прямо так и пишет, что вакансий нет, но мы всегда рады рассмотреть предложения от специалистов (http://secunia.com/hardcore_disassembler_and_reverse_engineer).
И вот неожиданно выяснилось, что одной крупной корпорации, имеющей десятки филиалов в Европе, Азии и даже на Украине, требуется человек, умеющий писать скрипты, плагины и процессорные модули для IDA-Pro, то есть как раз то, что у меня получается лучше всего. А фирме (имя которой вы наверняка знаете, хотя из соображений конфиденциальности пусть это будет, хм, ну, например, «Acme Corp») легче (и дешевле) перетащить готового специалиста из России в Сан-Франциско, чем «вырастить» (то есть обучить) своего собственного.
В процессе разбирательств с интервью, резюме, визами, трансферами и прочей бюрократической суетой пришлось в срочном порядке приобретать новый жизненный опыт, которым очень хочется поделиться с читателями. И хотя статья носит спорный характер, затрагивающий извечные темы «священных войн», она и задумывалась такой!
Высшее образование – с ним или без него?
Прежде чем погружаться в пучину дискуссий и философских рассуждений, не имеющих отношения к реальности и лежащих в той же плоскости, в которой находятся диспуты о соотношении бога и церкви, скажу сразу: с опытом работы свыше пяти лет и хотя бы парой-тройкой коммерчески успешных проектов диплом не спрашивают, а если и спрашивают, то только потому, что есть такой путь в резюме, но о резюме мы еще поговорим.
Высшее образование (при всех его достоинствах и недостатках) – это не показатель. Известно большое количество людей с красным дипломом, не написавших после окончания вуза ни одной строки кода и вообще не сумевших устроиться в жизни. Известно и большое количество людей, окончивших вечернюю школу и занимающихся любимым делом, приносящим деньги, покрывающим все текущие расходы, запросы и потребности. Такие про себя говорят: мы зарабатываем столько, сколько требуется. Работы сейчас – море, только успевай. Хочется денег (чтобы слетать на Канары или купить новый объектив для камеры) – без проблем! Впряжемся, напряжемся и заработаем. Надоели тропические острова с пальмами, а объективы не умещаются на полке?! Вольемся в менее прибыльный (бесприбыльный, убыточный), но зато по-настоящему интересный проект.
А стоит ли вообще поступать в вуз? Это очень индивидуальный вопрос, и ответить на него можно так же, как ответил мудрец, к которому пришел юнец, вопрошающий: а не жениться ли ему?! Нет, не женись, потому что иначе ты бы не спрашивал. Извлечь пользу из вуза, конечно, можно, но в IT-сфере наличие высшего образования не является обязательным условием, а диплом (даже красный) вообще ничего не гарантирует, правда, его отсутствие до некоторой степени затрудняет трудоустройство в США, но, во-первых, на США свет клином не сошелся, во-вторых, не такое это уж и серьезное затруднение, а, в-третьих, программирование – дисциплина, изначально ориентированная на решение проблем. Вот и пусть программист без ВО решает задачу: как ему устроиться на работу, не имея диплома, но имея голову на плечах.
Несколько советов как следует себя вести, если нет не только диплома, но и опыта. Ситуация, конечно, критическая, но главное все-таки не диплом и даже не опыт, а голова.
Первое – никогда, ни при каких обстоятельствах не нужно критиковать высшее образование при общении с работодателем, поскольку люди, отдавшие этому самому образованию лучшие годы своей жизни, как правило, убеждены, что вуз – штука полезная, и рьяно отстаивают свои убеждения, а всех несогласных… Это вам не общение на форуме. Тут за флейм не банят, а просто молча указывают на дверь. «Отмазок» же можно придумать великое множество. Почему у меня нет высшего образования? Не было денег на учебу, например. От негативного слова «самоучка» лучше отказаться, сказав, что всему научился благодаря тому, что бок о бок работал с талантливыми программистами (тут главное, не переврать, иначе могут попросить озвучить имена талантов). Конечно, врать нехорошо, но нужно различать вранье и манипулирование фактами. В конечном счете главное – вызвать расположение работодателя, а в этом намного больше психологии, чем программирования, хотя хорошие работодатели расположены «по умолчанию», а от плохих лучше держаться подальше. Главное – не отчаиваться и упорно продвигаться к цели через тернии и неудачи. Конечно, сейчас мне легко писать эти строки. Сейчас, когда у меня, случается, бывает по несколько человек со степенями в подчинении, на вопрос о дипломе можно просто рассмеяться, а при возникновении трений даже использовать это как козырной аргумент: «Вот у вас диплом, вы и думайте, а я пока пойду покурю».
А что бы изменилось, будь у меня диплом? История не знает сослагательного наклонения, моя жизнь могла пойти совсем другим путем и отсутствие необходимости доказывать (родителям, ну и не в последнюю очередь себе), что человек без диплома тоже имеет право на существование с высокой степенью вероятности, «осадила» бы меня на какой-нибудь работе, вообще не связанной с компьютерами (поступал-то я на радиофизика) и… так бы я и остался в своем селе, которое очень люблю (вот такая любовь к моей маленькой родине), а говорить о карьере программиста в селе, до которого Интернет докатился только в конце 90-х… это даже несмешно.
По моим наблюдениям, люди с дипломами гораздо более спокойны и выдержаны. А вот люди без такового – рвутся, мечутся и… рано или поздно находят свое место в жизни. Или не находят. Тут уж как кому повезет.
Визы и проблемы, им сопутствующие
Ох, уж эти визы… Но без них никуда из своей страны. Что такое виза? Это документ, обеспечивающий возможность въезда в страну (для отдыха или работы), но не дающий никаких гарантий. Грубо говоря, если у вас есть виза, то ваша кандидатура будет рассмотрена и в случае положительного решения соответствующих организаций (во всех странах они разные) дан «зеленый» свет.
Некоторые страны (например, Малайзия) не требуют получения визы (выдают ее автоматом на границе) для непродолжительного отдыха и вспоминают о ней только при попытке трудоустройства. Впрочем, процедура выдачи виз упрощена до предела (достаточно иметь заграничный паспорт и не быть носителем заразных заболеваний), лимиты, если таковые и обозначены, обычно никогда не выжимаются досуха, а срок оформления виз позволяет паковать чемоданы прямо сейчас. В самом деле сначала летим в Малайзию как туристы, там решаем все вопросы с работодателем, после чего оформляем рабочую визу (для получения которой, впрочем, придется временно вернуться в свою родную страну).
Но вот США – совсем другое дело. С визами там полный кошмар. Хотя их тоже можно понять. Открой границы – и на следующий день на одного американца будет приходиться по меньшей мере сотня чужестранцев. Количество желающих работать на звездно-полосатый флаг с каждым годом все растет, а вот квоты на визы не увеличиваются. Кстати, о визах.
Самая популярная виза – H-1B, выдаваемая носителям специальных знаний (например, программистам) с правом работы в США на срок до трех лет (с возможностью продления до шести). Желательным (но не обязательным!) требованием является наличие высшего образования, соответствующего как минимум степени бакалавра. Если же высшего образования нет, придется доказывать наличие знаний тем или иным образом (например, участием в известных проектах). Кстати, наши дипломы (даже «международного» образца) все равно необходимо заверять, так что отсутствие «корочки» – не преграда.
Естественно, коль скоро речь зашла о «специальных знаниях» (цитирую официальный документ: «H-1B classification applies to persons in a specialty occupation which requires the theoretical and practical application of a body of highly specialized knowledge requiring completion of a specific course of higher education»), то кодеры отпадают сразу. Никакая компания не станет выписывать их в штаты – проще поручить эту работу азиатам или индусам, на территории стран которых построено множество техноцентров.
Кстати говоря, запрос на выдачу визы H-1B оформляет работодатель. Самостоятельно подать прошение нанимаемый работник не может. Следовательно, работодателя необходимо искать, находясь в России или любой другой стране с облегченным визовым режимом. И этот работодатель должен быть настолько заинтересован в вашей персоне, чтобы заняться нудной юридической волокитой.
И чем же этих буржуев можно заинтересовать? Либо теми знаниями/навыками, в которых они нуждаются и, будучи не в состоянии удовлетворить свою нужду на месте, соглашаются принять специалиста из России, а иногда не просто соглашаются, но и предлагают любые условия. Но чаще всего интерес обусловливается экономическим фактором. Русскому программисту можно практически ничего не платить, выжимая из него все соки, заставляя человека работать буквально на износ, подрывая здоровье, так что после трех лет работы он с полным психическим и физическим истощением, расшатанными нервами становится отработанным жмыхом и выдворяется в Россию, где вместо поиска работы ищет санаторий. Есть ли смысл «валить» в Штаты только затем, чтобы отдать им все, что ты имеешь, не получив ничего взамен?! Хорошую работу и здесь можно найти…
Итак, первая большая проблема виз H-1B – необходимость подтверждения своих навыков и поиски работодателя, заинтересованного в них. Кажется, при отсутствии знаний дело – труба, но при большом желании поработать на дядю Сэма можно отправиться в бодишоп (body-shop – дословно «магазин тел»), но не чтобы совершить покупку, а… продать самого себя. В рабство. Владелец бодишопа берет на себя все заботы по вашему трудоустройству в обмен на определенный процент от зарплаты (иногда очень даже значительный). Для многих программистов – это практически единственный путь, однако… минусов у него столько, что тут не статью нужно писать, а целую монографию, так что вдаваться в подробности мы не будем. Зачем нагонять негатив, когда его и без того хватает?!
Вторым (и основным) недостатком виз H-1B являются жестокие квоты, ограничивающие число желающих, причем за последние два года число желающих превысило квоты в первый же день подачи заявлений (по традиции начинающийся с 1 апреля, в день смеха), и потому пришлось проводить лотерею. Кому-то повезло, а кому-то нет. И хотя есть надежды на изменение ситуации, на данный момент въезд в США по визе H-1B совершенно бесперспективен, т.к. независимо от момента подачи прошения на выдачу визы придется ждать 1 апреля, а потом (если счастливый билет выпал кому-то другому) держать вакансию открытой целый год без всякой гарантии, что «не повезло в первый раз – повезет в другой». И какой же работодатель будет держать вакансию все это время? Ну Secunia (и подобные ей), может, и будут, т.к. все равно официально открытых вакансий у них нет и они ловят всех специалистов, попавших в поле зрения, но какой специалист (а мы говорим о специалистах) будет коротать годы в ожидании визы?! Америка это, конечно, круто, но кушать хочется даже по ночам. Ладно, устраиваемся на временную работу в России (или другой стране, где с визами все не так жестоко) и… надолго зависаем там, ибо, как говорят философы: ничто так не постоянно, как временное. Проработав год-другой на одном месте, так уж захочется вновь играть в лотерею?!
Таблица 1. TOP10 High-Tech-компаний и количество H-1B виз, полученных ими в 2006 году (по данным http://en.wikipedia.org/wiki/H-1B)
Компания
|
Количество виз H-1B полученных в 2006 году
|
Microsoft
|
3117
|
IBM
|
1130
|
Oracle Corporation
|
1022
|
Cisco
|
828
|
Intel
|
828
|
Motorola
|
760
|
Qualcomm
|
533
|
Yahoo
|
347
|
Hewlett-Packard
|
333
|
Google
|
328
|
Впрочем, ограничение на квоту можно обойти двумя путями. Первое (самое честное). Устроиться в организацию, на которую квоты не распространяются и к которым главным образом относятся научно-исследовательские институты и некоммерческие организации. Касательно институтов – туда, понятное дело, берут в основном научных сотрудников различных степеней «тяжести», и простые программисты (особенно без диплома) могут устроиться разве через прочные дружеские или родственные связи.
Некоммерческих организаций в США столько, что… а скольким из них требуются программисты?! Даже если организация не занимается разработкой очередного клона Linux, то ей явно требуется кто-то, кто может «нарисовать» сайт, а современные сайты, как известно, представляют собой грандиозные сооружения и легче нанять «русского туземца», чем покупать готовый «темплейт», выкладывая за него чемодан денег, а потом еще один – за «заточку» сайта под профиль фирмы. Но некоммерческая организация потому и называется некоммерческой (non-profit, т.е. не приносящей прибыли), что балансирует на грани самоокупаемости, что естественным образом отражается на уровне зарплат, а сменить место работы нельзя. Для этого необходимо либо получить грин-карту, которую дают далеко не всем, или же выиграть «настоящую» визу H-1B в очередной лотерее, устроившись в коммерческую фирму.
Таблица 2. TOP10 учебных заведений и количество виз H-1B, полученных ими в 2006 году (по данным http://en.wikipedia.org/wiki/H-1B)
Заведение
|
Количество виз H-1B, полученных в 2006 году
|
University of Michigan
|
437
|
University of Illinois
|
434
|
University of Pennsylvania
|
432
|
Johns Hopkins University School of Medicine
|
432
|
University of Maryland
|
404
|
Columbia University
|
355
|
Yale University
|
316
|
Harvard University
|
308
|
Stanford University
|
279
|
University of Pittsburgh
|
275
|
Второй (нечестный) путь обхода. Устраиваемся на удаленную работу. Формально устраиваемся, чтобы фирма могла объяснить, за что вам платят зарплату, а реально вы будете работать по туристической визе, которая не запрещает находиться на территории коммерческих фирм. А находиться там все равно придется, поскольку далеко не всю работу можно выполнить удаленно. Выносить исходные тексты за пределы фирмы – да кто это разрешит?! Конечно, работа по туристической визе – махинация, граничащая с нарушением закона, но все-таки остающаяся в его рамках. Естественно, крупные фирмы в такие игры не играют, а мелкие (испытывающие острую нужду в опытных сотрудниках) могут разориться прежде, чем успеют расплатиться, или банально «кинут», поскольку судиться вы все равно не сможете, а у них нет репутации, которую можно запятнать.
Кроме визы H-1B еще есть визы O-1, предназначенные для людей, обладающих экстраординарными способностями. Нобелевские лауреаты, например, или звезды мировой эстрады. Или… писатели. В самом деле, имея признанные публикации в специализированных областях, вполне реально претендовать на получение визы O-1. О квотах (в силу ограниченного количества экстраординарных людей) тут, понятное дело, речь не идет.
А еще варианты есть?! Если вы не играете в азартные игры и не обладаете мировой известностью, самый простой путь – трансфер в США по визе L-1B, выдаваемой тем, кто за последние три года отработал по меньшей мере 365 дней в филиале фирмы, имеющей штаб-квартиру в США, или же материнской фирме, имеющей дочернее подразделение в штатах. Понятное дело, что для программистов первый вариант наиболее предпочтителен. Сейчас, в эпоху рассвета аутсортинга, практически каждая более или менее крупная фирма имеет сеть филиалов в Азии, Индии (т.е. странах с облеченным визовым режимом). Отдельные филиалы есть в России и на Украине.
Таблица 3. TOP20 компаний и количество полученных виз L-1B в 2006 году (по данным http://en.wikipedia.org/wiki/L-1_visa)
Компания
|
Штаб-квартира
|
Основной дочерний филиал
|
Количество полученных виз L‑1 в 2006 году
|
Tata
|
Mumbai, India
|
India
|
4887
|
Cognizant Technology Solutions
|
New Jersey
|
India
|
3520
|
IBM
|
Armonk, New York
|
USA
|
1237
|
Satyam
|
Hyderabad, India
|
India
|
950
|
Wipro
|
Bangalore, India
|
India
|
839
|
Hindustan Computers Ltd. (HCL)
|
Noida, India
|
India
|
511
|
Deloitte & Touche LLP
|
New York, New York
|
USA
|
512
|
Patni Computer Systems
|
Mumbai, India
|
India
|
440
|
Intel Corporation
|
Santa Clara, California
|
USA
|
394
|
Kanbay
|
Chicago, Pune, Hyderabad, and Chennai
|
India
|
329
|
Honeywell International
|
Morristown, New Jersey
|
USA
|
320
|
Hewlett Packard
|
Palo Alto, California
|
USA
|
316
|
Infosys
|
Bangalore, India
|
India
|
294
|
Accenture
|
Hamilton, Bermuda
|
???
|
291
|
Caritor
|
San Ramon, California
|
India
|
231
|
Schlumberger Technology Corp
|
Netherlands Antilles?
|
|
214
|
Oracle Corporation
|
Redwood Shores, California
|
USA
|
176
|
Syntel
|
Troy, Michigan
|
India
|
171
|
PricewaterhouseCoopers
|
New York, New York
|
USA
|
168
|
Microsoft
|
Redmond, Washington
|
USA
|
169
|
Из двух вариантов, приемлемых для меня (O-1 и L-1B), последний выглядит намного более соблазнительным. Фирма имеет филиал в Азии, к которой автор этих строк весьма неравнодушен и совсем не против, выражаясь образным языком, «потусоваться» там некоторое время, расширив сознание своего жизненного опыта и получив массу впечатлений. С другой стороны, исследовательский центр находится в Сан-Франциско, и компания весьма заинтересована в моем скорейшем появлении. Как говорится, время – деньги, а в азиатском филиале для меня занятие все равно не найти…
Впрочем, решением обозначенных вопросов главным образом занимается наниматель, а нанимаемому остается только ждать (с правом настаивать на том или другом варианте, но вот будет ли его голос принят во внимание или нет – сложно сказать).
Информацию об остальных визах можно почерпнуть с официального сайта: http://travel.state.gov/visa/temp/types/types_1271.html.
Табель о рангах, или Цветовая дифференциация штанов
Слово «программист» в качестве указателя профессии прижилось только в русском языке. В цивилизованном мире принято указывать, кто есть кто и чем он собирается заниматься. В грубом приближении «программистские» должности укладываются в следующую лестницу: Intern/Trainee -> Junior Engineer -> Engineer -> Senior Enginee -> Expert/Architect.
Что конкретно она означает? На вершине находятся эксперты (часто независимые) и архитекторы. Эксперт – понятие растяжимое. Это может быть, например, «гуру по C++», знающий все его особенности, консультирующий сотрудников и составляющий рекомендации по стилю программирования, которых должны придерживаться кодеры и программисты. Эксперт не просто владеет языком. Он превосходно знает Стандарт и все (или большинство) нестандартные расширения и особенности реализации тех или иных языковых возможностей в конкретных компиляторах, что позволяет ему оградить программистов от использования потенциально опасных конструкций, превратно понимаемых некоторыми компиляторами или вообще никак не понимаемых.
Архитектор проектирует весь проект или какую-то его часть. Например, если фирма разрабатывает брандмауэр, то тут нужны, как минимум, один архитектор и три эксперта – первый знает все сетевые протоколы, второй – все типы удаленных атак, третий – всевозможные локальные атаки на брандмауэр со стороны зловредных приложений. Естественно, все три эксперта (вместе с архитектором) могут сочетаться в одном лице, но такое бывает редко и не слишком-то приветствуется, поскольку локальные и удаленные атаки слишком различны по своей природе.
Понятное дело, что архитекторы – это выдающиеся конструкторы, имеющие богатый практический опыт и до 35 лет соваться на эту должность… только людей смешить. Хотя формальных ограничений по возрасту нет, и в небольших фирмах архитектором может быть и 25-летний юнец. С экспертами в этом смысле все намного проще, поскольку, в отличие от архитекторов, им достаточно владеть узкой предметной областью, но владеть ей очень хорошо.
Senior Engineer – это тот же архитектор только рангом пониже. Ему дают задачу без объяснения, как ее решать. Естественно, «решать» не как в институте. Тут можно не только справочники, библиотеки сторонних разработчиков, но и целые институты подключить. Теоретически. А практически, имеются такие понятия, как бюджет и запрет на использование чужих продуктов, которые проще и надежнее написать самостоятельнее, чем купить. В принципе, большинство работодателей, ищущих программистов за пределами своей страны, ищут именно Senior Engineer, экспертов и архитекторов. Простых Engineer хватает в Индии, Азии, да и на местах их немало. То есть, если вас спросят, на что вы претендуете, называйте по меньшей мере Senior Engineer, впрочем, могут и не спросить, а все решить за вас, по итогам собеседования/интервью.
Если же работодатель предлагает должность простого Engineer, то это ничего не значит! Различие между простым Engineer и Senior Engineer не выбито на камне, и тут все зависит от специфики конкретной фирмы, но в общем случае, работа Engineer предполагает меньшую ответственность и надежду на получение четко формализованной задачи, впрочем, без углубления в технические детали, которые Engineer должен решать сам (на то он и инженер), т.е. Engineer находится намного ближе к кодеру, чем к программисту и во многих случаях действительно является кодером.
Junior Engineer и особенно Intern/Trainee – однозначно не программистские должности, это чистые кодеры. Иногда приходится слышать, что, дескать, Junior Engineer – «инженер с испытательным сроком». Ничего подобного! Испытательный срок, конечно, никто не отменял, но если вас берут как Senior Engineer, то и испытывать будут соответствующим образом. А на должность юниора иностранца могут взять только разве что из сострадания к русскому народу, при устройстве через бодишоп или из-за хронической нехватки кадров. Все три случая указывают на отвратительный менеджмент, и потому пользоваться ими категорически не рекомендуется. Слухи, что в больших компаниях очень строгая субординация и необходимо пройти всю эту лестницу от начала до конца, ничем не обоснованы.
Во-первых, как уже говорилось, иностранных специалистов (именно специалистов, а не дешевую рабочую силу) нанимают на должность от Senior Engineer и выше. Во-вторых, если человек от природы кодер (кодит с ошеломляющей скоростью и при этом без ошибок, но не может решить задачу, пока ему не скажешь, как), то на должности Senior Engineer ему просто нечего делать.
А вот архитектор или эксперт по безопасности может вообще не уметь программировать и программу «hello, world» писать в обнимку со справочником. Но кого это волнует?! Эти люди решают совсем другие проблемы. Далеко не все кодеры становятся инженерами, и карьерный рост тут ни при чем. У каждой профессии запах особый, и должности всякие важны и нужны!
Резюме, интервью и все-все-все
Прежде чем писать свое резюме, разумно почитать чужие, которые в наши дни можно встретить на любом сайте по трудоустройству. Там же обычно лежат и статьи, написанные, по всей видимости, теми, кто только и занимается, что пишет резюме, но так и не может написать то единственное, что дойдет до цели и подействует.
Кто-то настоятельно рекомендует отказаться от страдательного залога, изобилие которого в английском языке действительно выглядит противоестественно и напрягает читателя, которому легче отправить такое резюме в корзину, чем насиловать мозги. Однако не стоит бросаться и в другую крайность. Попробуйте избавиться от страдательного залога во фразе «I was born» (естественно, в резюме такое вообще не встречается, а сразу указывается возраст, – если его хочется указать).
Другие странные личности авторитетно заявляют, что американцы не любят слова «to participate» и, дескать, лучший вариант перевода «принимал участие [в проекте]» это «to take /to have/part in smth». Интересно, с чего бы это американцам не любить «participate», если его можно встретить даже в титрах американских фильмов – в смысле «при участии студии такой-то». Другой вопрос, что понятие «принимал участие» слишком растяжимое. Автор этих строк вполне может сказать, что принимал участие в огромном количестве проектов, включая Windows. И это правда. Была у меня переписка с одним парнем из Microsoft, в которой мы обсуждали загрузчик PE-файлов и его глюки, часть из которых была найдена им, часть – мной, в результате чего составленный общими усилиями баг-репорт был передан в нужный отдел, а мне в качестве награды возвращен крохотный участок исходного кода, где исправлена одна из ошибок и упомянуто мое имя, точнее, ник. Ну и в чем моя заслуга? Ошибки в Windows обнаруживаются регулярно. Особенно много их вылавливают разработчики линкеров, упаковщиков исполняемых файлов, создатели вирусов и т. д. Дает ли это им право/чувство сопричастности? Естественно, нет. И потому слова «принимал участие» в какую форму их ни облеки – это просто информационный мусор. Если принимал – конкретизируй!
Личные местоимения. Английский ими вообще грешит, и начинающие переводчики макула… простите, литературы рождают перлы типа «он вытащил из своего кармана…». Ага, было бы очень странно, если бы он что-то вытащил из чужого. Но в английском личные местоимения играют примерно ту же роль, что синонимы в русском языке – когда не знаем, как правильно пишется такое-то слово, используем синоним. В английском же артикли представляют проблему не только для тех, кто знает его со словарем, но и для самих носителей языка, и потому, чтобы не напрягать корректора, лучше избавиться от них, используя личные местоимения, которые в контексте английского языка смотрятся вполне естественно, а вот обилие «Я» в резюме раздражает. Вот на этот случай и существуют редуцированные (т.е. сокращенные) формы и вместо «I have more than 15 years of software engineering and reverse engineering experience…» пишите просто «Over 15 years of software engineering…», а вместо «I was working for…» просто «Working for», поскольку было бы странно, если бы вы в своем резюме описывали кого-то еще.
И самый главный совет. Не пишите резюме! Обычно работодатели на сайтах в разделе «Careers» и в постах на специализированных форумах дают контактный адрес Senior Recruiter или другого лица, отвечающего за подбор кадров. Senior Recruiter – это человек, а не машина, и потому первое письмо можно писать в форме, не имеющей с резюме ничего общего. Вот только пугать его не надо. В смысле говорить, что вы из России. У меня, например, это прозвучало в десятом по счету письме, когда моей персоной уже заинтересовались, но при всей тактичности делового человека Senior Recruiter так и не смог скрыть своей растерянности и еще письма три переспрашивал: а точно ли из России? Это не шутка?! Но вообще-то я не лукавил. Письма отправлял со своего домашнего почтового сервера с доменным именем, оканчивающимся на .ru, плюс мой английский. До сих пор удивляюсь, как он принял меня за американца. А еще кто-то говорит, что моим английским только пионеров пугать.
Ладно, не в этом дело. Переписка, конечно, хорошее дело, но должно быть и резюме. А как его писать?! Честно говорю Senior Recruiter, что, вы, наверное, будете смеяться, но резюме никогда не писал и даже не представляю, как оно должно выглядеть. Прошу дать образец. Дает! Читаю… Сердце ойкает. Не то! Резюме на 90% состоит из перечисления предыдущих мест работы, всяких наград и призов еще со времен школьных олимпиад. Мне же особо и похвастаться нечем, особенно с учетом того, что большинство проектов проходили под NDA, включающим в себя запрет на разглашение самого факта проведения такого проекта данной фирмой. В общем, тупик. Написал свой вариант и отослал безо всякой надежды на успех. Да и какой там мог быть успех, когда длинная колонка «education» со списком кучи учебных заведений и курсов по сертификации ужалась до лаконичного «have no one». (Кстати, несмотря на успех приложения, едва ли я бы стал рекомендовать такой способ другим. Читать-писать же вас научили, и, судя по всему, неплохо. Вот и пишите честно: средняя школа номер №1 с. Малая родина, золотая медаль. – Прим. ред.)
Каково же было мое удивление, когда Senior Recruiter возвратил мне существенно переработанный вариант резюме, полностью переформатированный и уже не содержащий никаких ссылок ни на образование, ни на что другое, чего у меня нет, и перечисляющий только то, что есть. Говорит, что вот слегка (это он называет слегка!) исправленный и улучшенный вариант, высланный вам на одобрение и утверждение. Мораль: не занимайтесь чепухой и предоставьте писать резюме профессионалам. В конце концов это их работа, они умеют ее делать и делают намного лучше тех, кто пишет резюме от случая к случаю или не пишет вообще.
Но самое интересное впереди. Начали меня спрашивать за языки. А вот с языками у меня еще хуже, чем с образованием. Сказал, что знаю только C и x86-asm (хотя на самом деле, более или менее сносно изъясняюсь на C++, Delphi, Perl, начал учить Python и C# и уже вовсю программирую на них, но… одно дело программировать, используя некоторое подмножество освоенных языковых возможностей, а другое – знать весь язык целиком). Были и другие вопросы, на которые приходилось отвечать: нет, не знаю, не сталкивался, первый раз слышу, ой, а это мне реально не по зубам.
И что же – по результатам собеседования мне назначают интервью по телефону с конкретным специалистом, причем довольно крупным специалистом, если даже не сказать широко известным (кстати, заочно мы были знакомы – я исследовал его разработки, а он читал мои книги). Разве не логично, что после ~90% негативных ответов меня следовало похоронить, закопав в землю на три метра. Так ведь нет! Вопросы задавались вовсе не для того, чтобы «завалить», а просто выяснить области, в которых может работать человек, чтобы решить, каким образом его выгоднее всего использовать. Лично мне (как уже говорилось выше) предложили писать скрипты/плагины для IDA-Pro, что не требует глубоких знаний C++ и прочих технологий программирования, зато требует знания самой IDA-Pro. И как раз таких специалистов фирме и не хватает. А по Java, высшей математике и криптографии у них уже имеется полностью укомплектованный штат, свободных вакансий нет и в обозримом будущем не предвидится. Так что попытка претендовать на владение высшей математикой никак бы не изменила статус-кво (все равно мне предложили бы обслуживать IDA-Pro), зато первая же проверка моих «знаний» математики вылилась бы в вопрос «а IDA-Pro вы тоже так хорошо знаете?!»
И вот телефонное интервью. Проблема в том, что я как Му-Му. Все понимаю, но ничего не говорю. Английский со слуха – это у меня без проблем. Фильмы без перевода, интернет-радио – все это давно пройденный этап. Но одно дело – знать, как произносятся слова, и совсем другое – уметь их произносить. Мы общались с полчаса, обсуждая самые различные и неожиданные аспекты: от форматов CD/DVD и отличий MPEG-1/MPEG-2/MPEG-4, до виртуальных машин, обфускаторов, особенностей написания драйверов под Windows, Linux, BSD и т. д. Своего собеседника я понимал без проблем, но вот он меня (как выяснилось из дальнейшей переписки), не то чтобы совсем не понимал… скорее просто догадывался, разбирая только отдельные слова и ключевые термины.
Вывод: не стоит бояться, что вас не поймут или «приговорят» за плохой английский без суда и следствия (хуже своего разговорного английского я ничего представить не могу). Если в человеке заинтересованы – все будет ОК. К тому же, как выяснилось, интервью проводится вовсе не для проверки знаний, и оно совсем не похоже на экзамен. Вопросов по существу так и не задали, позже объяснив это тем, что гораздо важнее определить, как себя ведет собеседник – погружается ли в глубокую задумчивость, начинает ли лепетать: нам такое не задавали, мы такое не проходили или же не позволяет застать себя врасплох.
Приложение
Ловим рыбу – маленькую и большую
Какую из двух фирм выбирать: маленькую или большую? И какие принципиальные отличия между ними? Первое, что приходит на ум: план работы крупной фирмы расписан менеджерами лет на пять вперед, и попытка проявить инициативу, как правило, давится на корню, потому как менеджеры страшно не любят брать на себя ответственность и рисковать, а всякая инновация – это всегда риск, причем весьма значительный. И зачем менеджеру создавать себе лишние проблемы? Оправдывайся потом в случае неудачи. А так всегда можно сказать, что задача была спущена сверху и мы решили ее надлежащим образом в установленный срок (ну или не совсем в срок, но все-таки решили), а то, что задание было изначально бредовым – ну так мы не уполномочены выносить такие заключения. Чем вы там наверху думали?!
Небольшие фирмы намного охотнее идут на риск и иногда ставят на карту все имеющиеся у них резервы. Неудача означает крах, удача сулит резкий взлет. Реализовать свои амбициозные идеи легче всего именно в мелкой фирме. К тому же… мелкие фирмы очень любят расплачиваться не деньгами, а… акциями, которые вызовут смех на бирже и вообще ничего не стоят. Я тоже могу выпускать акции, если сильно захочу. Ну и что? А то – если мелкая фирма однажды станет большой и могучей, то все, кто был в ней с самого начала (когда акции летали налево и направо), автоматически превратятся в миллионеров. Естественно, если фирма свернет свою деятельность, то акции уйдут в мусорное ведро.
Однако чем амбициознее проект, тем больших ресурсов он требует для воплощения в жизнь (а потом его еще и на рынок проталкивать надо). Крупные фирмы имеют практически неограниченные резервы, и очень часто после сдачи одного проекта (когда высвобождается большое количество программистов) менеджеры кидают их на любой, даже заведомо провальный проект просто потому, что людей нужно чем-то занять. Уволить их, а потом вновь набрать для очередного проекта – это вообще не вариант, поскольку крупные фирмы подбирают кадры, как алмазы в корону.
Здесь Русь, здесь русским духом пахнет!
Мне дают зарплату за то, что хожу на работу. Если еще и работаю, то премию.
(c) Юрий Никитин
И какой русский человек не любит обсуждать законы, которые он не читал, читать не собирается, но совершенно уверен, что законы написаны так, как ему это кажется, исходя из логики, здравого смысла и веры в справедливость. Между тем купить КЗоТ (или взять электронную версию в Интернете) однозначно стоит, потому как, почитав обозначенный документ, стандарты на языки программирования (написанные на буржуйском языке) можно прямиком отправлять в топку – за ненадобностью.
Краткий ликбез. Уволить человека, знающего законы и умеющего отстаивать свои права, намного дороже, чем терпеть его присутствие на работе и платить зарплату (вместе с премией) за имитацию бурной деятельности или даже за отсутствие таковой. Если не брать в расчет управленческий персонал, то рядовые кодеры вообще ни за что не отвечают. Вот и пускай кодят как умеют, а работает ли программа или нет – за это у руководства голова болит. Штрафовать за ошибки в коде или срыв плана КЗоТ не позволяет. Можно, правда, лишить премии, но! Это необходимо обосновать с учетом кучи подзаконных актов. Кодер всегда может сослаться на плохое руководство, отсутствие четкой постановки задачи и т. д. А знаете ли вы, что за увольнение беременной женщины в Уголовном кодексе предусмотрена специальная статья? Руководители фирм до сих пор на свободе только потому, что большинство наших граждан законов не читали, а свои права отставить в суде не приучены. О господи, ну где же их манеры? (Зачем увольнять человека, когда можно создать ему такие условия, чтобы он ушел «по собственному»? Известен случай с японским концерном, который, получив от суда требование восстановить уволенного на работе, взял и посадил его в будку у входа на завод со служебным заданием «ничего не делать». Зарплата выплачивалась регулярно, но недолго – через пару месяцев человек слег в больницу с нервным расстройством. Оплачивали ли ему больничный и должны ли были, по японским законам – этого я не знаю. – Прим. ред.)
Конечно, если фирма выплачивает сотруднику минимальный оклад плюс процент от продаж, то теоретически у него создается мотивация работать хорошо и кодить с утра до полуночи, потому как – не будет продукта, не будет продаж, не будет и денег, но практически такая схема работает только в небольших фирмах, а по мере роста штатов дает сбой, ибо оценить вклад каждого сотрудника в общее дело, назначив ему соответствующий процент, нереально сложно, да и плевал он на фирму и на этот процент. Маленький винтик большой машины никак не влияет на объемы продаж. Какая разница, сколько строк кода он напишет за день и сколько багов уйдет в релиз?! Успех всего мероприятия в целом зависит в первую очередь от бригады маркетинга, везения и реакции конкурентов.
Другими словами, в России есть реальная возможность ходить на работу только затем, чтобы слушать музыку (в наушниках, конечно) и лениво водить пальцами по клавиатуре. И получать за это зарплату. Пусть только попробуют не платить или (страшно сказать) выгнать с работы. Им же самим дороже выйдет.
А вот «свалив» за рубеж, там… ага! Правильно! Там наш КЗоТ отдыхает, и приходится работать, вкалывая по полной программе, кодируя за троих, а получая за одного без всякой правовой поддержки со стороны государства, позволившего вам приехать в «их» страну только затем, чтобы улучшить положение своих рабочих и бизнесменов, а потому надеяться, что «там» вас ждет райская жизнь, право, не стоит, а то с разочарования можно и с моста сигануть, до конца жизни расплачиваясь с бригадой спасателей и врачей из «скорой помощи».