Я уже писал две статьи о том как переходил с .NET на Java (тут и тут). Сегодня хочу рассказать про другое направление, которое я развиваю. (И устроить неформальную перепись казахстанских коллег на Хабр). Помимо разработки я занимаюсь развитием инженерного сообщества в Казахстане: помогаю нашим деврелам с темами митапов, веду панельные дискуссии на конференциях и запустил видеоподкаст «Разговор инженеров». В подкасте общаюсь с  IT-специалистами казахстанского происхождения, и прошу их поделиться лайфхаками о своей карьере и работе. Правда пока мы записали всего один выпуск. Зато гостем был Аман Утемуратов — казахстанский программист, работающий в цюрихском офисе Google.  Выписал важное из разговора, надеюсь, это будет полезно. Мне кажется, что сообщество как раз строится на интересных историях о коллегах, помощи друг другу и неформальному общению.  Сейчас Аман software-инженер в цюрихском офисе Google, хотя он не всегда хотел быть программистом. Скорее даже наоборот. В детстве говорил, что не хочет целыми днями сидеть за компьютером. Ему казалось, что программист — это крупный волосатый парень, который уже месяц не мылся, у него жирные пальцы и длинные ногти. В его комнате темно, рядом стоят чипсы и кола.  Когда пришло время выбирать университет, папа помог советом. «Сын, смотри как всё компьютеризируется, эта профессия точно будет популярной. Иди в IT-технологии». Аман пошел учиться и не пожалел. Оказывается то, как выглядит программист, зависит только от него самого, а профессия сейчас и правда одна из самых востребованных.  Аман работал в Казахстане в Казкоммерцбанке, но позже уехал в Европу. Ему хотелось работать с высоконагруженными проектами, но в Казахстане раньше таких сервисов не было. Он начал испытывать чувство, что не может до конца раскрыть свой потенциал, и решился на переезд.  К тому же раньше в Казахстане совсем не было IT-сообщества. Сообщество зарождается только сейчас, что значит в ближайшие пару лет, в стране будет сильное IT-community, которое сможет решать глобальные и мощные проблемы. До Google Аман работал в компании Booking в Нидерландах, где был бэкендером. В Google перешел во frontend, сейчас он в команде YouTube AdSense. Кстати, работа в команде фронтенд не означает, что заниматься нужно чисто фронтендом. Задачи могут содержать все: начиная от бизнес-логики до юзера. Стек Амана — Java для backend и Dart для frontend. По словам Амана его главная задача в Google — решать проблемы, связанные с IT. Они делятся на два вида: кодинг и общение с людьми. 50 % времени он общается с людьми, решает проблемы, пушит задачи, и 50 % времени уходит на то, чтобы покодить и закончить решение, которое запушил.  Google не придерживается какой-то одной методологии работы, будь то скрам или эджайл. В компании всё очень гибко: кому что лучше подходит, тот так и делает, и каждый занимается своими обязанностями.  Например, PM в самом начале делает документацию и получает апрув на внедрение. Дальше инженеры создают дизайн и архитектуру. После этого вся команда оценивает решение и начинает писать код.  В Booking работали по agile: скрам-мастер, стендапы, недельное планирование, ретро.  Такого как в Казахстане, когда есть «универсальный солдат», делающий сразу всё — нет. В европейских компаниях люди максимально разделены. Есть те, кто занимается базами данных или отвечает за какой-то сервис, UX-дизайнеры и т.п. «Разнорабочих» нет, каждый сотрудник следит только за своими обязанностями. Конечно, бывают ситуации, когда нужно быстро поправить что-то мелкое, но глобально у каждого своя задача.  В Google принято использовать готовые решения, и их хватает практически на любую ситуацию.  Аман: «Я уже не помню, когда сам писал код — наверное, это было на собеседовании. В работе, если напишешь что-то сам, тебе скорее скажут: “Вот тебе ссылка, почитай. Давай, как там сделаешь, чтобы унификация была”. Это удобно, чтобы, если что-то поменялось глобально, не приходилось менять в каждом коде, который люди напилили сами». Большинство сотрудников Google и Booking не выгорают и даже не чувствуют выгорание. В Европе следят за тем, чтобы у сотрудника был баланс работы и личной жизни. Есть различные тренинги, которые помогают наладить этот баланс.  Аман: «Один раз была такая ситуация. Я отправил код на ревью в час ночи. С утра меня “поймал” менеджер и сказал: “Ты что ночью работаешь? Ты же обычно днем работаешь! Давай, лучше отоспись. Тогда будешь работать более продуктивно, ты нам нужен здоровым”. Это приятно». Круто, что и в Казахстане начали за этим следить. Такое есть уже в нескольких наших компаниях. Точно могу сказать про Beeline, где 10 % рабочего времени сотрудник может тратить на самообучение, конференции, создание собственного Pet Project или другие инициативы, чтобы не занимать этим личное время. Аман: «Еще я думаю, что люди из Казахстана вообще не выгорают. Потому что они много видели». Booking — это бизнес-компания. Главная цель бизнеса — заработать, продавая гостиницы, хостелы и квартиры. Поэтому к разработке относятся как к бизнесу: лучше быстро запилить фичу и протестировать ее в бою. Раньше даже не писали тесты, сначала выкатывали и уже экспериментами доказывали, нужно ли продолжать разработку.  Google — технологическая компания. Поэтому код должен быть оптимальным. Проверяют и комментируют каждую запятую, если что-то написано плохо, нужно исправить. В Google люди реально обмениваются опытом и улучшают то, что сделано.  Это главная разница в компаниях. Если хочешь делать всё по науке, лучше работать в Google, здесь чувствуется мощь компании и экспертиза. Если хочется драйва и проверять гипотезы в бою — это больше к Booking. Придумал — запилил — выкатил. Как и в любую компанию — откликнуться на вакансию. Но есть нюанс. Можно прислать свое резюме на общую почту, а можно найти реферала и попросить передать твое резюме в HR.  Реферал — твой знакомый, который уже работает в Google (это может быть очень дальний знакомый). Подача резюме через реферала не гарантирует, что вас возьмут на работу, но это гарантирует, что HR точно увидит и посмотрит на ваше резюме. Так вас запомнят и скорее всего пригласят на собеседование, если резюме хорошее. Аман попал в Google именно так. А вы теперь знаете Амана, поэтому можно попытать свои силы в Google. Глобально есть два этапа. Первый — это телефонное интервью. В нем дают задачки на алгоритмы и структуру данных. Второй этап — очный. Тебя зовут в офис, и там ты общаешься с инженерами. Этот этап делится еще на пять: behavioral-интервью и четыре технических собеседования. На них спрашивают алгоритмы, структуру данных, дают разные задачи.  Сами задачи секретные, но темами поделиться можно. У Амана темы были на графы, бинарный поиск, было динамическое программирование на графах. Если соотнести это с платформой Lead Code, одна задача была простая, три среднего уровня и парочка сложных.  Софт-скиллы в международных компаниях — это очень важно. Скорее всего многие ребята из Казахстана, которые хотят попасть в Европу или США, пренебрегают их прокачкой и «сыпятся» на собеседованиях. Особенно у наших ребят страдают коммуникации.  Мы привыкли, что работая программистом, 99 % твоего времени занято кодингом. В международных компаниях над проектами работает много людей, поэтому нужно общаться с другими инженерами и приходить к каким-то общим решениям. Плюс приходится много общаться на планерках и вообще разговаривать. Иногда нужно «пропихнуть» свое решение, иногда убеждать кого-то, иногда нужно быть flexible. Но почти всегда нужно аргументировать свое мнение и уметь постоять за свое решение, главное — не жестко. Софт-скиллы отлично проверяются на собеседовании. И тут сыпятся многие наши ребята. Например, интервьюер дает задание очень абстрактно и поверхностно, а кандидату нужно задавать правильные вопросы, чтобы раскрыть суть задания. Так проверяется скилл «коммуникации».  Важная рекомендация: качайте софт-скиллы. Выступайте на митапах, общайтесь с коллегами, ходите на стендапы и рассказывайте о том, что вы делаете. Это поможет найти работу в сильной компании.  Скорее нет, чем да. Но, конечно, может. Например, есть целые методички «Как попасть на работу в Google», если ты их все прошел, понял логику задач и готовишься к интервью, это повышает твои шансы.  Аман: «Я сам готовился к интервью и решал задачи перед тем, как пойти на собеседование».  В любом случае задачи на собеседовании — это не тест, как в школе. Здесь ты должен не просто дать ответ, но и написать чистый код без багов и объяснить логику своего решения. К тому же одного кандидата суммарно рассматривают 5–8 человек, их главная задача — определить уровень знаний интервьюируемого.  А вот тренировки до собеседования — это хорошо. Чем больше тренируешься, тем лучше программируешь. Программирование — это творческий процесс. Нельзя пойти, отучиться и стать крутым разработчиком. Нужно гореть этим делом и иметь желание постоянно что-то менять и улучшать.  Это не обязательно, так как все решения в компании уже готовы, но навык все равно пригождается. Например, глубокое знание структуры алгоритмов данных помогает когда читаешь чужой код, лазаешь в core-библиотеке и смотришь как все организовано. Тогда становится более-менее понятно, с чем работаешь.  Аман: «Кстати, в университетские годы я вообще не занимался задачами и спортивным программированием. Я начал решать задачи после того как решил, что хочу уехать за границу. Почитал, что нужно решать задачи, чтобы попасть в крутую компанию. Поэтому тупо решал задачи в свободное время». Решать задачи. Научиться объяснять свои решения. Писать чистый код.  Полное видео разговора с Аманом можно посмотреть в нашем ютуб-канале. В самом начале Аман говорит по чему из Казахстана он скучает больше всего (конечно, по еде). Там же есть ответы на вопросы из зала и чуть больше информации о плюсах и минусах работы в Google. И еще, подскажите в комментариях, кого из казахстанских инженеров пригласить в подкаст? Если вы сами хотите о чем-то рассказать — пишите в комменты, личку на Хабре или в телегу нашей DevRel Свете. Разработчик