Job Description :

Client Name: John Deere

Job Title: Software Engineer III (Linux BSP Development)

Location: NDSU Research Park Drive, Fargo, North Dakota, USA, 58102

Period: 36+ Months

Hours per Week: 40

Shift: 1st Shift


Specific Position Requirements:

Design new and existing embedded software for displays, telematics, and High-End Compute platforms for vehicles and harsh environments.

Perform requirements capture, analysis, design, programming, debugging, hardware integration, and verification. This position requires innovative architectural development, sophisticated detailed design/analysis, advanced coding of complex problems on both Real-Time and non-real-time Operating Systems, highly complex testing/troubleshooting of embedded software systems, and advanced algorithm development for applications and low-level board support packages. Will independently plan, coordinate, and perform tasks to meet quality, delivery, and cost goals.

This position requires a high degree of technical judgment, independent thinking, experienced and unique development approaches to solutions. This person will mentor other engineers.

1. Gather and format requirements directly from stakeholders without assistance from others. Review and provide proper feedback about the requirements.

2. Create and review innovative software architectures and designs for challenging problems without the need for peer guidance or supervision. This includes breaking the original requirements down into the proper high-level and mid-range architecture and then creating detailed design notes from the results.

3. Perform advanced analysis and make recommendations and design decisions based on results with minimal assistance from others. Review the designs of others to ensure proper application of design techniques.

4. Implement software using advanced programming techniques. Solve most tool suite set up problems. Solve integration issues that involve multiple software modules, code bases, and/or multiple developers. Critically review others’ work products.

5. Perform and/or coordinate detailed unit, integration, and systems verification and validation testing using software tools including emulators, debuggers, hardware in the loop and simulations. Review others’ test artifacts and suggest additional test cases.

6. Advanced troubleshooting strategies; quickly determine root cause with limited support from others and provide support in troubleshooting.

7. Collaborate with other project team members to ensure the final product has compatible software, electronic hardware, and mechanical hardware which functions properly together and performs at levels specified in the product specifications.

Minimum B.S. degree in Electrical Engineering / Computer Engineering / Computer Science from an accredited engineering program or equivalent experience
Required Experience:

• 5 years’ experience in embedded software development
• 5 years’ experience in C or other programming languages
• Linux kernel, UBoot and driver development
• Real-Time Operating System concepts, task schedulers, or application development
• Expertise in employing rigorous process measures to ensure product quality
• High speed and wireless communication networks (e.g. Ethernet, USB, Bluetooth, WiFi, Cell Modem, etc.)
•Multi-process architecture and design practices
•Understanding of operation and use of compilers, linkers, and locators
•Understanding of microcontroller operation and memory organization
-Development and debugging tools (e.g. source level debuggers, oscilloscopes, logic analyzers, multi-meters, etc.)
- Microcontroller peripherals and systems (e.g. LCD controllers, boot loaders, A/D converters, watchdog timers, interrupt and trap functions, serial and parallel interfaces, USB, Ethernet, EEPROM, etc.)
- Effective written and verbal communication skills (English)
Desired Experience:

-Skilled in leading high-performing software development teams
-Experience with communication protocols (e.g. J1939, ISO11783, TCP/IP, etc.)
-Yocto Project or Ubuntu
-Agile software development methods
-ARM architecture including GPU and VPU tec


Works on a product team and supports product design by planning its work,
coordinating with others, and writing and testing code to deliver
functionality for the complete product or products it supports. This level
designs complex/significant parts of a system/sub-system or works on a
complete product of a broad scope and solves well-defined problems with little
guidance. May act as a work lead, providing technical coaching to other
engineers and support personnel; Recognized as an expert user of critical
technology; develops new software functionality for product development.

Description of the major duties performed in this job.
* Develops, codes, configures, and tests programs and systems.
* Evaluates and implements enhancement design solutions to improve cost,
quality, and performance of software applications.
* Analyzes assignments and determines software specifications that must be
fulfilled to achieve objectives.
* Executes necessary documentation, as directed, or needed.
* Collaborates with other relevant stakeholders and team members to ensure
that features meet business needs.
* Follows industry-standard agile software design methodology for development
and documentation.
* Mentors junior software engineers on the team.