SARAO has an excellent career opportunity in our Engineering Software division for a Software Engineer. The primary responsibility for Software Engineering with a focus on user interface development. The successful incumbent will report to the Functional Manager: Software.
Minimum education required:
- B.Eng. / B.Sc. / B Tech or higher in Computer Science or Engineering with a software focus or related field
Minimum work experience required:
- 5+ years of experience in a software engineering environment, preferably in an engineering development project environment with a strong GUI software focus
- experience in specification, evaluation, design, development, testing, deployment, commissioning, release and support of Graphical User Interfaces
- technical knowledge of development in Linux operating systems (experience in system administration of such will be beneficial)
- technical experience in architecture design and development of large software projects (experience with control and monitoring will be beneficial).
- A relevant Masters’ degree will be considered equivalent to 3 years of experience.
Job specification:
- Prototyping and software development od the telescope graphical user interfaces (all stages off the full software development life-cycle may be encountered) from requirement analysis, architectural input, software design and development, to testing, integration and deployment
- Provide hands-on technical support in the system administration of the GUI hardware platforms, deployment environments and processing, which may include site visits to the Karoo
- Collaborate with departmental stakeholders to support engineering, commissioning, operations and early science activities/
- Assist in maturing of software development and quality assurance processes towards greater standardisation and improved long-term maintainability and robustness
- Facilitate coding standard compliance and code reviews, which include mentoring junior engineers
- Compile document sets
- Provide project management and progress reporting input as required by the Functional Manager and for team communication
- Participate in development of project schedules and activities
- Participate in the development of budgets and cost/benefit analysis for compliance with project procurement policies
- These tasks will be re-evaluated on an on-going basis and may change according to the needs of the project.
Desirable additional education, work exp. & personal qualities:
- Knowledge of front-end technologies such as AngularJS, web sockets, RESTful APIs and back-end systems developed using the Python programming language will be beneficial
- Understanding and experience in implementation of project management and system engineering principles
- Experience with test-driven development and integration testing techniques, methodologies and frameworks; and supporting systems like revision control and build systems
- Experience with quality assurance processes and software development processes and willingness to participate in improving software development processes and software quality procedures
- Willingness to play a leading role in mentoring juniors
- Ability both to work independently and be a good team player
- Ability to participate and thrive in a collaborative environment
- Self-motivated and an ability and willingness to self-train and up-skill independently
- Keen attention to detail
- Strong oral and written communication skills
The ideal candidate will have the following competencies:
Ability
- work in a team
- work without supervision
- programming of device drivers under linux
- programming embedded software
Experience
- willingness to participate in improving software development processes and software quality procedures
- experience with test-driven development and integration testing techniques, methodologies and frameworks; and supporting systems
- development, testing, deployment, commissioning, release
Knowledge
- system engineering