Req Ref No: JNNDSE433
Location: Fargo, ND
Duration: 6.0 months
Software Engineer III
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.
MAJOR DUTIES: 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
* Mentors junior software engineers on the team.
QUALIFICATIONS: Competencies, technical skills, formal education and relevant
work experience critical for successful individual performance of essential
Technical Skills & Knowledge: Specialized skills, knowledge and abilities
needed to perform the essential functions of the job.
* Excellence in verbal and written communication forms with emphasis on
persuasive communication, tact and negotiation. (Performs more complex
functions, understands principles, may teach others.)
* Ability to analyze, translate, and define business requirements into
technical solutions. (Performs more complex functions, understands
principles, may teach others.)
* Ability to apply engineering principles and concepts for designs. (Performs
more complex functions, understands principles, may teach others.)
* Ability to manage many competing priorities/requests in a fast-paced
environment (Performs more complex functions, understands principles, may
Education: Formal education or training required to perform the essential
functions of the job. Includes degrees, certifications, licenses and/or
* Degree in an Engineering/Technology discipline or equivalent experience.
(University Degree (4 years or equivalent))
* Degree in an Information Technology discipline or equivalent experience.
(University Degree (4 years or equivalent))
Relevant work experiences: Type and amount of experience necessary to perform
the essential functions of the job. May include specific roles and/or an
understanding of a particular function, organization, industry or product line.
* Product design, test and/or analysis experience. (4 - 7 years)
* Previous experience in programming/software development. (4 - 7 years)
* Software development processes experience. (4 - 7 years)
* Participating in Agile Development (4 - 7 years)
* Experience working in an Agile Environment (4 - 7 years)
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.
This person 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
• 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)
-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 technology
-Graphics frameworks Crank or QT
VIVA is an equal opportunity employer. All qualified applicants have an equal opportunity for placement, and all employees have an equal opportunity to develop on the job. This means that VIVA will not discriminate against any employee or qualified applicant on the basis of race, color, religion, sex, sexual orientation, gender identity, national origin, disability or protected veteran status.