Наш программист за рубежом: вопросы и ответы

Вступление


Работа на Западе привлекает многих наших соотечественников, обладающих профессиональными познаниями в области программирования и желающих реализовать свой потенциал в Европе или Северной Америке. Помнится, автор этих строк отправлялся в своё время на два года учиться за рубеж по программе обмена студентами. Если бы мне довелось поговорить с людьми, которые уже учились там до меня, то адаптироваться было бы намного проще. Да и вопрос - уезжать или нет - вызывал бы меньше сомнений. Поэтому сегодня мы задаём вопросы Андрею Шулинскому - человеку, работавшему программистом в России и уехавшему в канадский Торонто, дабы там продолжить свою профессиональную деятельность...

Интервью


Алексей Перевертайлов: Благо мы с тобой знакомы лично, сразу перейдём на "ты" и менее формальный формат беседы. Первый вопрос - когда ты уехал из России и каковы были мотивы такого, в общем-то серьёзного и у многих людей требующего долгих раздумий шага?


Андрей Шулинский: У моего отъезда довольно долгая история. Решение было принято после печально известного банковского кризиса 1998 года. По ряду причин иммиграционный процесс сильно затянулся, интервью я прошел в ноябре 2001 года, в декабре 2002-го получил визу. Срок её действия истекал в феврале следующего года, так что сразу же поехал в Канаду на пару недель, оформил там необходимые документы и вернулся в Москву. Окончательно же перебрался на новую родину в октябре 2003 года.
Из-за чего я сменил среду обитания? Наверное, ничего нового не скажу. Надеялся на лучшие профессиональные перспективы. Всегда сильно не любил многие особенности российской жизни: бытовое хамство, грязь, нестабильность. Упомянутый кризис был для меня очень сильным ударом, прекрасные иллюзии разбились вдребезги... Я также очень люблю путешествовать, что гораздо проще делать с канадским паспортом.


Алексей Перевертайлов: Сразу ли тебе удалось найти работу? Какие вообще были предложения, которые ты рассматривал, и какие требования предъявлялись к претендентам?

Андрей Шулинский: Первый контракт получил уже в ноябре 2003-го. Помог мой друг. Проект был небольшим, но достаточно интересным и очень помог как психологически, так и профессионально. "Размял мускулы" перед более серьезной работой, которая нашла меня в конце января 2004 года.
Требования, за исключением пресловутого североамериканского опыта, вполне обычные - в двух словах, "знание предмета". :-) К сожалению, многие компании и рекрутеры действительно не любят работать с недавно прибывшими, другие же, напротив, пользуются готовностью новых эмигрантов согласиться на любые условия. Не скажу, что это повсеместная практика, но встречается не так уж и редко.
Меня чаша сия минула, хотя уже был готов идти сканировать документы. Вообще, я всегда себя готовил к тому, что будет непросто и, возможно, придется заниматься не самым любимым делом. Подавал резюме на все позиции, которым оно хоть сколько-то соответствовало.


Алексей Перевертайлов: Программистом какой сферы ты являешься? Какие дипломы и сертификаты у тебя есть?

Андрей Шулинский: Я - типичный прикладной программист/аналитик/архитектор широкого профиля. Закончил кафедру системного программирования ВМК МГУ, но в жизни не написал ни одной строки "системного" кода. :-) Раньше писал на С++, несколько лет назад перешел на Java. Долго работал в банковской сфере, потом была пара телекоммуникационных проектов. В Канаде сначала делал систему хранения и обработки документов для маркетинговой компании со звучным именем Арнольд. Сейчас работаю в фирме "Новатор", занимаюсь созданием Java-версии "движка" для сайтов, занимающихся онлайновыми розничными продажами.
Диплом у меня один. Получен в 1996 году на факультете вычислительной математики и кибернетики Московского государственного университета. Перед отъездом сдал экзамен Sun Certified Java Programmer, 1.4. Планировал получить остальные сертификаты этой линии, но работаю много, и найти на это время никак не удается.



Алексей Перевертайлов: Вообще, можешь сказать - какие языки программирования и какие программисты сейчас более востребованы за рубежом, да и в мире в целом?

Андрей Шулинский: В первую очередь, .NET и J2EE. А что ты думал услышать? ;-) Эти 2 платформы закрывают собой небо... Впрочем, судя по объявлениям на посвященным поиску работы сайтам, до сих пор есть определенный спрос на знатоков С++, Cobol, Perl. Бывают нужны - и даже очень - узкие специалисты, знающие какой-нибудь "навороченный" SAP. Но, разумеется, основную массу программеров и прочих сениор девелоперов составляют "джависты" и "дотнетчики". :-)


