Descripción
Workplace Classification:
Hybrid : This role is categorized as hybrid. This means the candidate is expected to report to their primary work location three times per week, at minimum, or other frequency dictated by the business.
The Role:
In this software development role, you will be responsible for developing software applications using sound, repeatable, industry standard methodologies. You will have the opportunity to work hands-on writing software or solutions, based on detailed requirements and system specifications. Development activities will include updating existing software and/or developing new software solutions to address a specific need or solve a particular business problem.
Additionally, you will drive development activities in accordance with appropriate methodologies and application of a repeatable, systematic, and quantifiable approach to the development process. You will coach/mentor software developers and will review the software being developed. This role will also work closely with architects and technical leaders to ensure code alignment with design patterns/frameworks.
What You'll Do (Responsibilities):
- Write software for vehicle-side functionality in C/C++.
- Participate in discussions & reviews for requirements, design, and test cases.
- Create software design artifacts using Unified Modeling Language (UML) techniques.
- Use cross-compilation techniques to compile designs for multiple embedded platforms.
- Perform software configuration management using Git and code review using Gerrit, GitHub.
- Implement Unified Diagnostic Services (UDS) diagnostics over Ethernet (DoIP and Socket Adapter) and Controller Area Network (CAN) using C/C++.
- Perform emulator/simulator, bench, and verification testing.
- Diagnose, debug, and solve issues related to vehicle software.
- Work closely with teams from other groups to support triage and resolution of difficult problems in a timely manner.
- Collaborate with System Engineers to refine understanding of requirements and identify opportunities for innovation.
- Write clear and concise test cases that cover various scenarios and edge cases.
- Execute unit tests and analyze the results to identify and report defects.
- Integrate unit tests into the continuous integration and delivery pipeline.
- Continuously improve unit testing processes and methodologies
- Collaborate with the development team to resolve issues identified through testing.
- Collaborate with software developers to ensure comprehensive test coverage.
[Additional Description]
What You'll Need (Required Qualifications):
- Bachelor's degree (or higher) in Computer Science or relevant discipline.
- 5+ years of proven software development foundation experience including competencies in object-oriented methodologies, data structures, algorithms relevant design patterns, and software design lifecycle.
- Proficient in C or C++ programming language.
- Proficiency in working with Linux and QNX platforms.
- Experience writing clients for Web Services (REST, RPC, and/or SOAP).
- Familiarity with CI/CD and DevOps pipelines using GitHub, GitHub Actions, Jenkins, etc.
- Design and develop unit tests for C++ software components.
- Implement and maintain unit testing frameworks (e.g., Google Test, Catch2, Boost. Test).
People Skills:
- Strong analytical and innovative problem-solving skills.
- Excellent communication and teamwork skills.
- Ability to learn quickly and work independently or as part of a team.
- High level of oral and written communication skills.
- High level of interpersonal skills to work independently and effectively with others locally and in a geographically dispersed team.
What Will Give You A Competitive Edge (Preferred Qualifications):
- 8+ years of Engineering experience in a job-related area.
- 1+ years of Client software development and debugging.
- In-depth knowledge of unit testing frameworks and methodologies.
- Experience in writing unit tests for C++ applications.
- Familiarity with continuous integration and delivery practices.
- Exposure to working in Agile development methodology (Scrum, XP, SAFe, etc.)
- Exposure to other embedded programming languages like Rust, Python.
- Demonstrated experience in multithreading, inter-process communication and synchronization of shared resources.
- Experience using source code control systems and tools such as Git/Repo and code collaboration tools such as Gerrit, GitHub, Optimus, Static code analysis tools like Sonar, Parasoft, CPP, etc.
- Prior experience in vehicle embedded or Mobile or Infotainment software development.
•This job may be eligible for relocation benefits.
#LI-DH2
Información sobre diversidad
General Motors se compromete a ser un lugar de trabajo en el cual no solo no haya discriminación indebida, sino que fomente con sinceridad la inclusión y el sentido de pertenencia. Creemos firmemente que la diversidad del personal crea un entorno en el cual nuestros empleados pueden prosperar y desarrollar mejores productos para nuestros clientes. Instamos a los candidatos interesados a que revisen las responsabilidades y aptitudes clave para cada puesto y se postulen para los puestos que coincidan con sus habilidades y capacidades. Es posible que, cuando corresponda, se les pida a los solicitantes que están en el proceso de contratación que completen satisfactoriamente una o más evaluaciones relacionadas con su función y/o una evaluación previa al empleo antes de comenzar a trabajar. Para obtener más información, visite Cómo contratamos.
Declaración de igualdad de oportunidades en el empleo (EE.UU.)
General Motors se enorgullece de ser un empleador que ofrece igualdad de oportunidades. Todos los solicitantes calificados serán tenidos en cuenta para el empleo sin distinción de raza, color, religión, sexo, orientación sexual, identidad de género, nacionalidad, discapacidad o condición de veterano protegido.
Adecuaciones (EE.UU. y Canadá)
General Motors ofrece oportunidades a todos los solicitantes de empleo, incluyendo las personas con discapacidades. Si necesita una adecuación razonable para ayudarle con su búsqueda o solicitud de empleo, envíenos un correo electrónico a Careers.Accommodations@GM.com o llámenos al 800-865-7580. En su correo electrónico, incluya una descripción del puesto específico que está solicitando, así como el título del empleo y el número de solicitud del puesto que está solicitando.