Senior Back-End Developer (Golang)
IT – Software Development
Pretoria/Centurion – Gauteng
A cutting-edge Healthtech company in Pretoria seeks the coding expertise of a Senior Back End Developer to join the Company and help develop and maintain software products and solutions, develop, and maintain software products and solutions offered by the company. The technical stack comprises of Golang to build fast, fault tolerant and distributed systems (NATS, NATS Jetstream, CQRS), MySQL/PostgreSQL for data storage, Github actions for CI/CD, Docker (and compose) for containerisation and Amazon Web Services (AWS) as hosting provider. You must have bachelor’s degree in Computer Science or Engineering (or similar), an MSc/PhD in computer science or other technical discipline and 5+ years’ experience.
- Multitask on a range of products and tasks simultaneously, defining priorities and ensuring efficiency.
- Define and communicate problem, goal, and acceptance criteria.
- Communicate and collaborate with development, business analyst and design teams to solve problems, make recommendations and discuss best programming practices.
- Conduct research on possible solutions and techniques.
- Prepare a work breakdown structure.
- Determine and account for dependencies among deliverables, products, and systems.
- Accurately estimate duration of deliverables
- Document analysis and planning process.
- Follow project plan to develop software.
- Analyse systems for root cause, impact, workarounds, and permanent fixes.
- Communicate effectively and efficiently with line manager on progress, priorities, and workload.
- Work with stakeholders to achieve appropriate solutions.
- Meet development timelines in projects and deliverables.
- Identify and mitigate risks, making appropriate mid-course corrections as required.
- Adhere to agree upon standards for code.
- Generate and maintain effective and efficient high quality, reusable code.
- Use effective and efficient components & techniques to implement solutions.
- Ensure all work is versioned and backed up according to company standards.
- Meet set deliverable deadlines.
- Ensure that all work is tested, benchmarked and fulfils functional requirements submitting for approval, review or deployment.
- Prepare test environment, examples, and instructions.
- Participate enthusiastically in peer code reviews.
- Deploy changes to live environment.
- Maintain system and product change logs and release notes according to company standards.
- Keep project documentation up to date and standard.
- Provide timeous, efficient, and effective feedback on project status.
- Proactively keep stakeholders updated on progress, risks, and problems.
- Assist in the collection and documentation of user’s requirements, development of user stories, estimates and work plans.
- Prepare reports, manuals and other documentation on the status, operation, and maintenance of software.
- Provide insight and feedback on queries regarding relevant projects.
- Perform maintenance to ensure data integrity and efficiency.
- Deploy new structure and content.
- Restore data when required.
- Comply to ISO, CE, FDA (and other) standards and requirements as is applicable to assigned products.
- Safeguard confidential information.
- Maintain backups and backup systems.
- Bachelor’s degree in Computer Science or Engineering (or similar)
- Minimum education (desirable):
- MSc/PhD in computer science or other technical discipline.
- 5+ years working experience.
Required nature of experience:
- Software Engineer.
Skills and Knowledge (essential):
- Design and build data stores with complex relationships (relational or NoSQL).
- Built/Design distributed systems, back-end APIs, or microservices.
- CS fundamentals in object-oriented design, data structures, algorithm design and complexity analysis.
Skills and Knowledge (desirable):
- Experience in Golang.
- Experience with continuous deployment technologies. (Jenkins).
- Familiarity with (TDD) unit testing, performance, load, or end-to-end integration tests.
- Examining Information.
- Developing Expertise.
- Making Decisions.
- Showing Composure.
- Embracing Change.
- Meeting Timescales.
- Upholding Standards.
- Taking Action.
- Providing Insights.
- Interpreting Data.
- Adopting Practical Approaches.
- Exploring Possibilities.
- Thinking Positively.
- Conveying Self-Confidence.
- Inviting Feedback.
- Impressing People.
- Convincing People.
- Challenging Ideas.
- Managing Tasks.
- Following Procedures.