Вступ

Часто при обговорені зарплат за кордоном на українських форумах звучить фраза що “зарплатня це ще не все”, але що вона означає не всі знають і розуміють. Далі я спробую як умію коротко описати які ще види прибутків існують окрім зарплатні.

Отже поїхали.

Базова зарплатня

Це сума до податків за рік. Сума залежить від географічного місцезнаходження: скажімо Senior Software Developer може розраховувати на зарплатню від 150 тисяч на рік у Каліфорнії, або від 130 у Сіетлі. Така різниця обумовлена вартістю життя: ціни на житло, зручність транспотру, тощо.

Звісно також впливає набір вмінь (у випадку програмістів це досвід, знання інструментів та технологій) та інші досягнення.

Але треба враховувати що це сума до податків. В США податки кожен платить сам за себе і сума залежить від складу і сумарного доходу родини, зроблених покупок та інвестицій, хвороб та госпіталізації і іншого. Ось тут трохи розписував – Про виплату податків в США.

Додаткове читання – Рівні і зарплатня в МС.

ESPP

Employee Stock Purchase Plan, або Програма Купівлі Акцій для Працівників. Суть цієї програм в тому що працівникам компанії дають можливість купувати акції компанції за ціною нижче за ринкову.

Працівник всказує відсоток своєї зарпланті яку хоче відкладати на цей план, гроші накопичують і раз у період (квартал чи пів-року, наприклад) компанія купує від імені працівника свої акції. В Microsoft наскільки я пам’ятаю можна було до 5% заплатні відкладати і акції купували на 10% дешевше за рикову ціну на день купівлі. Тобто можна було одразу їх автоматично продавати і отримувати плюс скількись відсотків до зарплатні (мінус податок за прибуток). В GoDaddy можна відкладати до 15% зарплатні і продають нам за нижчою з двох цін: на початок і кінець періоду накопичення.

Тут також треба зауважити що у торгівлі акціями (і не лише для цієї програми) є суттєві обмеження для людей які приймають рішення, або мають знання про продукти які готуються на ринок. Справа в тому що ці люди мають незагально доступні знання, а значить і перевагу завдяки цьому, а це протирічіть законодавству. В результаті якщо вам “пощастило” працювати у групі яка має доступ до такої інформації то для вас спеціально і для членів вашої родини буде виділено пару днів на рік коли ви зможете купити чи продати акції компанії. А у вищого керівництва у більшості випадків можливість продати свої акції з’являється лише після того як вони залишають роботу.

Опціони

Деякі компанії не виходять на ринок акцій по кілька років навіть якщо справи у них йдуть добре. Взагалі говоловна причина такого виходу це залучення нових коштів: акціонери купують акції (частки компанії), а компанія отримані гроші спрямовує на розвиток продуктів.

У нового працівника йому можуть запропонувати певну суму акціями компанії, навіть ще не випущеними. І може статися що попрацювавши кілька років працівник йде з компанії і не отримує свої акції. Так само тим хто працює кілька років у компанії в якості нагороди можуть додавати якихось опціонів (також можливо ще не існуючих акцій).

Але розглянемо випадок коли акції таки почали торгуватися. Працівнику дають певну суму (читай нижче про “золоті кайдани”), наприклад 5 тисяч акцій по ціні 15 доларів за акцію. Якщо на момент отримання усих акцій ціна їх складала 20 доларів то стається наступне. По-перше, доступні акції “забрати” у компанії (називається “завестити”). Це буде прибуток (5000 * 15) з якого треба буде заплатити податок. Потім акції можна продати за 20 кожну і це вже заробіток (5000 * 5) з якого теж треба буде заплатити вже інший податок. Відповідно ціна опціона для кожного індивідуальна і люди навіть з однаковою зарплатнею і однаковим обсягом опціонів можуть в результаті мати різні суми: комусь дали опціон по 5 доларів, а комусь по 15.

Іншими словами опціон це пакет акцій компанії по ціні значно нижчій ніж ринкова. У деяких випадках бонуси також дають опціонами.

Обмежені акції

Ця опція близька до опціонів, а відміна в тому що працівнику дають пакет акції (розподілено на кілька років), але дають їх безкоштовно. Таким чином коли пакет стає доступним для продажу то усю поточну ціну акції отримує працівник і платить відповідний податок з цього.

Пенсійний план

В США він має назву 401k. Треба також сказати що якщо ви хочете отримувати пенсію в США і не працюєте на уряд то вам доведеться самому собі на пенсію відкладати. Для цього існує спеціальний фонд куди відкладаються гроші до податків. А після 65 років можна почати їх отримувати назад у вигляді щомісячних виплат. Скільки саме будуть виплати залежить від того скіьки було накопичено.

Так ось компанії можуть робити так зване “парування”, наприклад: перший відсоток відрахувань з зарплатні компанія подвоює, а для наступних 4 додає половину. Таким чином ви відраховуєте у фонд 5% зарплатні (повторю що до податків), і компанія туди ж вам додає ще 3% (1% + 4 * 0.5%).

Але не усе так райдужно – є максимальне обмеження на виплати у пенсійний фонд на рік і не вийде кілька останніх років перед пенсією накидати туди грошей і потім жити з виплат. Щоб мати хорошу пенсію треба з молодого віку відраховувати гроші туди.

Бонус

Бонус (премія по нашому) дається як правило по результатам перформанс рев’ю (оцінки досягнень) раз на рік коли для кожного порівнюється план роботи і що було реально досягнено, а потім люди виставляються по рангу: комусь велику премію і наступну сходинку в ієрархії, більшості середню премію, а деяких взагалі з роботи виганяють.

Бонус дається комбінацією грошей і акцій (опціонів та обмежених акцій) і як правило виплата розтягується на кілька років.

“Золоті кайдани”

Таку назву отримала ситуація коли у працівника багато премій (акцій та грошей), але їх виплата відбудеться у наступні роки. Як правило усі премії не видають одразу а розтягують: грошову премію можуть виплатити по 50% за два роки, акції дають порціями 5 років по 5% на квартал. Відповідно після кількох років роботи, особливо якщо кілька з них були вдалими у майбутньому такого працівника може накопичуватися до кількох десятків тисяч.

От тому це і називається “кайданами” –  коли йдеш з компанії то втрачаєш усі майбутні виплати за кілька років. І люди через це мучаються, але не наважуються змінити компанію навіть якщо робота вже що називається дістала.

Оплачувана відпустка

Взагалі в США гарантована оплачувана відпустка за законом – 0 днів. Але звісно компанії мають кожна свою власну політику стосовно цього питання.

Наприклад у Microsoft давали здається 15 робочих днів відпустки, пару днів лікарняних і ще пару “плаваючих свят”. Тобто виходило 4 тижні. Після 5 років роботи кількість днів зростала до 5 тижнів, але вже мало хто з тих хто залишився в компанії так довго вибирав усю відпустку: більше роботи і більше відповідальності робили свою справу. Після 10 років здається можна було брати 6 тижнів.

