About the position
An opportunity exists for a Senior Software Developer to join our Client, who operates within a niche industry, and whose services add value to the scientific / research community. This is a permanent role and is based in Cape Town.
Our Client supports and promotes research and human capital development through funding, the provision of Research Facilities and science outreach platforms and programmes to the broader community in all fields of science and technology, including natural sciences, engineering, social sciences and humanities.
They spearhead South Africa's activities in engineering, science and construction. The Senior Software Developer will be responsible for driving or supporting the overall design and development specific the focus area of our client's products and applications owned by the Data Processing and Pipelines Department within the Engineering & Technology Development Division.
As a Senior Software Developer your expertise in software development, high-performance
computing and GPGPU programming will enable the development and delivery of data processing products and applications.
Key Responsibilities:
- Architectural design and/or implementation of digital signal processing (DSP) products, applications and/or algorithms for Radio Astronomy data processing systems that satisfy higher-level system functional and performance requirements
- Design of these products contains elements of software development, high-performance computing (HPC, GPGPU) and high-speed data transport
- Support analysis, definition, integration, verification and validation activities of DSP products at various system levels
- Development of software to control, monitor, debug and support operation of the developed products and applications
- Drive, follow and support the relevant Software Design Life Cycle and Systems Engineering processes for product development throughout the entire product or application lifecycle from conceptualisation through to decommissioning
- Support deployment, maintenance, upgrades, operation and decommissioning of developed products
- Manage, support and coordinate resources to ensure delivery of products within project constraints
- Participate in the generation of technical system and product-related documentation applicable to developed DSP products to support the delivery and handover of the Data Processing & Pipelines Group's products
- Drive and participate in Research & Development initiatives within the domain of expertise to develop novel ideas for future products and contribute to the overall continuous development of the group
Qualification Requirements:
- Sc or B.Tech (Eng) (NQF 7) in Computer Engineering, Computer Science or related field with 13+ years relevant experience, OR
- Eng/B.Sc (Eng) (NQF 8) in Computer Engineering, Computer Science or related field with 9+ years relevant experience; OR
- MSc / [URL Removed] (NQF 9) in Computer Engineering, Computer Science or related field with 7+ years relevant experience; OR
- PhD (NQF 10) in Computer Engineering, Computer Science or related field with 5+ years relevant experience
Qualification Requirements:
- Experience as a Software Developer with a track-record of designing and implementing digital signal processing or similar data
- processing systems on GPGPU/HPC hardware architecture.
- Experience building data processing applications specifically for Radio Astronomy instrumentation is advantageous but not required
- Experience in both designing high-performance data processing or digital signal processing systems at a higher, product level as well
- as low-level implementation of components and features
- High-performance computing, particularly GPU computing and implementing parallel processing on GPU-based systems
- Implementation of accelerated and optimised algorithms (DSP algorithms is advantageous)
- High-performance networking (e.g., ibverbs, DPDK, VMA or similar kernel bypass technologies)
- Experience analysing system requirements and defining a suitable system design
- Writing technical documentation describing the implementation and design of products at various technical levels
- Software development: Python (particularly for scientific computing, such as numpy), C/C++
- Working with workflow and issue management tools (e.g., JIRA)
- Working with source code and version control tools (e.g., Git)
Knowledge Required:
- Experience in GPGPU and HPC programming
- Software Development best practices
- Typical radio astronomy instrumentation: e.g., spectrometers, correlators, beamformers (advantageous)
- Knowledge of multi-rate and parallel implementations of Digital Signal Processing Operations such as FFTs, Filters, DDS, DDC
- High-speed data transport such as ethernet and knowledge of large-scale networks
- Controlling and monitoring of DSP or data processing applications and components
- Software Development or Scientific Computing proficiency in either Python or C++
- Systems Engineering or Software Design Life Cycle
- Linux operating systems and development tools
Competencies:
- Desire to continuously learn, problem solve and acquire new skills with cutting edge technology
- A clear and methodical approach to problem solving
- A high attention to detail, excellent organisation skills
- Good communication skills, written and verbal
- Able to effectively manage and lead a team on a technical project
- Ability to effectively transfer knowledge and skills to other team members
- Eagerness to develop a technical specialisation and expertise
- Willingness to travel both locally and internationally depending on operational needs
Desired Skills:
- Python
- C++
- HPC
- GPCPU
- Senior Software Developer
Desired Work Experience:
Desired Qualification Level: