Девушки преуспевают в типично мужских занятиях, и этот факт уже давно перестал восприниматься как общественный феномен. Сегодняшняя героиня рубрики Анна Воробьева может дать сто очков вперед любому мужчине ИТ-профессионалу. Она – ведущий разработчик одного из ключевых компонентов виртуальных машин в компании Parallels. Самое время выяснить, как ей работается в области системного программирования и есть ли, на ее взгляд, место девушкам в командах софтверных инженеров.

Интервью с Анной Воробьёвой, ведущим разработчиком виртуальных машин в компании Parallels

Чем вы занимаетесь на работе?

Я – ведущий разработчик core-команды в компании Parallels. Core-команда занимается созданием и совершенствованием так называемого монитора виртуальной машины – центрального компонента виртуализации во всей линейке гипервизорных продуктов Parallels. Именно в мониторе создается иллюзорный процессор, память, все устройства.

Согласна, это несколько нетипичное занятие для девушки. За мою карьеру в IT следует благодарить родителей – они очень пеклись о будущем для своего вполне гуманитарного чада. Но уже в институте (в МЭСИ) я столкнулась настоящими IT-фанатиками, которые были готовы днями напролет говорить об устройстве операционных систем. Двое самых продвинутых ребят пошли в Parallels, когда она была совсем маленькой компанией. Они так увлекательно рассказывали об уровне решаемых задач и об атмосфере в коллективе, что их истории в конечном счете помогли сделать выбор места работы.

Непрерывный драйв вряд ли возможен в работе. Труд софтверного инженера – не исключение. Случаются как творческие подъемы, так и периоды творческой апатии. Но в целом виртуализация и облачные вычисления не дают соскучиться. В этой отрасли постоянно что-то происходит, нужно отвечать этим новым вызовам. Кроме того, мы постоянно совершенствуем свой код, свои технологии, все время чему-то учимся. Особенно много дают поездки на международные конференции.

Наш монитор виртуальной машины общий для всей линейки продуктов с гипервизорной виртуализацией — Parallels Desktop, Parallels Workstation, Parallels Server. По сути монитор — это такая микро-операционная система, которая живет по своим правилам, со своими аллокаторами памяти, отложенными вызовами, таймерами и синхронизациями. И при этом монитор совершенно невидим для хостовой операционной системы — приложение обращается к драйверу, драйвер начинает работу и – а тут магия! — мы уже в мониторе, а не в операционной системе. Собственно, этот магический переключатель контекстов со всеми его универсальностями на голом ассемблере – повод для моей профессиональной гордости. Он, ну и еще сильно улучшенная плотность виртуальных машин на единицу оборудования в серверном продукте Parallels Server Bare Metal. Мы там такого с памятью наворотили, что любо-дорого посмотреть.

В ходе поиска оптимальных решений работы Virtual Machine Monitor мне приходится закапываться очень глубоко в ядро операционных систем. Узнай об этом разработчики ОС, они, наверное, очень бы удивились. Трудно поверить, но даже в системах от Apple время от времени бывают ошибки. Когда мы впервые спортировали наш известный среди «маководов» Parallels Desktop (PD) на 64-битное приложение, хостовая Mac OS стала сама по себе абсолютно хаотично перегружаться или повисать насмерть. Искать ошибку выпало мне — вероятно, в силу сочетания моей ответственности и общей трудоемкости задачи. Диагностики при таких видах «падений» не остается, поэтому я сама шерстила стандартные «64-битные» проблемы.

После длительных изысканий выяснилось, что MacOS для 64-битных процессов может использовать неверные данные, полагаясь на сохраненную копию. Операционная система при переключении на 64-битный процесс не полностью перегружала все регистры процессора (для тех, кто в теме, речь про GS и FS). Процессор работал на закэшированных значениях. А наш монитор виртуальной машины при работе (как раз при том магическом переключении) восстанавливал все регистры, в том числе и неверные. Данные в этих регистрах были настолько критичны для ОС, что она не могла даже нарисовать сообщение о критической ошибке ядра (kernel panic), рекурсивно вызывая обработчик ошибки. PD обновлял данные, полагаясь на то, что они корректные. К чести Apple стоит отметить, что они оперативно реагируют на баги, и уже в Lion-е (меньше чем через год) проблему починили.

Как выглядит ваше рабочее место?

Мое рабочее место можно описать как гармоничное сочетание множества «железяк» и пачек зеленого чая. Чай я люблю, а внушительный парк техники — это суровая производственная необходимость. Виртуализация от Parallels — кросс-платформенный продукт, поэтому создавать и тестировать прототипы новых версий приходится на самом разношерстном оборудовании.

Есть ли место девушкам в технических специальностях?

Какое «железо» используете?

На большом столе (а также под ним) живут:
Два десктопа – один на процессоре Intel, а другой – на процессоре AMD.
Сервер MacPro.
Лэптоп MacBook.

На «железе» установлен целый зоопарк систем — и MacOS X, Windows разных разрядностей и разных версий, и всевозможные варианты Linux.

К железу вообще и к гаджетам в частности я была равнодушна до прошлой поездки на WWDC (Apple Developer Conference), где безнадежно влюбилась в iPhone. Кстати, мой экземпляр девайса – трофейный. Я выиграла его в ходе профессионального пари с сооснователем Parallels, а ныне председателем совета директоров Сергеем Белоусовым. Как-то раз мы сидели в ресторане. И никак не могли вспомнить название одной из недавно представленных эппловских технологий. Сергей погуглил, хмыкнул и сказал: «Так, кто первый вспомнит, тому и iPhone». У каждого было по три попытки. Первой вспомнила я. А технология называлась FaceTime.

Какое ПО используете?

На локальном «железе» установлено штук 8-10 самых разных операционных систем. Образов ОС — несчетное количество. И они ничем не хуже, между прочим. Софт у меня в большинстве специфический — компиляторы, отладчики, разные интегрированные среды разработки (IDE), дизассемблеры, профилировщики, DebugKit-ы. Из любимых средств стоит выделить дизассемблер IDA. В Parallels, кроме того, широкий спектр инструментария своей разработки. Мы собираем гостевые и мониторные дампы, ведем счетчики производительности, логи, историю, вот сейчас доделываем свой дебаггер. Системное программирование требует системного подхода к поиску ошибки.

Железо и ОС ведущего разработчика виртуальных машин в компании Parallels

Есть ли конфигурация мечты?

Свои мечты о «железе» даже боюсь озвучивать — так быстро они сбываются :) Общее пожелание к «железу» — побольше логических CPU (от 16), побольше памяти (от 8 Гб). Но критичнее всего качество процессорных фич — чем свежее процессор, тем больше в нем новых «игрушек» — EPT, Unrestricted, VT-D, TXT. Ну и шустрый жесткий диск. Все остальное в большинстве современных «железок» меня в общем и целом удовлетворяет.