Author Archives: pavel

Блог переехал

Последняя запись в этом блоге была в январе 2004, 2 года и 9 месяцев назад. Плохая новость: я больше не пишу, и не планирую писать в этом блоге. Хорошая новость: с 2011 года я более менее регулярно пишу в моем англоязычном блоге: http://pavel.surmenok.com/

В основном я пишу на технические темы: software engineering, machine learning, chatbots, bitcoin и т.п. Буду рад старым и новым читателям.

URL: http://pavel.surmenok.com/

Зеркало в Medium: https://medium.com/@surmenok

Twitter: https://twitter.com/surmenok

lytdybr

Обзор основных технических новостей 2013 года: http://www.theverge.com/2013/12/30/5224680/the-year-in-review-the-biggest-stories-of-2013

И инженерные тренды на 2014 год: http://ailev.livejournal.com/1098827.html и http://ailev.livejournal.com/1099116.html

***

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

При этом надо помнить, что чтение, писание, слушание и говорение – это разные активности, и развивать их нужно все. У меня явный перекос в сторону чтения. Хотя сейчас всё остальное тоже активно прокачивается. Пожалуй, стоит отдельный пост написать о том, как я развиваюсь в этом направлении.

***

Удивился эмоциональной реакции на мои наблюдения за жизнью в разных городах и странах. Когда я говорю, что что-то где-то хорошо или что-то где-то плохо – это моё честное субъективное мнение, и я не пытаюсь никого обидеть. Я хорошо отделяю конкретных людей от наблюдения среднего состояния города/страны. Аккуратней мне надо быть с этим, ох уж этот мой рационализм и космополитизм…

***

Купили робот-пылесос. http://store.irobot.com/product/index.jsp?productId=11305110

Очень полезная вещь. У нас wall-to-wall carpet, и он его неплохо пылесосит: всегда находит много пыли и мусора, особенно много кошачьей шерсти.

***

В наших краях на рождество продают очень красивые густые пушистые ёлки. А может это не ёлки, а сосны, не знаю.

***

Прислали наконец-то номерные знаки на машину. Удивительно, как много всего тут делается по почте – даже номера присылают обычной почтой. Да что там, говорят, что и паспорта так же доставляют. Мне правда паспорт в ближайшие минимум лет шесть не светит, поэтому говорю только про license plates :)

***

Где-то за неделю до рождества жизнь на работе замерла. Всё так медленно-медленно. Но праздники закончились, люди возвращаются из отпусков. Похоже в понедельник уже опять будет весело.

Потребление контента

Начал слушать в машине подкасты. Последний раз я так регулярно слушал что-то в транспорте, тогда еще в общественном, года 3 назад – 2010 или 2011 год. Я тогда в основном слушал записи передач радио Финам ФМ.

Сейчас у меня в плэйлисте 4 подкаста:

 

The Hansel Minutes

Радио Т

Умпутун

Янки после пьянки

 

Радио Т – это такое веселое обсуждение последних новостей. Что-то типа “ПрожекторПерисХилтон” для гиков.

Янки и Умпутуна я уже слушал когда-то очень давно (году этак в 2006).

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

 

Какие еще подкасты достойны внимания?

 

Потребление же блогов я в этом году перевел на совершенно новый технический уровень :)

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

Сначала я просто не читал блоги потому что их не было.

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

