Behind the scenes: как работают программисты в разных странах

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

«Они кормили вкусно все дни, кроме среды»

Об условиях, трудностях и перспективах работы программистом в США, рассказывает Евгений, Principal Engineer в компании Amazon.

Я занимаюсь Software Development’ом 25 лет примерно. Должности были очень разные в жизни. Я начинал как software-engineer, потом довольно быстро дорос до позиции вице-президента в небольшой компании. Сейчас я решил сфокусироваться на технической стороне работы, и поэтому меня называют Principal Engineer.

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

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

У меня в жизни было три длинных периода. В компании Amazon я работаю недавно, месяцев семь. В первый период я занимался Computer-Aided Design Software’ом (это программы, на которых инженеры разрабатывают моторы для автомобилей и тому подобное, любые вещи, которые на станках потом производятся). Второй период – этоOperations Research and Logistics. Моя компания работала над расчетом расписаний для разнообразных грузовых машин. Третий период – финансовая индустрия. Я занимался трейдинговы мисистемами. И вот сейчас я вернулся в Operations Research, потому что в Amazon я занимаюсь не веб-сайтом, а Supply Chain Optimization. То есть мы вычисляем, как и куда лучше послать продукты, какие склады использовать и прочее. Это, на самом деле, довольно хитрая задача, потому что очень-очень много всяких, совершенно неоднородных, складов: у каждого из них свои собственные возможности, роботы, и, естественно, много разных компаний, которые можно использовать для того, чтобы отправить посылку.

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

Еще в школе я увлекался программированием, уже что-то умел. В тот момент меня устроили знакомые. Меня взяли меня на работу и дали 7,50 долларов в час. Потом выяснилось, так сказать, что у меня есть способности; ответственность выросла, и зарплата тоже.

Есть много разных способов найти здесь работу. Например, в Amazon я попал через LindkedIn. Программистом в Америке устроиться не сложно, но, к сожалению, многие компании сейчас используют некую систему интервьюирования, через которую легко пройти, если ты ее хорошо знаешь. Человеку, который не знает, как это работает, намного труднее. В частности, есть совершенно конкретный пример. В одной из последних компаний я шесть лет работал с человеком, профессиональный уровень которого оцениваю очень высоко. Когда я узнал, что Amazon нанимает людей из-за рубежа, то немедленно сказал: «О, я знаю замечательного человека!» Его резюме ввели в систему, с ним поговорили, и он не понравился. Причем интересно, что он не понравился не потому что язык был неадекватный; он не прошел по аспекту «coding», что для меня стало сюрпризом. Мы шесть лет с ним писали вместе, и мне было очень комфортно с ним работать. Я по этому поводу поднял некий шум, и мне сказали: «Ну, давайте ему позвонят еще раз, кто-нибудь другой». Ему снова позвонили, и опять, похоже, он не прошел по этому же аспекту. Ну а я-то совершенно точно знаю, что он хороший программист. Но в этом Amazon не виноват. У них (в США) такая система сейчас. Они делают две вещи: во-первых, они заставляют человека написать небольшую программу во время интервью. Это делают обычно на доске. А во время Hone Screen это делается с помощью специальных программ, которые позволяют людям одновременно печатать код и смотреть на него. Но интервьюеры часто, мне кажется, либо дают задачу, которую трудно решить, если не знать решения сразу, либо просто ждут какого-то совершенного решения. Я не думаю, что этот метод плох, но мне кажется, что ты при этом должен как бы «искать» в человеке. Не надо ждать совершенного решения, надо смотреть, как он думает. Если бы я его проверял, и он мне по этим параметрам подошел, я бы его пропустил, даже если он не написал замечательный ответ, который я от него ждал.

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

Между прочим, я в свое время, после той первой работы (я там проработал 10 лет) пошел на курсы, где меня научили проходить интервью. Я за них, наверное, слишком много заплатил тогда, но, тем не менее, это вещь нетривиальная. Я вообще не имел представления об этом. Но вот зачем-то этому нужно учиться. Это кажется странным: ты же не берешь на работу человека, который умеет проходить интервью. Но у меня стойкое ощущение, что сейчас все компании этот метод используют.

Работу проще найти в городах-центрах Software Development. В других может быть намного труднее. Чтобы можно было работать из дома или из другого города – это бывает очень-очень редко. То есть сейчас компании хотят как бы «запихать» всех в одну большую комнату, чтобы люди могли общаться и обсуждать текущие рабочие моменты. В Америке я ощущаю тенденцию сажать людей в одно место, создавать так называемые рабочие команды. И методы, которые используются при этом, настроены на то, чтобы люди находились в одном пространстве. Есть популярная система Agile, по которой каждый день все встречаются и быстренько на ходу решают сиюминутные проблемы (это называется stand-up). Естественно, тот, кто не может присутствовать на этом «стендапе», может позвонить и находиться на нем с помощью телефона. Но... Это не поощряется.

Вот в Остине, где я сейчас живу и работаю, и где один из основных центров по развитию «софтвера», есть такая шутка: «Как устроиться программистом в Остине? Ответ: выйти на перекрёсток и шепнуть «я -программист»

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

Есть два класса работ, которые тут, в Америке, востребованы. Первый – это создание бизнес-сайтов, и это очень сильно связано с пониманием самого бизнеса. То есть программисты, которые в этой сфере заняты,— они очень интересуются структурой самого бизнеса, и у них есть идеи по этому поводу. Второй класс работ – это анализ больших баз данных. Огромное количество данных собирается, и люди пытаются какой-то смысл из этих баз извлечь. Это основные русла.

