Salary
💰 $146,200 - $175,000 per year
Tech Stack
JenkinsLinuxPythonQtUnix
About the role
- Perforce: global provider of DevOps and developer tools used by leading brands.
- Position Summary: Principal Software Engineer for TotalView high-performance parallel debugger; design, modify, and develop software focused on compiler and debugger-related development and UI contributions as needed.
- Responsibilities: Design and develop new and advanced features in C++ across Linux/UNIX/Mac OS X.
- Responsibilities: Work on compiler and debugger-related tasks, including designing efficient workflows and algorithms for massively parallel environments.
- Responsibilities: Contribute to UI development using Qt and C++ to create efficient and user-friendly interfaces as needed.
- Responsibilities: Aid in efficient debugging, dynamic analysis, data collection, data reduction, and scalability for advanced parallel applications.
- Responsibilities: Design and develop efficient workflows and algorithms to work in massively parallel environments to aid in efficient debugging and scalability.
Requirements
- Familiarity with software debuggers and how they work.
- Ideally, will have been part of a team building the latest HPC debugging and performance tools for demanding massively parallel environments.
- Design and develop new and advanced features in C++ on a variety of cross-platform Linux/UNIX/Mac OS X platforms.
- 10+ years of industry-level experience with a proven track record of successful development.
- 7+ years of C++ experience, including development using STL and C++ templates.
- Experience in parallel/multi-process computing environments, especially HPC environments.
- Knowledge of MPI and OpenMP parallel programming models, as well as compiler design and implementation.
- Familiarity with ELF/DWARF object file formats and symbol tables.
- Experience developing multi-threaded programs and working in different UNIX/Linux environments.
- Familiarity with client/server architecture, including request/response protocols, session management, and data serialization techniques.
- Experience developing user interfaces for desktop-based applications using Qt.
- Demonstrated test-driven development and the ability to work and plan independently while sharing knowledge with others.
- Strong problem-solving and analytical skills, with the ability to quickly understand and address complex technical challenges.
- Excellent communication and collaboration skills, with the ability to effectively work within a cross-functional team.
- Knowledge of common C++ design patterns and the ability to use them when necessary.
- Agile/scrum development experience.
- Experience with Jenkins or other CI systems.