Key Duties and Responsibilities
- Demonstrate expertise in the code and the team’s software development processes. Help to continuously improve both software and processes.
- Evaluate multiple approaches to technical problems and be able to recommend one solution after considering limitations and challenges
- Build a deep understanding of the domain and how the product fits into the user’s design flow
- Communicate clearly with others regarding project status and risks, and to ensure that work is aligned with the business unit strategy
- Serve as a role model for excellent software skills and a source of domain expertise within the business unit
- Diagnose and fix code problems
- Deliver code that meets requirements on schedule. Ensure that code is efficient, scalable, maintainable, extensible, robust, and easy to understand
- Optimize code to improve tool run time and memory capacity
- Create unit, regression, and/or system-level tests to thoroughly validate new features or changes
Minimum Education/Certification Requirements and Experience
- B.Sc. degree in Electrical Engineering, Computer Science, or related field, with 10 years work experience or M.Sc. in the same fields with 9 years work experience
- Broad and deep understanding of the C++ language and familiarization with contemporary standards (e.g., C++14) and language constructs
- Experience with high performance computing and parallel programming tools and frameworks
- Experience with the Python programming language
- Strong working knowledge of the Linux operating system
- Strong background in data structures, algorithms, and debugging
- Strong background in scalable algorithm implementation for scientific and engineering applications
- Demonstrated expertise in software development processes
- Ability to evaluate multiple approaches to technical problems and be able to recommend one solution after considering limitations and challenges
- Ability to learn quickly, understand complex systems and to work closely with others
- Ability to complete high-quality work on time
- Communicate clearly with others regarding project status and risks
- Successful large-scale commercial software development
Preferred Qualifications and Skills
- Ph.D. or M.Sc. degrees in Electrical Engineering, Computer Science, or related field are preferred qualifications. Minimum relevant work experience with a Ph.D. degree is 7 years and with an M.Sc. degree is 9 years.
- Demonstrated skills in the following areas are a plus:
- Experience with computational linear algebra algorithms and libraries (e.g., linear and non-linear solvers)
- Experience with computational geometry algorithms and libraries (e.g., CGAL library)
- Development, debugging and optimization of systems using distributed processing
- Previous experience in the EDA domain