В GoDaddy кількість відпусткних днів не обмежена, але звісно треба зарані (за 2-3 тижні) узгодити дати зі своїм керівником. Такий підхід переймають все більше компаній – дослідження показують що люди відповідальніше ставляться до днів відпустки і насправді витрачають на неї менше днів.

Саббатікал

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

Страховка

Треба розуміти що медична, зубна та страховка на зір це не пов’язані між собою речі. В страховках важливо те яка сума покривається, після якої суми паціент взагалі не платить нічого та так звані ко-платежі: наприклад з моєю поточною страховкою я плачу за кожен візит до доктора фіксовану суму (скажімо 70 доларів), а усе інше скільки б там не було покривається страховкою.

Треба сказати що у Microsoft не лише найкраща в індустрії страховка, але і одна з найкращих в США взагалі і у плані покриття і тому що компанія дає страховку на усіх членів родини. В GoDaddy страховка є лише на працівника, а от за Олену ми платимо додатково (це може бути 300-500 доларів на місяць).

Про зубну страховку ще трохи тут – Американська стоматологія.

Різні дрібниці

Їжа на роботі

Якщо компанія годує обідами або безкоштовно (в GODaddy це 4 рази на тиждень безкоштовно – доставка з ресторанів), або частоково покриває вартість обіду (в столових Microsoft можна нормально пообідати за 5-8 доларів при повній ціні також обіду 15-20 доларів) така “благодійність” виливається у кілька тисяч додатково зекономлених за рік.

Також треба враховувати усі ті холодильники з безкоштовними напоями, чаї та кави. Дещо додатково можна почитати тут – Їжа в Microsoft та Microsoft: автомати з газіровкою.

Спортклуб та програми здоров’я

Тут все просто – компанії зацікавлені щоб працівники були здорові і іноді частково оплачують (називається “спонсорують”) членство у спортклубі. Якщо ви, а ще краще уся ваша родина регулярно ходите у клуб то така приємна підтримка дозволить зекономи від 60 доларів на місяць на члена родини. Дещо почитати можна тут – Про наший спортклуб.

Транспортування

Чим більша компанція і місто в якій вона розташована тим більшою стає проблема добиратися на роботу і додому – трафік займає час, з’являється залежність від машини, тощо. Деякі компанії надають сервіс “шатлів” (міні- або нормальні автобуси) що курсують певними маршрутами і розвозять працівників. У Microsoft так взагалі свій вокзал, автобуси у різні міста, маршрути мікроавтобусів між корпусами та безкоштовні індивідуальні таксі.

Іншим приємним бонусом може стати картка сплати місцевого транспорту яка поповнюється компанією.

 

 

На цьому все, з часом, якщо будуть питання щось допишу та/або виправлю.

З квітня 2012 по лютий 2014 я працював у Windows Phone в команді яка називалася Device Update. В цілому я пережив 2 великі реорги (це коли перетасовують структуру команд і продуктів щоб оптимізувати взаємодію), але весь час моя команда була частиною того що умовно можна назвати командою ядра Windows Phone. Організаційно моя команда була споріднена з наступними:

  • Core – команда яка займалася тим що вирізала все що можна з ядра Windows 8 і намагалася це примусити працювати на телефонах. Також в їх задачі входило примусити працювати, або знайти чому не працюють драйвери від сторонніх виробників таких якQualcomm.
  • Security – на телефоні кожна програма що не є частиною ОС працює в своїй жорстко обмеженій пісочниці і не те що не має доступу, але навіть і не бачить ресурси (файли, диск, пам’ять, реєстр, мережа, …) крім тих про які їй дозволено знати. Система безпеки телефону не покладається на механізми десктопної Windows, а по суті заміняє її. Це необхідно тому що вимоги до програм на смартфоні абсолютно інші ніж до десктопних програм.
  • Network and Drivers – на телефоні свій стек протоколів для WiFi, Bluetooth і усього іншого, але виглядає це як частина ОС.
  • Device Update – моя команда яка відповідала за оновлення на телефоні що рештою дівізіона сприймалося як частина ОС.

Ще в Windows Phone існують такі великі команди як UI, Developers Platform, Services та інші.

Тепер невеличкий відступ про механізми Windows Update. Технологія ця існує доволі давно і добре обкатана в самій ОС, а відносно недавно і інші продукти почали оновлюватися використовуючи цей механізм. Але важливо не плутати з механізмом оновлення програм з магазину – це зовсім інша сутність ніяк не пов’язана з ОС.

Працює Windows Update приблизно так:

  • клієнт питає у сервера щось типу “що в тебе є для категорії Windows/Windows Phone/XBox/Office/…”. Сервер повертає список версій: Windows 6, 6.1, 6.2 і так далі.
  • Клієнт каже “о, а я Windows 6.2, що там у тебе є для мене?”. До речі оте 6.2 це версія ядра ОС.
  • Сервер повертає список так званих детектоідів. Це такі логічні умови типу “значення ось цього ключа в реєстрі знаходиться між A та B”, або “версія ось такої DLL дорівнює ХХХ”, або “мова встановленна в українську”. Ну ви зрозуміли. Причому умови можуть бути які завгодно, а їх перевірку виконують так звані провайдери що реєструються на клієнті. Є провайдери для файлів, ресурсів (версія ОС, розв’язок екрану, версія драйверів), реєстру і інші. Таким чином клієнт не має уявлення як перевіряти детектоїди і що вони означають, а просто викликає відповідні провайдери. Імена детекоідів містять провайдерів, щось типу “./system/hardware/monitors/1/resolution/width”.
  • Для тих детектоідів умова яких істинна серверу повертаються ідентифікатори, а сервер повідомляє які файли відповідають цим детекоідам.
  • Клієнт викачує файли і робить з ними що хоче. Зверніть увагу що ні формат файлів ні що з ними робити протокол не диктує.
    Насправді там може бути кілька рівнів категорій і детектоідів, детектоіди можуть мати складні і навіть вкладені умови, один файл може бути пов’язаний з кількома детектоідами і таке інше. Але суть думаю зрозуміла.
    До речі коли ви встановлюєте Windows ваша машина отримує випадковий номер від 1 до 100 що використовується виключно механізмом оновлення. Коли ОС за розкладом перевіряє оновлення вона повідомляє серверу цей номер і той може сказати “у мене для тебе нічого нема”. Це зроблено для того щоб зменшити наватнаження на сервер який щодня без перебільшень смикають сотні мільйонів клієнтів. Також це дозволяє перевіряти оновлення на мешній аудиторії, скажімо перший тиждень віддавати його лише 1% користувачів. А от коли ви заходите в Панель Управління і натикаєте “Шукати оновлення” там то ваша ОС каже серверу “кажи що в тебе є і не дивись на мій номер”.

