Software Engineer I
The Manitowoc Company
About the Role
In this role, you will work with a team of software, controls, and systems engineers to develop and support Manitowoc's Linux-based crane operator displays and user interfaces. These displays serve as the primary interaction point between the crane operator and the machine's control system.
Key Responsibilities
- Design, develop, test, and maintain software for Linux-based operator display systems.
- Develop graphical user interfaces using Qt and QML technologies.
- Collaborate with controls, systems, and software engineers to implement new features and product improvements.
- Support integration of display applications with distributed control systems utilizing Ethernet and CAN-based communications.
- Participate in software verification activities using simulation environments, test benches, and crane testing.
- Assist in developing software requirements, test plans, and technical documentation.
- Investigate software issues and support troubleshooting activities during development and production.
- Communicate project status, technical findings, and recommendations to project teams.
Requirements & Tech Stack
- Coursework and/or experience using C++.
- Understanding of object-oriented programming principles.
- Strong problem-solving and debugging skills using tools like GDB and Valgrind.
- Familiarity with source control tools such as Git.
- Interest in embedded systems, Linux, and user interface development.
- Comfortable using Linux Command Line tools.
Qualifications
- Bachelor's degree in Computer Science, Computer Engineering, Software Engineering, or related field.
Preferred
- Experience with Qt and/or QML.
- Experience working in a Linux development environment.
- Knowledge of Ethernet networking fundamentals.
- Familiarity with MQTT or client/server software architectures.
- Familiarity with embedded systems and real-time software concepts.
- Familiarity with software development practices such as source control, code reviews, unit testing, and continuous integration.
- Knowledge of CAN communications, J1939, or CANopen.
- Experience with Python, Jenkins, XML.
- Internship, co-op, Formula SAE, robotics, senior design, or personal software development projects.
- Familiarity with databases such as SQL and SQLite.
- Knowledge about applying AI-assisted development tools for software design, code generation, verification, debugging, and documentation.
- Experience working in a team with other developers and contributors.