Интервью с Катей Тузовой

Интервью Екатерины Тузовой, разработчика PyCharm и преподавателя Computer Science Center, журналисту Игорю Савчуку

Екатерина Тузова

Мне практически не доводилось встречать девушек-программисток, которые были бы так влюблены в свою профессию. У разработчика программного обеспечения из международной компании JetBrains Екатерины Тузовой огромное количество проектов за пределами работы — подобным отношением к жизни могут похвастаться немногие из парней. О кодировании, профессиональных предпочтениях и пет-проектах красавица, спортсменка и просто программист из Санкт-Петербурга рассказала в интервью dev.by

Не суровый и не мужской коллектив

Екатерина, как вы пришли в программирование? Насколько вообще девушка органично себя чувствует в этой отчасти мужской профессии?
Я с детства люблю точные науки, в особенности — математику и физику. В школе у меня был замечательный преподаватель математики — Николай Миронович Плещенков. Затем я поступила на физико-технический факультет питерского Политеха и счастливо там училась. А дальше мне повезло, потому что ко времени окончания бакалавриата начинался первый набор в магистратуру Академического университета. О программировании я тогда знала весьма немного, но в меня поверил ещё один чудесный преподаватель Николай Михайлович Пульцин, у которого посчастливилось учиться.
Расскажите о впечатлениях от работы в суровом мужском коллективе программистов JetBrains.
Мне весьма сложно об этом рассказать, потому что у нас совсем не суровый коллектив. Когда я пришла в команду PyCharm четыре года назад, там было две девушки и двое молодых людей. Сейчас в моей команде четыре девушки и пятеро молодых людей. Так что коллектив нельзя назвать сугубо мужским даже с большой натяжкой.
Вы упомянули проект PyCharm. Какие его «киллер-фичи» можно выделить с точки зрения разработчика?
Самой первой «киллер-фичей» PyCharm была поддержка фреймворка Django. Мы выпустили первую версию PyCharm 1.0 уже с хорошей поддержкой и постоянно продолжаем её развивать.Ещё одной важной «фичей» PyCharm является глубокий статический анализ языка. Благодаря ему, в частности, мы можем предлагать такие сложные рефакторинги, как изменение сигнатуры функции (при этом будут найдены и обновлены все использования данной функции), выделение блока кода в отдельную функцию, множество полезных подсказок, например, неиспользуемые импорты, недостижимые участки кода и многие другие.

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

Из недавних «фич», на мой взгляд, можно выделить Remote Interpreter и встроенный терминал. Теперь всю разработку можно вести, не переключаясь из PyCharm.

JetBrains — международная компания с офисами в Питере, Москве, Праге, Мюнхене и Бостоне. Как люди из российских представительств «перетекают» за границу? Нет ли у вас желания поработать за рубежом?
Насколько мне известно, после того, как сотрудник отработал в компании год, у него возникает возможность переехать, соответствующее решение принимает руководитель его проекта.Что касается меня, я некоторое время работала в Кембридже (еще до работы в JetBrains) и в Праге. С точки зрения работы не так важно, сидя в каком городе программировать.

“Я записываю все новые идеи проектов”

Давайте поговорим о ваших профессиональных интересах. На чём любите программировать, когда над вами не стоит никто из руководства? Какой софт и технику предпочитаете?
Надо мной вообще редко кто-то стоит, это не в стиле JetBrains. Многие из моих нерабочих проектов в той или иной мере связаны с машинным обучением. В прошлом году это были распознавание эмоций человека на видео и анализ мнений в Twitter. В этом году будут проекты про генерацию нот из аудио, распознавание объектов на фото. Так как эти проекты связаны с машинным обучением, тут естественными языками являются Python, С++, R.Вообще, разные языки подходят для решения разных задач, поэтому не могу сказать, что я люблю программировать только на Java или только на Rust. Стараюсь выбирать язык, наиболее подходящий для решения поставленной задачи. Работать предпочитаю на Linux либо Mac.

Сидите за компьютером дома после работы?
Думаю, нет такого программиста, который не сидит за компьютером вне работы. Есть хорошая шутка, которая очень точно описывает тех, кого я считаю программистами: если бы полицейские были, как программисты, то по ночам наряжались бы в бэтменов и боролись с преступностью в своё удовольствие.
Не можем обсудить все ваши “внерабочие” проекты, поэтому сосредоточимся на самом последнем — роботе-художнике, который вы продемонстрировали на недавнем хакатоне. Расскажите про техническую начинку и алгоритмы творческого изобретения.
Я всё время стараюсь записывать идеи проектов, которые приходят в голову. И поскольку их скопилось уже очень много, перед хакатоном оставалось только выбрать подходящий.За пару недель до мероприятия мне подарили Arduino, так что естественно выбор пал на проект, который можно сделать руками и который реально быстро реализовать.

Основные детали робота — это Arduino Uno, Motor Shield, два шаговых мотора. Сама программа состоит из трех частей. Первая программа по картинке генерирует набор команд, вторая — это взаимодействие с Arduino через USB, третья часть (непосредственно на Arduino) преобразовывает полученные сообщения в команды, которые посылаются на моторы.