Коли було прийнято рішення оновлення Windows Phone зробити доступними за допомогою Windows Update (це дозволило уникнути реалізації серверної частини та деяких інструментів) то виникло кілька проблем специфічних для смартфонів, деякі з них:

  • через те що батарею треба економити не можна постійно тримати у пам’яті процес яки лише раз на кілька днів буде перевіряти чи є на сервері оновлення.
  • для зменшення трафіку дерево категорій та детекоідів має бути нижчим, але ширшим.
  • файли не мають бути надто великими щоб у випадку поганого зв’язку не качати заново один і той же файл знову і знову. Ні, докачувати не можна, а чому – залишу вам як домашню вправу для самостійних роздумів Smile Підкажу лише що весь сеанс від першого звернення до серверу до завершення розпакувування останнього файлу має бути транзакційним.
  • через обмеження пам’яті не можна скажімо розпакувати нову версію DLL і почати її використувавати для нових процесів в той час як старі використовують стару версію.
  • через обмеження дискового простору не можна розпакувати оновлення і чекати до наступного перезавантаження телефону щоб замінити ними старі файли.

Із секретів можу сказати таке що на смартфоні (і не лише Windows Phone) встановленно дві ОС, одна спеціально для того щоб встановлювати оновлення на іншу. Тобто зі сторони пристрою процес виглядає приблизно так:

  1. Знайти і викачати оновлення на сервері
  2. Запропонувати користувачу встановити їх
  3. Розпакувати оновлення (по суті це не нові файли, а лише те що треба змінити в існуючих)
  4. Перезавантажити телефон в другу ОС
  5. Пропатчити оновленнями файли на робочій ОС (на тому диску де встановлено робочу ОС)
  6. Перезавантажити телефон в робочу ОС
  7. В процесі завантаження виконати програми що зареєструвалися як мігратори даних зі старої версії в нову

До речі Apple так і не подужала зробити нормальні оновлення для iPhone і користувачі тупо викачують імідж (тобто цілий знімок диску) робочої ОС. Для цього їм треба тримати порожнім місце розміром таке саме як диск робочої ОС.

Із секретів можу сказати що функція “повернути до заводських настроєк” не відновлює оригінальні версії файлів, а просто стирає все з диска на якому зберігаються настройки і файли користувача, а робоча ОС залишається без змін. Таким чином якщо ви встановили хоч одне оновлення то повернути телефон у справді заводські настройки можна лише повною його перепрошивкою. Алетернативою було б мати ще один диск з оригіналами файлів, але на це ніхто з виробників не піде – робити пристрій дорожче заради сумнівної користі…

Одна з переваг переводу Windows Phone на Windows Update полягає в тому що теоретично (нижче детальніше чому теоретично) можна викладати оновлення коли Mictrosoft має їх готовими та протестованими. Десктопна Windows так і робить. Але у світі мобільного зв’язку волю диктують оператори. Жоден оператор не погодиться продавати телефони якщо вони не зможуть контролювати що саме на них встановлюється. Саме тому Microsoft не може самовільно робити доступними навіть критичні оновлення. Кожне оновлення має детекоід “оператор має бути Х”. Apple диктує свою волю операторам, у них інша ситуація. Що стосується Android то там шаленна фрагментація ринку і ніхто не зацікавлений робити доступними оновлення, краще продавати телефони з оновленою ОС і тому Google віддала оновлення на відкуп операторам та виробникам телефонів. Тобто вони їх звісно роблять, але публікацією не займаються, кому цікаво той сам робить оновлення доступними.

Я особисто вважаю що Microsoft має найвдалішу модель оновлень, але нажаль ситуація на ринку не дозволяє її задіяти.

А тепер зі сторони того хто публікує оновлення, звісно теж не всі особливості:

  • треба визначити між якими версіями мають існувати оновлення. Якщо для Windows нормально мати ланцюжок 1 оновлюється в 2, 2 оновлюється в 3 і так далі та ще й з перевантаженнями між оновленнями то для телефонів це не підходить: забагато викачувати, та і клієнти викинуть телефон якщо той почне перезавантажуватися кілька разів. Тому якщо вже опублікували оновлення з 1 до 2 то треба буде публікувати і 1 в 3 та 2 в 3. Ну і так далі.
  • після того як готова чергова версія (наприклад щоденний білд) треба не просто згенерувати оновлення для усих існуючих версій, але і розуміти які оновлення для чого та якось їх ділити на пакети. Наприклад у телефонів на відміну від десктопів розв’язок екрану фіксований, а тому оновлення для 600х800 та 600х1024 треба публікувати як окремі навіть якщо це єдине чим вони різняться. Додайте сюди мови (інтрефейсу, клавіатури, голосу і так далі), країну і ще багато всього і раптом з одного білда у вас виникає оновлень на кілька гігабайт.
  • до речі клавіатура (та деякі подібні речі) дуже цікавий приклад. Оновлення усіх можливих мов клавіатури ставити на кожен телефон не має ніякого сенсу, а коли користувач додає собі скажімо українську клавіатуру то її можна встановити лише з повної версії файлу, а не з патчу. Таким чином деякі оновлення містять як нові версії так і оновлення і використання того чи іншого визначається складними умовами.
  • оскільки смартфони захищені доволі серйозно то все що публікується має бути пошифровано і захищено сертифікатом який періодично закінчується (доволі часто).

Тепер подумає які ще є особливості в публікуванні оновлення. Скажімо MIcrosoft має нову версію до якої хоче обновити телефони. Будується імідж з якого виробники, наприклад Nokia, вибирають для кожної моделі саме те що їх цікавить. Десь не потрібна фронтальна камера, десь NFC, десь контроль трафіку, десь ще якісь фічі. Після тестування цієї версії виробник повертає імідж який вони модифікували і довопнили своїми компонентами. Тепер імідж треба підписати, згенерувати оновлення для попередніх версій і віддати операторам. Оператори вимагають гроші за тестування кожного оновлення (сотні тисяч долларів) і тому так часто як для десктопа виставляти оновлення не вийде. Власне з того що я бачив оновлення з’являються у доступі приблизно через рік після того як їх розробка завершена. Навіть зараз на наших Lumia 920 тa 1520 є не все що мав на своєму розробницькому телефоні 2 роки тому.

Так чим же займалася моя команада? А ось чим:

  • Інструменти які в процесі білду генерують оновлення для попередніх версій.
  • Публікація оновлень для усіх бранчів (їх було більше 150 на 2000 програмістів) теж в процесі білду. Таким чином розробники могли прошити свій телефон своїм бранчем і щоранку отримувати апдейти для нічного білда, або пропустити кілька днів і отримати апдейт що перестрибував кілька версій. Я в основному цим ось і займався.
  • на пристрої – частина що сканує, скачу і готовить оновлення
  • частина другої ОС що власне виконує оновлення
  • фреймворк для клієнтських міграторів данних

Ось, поки на цьому зупинюся. Хотів написати більше, але вже і так багато вийшло. Задавайте питання якщо є які.

П’ятниця, 7 лютого мій останній день в МС. Передбачаю що у вас одразу виникнуть питання чому і куди далі? Чому я власне і спробую пояснити в цьому пості, а куди далі напишу якось згодом.