В районе 2007 года я собрал самодельный агрегатор на основе Yahoo Pipes (кажется этот сервис еще даже живой http://pipes.yahoo.com/pipes/). Yahoo Pipes позволял построить систему обработки данных: импортировать потоки данных из разных источников, и дальше что-то с ними делать – менять содержимое, фильтровать, сортировать, собирать несколько потоков в один, и в итоге выдавать результат в нужном формате. Что-то типа SQL Server Integration Services, но в очень простом исполнении и с веб-интерфейсом. Я собрал такую штуку которая собирала несколько RSS потоков, сливала в один, сортировала посты по дате, и выдавала наружу RSS. Этот RSS я скармливал сервису Yandex Lenta (вот этот сервис уже похоже помер), который уже отображал ленту в веб-интерфейсе.

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

Мне нужно было какое-то более гибкое решение. Когда-то я смотрел в сторону Google Reader, но видимо тогда он был еще слишком сырой. Позже в нём все нужные плюшки появились, но я об этом узнал уже когда Гугл объявил сервису смертный приговор.

Тогда я узнал о Feedly http://feedly.com/. И похоже он умеет все то что мне нужно, и даже немного больше. Сортирует по дате, можно помечать посты как непрочитанные, есть несколько разных представлений ленты, есть даже приложение для смартфонов. Все читаемые мной ЖЖ я перекинул туда, плюс накидал еще ряд интересных англоязычных источников.

Единственная проблема Feedly – он не слишком умен, чтобы сортировать контент по интересности. Хотя мог бы. Например, у меня в ленте есть несколько RSS источников, где новые посты появляются слишком часто (NextBigFuture, SFGate), а Hacker News я так и вовсе удалил из ленты, потому что его неприлично много. Если бы Feedly мог как-то по контенту или через алгоритмы recommendation system догадываться, что из этого мне более интересно, и поднимать в топ – я бы даже за этот сервис готов был заплатить. Они уже что-то пытаются делать в этом направлении (показывают TOP3 stories), может из этого и выйдет толк.

SF vs Techies

Судя по СМИ, тут в SF странные народные настроения – многие настроены против технарей. Hi-tech компании приходят из кремниевой долины в SF, да и вообще отрасль на подъеме, так что в город понаехали технари разного рода, с высокими доходами. Скупают недвигу, рентуют недвигу. Здания, которые десятилетиями использовались для сдачи апартаментов, оформляют для продажи, и старых жильцов выселяют. И соответственно недвига для покупки и для рента взлетает в цене. А если цена апартмента переваливает за миллион, и рент ниже $2000 в месяц найти почти нереально – люди с низкими доходами вынуждены уезжать в пригороды.

Статья от New Yorker об этом (они конечно левые товарищи, но пишут складно):

http://www.nytimes.com/2013/11/25/us/backlash-by-the-bay-tech-riches-alter-a-city.html?pagewanted=all&_r=0

 

Разные новости от SFGate (в т.ч. о том, как странные люди блокировали частные автобусы Google, которые ежедневно забирают работников в SF и везут их на работу в офис Google в долину):

http://www.sfgate.com/bayarea/williesworld/article/Techies-must-nip-growing-scorn-in-bud-5006404.php

http://www.sfgate.com/bayarea/article/Google-riders-under-siege-or-alien-5065290.php

http://www.sfgate.com/bayarea/article/S-F-tech-companies-civic-image-at-stake-as-5065669.php

http://www.sfgate.com/bayarea/nevius/article/Total-techie-takeover-of-Mid-Market-Won-t-happen-5076597.php

http://www.sfgate.com/bayarea/article/Listening-to-the-many-sides-in-the-great-tech-5085000.php

 

Мнение со стороны технарей:

http://valleywag.gawker.com/psa-please-stop-calling-nerds-the-t-word-1475784145/@sambiddle

 

Вроде бы и понятно, что люди ведут себя неправильно. Технари не виноваты в том, что все эти люди не могут купить или рентовать квартиры в SF, и что им приходится ездить на работу на общественном транспорте. Они не нарушают законов, не ущемляют прав других людей. Но при этом весь негатив направлен на них. Печально. Надо больше заниматься повышением грамотности населения.

Что было в 2013

Календарный год – это такая формальность. Год с 1 января по 31 декабря ничем не лучше и не хуже года с 1 апреля по 31 марта, или с 14 августа по 13 августа. Но уж так принято, что календарный год начинается с 1 января, все к этому привыкли, и это удобная дата для того чтобы остановиться и посмотреть, что же случилось за год.

Предыдущая заметка такого рода (2012 год): http://surmenok.ru/2012/12/31/itogi-2012-goda/

В 2013 году же я:

  • Побывал в Украине, и даже жил там и работал аж целых 8 месяцев. А ведь еще в ноябре 2012 я бы не мог предположить, что когда-либо там побываю, это было совершенно вне моих планов. Из того что запомнилось – очень дешевая еда в ресторанах, плохие горнолыжные курорты, и какое-то ощущение что вернулся в 90-е.
  • Перешел на работу в Pearl.com.
  • Переехал в San Francisco Bay Area. Живу в San Rafael (городок в 16 милях к северу от SF через Golden Gate Bridge), работаю в San Francisco. О процессе получения H1-B визы я уже писал: http://surmenok.ru/2013/08/18/kak-delaetsya-h1-b-viza/
  • Получил замечательный опыт работы в распределенных командах, причем в трех разных с совершенно разными комбинациями распределения труда между US, Ukraine, India.
  • Увидел, что legacy код 10-летней выдержки с ~4 млн строк кода может реально работать без критичных дефектов на продакшне. Amazing.
  • Купил машину: 2014 Toyota Camry Hybrid XLE.
  • Впервые увидел океан.
  • Попробовал на себе американскую медицину и медицинское страхование.
  • Из техники: купил, еще будучи в Украине, Sony Vaio Z-series японского производства. Ноутбук отличный: думаю, что по железной составляющей не уступает лучшим макбукам. Цена конечно соответствует.  В общем до сих пор на нем работаю, и его мобильность мне немало помогла во время частых переездов между Украиной и Москвой, путешествием в сибирь, и потом перелетом в SF. Уже в штатах решил, что дома мне совершенно необходимо несколько хороших мониторов, и для начала купил 27-дюймовый 2560×1440 Dell UltraSharp U2713HM. И напоролся на трудность: не могу нормально подключить его к вышеупомянутому ноуту из-за слишком высокого разрешения. Похоже придется мне купить десктоп для домашнего пользования, потому что Sony Vaio Z-series уже не производят, да и не хочется пока тратить несколько тысяч долларов на апгрэйд ноута. Десктоп как-то подешевле будет.

 

Пожалуй, если кратко, то это был год переезда в US. Это мой третий переезд за последние 8 лет (Тайшет – Красноярск – Москва – San Francisco), с заездом в Украину по дороге. Надеюсь, больше в ближайшее время менять дислокацию не придется.

Legacy

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

Я ценю знание, полученное из личного опыта, и поэтому стараюсь выжать побольше из того небольшого личного опыта, который у меня есть.

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

Сегодня я увидел один из внешних эффектов – презентацию “Legacy vs Agile Team”, где Алексей (докладчик) рассказал о страшностях, случающихся, когда приходится бороться с legacy кодом, и как это влияет на процесс разработки.

Презентация по форме неплохая – рассказ складный, слайды ненапряжные. Пожалуй, сильно лучше чем предыдущие презентации Алексея.

Что касается содержания… Мне показалось, что под словом “legacy” кроются две совершенно независимые проблемы, которые и решать надо независимо, разными способами.

Первая проблема – это технический долг. На самом деле, технический долг – это проблема, не обязательно относящаяся к legacy коду. Та система о которой Алексей рассказывает как о рае для разработчиков тоже страдала от технического долга буквально с первого месяца разработки. И это нормально. Невозможно работать в agile проекте, не сталкиваясь с проблемой технического долга. Требования постоянно меняются, и какие-то кусочки системы перестают отвечать новым требованиям, что приводит к возникновению технических работ, напрямую не связанных с продуктовыми требованиями.

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

Вторая проблема – это внезапные критические баги, которые требуется разрешать в кратчайшие сроки. И тут я могу уверенно сказать, что это не атрибут legacy системы. Потому что мой опыт работы с более крупной и более старой системой (более 10 лет, более 3 млн строк кода) показывает, что даже самый ужасный внутри код может отлично работать на продакшне, вызывая в год не более 2-3 дефекта которые надо решать немедленно.

Эта проблема скорее должна решаться лучшим тестированием кода. Покройте критичные бизнес-сценарии тестами (лучше автоматизированными, хотя и не обязательно). Прогоняйте тесты перед релизом. И проблема решена.

Пожалуй, доклад стоило бы назвать «Переходный период адаптации некачественного кода Agile командой”, потому что озвученные проблемы – это проблемы именно переходного периода.

Процесс для быстрой отгрузки

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

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

На скорость отгрузки может влиять множество факторов. Самый очевидный – скорость, с которой разработчики педалят код. Один джуниор вероятно будет разрабатывать ту же фичу несколько дольше, чем три сеньора.

Но при прочих равных процесс разработки тоже сильно влияет на скорость отгрузки. Я хочу показать это на примере, описав несколько разных процессов. Чтобы нивелировать влияние скорости собственно девелоперской работы, я предполагаю, что команда супербыстрая, и когда она начинает работу над фичей (далее User Story – в терминах SCRUM методологии), проходит всего 0 дней до момента когда код уже готов и протестирован.

Другая неизменная деталь процесса: релизы фиксировано раз в неделю в один и тот же день, и за несколько дней до релиза код релиза замораживается – для проведения всех необходимых QA (quality assurance) мероприятий.

Далее много терминов из SCRUM. Напомню кратко, что у нас есть Product Owner, который предоставляет требования команде в виде атомарных User Story (истории), а команда эти требования воплощает в жизнь. Работа идет по итерациям, обычно одна или две недели длиной. В нашем случае итерация однонедельная, и релиз каждую итерацию.

Жизненный цикл истории включает ее создание product owner’ом, sizing (численная оценка сложности истории командой), planning (в нашем случае это будет фактически определение в каком релизе будет отгружена история), разработка, code review, тестирование, merge в integration branch, отгрузка на продакшн. Я привел упрощенное описание, достаточное для этого поста.

Итак, примеры различных процессов:

 

Process A:

Ненеля 1 Пятница – product owner создал user story.

Неделя 2 Понедельник – митинг, на котором команда обсуждает историю с product owner’ом.

Неделя 2 Среда – sizing meeting, история оценена командой и приоритизирована product owner’ом.

Неделя 3 Понедельник – planning meeting, история запланирована в итерацию, которая начнется в понедельник недели 4.

Неделя 4 Понедельник – работа над историей начата. Команда супербыстрая и успевает всё сделать в этот же день: разработка, code review, тестирование и merge в integration branch.

Неделя 4 Пятница – конец итерации, создан release branch. Код релиза заморожен.

Неделя 5 Понедельник – среда – прогоняются все regression тесты, включая ручные, проводится нагрузочное тестирование, тестирование нового кода на staging environment приближенному к продакшну и т.п.

Неделя 5 Четверг – релиз.

 

Несмотря на то, что команда супербыстрая, понадобилось 4 недели чтобы требование дошло от идеи до пользователя. Элементы процесса, которые не дают здесь отгрузить быстрее:

- расписание митингов: слишком большие промежутки между митингами discussion, sizing, planning;

- жестко планируемые итерации: история должна быть помещена в итерацию до ее начала, нельзя положить историю в итерацию когда она уже началась.

 

 

Process B:

Неделя 1 Пятница – product owner создал user story.

Неделя 2 Понедельник – sizing and planning meeting, история оценена командой, приоритизирована product owner’ом и запланирована в итерацию, которая начнется во вторник недели 2.

Неделя 2 Вторник – работа над историей начата. Команда супербыстрая и успевает всё сделать в этот же день.

Неделя 2 Пятница – конец итерации, создан release branch. Код релиза заморожен.

Неделя 3 Понедельник – прогоняются regression тесты.

Неделя 3 Четверг – релиз.

 

Процесс подготовки историй ускорен, все предварительные митинги сведены в один. Хотя процесс всё еще запрещает впихнуть историю в итерацию которая уже идет. Поэтому путь от идеи до релиза здесь займет в самом удачном случае две недели.

 

Process C:

Неделя 1 Четверг – product owner создал user story.

Неделя 1 Пятница – история оценена командой, приоритизирована product owner’ом. Если история имеет высокий приоритет – то команда сразу же откидывает в сторону все другие менее приоритетные дела и берется за работу. Команда, как вы помните, супербыстрая, и к концу дня протестированный код залит в integration branch.

Неделя 2 Четверг – релиз.

Здесь фактически был сломан один из принципов SCRUM – неизменность бэклога итерации. Но зато это позволило ускорить процесс настолько, чтобы в лучшем случае история могла быть отгружена всего через неделю после ее создания. В этой ситуации узким местом процесса становится уже непосредственно скорость работы команды, а также процесс QA релиза.

И такая разница в процессах может быть неочевидной для команды. Если не вглядываться внимательно, то внешне все процессы похожи: итерации и релизы одинаковой длины, одинаковый жизненный цикл историй. Команды похожего состава. Все работают. Но у одних получается сделать цикл тестирования бизнес-идей в 1 неделю, а у других – никак не меньше 4 недель.

Это фактор, который стоит учитывать. Хотя у более гибких процессов конечно есть и сайд-эффекты. Какие например сайд-эффекты процесса C вы видите?

Последнее отсмотренное

Pacific Rim

Хорошие саундтрэки, много экшна. Приятные маленькие детали на протяжении фильма. В целом весёленький фильм, вполне годный к употреблению.

Star Trek (2009)

Учитывая что я отсмотрел полностью оригинальный сериал 66-го года, я ожидал плохого впечатления от фильма (Спок уже не тот, и так далее). Но был приятно удивлен. Капитан Кирк нормальный, может даже поживее чем оригинальный. Спок конечно не тот, но вполне терпимый. И сюжет выстроен так, что неоригинальные персонажи вполне вписываются в картину мира – параллельная вселенная и всё такое. Скотти тоже порадовал. И даже показали настоящего Спока (Леонард Нимой)!

RED 2

Первый RED был хорош – хороший юмор. А вот римэйк посредственный. Показательно, что спустя пару недель я вообще забыл, что я это смотрел.

A Good Day to Die Hard (Крепкий орешек 5)

Это полный трэш. Бессмысленный и беспощадный. Сюжет никакой. Хотя кажется был взрывающийся вертолет, но даже это не спасло. До сих пор не понимаю – зачем они покорёжили столько автомобилей? Это кому-то интересно?

Obllivion

Очередная борьба с инопланетянами. Не впечатляет.

Shoot’Em Up

Годный смешной трэш.

 

Из сериалов в процессе Doctor Who (series 5) – Eleventh doctor и The Borgias (season 3).

Доктор с каждым разом всё менее интересный: казалось, что девятый доктор был лучший, но он был всего один сезон.

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

Как делается H1-B виза

Пост получился очень длинным. Сорри.

Я хотел рассказать о своем опыте получения американской рабочей визы (H1-B).

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

H1-B – это виза в US для квалифицированных специалистов. Самый популярный способ уехать в штаты на сравнительно долгий срок. Хотя это считается неиммиграционной визой – т.е. вы не получаете статус резидента, вы только временный работник. Но это dual-intent виза, т.е. иметь иммиграционные намерения не запрещается и вы не обязаны доказывать, что вернётесь обратно.

Разрешение на работу дается максимум на 3 года. Работать вы можете только на того работодателя, который оформлял разрешение на работу (хотя есть такая процедура как H1-B transfer которая позволяет сменить работодателя, и это несколько быстрее и дешевле чем делать новую H1-B). Потом вы можете еще раз оформить H1-B на 3 года. После этого придется или менять статус (например оформлять employment based green card), либо выехать из страны как минимум на год – после этого можно опять оформлять H1-B.

Важно также не путать визу и статус. Статус H1-B позволяет вам легально находиться в стране. Для этого не нужна виза. Виза нужна только для того чтобы въехать в страну. Статус обычно дается на 3 года, а визу в России выдают максимум на 2 года. Это значит, что 2 года вы можете ездить туда-сюда сколько угодно, но когда виза истечет – придется или оставаться невыездным в US, или выехать и оформлять визу заново.

 

Процесс оформления H1-B инициируется работодателем, и в принципе без компании-работодателя визу получить невозможно. Это значит, что первый шаг – найти американскую компанию, которая для того чтобы вас привезти захочет потратить некоторую сумму денег (несколько тысяч долларов на пошлины всякие и услуги юристов) и какое-то время: в лучшем случае полгода, в худшем полтора, и без гарантии успешного результата.

Почему так долго? Петиции H1-B на следующий финансовый год (который начинается с 1 октября) начинают рассматривать с 1 апреля. Количество виз H1-B выдаваемых за год ограничено (т.н. H1-B CAP). На 2014 финансовый год квота была 65000 виз вообще и плюс еще 20000 отдельно для магистров американских университетов. При этом желающих обычно намного больше.

Статистика по размеру квоты и дате исчерпания квоты с 2003 года:

Year: H1B Cap Numbers Date H1B Cap Reached
H1B 2003 (FY 2004 cap) 65,000 October 1, 2003
H1B 2004 (FY 2005 cap) 65,000 October 1, 2004
H1B 2005 (FY 2006 cap) 85,000 August 10, 2005
H1B 2006 (FY 2007 cap) 85,000 May 26, 2006
H1B 2007 (FY 2008 cap) 85,000 April 3, 2007
H1B 2008 (FY 2009 cap) 85,000 April 7, 2008
H1B 2009 (FY 2010 cap) 85,000 December 21, 2009
H1B 2010 (FY 2011 cap) 85,000 January 26, 2011
H1B 2011 (FY 2012 cap) 85,000 November 22, 2011
H1B 2012 (FY 2013 cap) 85,000 June 11, 2012
H1B 2013 (FY 2014 cap) 85,000 April 5, 2013

Данные за 2003-2012 годы взять здесь, за 2013 год – здесь.

Как видите, в самые горячие годы перед рецессией – 2007-2008 – квота исчерпывалась в первые несколько дней. Потом три года было затишье, хотя и в эти годы квота исчерпывалась раньше начала обработки петиций на следующий год.

И сейчас опять вернулись времена активности H1-B. Поэтому в этом году USCIS (US Citizen and Immigration Services – иммиграционное ведомство США) за первые пять дней апреля получили 124000 петиций, что почти в полтора раза больше квоты. Кто не успел отправить в USCIS петицию до 5 апреля – те уже не попадают в квоту на 2014 финансовый год, и им придется ждать следующего года. Впрочем, часть из тех, кто успел отправить петиции – тоже обламываются, потому что среди 124000 заявок была проведена лотерея. Тем, кому не повезло, вернули документы и пошлину.

Но не все H1-B петиции попадают под квоту. Например, вот эти виды петиций идут вне квоты (cap exempt):

  • An amended H1B visa petition.
  • An H1B visa Renewal / Extension petition.
  • An H1B visa Transfer petition.
  • The employer is an institution of higher education (College or University).
  • The employer is a nonprofit organization or entity related to or affiliated with an institution of higher education (Hospital affiliated with a University) and the Foreign National Beneficiary (Worker) is enrolled in the jointly managed program.
  • The employer is a nonprofit research organization or a governmental research organization.
  • The Foreign National Beneficiary (Worker) has been previously granted status as an H1B visa nonimmigrant in the past 6 years and not left the U.S. for more than a year after attaining such status.

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

Подробную информацию о том, какие нужны документы, какие требования к работнику и к работодателю, какие пошлины нужно уплатить – можно найти на официальном сайте USCIS вот здесь.

Из того, о чем надо париться работнику – это пожалуй требования к образованию и опыту работы. USCIS требует наличия степени бакалавра по специальности связанной с позицией на которую вы устраиваетесь работать. Имеется в виду степень бакалавра полученная в US, либо любое образование в любой другой стране, которое эквивалентно степени бакалавра в US.

Впрочем, если нет образования – то можно иметь “education, training, or progressively responsible experience in the specialty that is equivalent to the completion of such a degree, and have recognition of expertise in the specialty through progressively responsible positions directly related to the specialty”. Хотя такой вариант уже создаст определенные трудности юристам – им надо будет как-то красиво обосновать что ваш опыт работы, тренинги и прочее соответствуют бакалавру.

 

Процесс получения визы H1-B для человека находящегося вне US можно условно разбить на 3 этапа:

  1. Работодатель запрашивает LCA (Labor Condition Application) в DOL (Department of Labor). Фактически таким образом работодатель запрашивает у DOL разрешение нанять на какую-то конкретную позицию какого-нибудь (на этом этапе не конкретного Васю Пупкина, а в принципе любого подходящего) заморского работника, потому что дескать позиция сильно требовательная и в штатах такого работника найти тяжело.
  2. Работодатель подает в USCIS (US Citizen and Immigration Services) петицию по форме I-129 в которой просит дать разрешение на работу в US уже конкретному Васе Пупкину. Здесь работодатель должен доказать, что Вася Пупкин соответствует требованиям (фактически приложить заключение эвалюации диплома Васи), и что компания будет способна платить Васе определенную зарплату не ниже минимального для H1-B работника данного уровня (prevailing wage).
  3. Вася Пупкин получает от работодателя бумажку с подтверждением одобрения H1-B петиции (которую работодатель получил от USCIS), и подает заявку на получение визы H1-B в консульство за пределами US. Консул посмотрит на Васю острым оценивающим взглядом, поймет что Вася на самом деле не шпион и не мошенник и на самом деле едет работать – и выдаст визу.

 

Далее опишу мой опыт лицезрения сего процесса.

Я получил подписанный оффер (точнее скан подписанного оффера) от американской компании 15 февраля 2013 года. Компания получила от меня скан подписанного с моей стороны оффера, и подключила юридическую фирму BAL: http://www.balglobal.com/

Далее через пару дней BAL запросил у меня заполнить большую анкету, включающую вопросы по разделам:

  • Contact Information (адрес, e-mail, телефон, факс)
  • Employee and Family (текущий статус в US, в каком посольстве буду получать визу, есть ли планы поездок в штаты на ближайшее время, есть ли пустая страница в паспорте для визы)
  • Basic Information (ФИО, пол, marital status, паспортные данные, гражданство)
  • Most Recent Entry (о последнем визите в US) – я в US не был, так что тут ничего не писал
  • First Entry in H-1 or L-1 Status (для тех кто уже был в US с рабочим статусом)
  • U.S. Visa History (про все предыдущие американские визы)
  • Immigration Filing History (куча вопросов типа просили ли убежище в US, имели ли отказы во въезда и т.п.)
  • Employment History (про предыдущие места работы) – этот раздел у меня вызвал недоумение, т.к. непонятно было зачем он нужен. Мне пришлось как-то упорядочить и записать мой сумбурный опыт работы, потому что я несколько лет был официально предпринимателем, и работал с конечными клиентами на куче разных проектов.  В итоге похоже этот раздел нафик не нужен был, в петиции I-129  ничего про мой опыт работы не было. Потом эта информация пригодилась, когда пришлось в анкете DS-160 на визу отвечать на тот же самый вопрос. Тупо скопипасти, и нет проблем.
  • Education History (про образование в высших учебных заведениях – название/адрес универа, даты, степень, в какой области знаний)

Кроме анкеты еще нужно было отправить сканы документов:

  • Copies of all university degrees, diplomas and transcripts
  • Any educational evaluations, training certificates, and experience letters (if applicable) including any professional licenses/certifications relevant to the proposed assignment in the U.S.
  • Current resume
  • Photocopy of your marriage certificate (with English translation, if applicable) if spousal application is required
  • Photocopies of your children’s birth certificates (with English translations, if applicable) if child applications are required
  • Photocopy of both sides of your most recent Form I-94 “arrival/departure record” currently stapled to your passport (please ensure that all expiration dates are legible)
  • Photocopy of all passports (blank pages not necessary)
  • Clear, dark photocopies of all previous US immigration paperwork, including prior approval notices (Form I-797), Forms IAP-66 and/or Forms I-20, and Employment Authorization Documents (EADs)
  • Photocopy of most recent paycheck stub from your current US employer (if applicable)

Для дипломов пришлось заказать перевод. Перевод кстати мне сделали кошмарный (например название предмета “схемотехника» перевели дословно что-то типа «schema technique”, хотя даже Google Translate знает, что правильно “circuitry”). Пришлось потом самому править многие вещи. Заверять нотариально перевод не нужно. Попросили только чтобы заверил любой другой человек, который не является мной, и при этом знает русский и английский. Попросил коллегу, он заверил.

Анкету и все документы я засабмитил 22 февраля. Параллельно, я думаю, они еще собирали какие-то данные с работодателя.

Далее мне оставалось только ждать. Оформление H1-B от первоначальной подготовки документов до получения визы – это фактически только постоянное ожидание. У BAL есть удобный веб-интерфейс для отслеживания статуса.

Запрос LCA зафайлен 26 февраля. Делается это быстро, разрешение получено от DOL 5 марта. Потом, судя по истории, LCA еще должен был быть подписан кем-то в компании работодателя, не знаю зачем.

Параллельно они заслали мои дипломы на эвалюацию в какую-то специализированную контору. Там в течение недели всё было готово.

После получения LCA лойеры готовят петицию I-129, дают ее на проверку и на подпись работодателю, но для ее отправки в USCIS нужно ждать до конца марта. Т.к. петиции рассматриваются с 1 апреля, то заслать петицию нужно так чтобы она попала в USCIS аккурат 1 апреля. Если попадет раньше – возможно ее не примут и отправят назад (тут деталей не знаю). А если протупить и прислать позже – есть риск не уложиться в квоту. В этом году принимали только петиции, полученные USCIS с 1 до 5 апреля.

 

Итак,  29 марта (последний рабочий день перед 1 апреля) петиция отправлена в USCIS.

Дальше нужно ждать и волноваться по поводу вероятности лотереи. Читать всякие анализы типа такого. В предыдущие несколько лет лотереи не было, но на грядущий 2014 год и в интернетах и в USCIS предсказывали большое количество заявок на H1-B и вероятность лотереи.

В итоге 5 апреля (пятница) USCIS сообщил, что они уже получили петиций больше чем квота, прекращают приём и проведут лотерею среди всех петиций полученных с 1 по 5 апреля (позже посчитали, что их было 124000+). 7 апреля (воскресенье) лотерея была проведена. В результате те, кто был отобран для процессинга, должны были получить receipt по почте (на адрес работодателя), а остальные – возврат всех документов и необналиченные чеки на пошлину.

Этого пришлось ждать долго. Моя петиция была выбрана в лотерее, и работодатель получил receipt спустя три недели – 25 апреля, чему я был очень рад.

Дальше ждать собственно решения по петиции. Для проверки статуса есть веб-приложение. Проверял статус каждый день, а-то и несколько раз в день. Апрель, май и большую часть июня оно показывало статус “Initial review”. 28 июня, буквально на моих глазах, статус сменился на Post-decision activity: “On June 27, 2013, we mailed you a notice that we have approved this I129 PETITION FOR A NONIMMIGRANT WORKER”.

То есть от лотереи до одобрения петиции прошло 81 дней.

3 июля работодателем был получен Notice of Approval – форма I797. И 5 июля лойеры отправили ее мне вместе с копией петиции и другими бумагами FedEx’ом.

FedEx самолетом за сутки доставил документы к границе Украины, и дальше конными повозками (или спящим голубем?) за 3 дня документы были доставлены в Ужгород, где я их получил 10 июля.

 

Далее нужно было подать заявку на визы: H1-B мне и H4 жене. Для этого нужно пойти на http://www.ustraveldocs.com/ru/ почитать про необходимые документы и процесс оформления.

Нужно сначала приготовить фотографии в нужном формате в цифровом виде (это необязательно, можно и в бумажном принести, но довольно удобно). Потом заполнить онлайн анкету DS-160, на каждого заявителя отдельно, туда же вгрузить фотографии. Анкета длинная, я несколько часов заполнял. Это почти такая же анкета как для туристических виз, но всё же не такая – содержание частично зависит от типа визы, который выбирается на первых шагах. Для H1-B помимо стандартных вопросов про паспортные данные, место жительства, образование, историю работы и т.п. – спрашивают номер H1-B receipt, информацию о работодателе.

После сабмита форм DS-160 нужно оплатить пошлину визы. Для H1-B и для H4 это стоит в России 6460 рублей за каждого человека.

Затем нужно оформить онлайн заявку на visa interview. Указываются полное имя каждого, номера форм DS-160, номера квитанций оплаты. Выбирается дата и время интервью.

 

Из обязательных документов на интервью нужно брать распечатку подтверждения записи на интервью, распечатки подтверждения отправки анкет DS-160, паспорта (кажется надо все загранпаспорта которые когда-либо были), H1-B Notice of Approval (I797), свидетельство о браке. Рекомендуется также взять документы, подтверждающие намерения работать в указанной компании и подтверждающие свой опыт и образование. Т.е. могут быть полезны дипломы, резюме, подписанный работодателем оффер, рекомендации с предыдущих работ и т.п. В общем всё, что поможет убедить консула, что вы не верблюд.

 

Как оказалось, очередь на визы довольно большая. Я записывался на интервью 11 июля, и ближайшая свободная дата на тот момент была 7 августа – почти через месяц.

 

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

С собой лучше не брать никаких электронных устройств кроме телефона, потому что внутрь с ними не пустят, а камера хранения принимает только очень маленькие предметы.

При входе в здание просят показать подтверждение даты/времени интервью. Зайдя внутрь можно сдать в камеру хранения телефон. Дальше нужно пройти через металлодетектор. После этого нужно взять номерок для электронной очереди. Весь этот процесс входа и секьюрити занял около получаса.

Дальше весь процесс разбит на 3 этапа:

  1. Регистрация документов – проверяют что все нужные документы в наличии, что-то в компьютер там вбивают, может быть сверяют с тем что указано в DS-160, хз. У нас спрашивали только паспорта и I797.
  2. Дактилоскопия – снимают отпечатки пальцев с помощью какого-то электронного устройства.
  3. Интервью – собственно короткий разговор с консулом, при котором он решает – давать визу или не давать, и на какой срок, если давать.

Народа внутри много, работников не так много (пара человек на регистрации, кажется 3 или 4 на дактилоскопии и около десяти на интервью), поэтому очередь большая. Но что интересно, спроектировано так, что очередь ненапряжная и время пролетает очень быстро.

Очередь разбита на куски. Сначала ты в общем зале ждешь пока тебя пригласят в другой зал для регистрации. Там ты ждешь своей очереди пока освободится сотрудник. Регистрация – пара минут.

Потом идешь обратно в общий зал и ждешь очередь в зал для дактилоскопии. Там ждешь пока освободится сотрудник. Дактилоскопия – наверное меньше минуты.

Потом идешь в общий зал и ждешь пока позовут в зал для интервью :) И там ждешь очереди на интервью. Суммарно всё это от получения номера очереди до выхода из здания заняло часа полтора или чуть меньше. Но так как это время было искусственно разбито на 6 кусков – каждый отдельный кусок ожидания по 10-15 минут был не слишком утомителен.

