SENIOR SOFTWARE DEVELOPERS
LOCATION: CAPE TOWN, WESTERN CAPE
DURATION: 5 (FIVE) YEAR CONTRACT POSITIONS
SALARY: HIGHLY NEGOTIABLE BASED ON SKILLS, EXPERIENCE, COMPETENCIES
WE ARE URGENTLY LOOKING FOR FOLLOWING SENIOR DEVELOPERS WITH THE FOLLOWING SKILL SETS AND SPECIALISATION:
QUALIFICATIONS AND EXPERIENCE:
- Eng. / B. Sc. / B. Tech. or higher in Computer Engineering, Computer Science or Electrical Engineering or related field
- 7 years’ experience, in a combination of further (post-graduate) education and work experience
- A post-graduate degree or equivalent qualification in computer engineering, computer science, electrical engineering or related fields
- Demonstrated domain and technology knowledge, expertise, specialization or thought leadership in computing, systems design, architecture or implementation. This can be demonstrated through certification, higher research-focused qualifications, or record of delivery of dynamic solutions, organizing or leading contribution in the technology or innovation community
- Experience developing software and systems in Python, or other imperative languages
- Experience in systems analysis and engineering
- Experience working with formal project management and agile practices and methods
- Experience working with data processing or backend systems
- Knowledge, experience or specialisation in implementing specialist technology and computing modules, e.g. security, networking, identity and access management, file management systems, large scale computing and storage
- Experience integrating and configuring various software technologies and infrastructure
- Experience in technology research, technology development and maturation towards production readiness
For all the DEVELOPER roles, the following skills are essential and desirable.
- Experience of Agile development processes,
- Experience of the Git distributed version control system,
- Experience with the Python programming language,
- Experience in test automation and continuous integration,
- Experience of Test Driven Development,
- Excellent communication skills, ability to work effectively as part of a team.
- Ability to travel to international planning meetings 2-4 times/year (after the
- pandemic has passed)..
- Experience in C/C++ development
- Knowledge of Behaviour Driven Development and Gherkin
- Experience with modern container and orchestration frameworks such as Docker and Kubernetes. ______
ROLE 1. PLATFORM DEVELOPER:
- Experience using infrastructure provisioning tools (such as Docker, Kubernetes, Ansible, Terraform).
- Proficiency with one or more Continuous Integration tools (e.g. Jenkins, GoCD, Gitlab, Travis-CI).
- Expertise in cloud and virtualization platforms (e.g. AWS, OpenStack, GCP) and container orchestration technologies (e.g. Kubernetes, Mesos, OpenShift).
- Experience in supporting operations of highly distributed software systems.
- Demonstrated understanding and enthusiasm for working based on lean/agile principles.
- Experienced in administering application servers, web servers and databases.
- Experienced in integrated security practices such as secrets management into the DevOps pipelines.
- Experience in delivering services in a production operations environment
- Experience in deploying and managing large scale distributed Parallel File Systems, and Object Storage solutions such as Ceph, Lustre, BeeGFS
- Experience in developing and supporting large scale messaging solutions and infrastructure such as Kafka and Kafka Streams
- Extensive SysOps experience with *NIX developing and supporting infrastructure services
- Experience with software-defined networking technologies and in-network computing techniques
- Performance engineering, working with algorithm developers to aid code optimisation and ensure the underlying infrastructure is not the cause of poor performance
- Develop monitoring and analytics capabilities using open source tools and machine learning techniques to ensure non-functional requirements can be met in operations such as reliability, availability and maintainability
- Experience with parallel programming, e.g. MPI
ROLE 2. EXECUTION FRAMEWORK DEVELOPER:
These skills are specifically for helping to achieve scalability of data flows within batch and
real-time pipelines in the SDP.
- Experience with distributed data driven processing algorithm development.
- Ability to rapidly learn and contribute to the development of new techniques and technologies related to execution engines, e.g. distribution patterns and abstractions.
- Knowledge of high-level graph-based execution engines, such as Dask and Spark or streaming execution engines such as Storm or Kafka Streams
- Experience of software development in Python.
- Experience with low-level execution engines, such as MPI
- Experience with exchange of in-memory data within high-performance data analysis pipelines
- Experience with high throughput data-aware task scheduling technologies
- Data flow performance modelling experience
- Knowledge of radio astronomy data processing is an advantage
ROLE 3. HPC DEVELOPER:
- Experience in supporting operations and development of highly distributed software systems.
- Experience in hardware-software co-design for highly distributed and data intensive systems, e.g. optimisation of software for specific hardware platforms or targets or vice-versa.
- Experience with at least one of:
- cloud and virtualization platforms (AWS, OpenStack, GCP) and container orchestration technologies (Kubernetes, Mesos, OpenShift).
- HPC networking technologies such as RDMA
- HPC storage technologies
- Experience with profiling and code optimisation techniques for kernels and/or distributed programs
- Proficiency with one or more Continuous Integration tools (Jenkins, GoCD, Gitlab, Travis-CI).
- Knowledge of radio astronomy data processing
- Experience in deploying and managing large scale distributed Parallel File Systems, or Object Storage solutions such as Ceph, Lustre, BeeGFS
- SysOps experience with *NIX developing and supporting infrastructure services
- Experience of distributed, multi-core or many-core data driven processing algorithm development (such as MPI and/or OpenMP)
- Experience with developing FPGA and/or GPU accelerator code in a data analysis environment (such as OpenGL and/or CUDA.)
ROLE 4. DATABASE DEVELOPER:
- Experience of software engineering to support and develop Relational Databases and associated services.
- Experience with SQL databases such as MariaDB, MySQL and Postgres.
- Experience with No-SQL or document oriented databases such as Elasticsearch (Solr, Lucene, ElasticStack), and Redis
- Experience with time-series databases such as OpenTSDB, InfluxDB, and Prometheus
- Ability to write SQL queries, stored procedures, and perform basic database development leveraging SQL database standard.
- Experience with developing database web-APIs in Python or PHP.
- Experience in configuring and operating distributed data storage systems.
ROLE 5. USER EXPERIENCE DEVELOPER:
- Experience of software and systems engineering applied to the development of Web applications and services.
- Experience of creating visually pleasing graphic designs for web applications and pages.
- Experience of testing and analysing user behaviour using a variety of methods to improve the user experience.
- Experience of using lean principles in user interface design.
- Experience of communicating with a wide variety of stakeholders in diverse roles to understand their requirements.
- MySQL and Postgres.
- HPC networking technologies such as RDMA
- HPC storage technologies
- OpenTSDB InfluxDB and Prometheus
- Docker and Kubernetes.
Desired Work Experience:
- More than 10 years
Desired Qualification Level:
About The Employer:
The Senior Software Developers are part of a development team building the MeerKAT, MeerKAT Extension and the Square Kilometre (SKA) telescopes’ Science Data Processors. Senior software developers research, analyze and evaluate requirements for existing or new software applications and operating systems, and design, develop, test and maintain software solutions to meet these requirements. They may be expected to guide and work with more junior team members to accomplish their tasks.