Перед тим як почати розказувати як я прийняв таке рішення хочу зауважити що в ставленні до роботи у програмістів (і ще деяких інших професій) та інших є суттєва відмінність. В той час як для більшості нормальних людей головне питання про роботу “скільки платять” і та робота краща де більше платять у програмістів логіка дещо марсіанська. Програмістам важливо щоб цікаво, щоб щось нове вчити, щоб складні задачі, щоб з розумними людьми працювати, щоб займатися речами які важать для людства чи якоїсь галузі і ще купа таких же нераціональних і незрозумілих широкому загалу мотивів.

В США з цим трошки легше оскільки дітей виховують в дусі “знайди себе у житті”, “знайди чим тобі хочеться займатися і що буде приносити задоволення”, “почни свій власний бізнес”. І хоча люди розуміють важливість щоденного задоволення від роботи і другорядність рівня оплати все ж таки з різних причин і в США не всі можуть собі дозволити просто так міняти роботу. Ну а про Україну я взагалі не кажу.

Ну ось я і опинився в такій ситуації коли “не цікаво”. Роботи дуже багато, практично щодня люди працюють 10+ годин, часто доводиться і на вихидних працювати. Робота дійсно потрібна і має велике значення і для команди і для всієї організації (Windows Phone) і для продукту. Але це не та робота яку б я хотів робити, той досвід який я отримую це не той досвід який мені цікаво отримувати, а крім того дещо дістала мене система рев’ю (почитайте Рівні і зарплатня в МС).

Сподівання на поточну роботу у мене були великі (чим саме я тут займався теж напишу з часом окремим постом), і перші речі які я тут робив були саме тим що я і очикував робити. Але з часом фокус усієї команди змістився з розробки фіч до пітримки інших команд і останні півтори року я фактично був задіяний у роботі над інфраструктурою, інструментами та обслуговуванням усього цього господарства.

Система ж рев’ю є окремою проблемою МС – всі знають що вона погана, але ніхто не знає як зробити краще. В результаті просто помирати на роботі не достатньо, треба дійсно любити те чим займаєшся і додатково робити якісь речі завдяки яким тебе будуть знати менеджери інших команд. Якщо просто заритися у свою роботу то постраждає річна оцінка, скажуть “може він і правда такий хороший як його менеджер розказує, але ми не знаємо про його існування, не знаємо що він робить і не розуміємо для чого його підвищувати чи взагалі тут тримати”. Ідея основна в тому що як людина не стрибає вище голови то може краще її і не тримати і на її місце посадити того хто таки буде стрибати.

Важко видавати екстраординарні результати коли те що робиш самому здається нудним Sad smile

Можна було б звісно пошукати іншу команду в МС, мене б особисто цікавили такі продукти як bing, SQL Server та Windows Azure. Але як подумав про весь процес: шукати відкриті позиції, зв’язуватися з лідами, розсилати відгуки від свого ліда за попередні роки, проходити всі ці формальні і неформальні інтерв’ю… Чесне слово легше ззовні потрапити в МС ніж поміняти команду вже працюючи в компанії. От я і подумав що власен нічого мені не заважає пошукати щось в світі за межами теплого океану МС Smile

Особливо активно я не шукав, десь із пів-року в пасивному режимі приймав запрошення від рекрутерів на LinkedIn та Monster, ходив на деякі співбесіди (так, про це теж напишу) і власне просто дивися на те що можна знайти. І ось нарешті знайлася компанія яка почала наполегливо зазивати мене до себе і після пройдених інтерв’ю та поїздок в головний офіс я почав думати які ж у мене далі перспективи і де я опинюсь.

Зараз, коли Windows, XBox та Windows Phone очолив колишній керівник Windows Phone очевидно що три огранізації будуть зливатися в одну і буде суттєва зміна структури компанії. Та ще і з новим керівником який працював у групах де девелопери та тестери не існують як класи, а натомість є інженери які відповідають за усе починаючи з дизайну і через імплементацію, тестування, деплоймент та підтримку достваляють фічі користувачам. Вже приблизно відомо чим буде займатися моя команда працюючи над наступним релізом і мені вкрай нецікаво залишатися в ній.

Крім того шість років це не такий вже і короткий термін, хоча і пролетіли вони як один день. І подумалося мені що непогано було б спробувати себе у іншій (і меншій набагато компанії).

Ще одна особливість МС як от щойно згадав в тому що люди мають “розблоковувати себе”. Це так завуальовано кажуть “піди туди не знаю куди і принеси те не знаю що”. Тобто є якась загальна задача, ну скажімо збирати статистику про кількість невдалих апедейтів телефону. Це означає що треба буде знайти команди які можуть надати дані про результат апдейту зі свого коду, людей які відповідають за збирання та надсилання репортів, зробити так щоб з’явилася БД в яку такі репорти потраплять, узгодити з власниками коду в які вносиш зміни усе що треба і так далі… В усьому цьому безпосередньо програмування добре якщо 10%, все інше це мітінги, узгодження, документація, зустрічі і нескінченні потоки е-мейлів.

Ви просто уявити собі не можете наскільки МС е-мейло-орієнтована компанія. Довжелезні треди, обговорення, мітинги, специфікації, … Сотні, а то і тисячі мейлів на день цілком буденна річ.

Ну от хочеться більше чисто програмерської роботи, хочеться писати та рефакторити код, дебажити та вишукувати помилки, обговорювати дизайн.

Керівництво компанії, топ-менеджери – надзвичайно розумні, навіть геніальні люди. Рядові виконавці теж переважно дуже розумні, дуже велика кількість технічно сильних та і просто цікавих людей з усього світі. Менеджмент середнього рівня… Теж розумні, питань нема, але згадана вище система рев’ю призводить до дивних деформацій коли тім-ліди та їх керівники більше турбуються про те щоб про їх досягнення усі навколо знали і займаються тим що працюють на своє хороше рев’ю. В більшості випадків це звісно співпадає з цілями усього проекту, але дуже часто цінності менеджерів середнього рівня це щось що існує лише всередині компанії і є річчю в собі.

Коротше в один момент я просто зрозумів що просто прийшов час.

Після усього вищесказаного я тим не менш скажу що МС прекрасна компанія і я щиро порекомендую в ній працювати. Подібних масштабів в усьому світі ви більше ніде не знайдете – це і кількість працівників, це і технології та продукти де є все від ОС і заліза до інтернет-сервісів та комп’ютерних іграшок, це і неймовірно розумні та досвічені люди у яких можна вчитися нескінченно, це і усі культури світу і ще багато усього. І чесно кажучи я цілком можу повернутися назад через кілька років коли забуду про весь негатив і почну сумувати про старі часи у теплому дбайливому океані Microsoft.

Цей пост можна вважати доповненням до старого посту Їжа в Microsoft.

 

До речі хочу ще зауважити таку цікаву деталь щодо різних кока-кол: в США їх називають “сода” або “кола”. Це і буде аналог нашого “газіровка”.

Взагалі як я вже писав на кухнях стоять холидильники з різними колами, газованими напоями та молоком. Останнє ж віяння – автомати з газованою водою.

