Introduction
Software Engineering division have vacancies for Senior Software Engineers to join the team.
You will report to the Functional Manager: Software.
Job description
- Prototyping and software development of the telescope operational software (all stages of the full software development life-cycle may be encountered).
- Provide hands-on technical support in the system administration of the 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 standardization 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.
- Make technical decisions independently without direction from Technical lead. Has deep understanding of version control to the point of being able to help out junior and software engineers
- Innovate independently towards improving the software
Desirable additional educational, work experience, and personal qualities:
- 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:
- Communicate effectively (written and verbal).
- Troubleshoot issues methodically
Experience:
- Quality assurance processes and software development processes.
- Programming in the python programming language.
- Development, testing, deployment, commissioning, release and support large scale
- projects.
- Developing applications targeted for the linux operating system.
- Implementation of project management and system engineering principles.
- Test-driven development and integration testing techniques, methodologies and frameworks; and supporting systems
Knowledge:
- Modern software collaboration tools such as Github, Containers, Google Drive, JIRA.
- Python programming language.
Minimum Education and Work Experience Required:
- Experience in a software engineering environment, preferably in an engineering development project environment with a strong software focus.
- Python or C/C++ programming language and experience in development, testing, development, commissioning, release and support of large scale projects in Python or C/C++.
- 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.
WITH either
- B.Tech/B.Sc (Comp Sci) with 10+ years; OR
- B.Eng/B.Sc Hons (Comp Sci) with 9+ years; OR
- M.Eng/M.Sc (Comp Sci) with 7+ years; OR
- PhD/D.Eng with 5+ years;