Алексей Перевертайлов: По своему опыту, расскажи - есть конкуренция между программистами внутри компании? Есть ли какие-то жёсткие правила? За что могут уволить? Есть ли карьерный рост? Сверхурочная работа бывает и если да - как оплачивается? Ты работал программистом в России, можешь сравнивать, поэтому такой вопрос: какие ты заметил отличия в профессиональных требованиях и организации рабочего процесса дома и за границей? Тяжело ли тебе было находить общий язык с руководителем проекта?


Андрей Шулинский: В тех компаниях, где мне довелось поработать, явной конкуренции aka "соцсоревнование" не было. :-) Но при этом действует простой закон: если хорошо работаешь - заметят и оценят. По крайней мере, со мной было именно так. И зарплату повышали, и более интересную работу доверяли.
Уволить, конечно, могут. В основном, это бывает связано с проблемами компании (сокращение штатов) или с явным несоответствием возможностей человека занимаемой должности. Столь не любимый многими испытательный срок бывает полезен. Так что не стоит слишком сильно преувеличивать свои возможности на интервью. Бывают также случаи увольнения из-за противозаконной деятельности сотрудника.
К вопросу о жестких правилах - не стоит хранить на жестком диске рабочего компьютера гигабайты детского порно - могут наказать. Все контракты содержат более-менее стандартные пункты о неразглашении информации, интеллектуальных правах компании на ваш код (сомнительный актив, ИМХО :-) ). Часто запрещают переходить в компании, работающие в той же отрасли, подрабатывать на стороне. Степень подобной паранойи зависит от многих факторов. Крупные банки и прочие "крутые" компании заставляют подписывать списки на 8 листов. Но ведь то же самое есть и в России, просто здесь, думаю, несколько строже следят за выполнением этих условий.
Профессиональные требования в Торонто и Москве одинаковые. Подозреваю, что они совпадают с требованиями лондонских и токийских фирм и близки к парижским запросам. Разница - во Франции может понадобиться французский язык. Именно может, а не должен - я общался с рекрутерами, набиравшими людей для работы в компании, находящейся в Лионе. Я честно признался, что не владею французским языком даже со словарем. "А, там весь документооборот на английском", - было мне ответом. :-)
Организация рабочего процесса очень сильно зависит от людей, ведущих проект. Если они поставили дело хорошо с самого начала и не позволяют проекту пойти вразнос даже при авралах, то работа идет достаточно гладко. Иначе - привычный бардак. Уважаемые читатели, вероятно, уже догадались, что бывает чаще. :-)
С руководителями проектов пока ни разу не было проблем. Я всегда легко находил общий язык с людьми - как в России, так и в Канаде. Вы наверняка обратили внимание, как часто я повторяю слова "так же", "одинаково", "нет разницы". Действительно, я обнаружил, что россияне и канадцы не так сильно отличаются друг от друга, как принято считать. Безусловно, трудности перевода существуют. Но, как и в одном замечательном фильме, они большей частью связаны с индивидуальными особенностями людей, а не с "цивилизационными" различиями. Вот такое у меня сложилось "ИМХО". :-)


Алексей Перевертайлов: Программисты в Канаде - высокооплачиваемая профессия по отношению к другим? Если сравнить это соотношение с Россией - где лучше работать программистом (по финансовой выгоде)?

Андрей Шулинский: Да, до сих пор зарплаты выше средних. Конкуренция стала больше, но платят по-прежнему неплохо. Впрочем, это лишь субъективное мнение, а я в Канаде меньше двух лет. :-)


Алексей Перевертайлов: Как думаешь, где легче повысить свой профессиональный уровень - дома или за рубежом? Это вообще зависит как-то от страны (или же скорее зависит от конкретного человека)?

Андрей Шулинский: Мое мнение - прежде всего от человека. Кто ищет, тот всегда найдет полезные книги, журналы, форумы и, разумеется, тех, с кем можно общаться на профессиональные темы. Конечно, я предполагаю, что вы работаете в стране, где индустрия ИТ хорошо развита.


Алексей Перевертайлов: Какой инструментарий вы используете (среды разработчика и т.д.)? Я так полагаю, в Канаде всё программное обеспечение, используемое в компаниях-разработчиках ПО - лицензионное, или же нет?

Андрей Шулинский: Скажем так - большая часть программ или куплена, или получена бесплатно. :-) Иногда народ ставит что-то добытое нелегально, но это делается именно для ознакомления - если недоступна пробная версия. Компании же либо запрещают использовать пиратское ПО вообще, либо заставляют подписать документ, по которому ты сам несешь ответственность за содержимое жесткого диска.
Используются же самые разные приложения. IDE: Eclipse, IDEA, NetBeans. Средства работы с базами данных: DbVisualizer, Aqua Data Studio. Код и документы хранятся в CVS. Из покупного имел дело с WebSphere. Знакомые все лица, не так ли? :-) И, конечно, .NET - там есть решения на все случаи жизни.