Хто бував у американських фаст-фудах (а хто не бував почитайте ще ось це – Фаст-фуд в США) той бачив такі машинки з кранами з різними напоями. Тобто на касі ти коли купуєш “колу” не уточнюючи що саме то отримуєш просто великий стакан. А потім з цим стаканом ходиш до автомату і наливаєш собі чого завгодно із запропонованого. Кількість походів не обмежена, ніхто не слідкує Smile І там же є спеціальна “педалька” для криги.

Ось подібні автомати, але набагато крутіші почали ставити і в МС. До цього чув що в деяких кафетеріях вони є, але ось їх встановили і в столовій того комплексу в якому я працюю.

Що ж там такого незвичного? Та власне вибір. Кожен з напоїв має основний смак і цілу купу варіацій про які я особисто ніколи і не чув. Як вам наприклад вишньова фанта без цукру? А мені сподобалася лаймова фанта (зелененька). Ну і змішувати гурманам ніхто не забороняє.

Ну і просто так. Машинки для кави. Теж стоять у кожній кухні. В моїй будівлі є по одній кухні на поверх і там стоять по 2 машини – старбакс та сіетл кофі.

Зверху кожної 2 відсіки: звичайні та декофеінуті зерна. Можна змішувати. Жирні коричньові розводи на лівих баках то якраз від звичайних зерен, можна побачити наскільки вони свіжі. Міняють/досипають їх як я бачу раз на пару днів.

UPD Feb 12, 2014. На прохання у коментарях додаю фото з чаями:

Якось я ніколи так і не розказував над чим я саме працював в bing і якими задачами там займався. Ось і прийшов цей момент Smile

У якості передмови хочу сказати що колись у мене був досвід роботи в стартапі де ми намагалися зробити щось нове в інтернет-пошуку (деталі – Як я працював в Luxoft’і). От після того у мене і виник інтерес до цієї області.

Відпрацювавши трошки більше 2 років в System Center над новим продуктом Service Manager я нарешті перейшов у bing (після випуску першої версії продукту).

Сам інтернет-пошук у дуже спрощеному вигляді можна представити як систему в яку з одного боку подаються вхідні дані (наприклад веб-сторінки), а з іншого приходять запити від користувачів. До речі те що я далі пишу не відображує те що відбувається насправді на 100%, а просто є спрощенним приближенням яке передає основну ідею.

Що стосується обробки даних, їх класифікації, категоризації, оцінювання та ранжування – це все великі і складні задачі пов’язані з математичними моделями та неймовірними обсягами даних. У такі команди потрібні люди зі спеціалізованими знаннями, наприклад машинне навчання, нейронні мережі, математичне моделювання, тощо. І специфіка задач там така що обробка даних може йти дуже довго (години, а іноді навіть і дні).

З іншого боку запит від користувача треба обробити якомога швидше і видати йому назад якомога релевантніші (тобто такі що найкраще відповідають на запит) дані.

Таку складну систему яка складається з сотеньо компонентів можна поділити на шари, наприклад: інтерфейс веб-сторінки, розуміння запитів, уточнення запитів, робота з провайдерами даних, тощо.

Можливо ви не знали, але за статистикою переважна, абсолютна більшість запитів користувачів містять у собі помилки, тому пошукові системи намагаються їх автоматично виправити. Крім того запит треба зрозуміти. Скажіма якщо я шукатиму по слову Seattle то мене (через те що я близько до нього) скоріше за все цікавить ситуація на дорозі, можливо карта і погода. А якщо те ж саме напише людина з іншого континенту то для неї скоріше за все варто показати дані з вікіпедії, фотографії, та положення Сіетла на карті світу, або навіть інформацію про авіа-рейси до Сіетла.

До речі все що я розказую стосується не лише bing, але і будь-якої пошукової системи загального призначення.

Чим більше ви слів напишите у запиті (при умові що слова разом мають сенс) тим більша імовірність отримати відповідь на питання на першій же сторінці результатів. Крім того усе вище сказане означає що в залежності від вашого місцезнаходження (а також інших речей як історія пошуків) користувачі бачать різні результати на один і той же запит.

Крім того треба розуміти що пошукові системи побудовано так що обслуговуючі їх комп’ютери знаходяться у різних дата-центрах і відповідно дані і програми там можуть бути різними. Усі найновіші зміни, покращення та експеременти як правило гравці на цьому ринку роблять доступними в першу чергу для США. А для України/Росії відставання легко може складати місяці, а то і роки. Ви спробуйте – поставте у своєму браузері локаль США і порівняйте результати.

Коротше після того як користувач через веб-сторінку ввів свій запит він перетворюється на сотні різних варіацій і доповнюється іншими даними (місцезнаходження, браузер, попередні запити,…) і спрямовується до компонентів які можуть обробити ці запити.

Тепер поговоримо про дані. Якщо ми візьмемо результати спортивних матчів чи ціни на акції які мають оновлюватися щохвилини (а бажано кожні кілька секунд), прогноз погоди який треба оновлювати кожні пару годин хоча б, та скажімо статті з енциклопедії як добре як оновлюються раз на пів-року то зрозуміємо що зберігати такі дані разом, або просто однаковим способом просто недоцільно. По-перше від типу даних залежить логіка їх обробки. Наприклад запит MSFT для компонента що працює з акціями просто означає що потрібні поточні дані для акцій Microsoft, а от для карт наприклад, чи фінансових новин вже треба вибирати за ішими принципами (скажімо найцитованіші новини).

Ну і відповідно харатер даних впливає на те як і де їх зберігають і як їх деплоять (тобто як вони потрапляють на комп’ютери що обслуговують запити).

Я працював в команді яка відповідала за роботу з провайдерами даних. Тобто грубо кажучи це був фреймворк для створення компонентів для спеціалізованих типів даних. Компоненти знаходяться логічно між графічним інтерфейсом (веб-сторінкою) і сховищами даних. Фреймоврк навав можливість унфікувати роботу з постачальниками даних, послати і обробити паралельні запити до даних, зібрати відповіді і надати їх веб-сторінці.

Практично все що користувач бачить в результатах пошуку проходило через код який писала моя команда. Там все складніше, є і інші канали отримання даних, але все ж таки більшість даних проходила “через нас” Smile

Які ж основні технічні проблеми? По-перше, уся робота відбувається асинхронно і наш код не мав створювати ніяких затримок (тобто многопоточність і при цьому відсутність синхронізації). По-друге, накладні розходи мають бути мінімальними і користувачі нашого коду мають отримувати усю функціональність “безкошотвно”, тобто абсолютно на все у нашого коду є лічені мілісекунди. До того ж використання пам’яті по мінімуму (її і без нас є кому споживати), можливість програмного чи апаратного збою в будь-який момент і інші речі.

Через те що в процесі задіяні сотні тисяч комп’ютерів імовірність фатальної помлики (баг, апаратний збій, пошкодження даних, проблеми у мережі, …) дуже висока і фактично гарантована.

До того ж дослідження причин негараздів та ще весела задача – знайти які дані і звідки прийшли, куди вони пішли, що потім сталося… Отак і “розслідуєш” якийсь випадок з машини на машину. Наче і логи є, проблема лише в тому що їх реально терабайти.

