Игорь Савчук - Отъявленный программист: лайфхакинг из первых рук
С другой стороны, глядя на все с обывательской точки зрения и ежемесячно готовя людей для подобных собеседований, я вижу, что работает принцип «кому очень надо, тот рано или поздно устроится». Мне эта статистика не кажется удручающей, потому что я вижу, что мои знакомые туда как-то устроились (а некоторые успели даже уволиться, найдя место получше или разочаровавшись), я также сам прошел этот путь и не вижу в нем ничего сверхъестественного. К тому же, если глянуть на темпы найма, то хорошо виден разгон — с каждым годом Google нанимает все больше людей, разгоняясь при этом довольно динамично. Дефицит специалистов на рынке очевиден каждому, значительная часть из этих присланных 3 миллионов анкет — это пустышки или анкеты откровенных новичков, склонных к авантюризму.
Пытаясь вывести некое руководство к действию, я бы резюмировал положение дел так: если вы уверены в себе как в специалисте, то есть имеете за плечами реальный опыт, а не только самомнение, и переживаете исключительно за факторы везения и удачи (а они, конечно, играют немаловажную роль), имеет смысл попробовать. Если к тому же вы молоды, то попробовать стоит обязательно! В плане денег это не будет стоить ничего, но взамен вы получите бесценный опыт. И если для айтишников-американцев трудоустройство в Google — это просто приятный бонус, то для жителей экономически депрессивных регионов, в частности некоторых стран Восточной Европы и Азии, это может радикально изменить их жизнь. Имея большие мотивы, они, как правило, прикладывают гораздо большие усилия, что очень хорошо видно по итоговой статистике трудоустройств.
(После паузы.)
Честно говоря, считаю все, что я посоветовал в этом ответе, отчасти бессмысленным (загадочно улыбается).
На самом деле люди, с которыми я работаю, делятся на две противоположные категории. Самооценка одних останавливает и всячески тормозит их, в конечном счете они не сделают даже, как им кажется, одной жалкой попытки (вне зависимости от их объективного уровня подготовки). Другие, что бы я ни бухтел здесь о шансах в 0,2 %, рассуждают про себя примерно так: «О’кей, настало время поразмять мозги, покажу-ка я этим засранцам из Google, как это делается» (опять же, вне зависимости от их реальных способностей). Чаще всего именно эта последняя категория (на пару с госпожой удачей) все и решает. Все остальные просто трезво оценивают свои шансы.
Тем не менее есть объективные шансы, чисто математическая вероятность показывает, что…
(Перебивает.) Хотите совет не только по Google?
В жизни нужно оценивать не абстрактные математические шансы, ведь, несмотря на все ваши «трезвые оценки», туда ежегодно устраиваются толпы, поверьте, вполне заурядных программистов.
Черт, с моим подходом что-то не так? Кто все эти люди? (Джон вскакивает, шутя изображая меня, пародируя крайнее недоумение.)
(Присаживается и продолжает серьезно.) На самом деле в любом проекте имеет смысл оценивать лишь проходные минимумы. У вас есть английский, у вас есть какой-то опыт, вы уверенно пишете код? — тогда нужно действовать, по возможности не спотыкаясь о свои же дурные мысли. Мяч круглый, игра длится 45 минут — это факты, все остальное — только ваши домыслы и ожидания.
Трудитесь, развивайтесь, верьте в себя. Область видимости локальных переменных в вашей жизни ограниченна, вы не можете принять правильное решение в принципе. Поэтому расслабьтесь, у инкапсуляции есть свои плюсы. Лучше сделайте свою часть работы на максимуме, а дальше, как советует инсталлятор Windows, «откиньтесь на спинку кресла и дождитесь результата».
Спасибо за хороший критерий принятия решений. В заключительной части интервью не подкинете ли свежих вопросов, которые, я знаю, вы систематически собираете на условиях анонимности из реальных интервью в Google?
Вот лишь несколько случайно отобранных вопросов.
• Что лучше использовать при реализации хэш-таблиц: дихотомии или сортировки?
• Почему для сортировки маленьких объемов данных используют алгоритм сортировки вставкой?
• Почему алгоритм сортировки слиянием быстрее других видов сортировки для больших объемов данных?
• Когда и где выгодно использовать связанный список, а когда — обычный динамический массив?
• Пожалуйста, проведите оценочный подсчет примерного количества переключений контекста процессов (context-switch) в течение одной секунды в современной ОС, работающей на процессоре с частотой 2 ГГц.
• В чем принципиальное отличие реализации Сuckoo hashing от стандартных хэш-таблиц?
• Что такое «Cache Hit Rate»?
• У вас есть миллион телефонных номеров. Каждую секунду у вас просят подсказать номер по фамилии абонента. Как бы вы реализовали программную систему для решения этой задачи? Обоснуйте, почему это самое эффективное решение из всех.
Очень много заданий построить максимально удобную и продуманную структуру данных (либо структуру классов) к какой-то конкретной задаче/ситуации. Много качественных вопросов (заданий) можно найти в секции «Алгоритмы» известного программистского сайта TopCoder. Все участники этого сайта, имеющие рейтинг «красного цвета», буквально завалены в своих инбоксах предложениями о работе от ведущих ИT компаний мира.
В завершение этого большого интервью мой финальный вопрос: что советуете отвечать своим клиентам на частый вводный вопрос первичного интервью: «Почему вы хотите работать именно в Google?»
Это коварный вопрос, потому что он с двойным дном, и все, что я могу посоветовать вам, это расслабиться и быть самим собой, не соображая при этом лихорадочно, какой же ответ они хотят услышать. Выясните это для себя заранее, для чего соотнесите этот вопрос со списком ваших идеалов и целью в жизни, а потом просто действуйте.
ГЛАВА 9. Чемоданные построения: Blue Card для айтишников
Сегодня у нас интервью, посвященное, по-моему, вечно актуальной теме иммиграции для определенной подгруппы отечественных ИTспециалистов. В отличие от уже истоптанных целыми поколениями путей-дорожек в традиционные страны типа Америки, сегодня мы рассмотрим в качестве целевой страны Германию. Это интервью — попытка получить более подробную информацию из первых рук по заявленной теме. Благо кое-что грандиозное произошло в 2013 году, что сделало именно эту страну чрезвычайно привлекательной для иммиграции или временной работы на ее территории. Речь пойдет, конечно, о весеннем вступлении в силу на территории Германии так называемой Blue Card Directive (вернее, еще большем упрощении этой процедуры).
Я хочу сразу отметить, что несмотря на то, что многое из того, что мы здесь обсуждаем, имеет справедливое отношение и к другим европейским странам (Blue Card — общеевропейское детище), я все же старался акцентировать внимание именно на Германии.
Сегодня Германия — это безусловный европейский лидер по показателю спроса на людские ресурсы, равно как и европейский рекордсмен по уровню зарплат среди айтишников всех мастей. В силу хронической скудости материалов на русском на тему Blue Card (да и малоизвестности оной в наших краях) я решил внести свою лепту на этой невспаханной пока никем ниве, дабы помочь сделать свой первый и самый сложный шаг тем, для кого это действительно актуально и интересно.
* * *
Итак, на наши вопросы любезно согласилась ответить Виктория Фераджи, бывший специалист одного из подразделений французской миграционной службы, которая имела отношение к разработке проекта Blue Card Directive, а ныне журналистка и просто очень общительный и доброжелательный человек.
Вторая часть материала — многочисленные практические советы и алгоритмы, которые помогут довести задуманное до конца. Это советы реальных айтишников, которые живут и работают в Германии. Я постарался систематизировать их в кратком и максимально информативном виде в конце этого интервью.
* * *
Что такое Blue Card? Каково ее назначение и история создания?
Процедура введения EU Blue Card была запущена Европарламентом в 2007 году. Сначала это был достаточно длительный и осторожный эксперимент на базе Чехии и ряда других стран ЕС, где были предварительно обкатаны все детали этой процедуры.
Постепенно список подключаемых к программе стран Евросоюза расширялся, и на данный момент в зону действия «голубой карты» входят следующие страны в алфавитном порядке: Австрия, Бельгия, Болгария, Венгрия, Германия, Греция, Испания, Италия, Кипр, Латвия, Литва, Люксембург, Мальта, Нидерланды, Польша, Португалия, Румыния, Словакия, Словения, Финляндия, Франция, Чехия, Швеция и Эстония. Апофеозом стало недавнее вступление в зону Blue Card Directive Германии как самого востребованного и крупного людского рынка Евросоюза.