What are the responsibilities and job description for the Embedded Software Engineer position at Prodware Solutions?
Title: Senior Software Engineer
Duration: 12 months
Location: Waukesha, WI – 5 days a week. Onsite – Must be within commuting distance to Waukesha site
Job Overview
We are seeking a Senior Software Engineer to contribute to the development of reconstruction technologies. In this role, you will collaborate with a multidisciplinary team to design and implement innovative software solutions that enhance imaging capabilities.
Required Qualifications
- Bachelor’s degree in Computer Science, Electrical Engineering, or Computer Engineering
- Minimum of 5 years of experience in software development
- Experience with Linux-based programming on x86 systems
- Proficiency in C programming and object-oriented programming in a production environment
- Experience with version control tools such as Git
Preferred Qualifications
- Knowledge of Python, deep learning, machine learning, image processing, image reconstruction, and computer vision
- Experience with MATLAB or similar scientific modeling tools
- Familiarity with parallel computing concepts and tools (MPI, OpenMP)
- Experience in designing and architecting high-performance systems (5 years)
- Experience with high-performance computing (HPC) or GPU technologies such as OpenCL, TensorFlow, or CUDA
- Proficiency with C and Python IDEs (Eclipse, CLion, Visual Studio, XCode, PyCharm)
- Experience with requirements management and troubleshooting (5 years)
Key Responsibilities
- Develop and enhance software in a dynamic, agile environment using modern development tools and methodologies.
- Collaborate with engineers, scientists, and application specialists to translate high-level application requirements into component-level solutions.
- Design and implement solutions for complex data management and distributed processing challenges within the reconstruction platform domain.
- Plan and execute integration activities at component, sub-system, and system levels.
- Document design and verification processes, conduct component and subsystem-level verifications, and participate in system-level validations as needed.
- Drive efficiency across teams by reducing duplication and promoting technology reuse.
- Contribute to process improvements that support development, maintenance, and operational activities.
- Apply software development best practices, including Agile/Lean methodologies, continuous integration (CI), software security, scalability, documentation, refactoring, and testing.
- Develop high-quality, maintainable code that meets project standards.
- Assess and optimize application performance by analyzing key performance metrics.
- Work with core data structures and algorithms, implementing them using the chosen technology stack.