Я вже не говорю про те що при оновлені компонента його ніхто не буде зупиняти що замінити на нову версію і тому потрібні механізми як це робити “на ходу” (поки поточні запити оброблюються старим компоненом усі нові мають оброблюватися новим). До цього ж додайте оновлення даних деякі з яких як я вище зауважив оновлюються дуже часто, а також те що це має відбуватися на мінімум тисячах машин одночасно. Коротше веселуха ще та.

Крім написання коду та дослідеження причині помилок (і їх виправлення) команди в bing займаються деплойментом (тобто оновлюють свої компоненти в дата-центрах при необхідності) та реагують на критичні випадки. В командах є концепція чергових (і так само і в google, facebook та інших сервісах-гігантах) від кожнох команди які в разі необхідності (по закону підлості це завжди трапляється в 4 ранку або у вихідні) мають підключитися та вирішити проблему. Мова звісно не йде про виправлення багів (для цього є робочий час), а скоріше про “зробити щоб цього не було”. Це в тому числі може буде і повернення до старої версії коду або даних.

Які скіли розвиваються на такій роботі? Многопоточне прогамування, профілювання та оптимізація, дебагінг (WinDbg) та особливо вміння дошукуватися до першопричини проблем.

Ну от, наче щось розказав і секретів не видав Smile

Ще пости по темі:

Вже не один раз я хвалився тим як я бігаю чи катаюся на велосипеді з/на роботу. Ну от і подумав зненацька чому б і не написати про це.

Сьогодні вранці був туман, а фотографував на кросівок телефон, які там ще стандартні виправдання розмазаних фоток є? Smile Насправді після бігу якось зовсім не хотілося стояти і вицілювати ті фотографії – весь потний і мокрий як миша, руки починають швидко мерзнути, телефон стогне і плаче що я його цілий день вчора не заряджав… Коротше дивіться що є.

Я працюю в Studio E.

Взагалі роздягальня є як правило одна на комплекс будівель (3-4 білдінга, або 2-4 тисячі людей). В Белев’ю де у МС 4 хмарочоси роздягальня є у кожному з них. Розташовуються вони як правило на першому рівні підземної парковки, хоча в деяких старих будівлях можуть бути і на першому поверсі, трохи збоку від офісів.

Працюю я в тому ж “будинку” де роздягальня, але скоро у зв’яку з переїздом доведеться ходити сюди з будинку через дорогу.

Всередині є туалет, 2-3 рукомийники, кілька душових кабінок з рідким милом, рушники та шафки.

Шафки поділяються на такі що їх можна тримати закритими кілька днів (через 10 днів після останнього використання замок відкривається автоматично), та такі що відкриваються щодня.

Знову ж таки в залежності від будівлі знайти вільну шафку на тривалий час (наприклад щоб тримати там запасний одяг та різну “косметику”) може бути доволі проблематично.

Раніше були якісь спеціальні правила що треба було знайти вільну шафку, написати у спеціальну службу щоб підтвердити що можна її забрати собі. Потім усе це спростили і якщо замок відкритий то за новими правилами ти можеш усе звідти викинути і зайняти її собі (на шафках кодовий замок і код задається при замиканні).

Якщо ж через відпустку чи відрядження точно не зможеш відкривати-закривати її 10 днів то треба написати знову ж таку у спеціальну службу і можна повісити замок.

Як правило шафку одразу не забирають якщо в ній є речі, натомість кладуть записку що “я такий то заберу її собі якщо до такого числа вона ще буде відкритою”. Проте іноді у внутрішній переписці можна почитати веселі історії коли хтось принциповий забрав шафку одразу викинувши речі (за правилами же ж!), у відповідь на записку “поверніть шафку будь-ласка, я просто забув вчора її закрити” написав “згідно правил не мушу” і наступного дня мав повну шафку піні для гоління видавлену туди через дірки у дверці Smile

Інша цікава річ це розмір шафок. Я не розумію американців – навіть у найкрутішому і дорогому спортклубі це якісь вузенькі книхітні нірки, майже як в Україні в магазинах на вході де люди свої торби залишають.

Поруч із роздягальнею як правило є парковка для велосипедів де часто можна знайти насос.

Рушниками займається якась окрема контора і возять вони їх по розкладу – іноді закладені усі лавочки, а пару разів за всі роки бувало що взагалі рушників не було. Тому у багатьох у шафках можна побачити пару рушників про всяк випадок. Колись давно кажуть у цілях скорочення витрат рушники відмінили взагалі (треба було свої носити), а потім коли їх повернули то народ ледь масове гуляння не почав, хоча реально цим усим користується добре якщо 5% працівників. Проте завжди є можливість сходити в душ на роботі. А я іноді там і голюся коли дома не було часу чи бажання це робити.

В bing пам’ятаю народ вішав свої шмотки спортивні сушитися на якісь труби (там була одна кімната де зберігалися велосипеди, там були і труби, а з неї вже можна було потрапити в роздягальню) на плечиках звісно. Спочатку вішали плакати “не сушіть шмотки на цих трубах – порушуєте техніку безпеки”, а потім прикрутили спеціальну трималку для плечиків. Тут же де я зараз особливо де розвісити свої лахи і нема. І навіть зверху шафок (дивись на фотках) прикрутили лист жесті під кутом щоб нічого на верх не ставили. У bing знову ж таки зверху шафок народ навалював взуття і шмоток.

Ну що ще сказати? Гаряча вода є завжди Smile

Хоча і невеличкий, а все ж таки ювілей і певні підсумки певні можна робити. До речі те що пройшло 5 років навіть не відчувається, враження таке що максимум 2 роки пройшло, наче не так і давно був перший день…

Далі дещо сумбурно, спробую не повторювати те про що вже писав раніше.

Як все починалося

Своє резюме я кілька разів посилав у МС, але жодного разу навіть не відповідали. І от черговий раз відправивши резюме на ukrcv@microsoft.com нарешті отримав відповідь (працював я тоді у Luxoft’і). Там питали коли мені краще подзвонити, ну а після нетривалої переписки власне мені хтось із ХРів і подзвонив і ми мило поспілкувалися з приводу мого досвіду з різних технологій та порозв’язували стандартні логічні задачки по телефону. Взагалі у мене склалося враження що інтерв’юєр звіряє мої відповіді з якоюсь формою і ставить галочки.

Ще через деякий час мене запросили на співбесіду у Москву куди я і поїхав. Там вже пройшов 5 співбесід (45 хвилин інтерв’ю + 15 хвилин відпочинку). Щоб такого особливо складного щось було так і ні, доволі стандартні задачки. Лише на відміну від наших ніхто про віртуальні методи не питав і взагалі сказали писати на чому зручніше. Ну типо наймають тих хто достатньо розумний щоб вивчити будь-що і щоб мав цінність для компанії в цілому.