Есть очень разные компании. В среднем, условия обычные. Приходишь в офис, работаешь, люди общаются друг с другом... Ну, если говорить о заботе компании, то я не знаю… Ничего особенного обычно не происходит. Может быть, Christmas Party... Есть, безусловно, исключения. Тот же Retail Me Not. Они старались что-то сделать для того, чтобы людям было приятно ходить на работу. Они кормили вкусно все дни, кроме среды. Иногда устраивали какие-то смешные соревнования и так далее. Ну и кофе давали бесплатно. А Google – насколько я понимаю, это предел (я сам там не работал, но друг работает) – они там организуют какие-то путешествия, у них есть станция с книжками-раскрасками, куда можно пойти и «пораскрашивать» книжки, и в общем все, что можно только придумать, там есть. Amazon, можно так сказать, не балует. Здесь такая сравнительно аскетическая обстановка: бесплатной еды, допустим, нет. Но условия хорошие, люди тоже.

Программисты здесь нужны. Вот в Остине, где я сейчас живу и работаю, и где один из основных центров по развитию «софтвера», есть такая шутка: «Как устроиться программистом в Остине? Ответ: выйти на перекрёсток и шепнуть «я программист». Но нужно все время следить за современными технологиями. Сейчас люди стали активно использовать различные платформы и языки, и от человека ожидается, что он может влезть в какие-то совершенно неизвестные ему язык или платформу, это все выучить достаточно быстро и начать пользоваться. Его могут перевести из одной команды в другую, с совершенно другой спецификой, и если ты начнешь плакать и просить, чтобы тебя научили, послали на курсы, тебя пошлют, но только не на курсы. В этом заключается сложность профессии, особенно сейчас. Это не просто навыки или какое-то ремесло. Ты должен все время стиснув зубы, каждый день, учиться чему-то новому. Выдерживают это только те, кто на это способен. То есть сегодня будет один язык, завтра другой. Более того, не везде будет один и тот же язык, а в каждом месте свой, в каком-то смысле. Основные языки, на которых сегодня программируют, это Python и Java, и… Еще 30 других. Но это все скучные вопросы. Вот если бы я был рок-звездой, я бы рассказал что-то более интересное.

«Ты не можешь прийти и тормозить себя и других»

Мы решили задать те же вопросы программисту, который работает в России. Курсомания побеседовала с Сергеем, специалистом по разработке игр в компании Game Insight. Он рассказал порталу об особенностях приема на работу в Москве, популярных специализациях и о том, как сделать старт в профессии.

Я начал с разработки сайтов – это такая посевная работа. Очень многие начинают с сайтов. После этого у меня был двухлетний период, когда я занимался стартапами: мы с другом делали Digital-агентство. Сейчас работаю в компании, которая занимается разработкой игр. По-моему, она до сих пор крупнейшая в своей сфере в СНГ.

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

Требования к соискателям очень зависят от специфики компании и ее внутренней политики. Ближайший пример - это отбор в «Яндексе» или в Nvidia (в его московском офисе). У меня есть знакомый, который проходил собеседование в обеих компаниях. И там, и там важно, чтобы у программиста было инженерное понимание своей профессии. Тебя спрашивают алгоритмы, смотрят, как ты думаешь, потому что для них приоритет – твое умение решать задачи, а уже потом, собственно, программирование. Если ты устраиваешься верстальщиком, да и вообще в веб, то к тебе будет больше практических требований. Попросят в тестовом задании что-то сделать, и это задание закроет почти все вопросы, касающиеся твоего профессионализма. В нем будут обязательно какие-то основные топики, которые ты встретишь в работе в будущем. Когда я сам набирал людей на эту вакансию, мы придумали простое задание – сделать редактор для рисования. Условно говоря, если ты собираешься разрабатывать мультиплеерную игру, тебя с большой долей вероятности попросят сделать что-то, связанное с сетью.

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

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

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

Серьезной культуры подготовки программистов ни в одном вузе нет. Отсутствие практики в вузах – это проблема системы образования вообще. Ну и, собственно, кто будет готовить программу для обучения специалистов по веб-программированию? Те, кто занимается веб-дизайном,— они им и занимаются. Как правило, если в вузе происходит что-то более осмысленное, чем чтение по методичкам, это инициатива самих преподавателей. Если человек хочет зарабатывать на жизнь программированием, то ему приходится самому к этому идти. То есть, скорее всего, придется найти работу, устроиться «джуниором» и самому получать опыт. Во многих специальностях тебе чуть ли не скажут, куда пойти работать, отправят на практику. В программировании такого нет, к сожалению.

У меня спрашивают, как начать заниматься «гейм-девом». Я отвечаю: открываешь сайт «Юнити» (там есть такой раздел – Tutorial), смотришь 10 видеоуроков пятиминутных и все. Что хочешь, то и делай дальше. Ты получишь реальный опыт и поймешь, надо тебе это или нет.

Программирование в Москве – достаточно перспективное дело. Не в последнюю очередь потому, что все, связанное с программированием, в тренде: фейсбук, игры. Все это на слуху, деньги приносит и интересно. Веб – де факто самая популярная и самая широкая сфера и по количеству специалистов, и по занятости, потому что это и веб-студии, и рекламные агентства, и еще миллион разных компаний, которые так или иначе с ним связаны. Ну и корпоративный рынок на втором месте, то есть либо B2B, либо B2C: то, что называется софтом. Это самый большой рынок, об этом говорит статистика использования языков. Самый популярный, как мы видим, JavaScript — вкупе с вёрсткой, HTML и CSS. Это актуальная информация, сайт выстроен таким образом, что когда люди вешают свой код, он автоматически определяет, на каком языке он написан. И она актуальна, в том числе, для российского сообщества программистов, потому что последние лет 5 они работают в таких же реалиях, что и мировой рынок.

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