Интервью заняло пару минут. Со мной консул говорил по-английски, спросил где я буду работать, как я нашел эту работу, чем занимается компания и почему по моему мнению они выбрали меня для этой работы.

Затем задавал каверзные вопросы, скорей всего чтобы решить – шпион ли я, и стоит ли отправлять меня на administrative processing чтобы проверить могу ли я выведать какие-нибудь секреты на работе. Спросил про специальность. Я честно ответил ”Computer science”, он спросил конкретней какая специализация, я с недоумением ответил “Computer science”, он сказал что типа это сильно широко, там много разного, я назвал по-русски специальность «Информатика и вычислительная техника». Он подумал немного и спросил, имел ли я дело с information security. Я ответил что не, ни в коем разе, нафик-нафик. Этого видимо было достаточно чтобы понять, что я простой senior software engineer и никакой не шпион.

Жену спросил только на русском, чем она планирует заниматься в штатах. После чего сказал, что «ваша виза одобрена».

 

Затем опять ждать :) Визу ставят не сразу. Консул забирает паспорт, и его потом присылают через Pony express когда виза будет поставлена. Статус визы можно отслеживать онлайн вот здесь. Еще можно трэкать по номеру паспорта тут. Ну и когда паспорт доставлен в Pony express – они присылают SMS и Email с номером трэкинга Pony express.

