В этой серии мы будем рассказывать вам различные истории о профессиональной деятельности людей, работающих с Qt.
Сегодня я беру интервью у Майка Трахирна (Mike Trahearn), старшего инженера-программиста и чемпиона Qt 2022, живущего на светлом и солнечном Золотом побережье Квинсленда, Австралия.
— Привет, Майк! Расскажите нам немного о себе. Чем вы занимаетесь?
Привет! Я старший инженер-программист, живущий в Австралии, куда я переехал в 2017 году из холодной и серой Великобритании.
Моя нынешняя роль связана с системами визуализации и калибровки машин HMI для международной компании, занимающейся гражданским строительством. Наряду с проектными обязанностями, я специализируюсь на исследованиях и разработках Qt, архитектуре, дизайне рабочих процессов, брендинге/стилистике, а также обеспечении качества и лучших практик всех наших разработок на основе QML в наших продуктах и отделах посредством консультирования и обучения. Это было очень удобно, когда я переехал в Австралию, органично вписавшись в работу со своим 16-летним опытом разработки концепций безопасности автомобильных HMI и R&D (Research and development — исследования и разработки) для глобального поставщика автомобильных компонентов.
В свободное от работы время - я музыкант, играю на клавишных, интересуюсь производством музыки, а также люблю хорошую еду (возможно, даже слишком!).
— Что изначально вдохновило вас на эту профессию?
С тех пор как научился программировать на различных домашних компьютерных консолях начала 1980-х годов, я стал давно увлечен пикселями на экране, битами по проводам и всем, что между ними. Для меня создание потрясающего фронтэнда вместе с надежным бэкэндом и элегантной масштабируемой логикой в центре - это подобно высшей степени удовлетворения от творческого самовыражения!
Еще до того, как я узнал, что такое HMI (Human-Machine Interaction. Взаимодействие человека и машины), то понял, что должен развивать свое ремесло, чтобы помочь сделать жизнь людей лучше, насыщеннее, интерактивнее и приятнее.
Моя карьера всегда развивалась по определенной траектории, и я благодарен за то, что мне давали советы и направляли по лучшему пути в моей жизни.
— Что вы изучали в школе и как это подготовило вас к вашей карьере?
С раннего возраста я отдавал предпочтение математике, физике и вычислительной технике и в 2001 году получил степень бакалавра в области коммуникационной инженерии с отличием, изучив математику, электронику, кодирование, IP-сети, теорию оптики и радио, электрические и механические системы управления, теорию информации и, специализируясь на новой цифровой логике, проектирование пайплайнов RISC-процессоров.
На протяжении всего обучения в университете я работал инженером-программистом над различными продуктами и участвовал в местных общественных образовательных проектах. По окончании университета я официально начал свою карьеру в той же компании в качестве инженера по встроенному программному обеспечению в коммутаторах данных с плотным волновым мультиплексированием в фотонике.
В свободное время меня можно было застать за созданием небольших проектов на различных языках для развлечения и изучения различных технологий визуального контроля и протоколов передачи данных. Мой основной интерес всегда был связан с HMI. Мне всегда нравилось изучать различные инструменты и генераторы HMI (разбирать их на составляющие). А когда я открыл для себя Qt и QML, все остальное осталось в прошлом!
— Как вы впервые открыли для себя Qt, и что в результате изменилось?
Когда мы с Qt были намного моложе, я работал над множеством разнообразных проектов, используя целый ряд различных инструментов HMI. Большинство из них были очень хороши в том или ином аспекте, но всегда не хватало какой-то возможности или инструмента. Для одного проекта часть пользовательского интерфейса была просто великолепна, но мне еще нужно было так много дополнительных элементов! Другой разработчик рассказал мне о Qt (4.7.4 на тот момент), и я решил сам на него взглянуть. То, что я обнаружил, сыграло решающую роль в моей дальнейшей карьере. С помощью Qt я быстро собрал все недостающие части существующего пользовательского интерфейса, добавил множество дополнительных фич и инструментов, и завершил очень успешный проект в кратчайший срок.
Как только я начал создавать чистые проекты на Qt C++ с QML и QtQuick HMI, то больше не оглядывался назад. Qt предоставляет все необходимые функции из коробки в виде одного комплексного и целостного продукта.
С момента открытия Qt я нашел способы автоматизировать большую часть работы, которую раньше выполнял сам, что сделало мой труд более продуктивным и позволило лучше использовать свои творческие способности. Мы с QML с самого начала достигли взаимопонимания, так как его декларативный язык очень хорошо подходил как к задаче создания HMI, так и для общего представления о дизайне кода и визуальном поведении.
Это было началом очень увлекательного путешествия, в ходе которого я с легкостью и удовольствием создавал потрясающие приложения.
— Можете ли вы описать типичный день или неделю вашей работы?
В течение каждой недели я разрабатываю, внедряю, тестирую или исправляю C++/QML в ряде кросс-платформенных проектов, поддерживая разработку UX, промежуточного программного обеспечения и протоколов связи, за которые я отвечаю. При всем этом, используя обычные инструменты Confluence, JIRA, Bitbucket и Git, делая сотни коммитов, TDD (test-driven development. разработка через тестирование)/единичное тестирование и взаимодействуя с другими отделами по всему миру, отвечающими за другие компоненты системы, касающиеся внутренних API и требований.
Значительная часть времени будет потрачена на разработку общих библиотек проекта, которые расширяют и оптимизируют все наши продукты, в частности (но не только) компоненты и стили Qt Quick. Я также отвечаю за наставничество, обучение и рецензирование кода других членов команды, чтобы они росли в своих возможностях и творчестве с Qt и QML.
Общее архитектурное планирование и структура проекта играют ключевую роль, особенно при переходе на Qt6/CMake. Тесная работа с Qt Group на разных уровнях над дорожной картой Qt способствовала взаимному согласованию наших общих целей. Регулярные встречи с командами поддержки и разработчиков Qt продолжаются, что очень нравится обеим сторонам и чего они с нетерпением ждут.
— Что вам больше всего нравится в вашей работе?
Очень широкий спектр задач и проблем, которые приходится решать - и люди, с которыми мне выпала честь делать это! Множество проектов, как краткосрочных, так и долгосрочных, а также ориентация на исследования и разработки означают, что всегда существует что-то очень новое и интересное, в чем можно принять участие.
Бывает много "вау" моментов, когда мне удается продемонстрировать коллегам и руководителям новаторские применения новых возможностей Qt с помощью убедительных демонстраций.
Конечно, ситуация в мире навсегда изменилась, и возможность выполнять работу гораздо более гибко вне офиса приносит значительные преимущества в плане образа жизни, но также влечет за собой дополнительную ответственность за усердие и подотчетность. Однако мне также очень нравятся неоценимые беседы лицом к лицу и те абсолютно драгоценные обмены творческим потенциалом и поддержкой, которые происходят, когда вы встречаетесь вместе.
— Какие навыки или качества, по вашему мнению, важны для достижения успеха в вашей области?
Творчество, страсть и упорство. Нужно уметь отстраниться и увидеть все мельчайшие картинки и то, как они сочетаются друг с другом. Знать язык кодирования досконально и стать экспертом благодаря собственному самомотивированному обучению.
Будьте тем, к кому люди хотят обратиться за хорошим советом, и станьте хорошим коммуникатором на различных уровнях, потому что у вас часто есть аудитория/стейкхолдеры, которые нуждаются в покупке одних и тех же решений с дифференциальных точек зрения.
Будьте внимательны и предугадывайте детали, даже если люди "просто хотят" чего-то элементарного. На самом деле, мой вопрос номер один всегда "почему", а не "что". Во многих случаях лучшее решение - это отойти в сторону и сначала подумать: почему мы это делаем? Это настроит вас на успех в долгосрочной перспективе.
— Что бы вы посоветовали тем, кто заинтересован в подобной карьере?
Qt является одним из ведущих доступных кроссплатформенных фреймворков и поставляется как с возможностью лицензирования сообществом, так и с вариантом коммерческой лицензии. Вам будет полезно загрузить программу установки и изучить некоторые из представленных примеров.
Если вы рассматриваете возможность обучения в университете, убедитесь, что в вашем курсе есть хороший модуль по C++, а также получите некоторые знания по проектированию HMI и всем компьютерным приложениям - впитайте в себя полезную информацию.
UX - это сегодняшняя валюта, поэтому хорошенько разберитесь в этом. Я бы посоветовал познакомиться с такими инструментами проектирования, как Figma - чтобы вы как минимум смогли осмысленно общаться с дизайнерами.
Погрузитесь в обучение! Qt Group предоставляет огромное количество отличного контента на своих учебных страницах и медиа-каналах, например, вебинары по требованию и часы контента на YouTube от Qt Group и компаний-партнеров.
Посетите Qt World Summit лично (если возможно) или онлайн и постарайтесь попасть на локальные митапы Qt.
Читайте документацию и используйте возможности поддержки Qt и/или Qt-форум, так как там есть замечательные люди, которые всегда готовы помочь.
Наконец, поймите, что разработчики живут за счет перекусов и кофе, поэтому позаботьтесь о том, чтобы у вас всегда был достаточный запас!
Приглашаем всех желающих на открытое занятие «StateMachine в Qt: что это такое и как можно использовать». На этом занятии мы познакомимся с концепцией машины состояний, а также узнаем о том, как она реализована в Qt и как ее можно использовать.
Записывайтесь на открытый урок на странице онлайн-курса «Разработка прикладного ПО на Qt и ОС Аврора».