Qt as a Career – Becoming A Stellar Qt Developer
In this series, we'll be bringing you a variety of career stories from people working with Qt.
Today, I'm interviewing Mike Trahearn, Senior Software Engineer and Qt Champion 2022, living on the bright and sunny Gold Coast, of Queensland, Australia.
Hi Mike! Tell us a bit about yourself. What do you do?
Hi! I'm a Senior Software Engineer living in Australia, where I moved to in 2017 from the cold and grey UK.
My current role involves HMI Machine Visualisation and Calibration Systems for a global civil construction-based company. Along with project responsibilities, I specialize in Qt R&D, architecture, workflow design, branding/styling, and the QA and best practices of all our QML-based development across our products and departments through consultancy and training. This was a very good fit when I moved to Australia, seamlessly building on 16 years of Automotive HMI Safety Concepts and R&D experience for a global supplier of automotive components.
In my free time, I am a musician, playing the keys, and generally interested in music production as well as enjoying good food (probably a bit too much!).
What originally inspired you to pursue this career?
Since learning to code with various early 1980s home computer consoles, I have long been fascinated with pixels on the screen, bits on wires, and everything in between. To me, bringing an amazing frontend together with a solid backend with elegant scalable logic in the middle is such a satisfying expression of creativity!
Even before I knew what HMI (Human-Machine Interaction) even meant, I knew I was supposed to develop my craft to help make people's lives better, richer, more interactive, and enjoyable.
My career has always been set on a certain trajectory, and I am blessed to have been advised and guided along the best pathway for my life.
What did you study at school, and how did it prepare you for your career?
Leaning toward Mathematics, Physics, and Computing from an early age, I graduated in 2001 with a Bachelor's Degree in Communication Engineering with Honours covering Mathematics, Electronics, Coding, IP Networking, Optical and Radio Theory, Electrical, and Mechanical Control Systems, Information Theory and majoring in a novel Digital Logic and RISC processor pipeline design.
Sponsored throughout my degree by a global telecoms company, my 3rd uni year was spent working as a Software Engineer on various products and engaging with local Community Education projects. Upon graduation, I formally began my career with the same company as an Embedded Software Engineer on Photonics Dense Wave Division Multiplexing data switches.
In my spare time, I could be found building small projects in various languages for fun and exploring their various visual control technologies and their back-end data protocols. My primary interest was always HMI, and I always loved learning various HMI tools and generators (and picking them apart). And when I discovered Qt and QML, well, the rest is history!
How did you first discover Qt, and what changed as a result?
Way back when Qt and I were both much younger, I worked on a variety of different projects using lots of different HMI tools. Most of them were very good at one aspect or another, but there was always some feature or tool missing. For one project, the UI part was great, but I needed so many extra pieces! Having been made aware of Qt (4.7.4 at the time) by another developer, I decided to have a look at Qt for myself. What I discovered was pivotal in my career. With Qt, I rapidly built all the missing pieces behind the existing UI, added many extra features and tooling, and completed a very successful project in a very short time.
Once I began building pure Qt C++ projects with a QML and QtQuick HMI, there was no looking back. Qt provides all the necessary features out of the box in one comprehensive and coherent product.
Since discovering Qt, I have found ways to automate much of the work I'd been doing myself, making me more productive and enabling me to put my creativity to better use. QML and I hit it off from the beginning as its declarative language married very well to both the task of creating HMI and also the general way I thought about the code design and visual behavior.
That was the beginning of a very exciting journey delivering stunning applications with ease and delight.
Can you describe a typical day or week in your job?
In any given week, I would be designing, implementing, testing, or fixing C++/QML over a number of cross-platform projects, supporting the development of UX, middleware, and comms protocols for which I have responsibility. Using all the usual Confluence, JIRA, Bitbucket, and Git tools, making hundreds of commits, TDD/unit testing, and interfacing with other departments around the world responsible for other system components concerning internal APIs and requirements.
A good amount of time would be spent developing common project libraries that extend and optimize all our products, in particular (but not limited to) Qt Quick components and styles. I am also responsible for mentoring, training, and reviewing the code of other team members so they grow in their own capability and creativity with Qt and QML.
General architectural planning and project structure have been key, being particularly instrumental in the Qt6/CMake transition. Working closely with Qt Group at multiple levels on the Qt roadmap has helped our mutual goal alignment. Regular meetings continue to be held with Qt Support and developer teams, which both parties really enjoy and look forward to.
What do you love most about your job?
The very wide variety of tasks and problems to solve - and the people that I have the privilege of doing it with! The many projects, both short and long-term, and the R&D focus mean there's always something very new and interesting to get involved with.
There are lots of "wow" moments as I get to demonstrate novel applications of new Qt features with compelling demos to colleagues and managers.
Of course, the world stage has permanently changed, and the ability to work much more flexibly away from the office brings major lifestyle benefits but also comes with the additional responsibility for diligence and accountability. However, I also really enjoy the invaluable face-to-face conversations and those absolute gold exchanges of creativity and encouragement that happen when you meet together.
Which skills or qualities would you say are of importance in order to succeed in your field?
Creativity, passion, and tenacity. You need to be able to stand back and see all the little pictures and how they all fit together. Know your coding language inside out and be an expert through your own self-motivated training.
Be someone people want to go to for good advice and be a good communicator at different levels because you often have audiences/stakeholders that need to buy into the same solutions from different angles.
Be diligent and anticipate the details, even when people "just only want" something simple. Actually, my number one question is always "why" - not "what". In many cases, the best solution is to stand back and think about it first: why are we doing this? It will set you up for success in the long run.
What advice would you give to someone interested in pursuing a similar career?
- Qt is one of the leading cross-platform frameworks available and comes with both community and commercial licensing options. You would do well to download the installer and consider learning your way around some of the examples provided.
- If you are looking at a university course, make sure your course has a good C++ module in it and get some HMI design and all-around computing application knowledge - be a useful sponge.
- UX is today's currency, so get a good handle on that. I would suggest getting familiar with design tools such as Figma - so that at least you can meaningfully relate with designers.
- Immerse yourself in learning! There is an absolute wealth of excellent content provided by Qt Group on their learning pages and media channels, such as on-demand webinars and hours and hours of YouTube content from Qt Group and partner companies.
- Attend a Qt World Summit in person (if possible) or online and try to get to your local Qt meet-ups.
- Read the docs and make use of your Qt support options and/or the Qt Forum, as there are some great people there who are always willing to help.
- Finally, realize that developers run on snacks and coffee, so make sure you keep well stocked!
Subscribe to our newsletter
Try Qt 6.6 Now!
Download the latest release here: www.qt.io/download.
Qt 6.6. is a feature release with focus on improving UX capabilities including responsive UI technology and the Qt Graph module.
Check out all our open positions here and follow us on Instagram to see what it's like to be #QtPeople.