Я получил паспорт 9 августа – через день после интервью (интервью было 7 августа).

А вот жене в тот же день паспорт почему-то не выдали. Я пошел посмотреть статус на сайте, и увидел статус “Ready” (“Your case is open and ready for your interview, fingerprints, and required documents. If you have already had your interview, please check your status after two business days. If no interview was required, please check back in two business days for the status of your application.”)

Этот статус, с неизменной датой последнего обновления 9 августа, показывался несколько дней, пока 14 августа не сменился на “Administrative processing” (“Your visa case is currently undergoing necessary administrative processing.  This processing can take several weeks.”). Возможно он поменялся из-за того что мы написали e-mail в посольство с резонным вопросом – почему интервью уже прошло несколько дней назад, а статус всё еще Ready.

В итоге мы погрустили один день, а уже на следующий день 15 августа статус сменился на “Issued” и 16 августа паспорт с визой был получен. Визы на 2 года.

Slowness

Есть такая хорошая книга “A Fire Upon the Dark”, автор Vernor Vinge, Это science fiction.

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

Поэтому становятся доступными всякие новые технологии которые невозможны там где скорость ограничена, гипердрайвы там всякие, быстрая связь. Сигнал там ходит на с 3E8 m/s, а значительно быстрее. И эти зоны с разными физическими законами называются Transcend (самая круть), Beyond (средненько), и Slowness (тормоза). Летишь себе по Beyond, и вдруг попадаешь в Slowness, гипердрайвы отказывают, и ты плетешься со скоростью света, и годами будешь лететь то расстояние которое в Beyond пройдешь за пару минут 

У меня такое ощущение, что exUSSR – это Slowness. Вот идет себе почта из SF в Ужгород. за сутки проходит полмира. Из SF гиперпрыжок в Memphis, оттуда в Paris, оттуда…

Доходит до границы с Украиной, и попадает в Slowness. Гипердрайвы отрубаются. И дальше только конными повозками.