Что было самым сложным при написании этого робота-художника?
Изначальная архитектура проекта была проще: планировалось сразу генерировать набор команд по картинке и полностью загружать их на Arduino без деления на три части. Но эта идея не сработала, потому что у Arduino Uno довольно маленький объём памяти. Пришлось писать ещё модуль, который умеет посылать команды по serial-соединению. А в целом, это очень простой с точки зрения программирования проект. Большая часть времени у меня ушла на решение инженерных задач: как подобрать противовесы, как прижать ручку к поверхности и т.д.H14_0U7B6221

Размер пикселей напрямую связан со временем, которое робот тратит на рисование. Так что на сложную картину с хорошей детализацией, думаю, уйдёт не меньше суток.

Робот-рисовальщик

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

Вот как в итоге всё это выглядит в процессе работы.

Образование

Куда, на ваш взгляд, движется индустрия программирования? Можете ли вы поделиться своим видением, какой будет разработка ПО через лет 5-10? Это интересно с точки зрения формирования более точных приоритетов у молодой поросли программистов
Через 5-10 лет разработка будет ещё более разнообразной, чем в настоящее время. Так что дать прогноз про принципы и будущие подходы, мне кажется, невозможно.В одних областях будут доминировать одни принципы, в других областях — иные. Точно также, как и сейчас. Глобально, надеюсь, появится больше интердисциплинарных наук, как биоинформатика, робототехника…

Очень важный вопрос — проблема нынешнего образования. Многие мои коллеги-программисты махнули рукой на официальное образование в пользу саморазвития. Знаю также, что спасая традиционное образование в РФ от «полного загиба», крупные компании вынуждены брать некоторые ИТ-факультеты полностью под свою опеку. Отечественные вузы на самом деле плохи или просто они не выдерживают конкуренции с открытой системой «свалки знаний» из интернета?
Я не большой любитель универсальных кванторов. У нас есть хорошие вузы. Яркий пример для Питера — это Академический университет, а также образовательный проект Computer Science Center (CSC). В Академическом университете хорошие магистерские программы, которые поддерживают такие компании, как JetBrains, Yandex и т. д. Там учатся много ребят из разных городов, приезжим предоставляется хорошее общежитие. CSC — это дополнительное бесплатное образование, которое также поддерживают названные компании. Там увлечённый работой молодой преподавательский состав, который многое даёт студентам.К сожалению, таких примеров единицы. Большинству учреждений не хватает молодых специалистов-преподавателей, которые хотели бы что-то менять, развивать. Но такая ситуация сегодня складывается не только в образовании…

Я сама активно участвую в образовательных инициативах. В прошлом году читала курс лекций по языку Python в Computer Science Center. До этого вела практику по С++ в Академическом университете. Готовлюсь прочитать курс по машинному обучению. Практически каждый семестр я беру студентов на практику. В текущем у меня 11 человек, 3 командных проекта и 3 индивидуальных.

В интернете сейчас доступно огромное количество онлайн-курсов (сам я большой поклонник MOOC’ов). Но, на мой взгляд, такое образование подходит далеко не всем, учитывая разный уровень мотивации и самоорганизации…
Традиционное образование должно успевать за прогрессом, чего сейчас не происходит. Например, благодаря активному развитию компьютерных технологий многие процессы можно очень наглядно показывать и делать более доступными для понимания. Так что многое зависит от того, будут ли заинтересованные люди и компании помогать традиционному образованию развиваться.

Личные «хаки»

Назовите две-три книги, которые вас впечатлили и оказали большое влияние на выбор профессии?
Я много читаю, и практически все книги влияют на формирование личности. Это происходит непрерывно, поэтому сложно говорить о нескольких наиболее важных.
Наиболее «зацепившая» вас цитата?
Чрезвычайно много разумных людей на протяжении всей истории человечества высказывали множество мотивирующих идей. К примеру, Эйнштейн: «The true sign of intelligence is not knowledge but imagination» или «A person who never made a mistake never tried anything new». Такого рода цитат в интернете очень много. Можно открыть первый попавшийся сайт в Google по запросу «мотивирующие цитаты» и читать чужие мысли сутки напролет. Только в этом нет особого смысла — вдохновение стоит пытаться искать внутри себя.
Ваша сокровенная мечта?
У меня нет одной самой главной мечты — их очень много. И постоянно появляются новые.
Как держать себя в течение рабочего дня в максимально продуктивном тонусе?
Я совсем не пью кофе. Для меня лучший способ — периодически менять деятельность, идеально — сходить на тренировку. После этого думается очень хорошо.
Все мы знаем, почему программистом быть хорошо. А в чём вы видите минусы профессии?
Мне эта профессия очень подходит, поэтому трудно найти изъяны. Наверное, самый большой минус — сидячий характер работы и постоянное нахождение за компьютером.

Впервые опубликовано на портале dev.by