Я уже писал про то, чем занимаюсь на своей канадской работе — халявная кола, раздавленное чувство собственной важности, и программисты-пенсионеры. Но с тех пор прошёл почти год, я поднакопил наблюдений, заматерел, получил беджик Senior девелопера и новых поводов материться. Итак, чем же отличается работа на канадскую продуктовую контору от работы в аутсорсинге в Минске?
- Обмен информацией
Непонятно почему, но мои канадцы совсем не умеют обмениваться информацией. В девелоперской команде всего двадцать человек, не считая шести заграничных автономных обормотов, и даже при таких скромных размерах, сидя за соседними столами, мы регулярно одновременно начинаем одни и те же задачи. О том, что фронт-энд перевели на TypeScript, местные фронт-эндщики узнали уже постфактум. Найти того, кто знает, как именно должна работать та или иная фича, вообще нереально. Мой самый страшный диалог с начальником:
— Слу, а как именно это должно работать?
— Я не знаю.
— А кто знает?
— Хез. Ты просто сделай.
В Минске информация шла к людям. Были слухи, обсуждения у кофеварки — все были в курсе основных вещей. Тут же новости уходят куда-то в космос, или застревают в чересчур молчаливых головах.
2. Принятие решений
Еще одна особенность конторы в стране вечной демократии — отсутствие демократии. Мы — маленький семейный бизнес, и важные решения вплоть до использовать ли LINQ в C# принимаются сверху. С одной стороны, бизнес всё еще живой, значит подход работает. С другой стороны, свои лучшие практики, последние прочитанные книги по технологиям и мнения о природе вещей девелопмент может засунуть куда подальше.
— Питер, я думаю, что держать запас статических IP адресов и динамически присваивать их серверам — отвратительная идея.
— Нет, так будет проще.
— Так в том-то и дело, что нифига не проще. Это дорого и требует создать посредника, который будет распределять адреса и избегать конфликтов.
— Паша, просто сделай, как я сказал.
И следующие три часа я представляю, как бензопила «Дружба» превращает его тщедушное тельце в удобрение для поганок.
3. Другой масштаб задач
Зато в плане задач работа на большую продуктовую контору иногда просто сказка. Всё внезапно стало сложнее и интереснее. Например, если в Минске для проекта мы делали аккуратную нормализованную базу данных, и это было прекрасно, то тут просто хорошей базы совсем недостаточно. Нужно посмотреть, как она будет вести себя под нагрузкой, как лучше сконфигурировать индексы, чтобы и покрывали всё, что нужно, но и места много не требовали. Приходится учитывать всё, что на сегодняшний день успела придумать наша индустрия, и это интересно.
Выбор задач тоже прекрасный. Хочется потренироваться поднимать и выключать кластеры виртуальных машин из командной строки? Этого есть у нас. Адвокаты попросили снабжать их статистикой в ближайшие пол года? Пфф, вот им маленькая виртуальная машина, которая запускает Nodejs приложение по расписанию, скачивает четыре гигабайта информации, анализирует их и выгружает результат юристам в Google Drive. По основному проекту разнообразия мало, но сопровождающие проекты — просто находка.
Ну и масштаб некоторых заданий поражает. Мелочь, но вот такой пример: нужно протестировать свой код, но это долго, и я не хочу занимать этим свой ноутбук. Как быть? Я делаю маленькую программулину, которая разворачивает восьмипроцессорную машину где-то в недрах гугла. Та запускает тесты, отправляет мне письмо с результатами, и исчезает в небытие. Блин, я в две строки кода создал рабочую станцию где-то в штатах, а потом её «удалил»! Вот это колдунство!
4. Дежурства
Кроме задач, есть и другие отличия. Продукт-то свой, и за проблемы мы тоже отвечаем сами. Поэтому где-то раз в четыре месяца каждый разработчик заступает на неделю dev troubleshooting, и потом еще одну неделю on-call.
Траблшутинг значит, что все, у кого есть какие-нибудь вопросы по жизни или по продукту, идут к тебе.
— Слу, у заказчика эта лампочка загорелась, это нормально?
— Слу, а я не понимаю, как мы тут скорость рассчитываем..
— Слу, а ты не можешь спросить Сергея, как это должно работать? (А самому подойти, не???)
Моя неделя закончилась в позапрошлую пятницу, и за неё я вновь научился ненавидеть человечество. Там много дятлов, и половина из них работает у нас. Программировать вообще невозможно, у всех какие-то проблемы.
On-call — это дежурство. Есть полторы сотни серверов, и все загружены по самую макушку. Как только один из них начинает подтормаживать или вообще падает, звонят девелоперу разбираться. Доступность — 24 часа в сутки, 7 дней в неделю. Мой on-call заканчивается сейчас.
Выглядит это так. Пошёл я во вторник выгуливать ребёнка. Вышли в семь, а в семь тридцать мне уже звонят — что-то не так. Ну что же: «Сын, собираем лопатки, папа идёт работать».
Последний звонок был в 3 утра в субботу. В субботу!
Если траблшутинг разрушил веру в человечество, то on-call её окончательно закопал. Есть у нас служба поддержки. Вопреки стереотипам — офигенно умные ребята. В большинстве случаев они без чьей либо помощи могут заметить, что сервер тормозит, найти из-за чего, и тут же исправить. Половину их действий я даже не понимаю.
На этой неделе в поддержке дежурил дятел.
— Привет, я не смог обновить сервер. Посмотри пожалуйста. Вот описание ошибки.
— Тут написано, что «не могу ужать файл, пока идёт резервное копирование». Ты резервное копирование выключил?
— Да.
— Сомневаюсь. Попробуй еще раз.
— Теперь всё работает.
Через день (в ночь с пятницу на субботу).
— Привет, я не смог обновить сервер. Посмотри пожалуйста.
— Тут снова написано, что шло резервное копирование. Я взял на себя труд проверить, и ты его не отключал. Отключи копирование, перезапусти процесс.
— Ой. Извини, что разбудил.
Блин, ты же больше чем я тут работаешь!
Вообще, такие недели — офигенная тренировка. У меня бы год ушёл на то, чтобы узнать столько нового о проекте. Но полезно или нет, как только я скоплю достаточно деньжат, то куплю дом семье, уволюсь, и уйду в тайгу в геологи. Подальше от людей, поближе к камням.
А у вас в Oakville есть приличные дома дешевле 1млн?
Если таун хаус, то есть. Вроде как стандартная цена за 3-bedroom — тысяч 600. Detached будут дороже.
Можно посмотреть на границе в Бёрлингтоном — должно быть дешевле.
Убейте меня, но это вынос мозга, ППЦ. Правда за нормальные деньги! Я, наверное, выбрал бы здоровье за пару соток баксов в РБ! Пашка — это мое субъективное мнение!
Да лаааааан, всё не так жутко. Зато после такой школы жизни я буду крепче, чем гвозди для гроба 🙂
Дежурство на escalations это нормальная практика в продуктовых компаниях, другое дело, что если дёргают сильно часто, и к тому же в нерабочее время, то что-то не так в консерваториях. Либо со службой техподдержки, либо с инструкциями для них, либо с продуктом.
Я списываю это на то, что мы очень быстро выросли. Ритуалы еще не устоялись, куча нового народу, куча неструктурированной информации. Мы в один только девелопмент за последние пол года 6 человек взяли. Было 15. А ведь программеры — всего лишь один маленький отдел.
Когда-нибудь всё станет хорошо. Или уйду в геологи. Вин-вин.
Иногда помогает прикинуться дятлом))) Это я о себе и о своей работе.
Бонуса не будет если прикинуться дятлом. Тут в северной Америке принято премировать тех, кто хорошо (лучше других) работает. При этом не обязательно пахать 16 часов в сутки, можно 8, просто результат должен быть.