А ще через деякий час прийшов офер, розмір зарплатні і таке інше. Я тоді погодився одразу, зараз розумію що сильно продешевив, але не шкодую все одно. Навіть з самого початку зарплатня була дуже добра, вища майже вдвічі за середню по США. Ну і до того ж компанія займається усіма юридичними питаннями, надає найкращу в індустрії страховку і взагалі є дуже комфортним місцем роботи.

Ну от вони робили все за мене, я, наприклад, у посольство прийшов тільки на співбесіду яка закінчилася на першому ж питанні де я сказав що буду працювати в МС Smile

System Center Service Manager

Мій перший проект був Windows, C#, тестування… На відміну знову ж таки від українських реалій тестери тут пишуть код. Звісно це не код продукту (хоча бувають і такі випадки), це автоматизовані тести, інструменти що використовуються в процесі розробки і тестування, бібліотеки та фреймворки. Крім того тестери на відміну від програмістів мають майже повну свободу у виборі технологій, мов та бібліотек, а також отримують знання у областях куди вузькоспеціалізованим програмістам ніколи не вистачає часу залізти.

Зараз я дуже радий що попрацював тестером, а тоді мене це напружувало. Власне продукт, коли я до нього приєднався, було прийнято рішення переписати з нуля новою командою, а отже я побачив як починаються різні процеси і до того ж отримав досвід випуску першої версії.

Щоб по простому то цей продук має тісну інтеграцію з лідерами у свої категоріях Operations Manager (моніторинг стану заліза і софта) та Configuration Manager (управління оновленнями та конфігураціями софта і заліза) і призначений для ефективного управління процесами (наприклад розв’язанням апаратних чи програмних проблем в огранізації, але не лише). Призначений для великих організацій, здається від 20 тисяч комп’ютерів. Очикувану після випуску почав приносити добрі гроші. А такі продукти як ви мабуть розумієте не продаються у коробках, натомість за них платять кожен рік за кожен комп’ютер, користувача, тощо. І це сотні доларів, тобто організація типу банку з 20 тисячами працівників щороку сплачує десятки мільйонів.

Тут я дізнався по програми за якими партнери отримують задовго до всього ринку перші сирі версії, використовують їх і постійно дають свої відгуки. Були навіть великі організації з України. Ну і взагалі багато чого цікавого дізнався і побачив.

Але все одно хотілося більш технічної роботи, хотілося С++ та вказівників Smile

Ну власне до випуску першої версії я і досидів (це було 2.5 роки), і пішов далі…

bing

Тут вже я повернувся до ролі програміста. Працював у команді яка володіє фрейморком на основі якого запити спрямовуються до спеціальних обробників та джерел даних, а відповіді акамулюються. Це не та частина яку бачить користувач, але через цю частину також проходить практично весь трафік.

Як ви розумієте тут було багато роботи з оптимізації перформансу, дослідження причин проблем та того як можна все покращити. Але було і багато іншої роботи – досліджувати що сталося з якимось сервісом у якомусь дата-центрі на сотні і тисячі машин, деплоїти нові версії, міняти конфігурації та дані. Ну і ще така мила річ як час від часу цілодобове чергування на протязі тижня щоб у випадку чого миттєво пофіксати будь-що, а інакше шалені гроші будуть втрачатися.

Ну все ж таки сервіс ще не коробочний продук. А ще і відмінності в стилі роботи. В бігну, і взагалі онлайн-бізнесах МС це agile, коротенькі ітерації, відсуність тестерів і гонитва за іноваціями. Доволі аргесивне середовище треба визнати.

Півтора роки працював з превеликим задоволенням і навіть не думав нікуди йти, але потім ситуація змінилася. Не хочу вдаватися в деталі, але фактично різко і неочикувано стало погано. Ну та буває, добре компанія велика і є з чого вибирати. Отже через 2 роки пішов я далі…

Windows Phone

Тут я працюю в команді (вже пів року) яка займається апдейтами ОС і знаходиться настільки близько до Windows наскільки це можна щоб не стати її частиною. Тобто те що ми робимо певною мірою є розшиненням ОС, але в саму ОС ми не ліземо. Розробка для мобільних пристроїв, навіть таких потужних як смартфони, доволі помітно відрізняється і від розробки десктопного/ентерпрайз софта, і звісно від розробки сервісів. Організація і стиль роботи тяжіють до довгих, по року і більше циклів, глибокого детального планування і не частих релізів, тобто абсолютно протилежне тому що було в bing.

Тут багато роботи у дебагері (windbg переважно) як з конкретними девайсами так і віртуальними машинами. Багато специфікі пов’язаної з різноманітними обмеженнями – так, наприклад, детальні логи з історією не доступні, дослідження причин якихось негараздів часто є детективною історією з елементами творчості “мабуть воно було ось так, а потім сталося ось це” Smile А якщо серйозно то звичайна така програмістська робота звісно з певною специфікою.

Поки що подобається, цілком бачу себе тут ще на 8-10 років, але загадувати не буду. Тут можна сильно прокачати багато скілів, а найцікавіші на даний момент для мене ті що називають дебагінгом та системним програмуванням.

У підсумку

Треба ще раз повторити що компанія не просто велика, а неймовірно велика. І кожен великий продукт настільки відрізняється способами організації роботи що фактично це різні організації. А також це означає що серед сотень продуктів та команд завжди можна знайти те що буде подобатися і з точки зору організації роботи і з точки зору технологій та того чому можна навчитися. Я цілком бачу можливіть працювати в МС ще багато-багато років… Але знову ж таки зарікатися не буду.

МС таке доволі унікальне місце де переважна більшість людей не просто розумні, а як правило розумніші і краще за тебе як мінімум в кількох областях. Так, тут недостатньо “просто добре робити свою роботу”, далеко недостатнь. Тут треба пнутися щодня, добровільно брати на себе відповідальність за рішення, самотужки пропихувати свої рішення та бачення. Думаю що в інших успішних великих софтверних компаніях США ситуація відрізняється не суттєво. Ну та амерканці вони взагалі що називається горять на роботі – працюють дуже багато, але головне що ефективно.

Чи шкодую я про щось, чи повторив би ці 5 років ще раз? Скажімо так (без подробиць) – знову проходити я б не схотів, зробив би все розумніше, але з іншого боку дуже радий що пройшов через усе. Шкодую про те що не старався краще свого часу і не портапив сюди хоча б на рік раніше. Чи порекомендую я повторити свій шлях іншим? Знову ж таки залежить. Залежить від людини, її прагнень, очикувань та мотивації. Але в цілому так, порадив би Smile

Додаткове читання

Список мої раніше написаних постів про МС:

Не знаю як довго, але ветерани кажуть що ледь не з заснування компанії МС проводив раз на рік пікнік на природі для працівників і членів їх сімей.

Це була доволі масова подія – десятки автобусів забирали людей від офісів і везли на ферму (на якій до речі знімали Твін Пікс). Кожен з працівників міг поїхати один раз (усього таких днів було 3) і взяти з собою одного дорослого і одну дитину.

А там, як приїздиш стоять цілі потяги з їжею – готують м’ясо, салати, роздають соки, напої і морозиво. Усе безкоштовно звісно. Також стоять огорожені тенти де можна взяти пива (виносити за забор не можна).

