Senior Software Engineer

  • Ann Arbor, MI
  • Full-time
  • POSTED YESTERDAY

About the job

Employment type: Full-Time / Contract

About the Job:

We are seeking a C, C++ Software Engineer with strong hands-on experience designing, building and maintaining high-quality, performant software in C and C++. The engineer owns features end to end - from requirements and design through implementation, testing, debugging and release - as part of a collaborative engineering team.

What you will do:

Design, develop and maintain production quality software in C and C++ (C++11/14/17 or later). Translate functional and technical requirements into clean software designs and well-structured code. Apply object-oriented design, design patterns and the STL to build modular, reusable and maintainable components. Write efficient, reliable code with careful attention to memory management, pointers, multithreading and performance. Develop and debug in Linux based environments using GCC/Clang, GDB and Make/CMake. Develop and execute unit, integration and regression tests to ensure software quality. Profile, troubleshoot and root cause defects using debuggers, logs and analysis tools such as Valgrind, sanitizers and static analysis. Maintain software design documentation and requirements traceability in Jama Connect or comparable tools. Contribute to code reviews, coding standards, static analysis and CI/CD automation using Git, Jenkins and Python. Collaborate with fellow developers, QA, product and project stakeholders to deliver on schedule.

This is a hands-on C/C++ development role. Candidates must be able to walk through C/C++ code they personally wrote - design choices, trade-offs and how they debugged it.

What we are looking for:

Bachelor's degree in Computer Engineering, Computer Science or a related field with 4+ years of relevant experience, or a Master's with 2+ years. Strong hands-on software development in C and C++, including memory management, pointers, data structures and algorithms. Experience developing and debugging in Linux-based environments (GCC/Clang, GDB, Make/CMake). Solid understanding of object-oriented design, design patterns and the C++ Standard Library (STL). Experience with multithreading, concurrency and performance optimization. Experience developing and executing unit, integration, regression and system-level tests. Experience with software design documentation and requirements traceability (Jama Connect or comparable tools). Experience with Git-based workflows and Jira. Strong troubleshooting, root-cause analysis, documentation and communication skills.

Preferred Qualifications:

Experience with modern C++ (C++17/20) and Boost. Experience with unit-testing frameworks (GoogleTest, Catch2) and debugging/profiling tools (GDB, Valgrind, sanitizers). Familiarity with coding standards and static analysis (MISRA C/C++, CERT, clang-tidy, Coverity). Experience with Python, Jenkins, CI/CD pipelines and automated testing.