Title: Embedded Software Engineer
Location: Mossville, IL (Onsite)
Duration: Long Term
Role Definition
As the Embedded Software Engineer, you will collaborate within a dynamic team and contribute to the success of new technologies in the Machine Technology Platform Group. These applications are deployed on multiple mining machines such as trucks, loaders, dozers, drills, etc. This individual will participate in all the teamโs functions in an Agile environment and will be responsible for designing, implementing, and validating embedded software applications for machines.
Responsibilities
- Work closely with customers and System Architects to analyze and define requirements.
- Gathering and analyzing user/client requirements to create the software requirements specification document.
- Drive design consistency across products.
- Design, implement, and test software modules according to requirement specifications.
- Participation in writing and in the review of all engineering documentation, including requirements, estimation, specifications, design, coding and validation
- Testing and debugging embedded system software using different tools/methods available to improve code quality and optimize system performance.
- Discovers, analyzes, and resolves hardware, software or application problems.
- Works with vendor-specific diagnostic guides, tools and utilities.
- Collaborating with other teams to provide post production support.
- Keep up with industry trends and new technology breakthroughs by continuous learning.
What you will have
- Knowledge of software development life cycle; ability to use a structured methodology for delivering and managing new or enhanced software products to the marketplace.
- Describe tasks, tools and practices for covering software product requirements into a design.
- Demonstrate experience with all phases and deliverables of the product development methodology.
- Skilled in C, C++, Matlab/Simulink and Python programming languages, with experience in developing and debugging software applications using these languages.
- Conducts walkthroughs and monitors the quality of development activities.
- Experience with industry-standard tools such as Git, GitHub, and Azure for version control, collaboration, and cloud services.
- Familarity with virtual machines and simulation environment
- Experience with working in a Linux operating system.
- Requires a degree in an accredited Engineering or Computer Science curriculum.
Top candidate will have:
- Experience using scripting languages (e.g., Python).
- Experience with Wi-Fi, TCP/IP, UDP/IP, SSL.
- Experience with CAN/J1939 protocols.
- Experience using real-time operating systems and object-oriented design patterns.
- Experience with unit testing and static code analysis tools.
- Experience using debugging tools for embedded systems (e.g. Lauterbach, GDB, Wireshark)