Алексей Перевертайлов: Можешь припомнить какие-нибудь смешные или курьёзные случаи на работе?

Андрей Шулинский: Пожалуйста. Только что начальник спрашивает одного из коллег, давно ли тот обновлял код. "Э-э-э.... дня три назад..." - грозный взгляд - "м-м-м... может быть два" - грозный взгляд - тишина - я подсказываю: "один, иначе сделка сорвется" - обстановка разряжается. :-)


Алексей Перевертайлов: Хотелось бы задать тебе несколько вопросов общего характера, если не возражаешь... Как думаешь, реально за границей самому организовать своё дело? В случае с программистом - создать свой коммерческий программный продукт и его продавать, развивать, поддерживать? Что, по твоему, для этого нужно?

Андрей Шулинский: Мое мнение - да, это реально. Здесь предприниматель может не опасаться рэкета со стороны бандитов и властей, зарегистрировать и вести свое дело довольно легко. Но, разумеется, без двух главных слагаемых любого успеха - хорошей идеи и готовности посвятить ее реализации все время и силы - ничего не получится. "Идейный трудоголик" же имеет шанс. Пример - президент моей нынешней компании, писавший первую версию системы в подвале своего дома. :-) Сейчас "Новатор" преуспевает.


Алексей Перевертайлов: Каково твоё отношение к сообществу Open Source?

Андрей Шулинский: Разумеется, положительное. Считаю труд этого сообщества огромным благом для прогресса вообще, и основной причиной успеха Java-технологий в частности - что тоже явно идет на пользу индустрии. Вряд ли иначе можно было бы успешно конкурировать с известным монстром. :-) Безусловно, в использовании Open Source продуктов есть определенный риск. В то же время многие такие решения имеют прекрасную репутацию, находятся на рынке много лет - и вам совершенно не обязательно досконально знать их "внутренности". Общество поможет решить практически любую проблему, что делает далеко не всякая коммерческая служба поддержки.


Алексей Перевертайлов: Как ты относишься к патентному праву в области программного обеспечения? Душит ли оно прогресс? Какие ты видишь оптимальные механизмы защиты инноваций в сфере программного обеспечения?

Андрей Шулинский: К сожалению, я не готов отвечать на данный вопрос. Это достаточно серьезная тема, материалом по которой я владею недостаточно хорошо.


Алексей Перевертайлов: В своей работе тебе приходится сталкиваться с поиском уязвимостей в создаваемом продукте? Сейчас много уделяется внимания написанию безопасного кода, который даёт меньше шансов использовать различные ошибки переполнения буфера и т.д. В своей работе ты следишь за потенциальной безопасностью кода? Есть у вас какие-либо инструкции по этому вопросу?

Андрей Шулинский: Тестирование, только тестирование - и еще раз тестирование! Считаю модульное тестирование ("unit testing") ключевым инструментом обеспечения безопасности кода. Как правило, все занимающиеся разработкой ПО компании пытаются создать и поддерживать в актуальном состоянии набор тестов. К сожалению, это редко удается - в основном, по причине жестких сроков сдачи проектов. А ведь долгосрочный эффект от грамотного тестирования трудно переоценить. В результате и к определенной дате из-под рук ваятелей выходит отнюдь не Галатея, и доводка приложения до сколько-нибудь стабильного состояния затягивается надолго, вызывая стресс у всей команды.
Также очень важны дисциплина кодирования и построение хорошей архитектуры. Лично я многое почерпнул из книг Мартина Фаулера (Martin Fowler) и Рода Джонсона (Rod Johnson).


Алексей Перевертайлов: Ну и напоследок такой вопрос - если была бы гипотетическая возможность начать всё с начала - ты всё равно бы стал программистом?

Андрей Шулинский: Да. Именно специальность помогла мне практически безболезненно переехать в другую страну, преодолеть обычные эмигрантские психологические и материальные проблемы. Моя квалификация и профессионализм востребованы, к моему мнению прислушиваются коллеги, я здесь свой, хоть пока знаю английский язык хуже Java. :-) Кроме того, я очень люблю свою работу. Все, кто занимался программированием, наверняка помнят моменты, когда она - программа - начинает работать так, как ты задумал. Я до сих пор в такие мгновения по-настоящему счастлив.
И еще. Я очень благодарен своим родителям за огромную помощь в выборе профессионального пути и становлении на нем. Не каждому удается найти _свое_ дело. Без их участия вряд ли это получилось бы и у меня.
P.S. Конечно, помогло и то, что я такой умный и красивый. :-)


Алексей Перевертайлов: Спасибо за ответы, желаем тебе всяческих успехов в профессиональной деятельности!

Андрей Шулинский: Спасибо, удачи тебе лично и Ф-Центру в целом. :-)