Сколько ты прошел интервью? Телефонных интервью у меня было столько, что к концу я уже даже не отрывался от своего хачинья бинарников, сидя возле компа за повседневными делами и прижимая трубку плечом к уху. Уж даже не помню, о чем мы там говорили. А потом как-то резко интервьюировать перестали, а сразу стали предлагать офферы. Вот эту фазу запомнил четко. Видимо, чисто спонтанно на подсознательном уровне у меня выработалась привычка снюхиваться с кадровичками, чтобы им все становилось ясно без всяких тупых вопросов, — просто большая практика и ничего больше. Хорошо, двигаясь дальше, предположим, ты получаешь оффер, что происходит после этого? Задаю вопрос манагеру: «А как насчет того, чтобы самому увидеть место предполагаемой жизни и работы?» Вот как происходило со мной во многих фирмах. Сначала пускают в офис и говорят ничего не делать. Ну, я то к одному сотруднику подсяду рядом, то к другому. Смотрю, что они делают, как программируют. Что-то спрашиваю, что-то предлагаю переписать. Так проходит несколько дней. Затем пиплы пишут свои впечатления манагерам. Последние выносят решение. После чего появляется кадровичка и называет такую цифру, которая очень далека от средней по рынку (в большую сторону). Но иногда меня это не возбуждает, ибо пиплы за ланчем только о политике и треплются, и меня уже тошнит от них, и мне совсем не улыбается дальше с ними работать. А бывает и наоборот — все просто клево, ну вот просто клево и все. Но... опенспейс и никакой приватности. Абыдно. Или хороший офис и коллектив, да и зарплата ничего, но сам город действует угнетающе (как на меня действует Пекин, например, откуда я поспешил быстро убраться). Слушай, для многих интервью — это как экзамен, ты же превращаешь все в балаган. Интервью — это и не экзамен, и не балаган. Вопросы в правильном собеседовании составляются так, чтобы понять, какую предметную область покрывает кандидат и какую не покрывает. Как бы и не предполагается услышать ответ на все. Например, меня раз очень усердно пытали по крипто (скорее всего потому, что зашел в компанию, специализирующуюся на «криптографик ресерч»), на что я честно сказал, что прочел пару популярных книжек, но не осилил. В ответ поступает оффер. «Ну как же так?» — от неожиданности офигел я. Объясняют — знаете, штат по крипто у нас укомплектован и расширять мы его не планируем. Даже если бы вы ответили на все крипто-вопросы, мы бы вас на эту тему все равно не взяли. «А на какую тему вы меня берете?» «А вы вот скрипты для IDA Pro писать умеете?» «Ну, да. Умею. Так это ж фигня». А вот и не фигня — отвечают категорично. Им это очень нужно, а никого так и не нашли. Как успешно пройти собеседование? Есть какой-то максимально общий совет для наших читателей? Для успеха на собеседовании достаточно просто представлять, как работает бюрократическая машина, и следовать тропами ее лабиринта, который на самом деле не лабиринт, а work flow. Начнем с того, что это вообще за идиотизм такой вы у меня спрашиваете — «как пройти собеседование»? Пройти только затем, чтобы оказаться первым кандидатом на увольнение? Давайте уж расширим вопрос до «как пройти собеседование, устроиться на работу и удержаться на ней (и не застрять на первой же ступеньке карьерной лестницы?)». «Устроили тут гестапо» — такой вывод можно сделать из вашей постановки вопроса. Типа собеседование — это смертельная схватка, которую нужно выиграть любой ценой. На самом деле все проще. На нормальном собеседовании смотрят ваши сильные и слабые стороны. И если (допустим) фирме нужен человек в отдел быстрого прототипирования, а вы тугодум, хоть и пишете программы, работающие с первого раза, то, очевидно, было бы безумством стремиться на данную позицию. Равно как и наоборот. А если вы сразу с порога заявляете, что вы очень крутой, то к вам и спрос будет соответствующий. А вот Мыщъх обычно скромно мямлит, что он только хочет попробовать чучелком или тушкой, и никто не пытается его подловить. Серьезно. Я уже говорил и повторю еще раз из уважения к читателю — на многих работах, куда я собеседовался, все тестовые задания я провалил в том или ином виде. Практически наглухо. Но слив не зачли и сказали эйчару — не обращайте на это внимания, это у парня комплексы, это он считает, что он провалил собеседование, а мы (работодатели) считаем иначе. Тут ведь понимаете, в чем суть. Если в ответ на запрос ТЗ предоставить его образцовую реализацию, то вас могут из принципа и зачморить, придравшись чуть ли не к оформлению комментов. Заставь дурака богу молиться, он же себе и фаберже расшибет. А если вы сразу скажете — у меня ни фига не получилось, но кое-какие мыслишки все-таки возникли и я вот тут их набросал в таком скомканном виде. Так как все равно это провал, я сильно не старался, но вот посмотрите, тут есть пара интересных моментов. И вот уже в этих моментах максимально раскрыть свою самую сильную сторону, зажечь там напалмом так, чтоб аж самого перло. Клянусь своим хвостом, это работает. Утверждаю как матерый грызун, ибо в период с 2008 по 2010 год я собеседовался в дюжине стран и контор как по телефону, так и очно — это всегда срабатывало. Первое впечатление было всегда не в мою пользу (и я смирился с этим), ну уж потом на выходе я и сам не знал, как сделать так, чтоб они все отстали. Ибо их (офферов) много, а я — один. Поэтому рекомендую постоянно тестировать свои способности и навыки, чтобы находить в себе свои личные сильные стороны (то, что вы делаете лучше всего, а в идеале лучше остальных) и развивать их, целенаправленно прокачивая. Не хвататься за первое попавшееся предложение, а мыслить стратегически, не сиюминутным рублем... вот я (ну о ком мне еще говорить, как не о себе?) на протяжении десятков лет, сидя в своей деревне, нес существенные финансовые потери. Ну, пусть не десятков. Но лет пятнадцать — точно. Зато теперь прицениваюсь к самолетам (реактивным) и смотрю, сколько стоит аренда места в ангаре. На дом еще не скопил, но квартиру могу купить в любом штате свободно, только не хочу терять мобильность. До сих пор воспринимаю зарплату как мелкие карманные деньги, работая на далеко не самой оплачиваемой работе, но зато на своем месте, где я всему активно учусь и развиваюсь. Но у меня свой собственный расчет. Он — дальновидный.Подводя итог: основная стратегия, о которой я тут втираю, — это не тянуть свои скилзы под абстрактные требования, а, наоборот, развивать в себе свои лучшие качества. «Не стоит прогибаться под изменчивый мир — пусть лучше он прогнется под нас». Сначала стоит достоверно выяснить, что у вас получается лучше всего (в идеале лучше, чем у большинства), а затем — интенсивно копать в этом направлении. Если говорить предельно кратко, чем отличается типичное американское собеседование от российского? В России на собеседованиях часто пытаются раздавить, любой ценой показать, что ты ничего не понимаешь, — чтобы снизить зарплату. Людей там не ценят так, как деньги. Здесь, в США, чаще всего наоборот: если видят, что ты стоящий специалист, в тебя вцепляются мертвецкой хваткой и больше не отпускают, предлагая лучшие условия на рынке и идя во всем навстречу. Что же касается наболевшего — это общая специфика РФ, — там мало продуктовых компаний и еще меньше компаний, в которых постоянно появляются линейки принципиально новых продуктов (принципиально новых не технологически, а написанных «с нуля» без «легаси»). Поэтому в РФ разгребание «застоялых говен» входит в job description по умолчанию.
Образование и карьера
Невольно выходим на тему образования, которая всегда актуальна для любого айтишника. Для начала — есть ли у тебя высшее образование в области ИТ? Институтов я не кончал. Я сделал свой выбор и бросил вуз сразу после поступления. До сих пор не знаю, что я упустил и как сложилась бы моя жизнь, поступи я иначе. История не знает сослагательного наклонения. Сейчас с этим проще — самообразование становится очевидным трендом. Диплом — ничто, знания — все. Откуда сегодня можно черпать качественную информацию?
К примеру, на YouTube можно найти множество видеозаписей лекций по computer science от различных лекторов из самых различных мировых вузов. По части информатики с большим отрывом лидирует арабский мир, причем, что показательно, лекции почти всегда на английском. За ними следуют США (с большим отрывом от остальных). При этом легко видеть, что не все лекторы одинаковы: одни объясняют вещи глубоко и понятно, другие же — ущербно и загадочно: у таких можно только вызубрить, сдать и забыть, поскольку пользоваться этим все равно не получится. Отмечу, что кроме знаний институт дает еще и связи, а связи решают все. Потому что после вузов народ разбегается кто куда, а разбежавшись, тянет к себе своих. Впрочем, это сильно зависит от конкретного вуза и страны. В наше время также доступно огромное количество книг... Хороших книг и раньше было немного, и даже сегодня их чуть меньше, чем совсем ничего, а классика так и остается классикой. Например, в семидесятых была одна «Книга Дракона», а сейчас доступны десятки качественных вариаций на тему, но в них от 70 % до 90 % — это пересечения и повторения, а потому первую книгу читаем вдумчиво, остальные бегло пролистываем в поисках различий. Опять же, давай поможем новому поколению сделать первый шаг в эту самую классику. Взять, например, известную книгу Кнута — не все способны понимать изложение алгоритмов, описанных в ней, хотя, знаю, многие усердно штурмовали их. Конкретный пример: Heap sort — несложный, в общем-то, алгоритм, который можно в пять минут объяснить на пальцах, но я столкнулся с тем, что некоторые коллеги не понимают его в наукообразном изложении Кнута. Как правильно грызть гранит науки? — вопрос на миллион для профессионального грызуна Мыщъха. Нужно заказывать похожие или аналогичные книги с Амазона, где их очень много. К примеру, сейчас я углубился в теорию CS и постоянно покупаю кучу разных книг. Большинство из них давно не переиздавались, но можно купить б/у. Среди них попадаются очень и очень хорошие. Вас какие алгоритмы вообще интересуют? Алгоритмов много и все из разных предметных областей, но книг, их описывающих, — еще больше. Взять, например, упомянутого Кнута. Да, у него изложение своеобразное. Но статьи, на которые он ссылается в своей книге, зачастую описывают эти же алгоритмы намного понятнее и доступнее. Многие из этих статей опубликованы в журналах, которых сейчас уже не достать, но сборники таких статей часто доступны в виде отдельных книг. Например, вот: Computer Algorithms: String Pattern Matching Strategies (ISBN-10: 0818654627). В этой книге один и тот же алгоритм последовательно описывается разными авторами и по-разному, что существенно облегчает понимание новичку. Насколько я могу судить, молодое поколение не очень-то много читает, судя по всему, потерявшись в этом информационном изобилии. Согласен. Но сейчас, по крайней мере, есть документация. Есть SDK и куча примеров. А вот в свое время, чтобы заставить CD-ROM проигрывать диски, мне пришлось дизассемблировать пару программплееров, реконструируя протокол, причем так приходилось делать не только мне одному. Информацию собирали буквально по крупицам. Ассемблер x86 я изучал в досовском debug.com путем анализа воздействия команды из реальной программы на флаги, память и регистры процессора. Но у моих предшественников и этого не было. Пионеры информатики не могли почерпнуть знания в книгах, поскольку эти книги им еще предстояло написать. По сути, с тех пор ничего не изменилось, просто линия фронта сместилась. Да, сейчас можно набрать в Гугл вопрос: как развернуть список на Java/.NET/C и получить готовый код для «копи-пасты». Зачастую, даже несильно кривой и рабочий. Но если спросить Гугл, «как написать Гугл», то ничего полезного он все равно не скажет, так как непрерывно совершенствуется, а над проблемой поиска бьются лучшие умы человечества. Лет через надцать об этом можно будет прочитать так же свободно, как сейчас мы читаем принципы построения компиляторов в «Книге Дракона», в результате чего создается огромное множество новых языков и технологий, которые не только создаются, но и выживают в конкурентной борьбе.