Смажені тут же реберця, лосось, кукуруза (місцеві дикуни смажать цілі качани і виходить на диво не погано).

Тут же різноманітні атракціони як для дорослих так і для дітей – скелі, гірки надувні, музики на сценах, просто місця щоб посидіти поїсти чи позагорати і понасолоджуватися видами. Якісь активні ігри було організовано, десь велосипеди видавали покататися, люди бігали якісь квести розв’язували. Ферма велетенська, міста для всього вистачало, навіть щоб усамітнитися.

А, ну і звісно ж машини на попробувати від місцевих автодилерів. Було родео на механичному бичку (прекрасна розвага спробувати втриматися на ньому після пива), але черга там така була велика що ми не дочекалися.

А потім настала криза і наступний пікнік (у 2009-му) відмінили з листом-вибаченням. Ну та воно і ясно – такі заходи обходилися у десятки мільйонів і коли скрутно не до розкошів. А коли криза минула ніхто і не згадав щоб відновити Smile Як на мене то і краще, хай гроші йдуть на щось доцільніше, а з іншого боку хочеться безкоштовних свят з розмахом.

Ну а ті хто пропустили той останній раз (а для нас він був і першим) напевно пошкодували і продовжують шкодувати щороку. Але хто ж знав.

Переопублікую свій старий пост з деякими уточненями і доповненнями. Усе викладене нижче спрощено і підчищено від деталей які не змінюють суттєво розуміння процесу.

Подібна інформація не є секретною (окрім рівня з/п), але ще і кожному працівнку її повинен донести (навіть зобов’язаний) його безпосередній менеджер.

Отже атестація відбувається кожен рік. Оцінюються 2 речі. Перше це “технічна” частина. Тобто кожен складає собі план того що повнно бути зроблено за рік (фічі яким будеш володіти, курси на які сходиш, участь у конференціях, консультування кастомерів, підвищення технічного рівня, …). Відповідно плану (який звісно узгоджується з менеджером) кожного і оцінюють в кінці річного періоду.

Також є друга частина – здібності та досвід у певних областях (як то девелопмент, тестування, написання документації, консультування, управління людьми, …). Відповідно цієї частини видно як тебе слід розвивати і просувати, в якій області ти будеш більш ефективним. Також важливо наскільки ти добре працюєш з іншими командами, наскільки твоя робота впливає на інших і таке інше.

Для коригування планів (тому що плани усього продукту можуть змінитися, тебе можуть кинути на інші ділянки, тощо) і щоб “тримати руку на пульсі” всі зобов’язання переглядаються в середині року.

Після того як менеджери зробили свої оцінки всіх менеджерів збирає їх менеджер і так далі до самого верху. Разом вони розказують про кожну свою людину і намагаються їх проранжувати. Тобто навіть якщо у тебе конфлікти з менеджером і він намагається тебе “присадити” то теоретично інші менеджери можуть зауважити що вони знають що ти робив і допомогав їх командам і вони думають що тебе треба вище оцінити. І навпаки – ми його не знаємо, не знаємо що він робить, чому його так високо оцінили? Працюючи тут кожен вимушений спілкуватися з членами інших команд (в межах проекту чи групи споріднених проектів), ну це очевидно.

Крім усього іншого така система означає що сидіти спокійно і просто добре робити свою роботу не вийде. По-перше, кількість років на кожному рівні обмежена і якщо людина довго не росте то її рано чи піздно “попросять”. А, по-друге, кожен розуміє що його порівнюють з іншими коли роздають цукерки і намагається придумати щоб такого зробити побільше і помітніше – якийсь інструмент написати, узяти якусть помітну частину проекту на себе, проявляти активність у спілкуванні і доводити всі робочі проблеми до розв’язку якогомога швидше. Крім того одна з метрик за якої оцінюють менеджерів це те наскільки рівно і регулярно ростуть у його людей рівні – тобто чи допомогає він у рості, чи йде робота над слабкими сторонами і чи правльно докладаються зусилля. Іншими словами робоче середовище доволі агресивне і “просто добре робити свою роботу” недостатньо.

Так, людей проранжували і далі відбувається саме цікаве. Далі певний відсоток оримує вищий рівень/зарплатню/премію залежно від оцінки. Інші отримають менше бонуси, а хтось не отримує зовсім. Рівень зарплат визначається наступним чином. Є рівні, на кожному з яких є виделка – мінімум і максимум які може отримувати людина на цьому рівні та інші надбавки як різноманітні премії, тощо. Тобто щоб підвищити з/п людині яка дійшла до верхньої межі треба або постійно давати бонуси, або переводити на вищий рівень.

Але вищий рівень це не лише вища з/п, але і ширший набір обов’язків. Отже чим вище рівень тим більше треба брати на себе.  Рівні можна пояснити приблизно так (це лише для девелоперів та тестерів):

  • Спочатко ти якісно виконуєш доручену роботу і шукаєш рішення проблемам які тобі пояснили
  • Ти “ведеш” якісь задачі від самого початку (збір вимог, проектування, обговорення, залучення інших людей, дотримання заданих термінів). Тобто тобі вже не треба казати що робити по пунктах, а можна дати загальний напрямок.
  • Твоя робота впливає на роботу твоєї команди і споріднених команд – ти пропонуєш і пропихуєш нові рішення, архітектуру і способи роботи. Грубо кажучи придумуєш як покращити те над чим працює команда (включно з новими можливостями) чи процес розробки.
  • Далі твоя робота впливає на весь продукт – те що ти робиш впливає на ключові характеристики. Придумуєш як покращити весь продукт.
  • Наступнк – твоя робота впливає на весь напрямок і тут ти робиш щось таке що дає конкурентну перевагу компанії.
  • Ну і найвищий рівень – робота впливає на всю компанію.
    Кожен рівень має два “під-рівні” які більше показують досвід роботи на певному рівні.
    Ще цікаво що у відповідності до рівня кожному дають бонуси акціями. Але дають хитро – увесь бонус поділено на порції на 5 років і в кінці кожного кварталу видають 1/20 бонусу. Спочатку це зовсім якісь смішні суми, але оскільки бонуси накопичуються щороку то вже на другий рік ти отримуєш по 1/20 від цього та попереднього року. Крім того чим вище твій рівень тим вище бонуси.
    Ще пам’ятаєте про ранжування? Ну так от там усього 3 групи на кожні 2 рівні – перевиконав те що запланував (10% людей), все зробив як і планувалося (70%) та недопрацював (20%). Може бути наприклад так що ти був SDE який регулярно отримував бонуси за те що працював виключно добре і от тебе зробили SDE 2 і тепер вже не все так класно бо ти тепер в одній групі з людьми які тягнуть набагато більше. І опа – ти вже в найкращі 10% не влазиш.
    Це, ще раз повторю, веде до того що народ весь час думає що б таке зробити щоб 1) усі побачили що я зробив круту штуку, та 2) як зробити так щоб нею реально користувалися.

Ще по темі: