Our Client a leading M-Health organization is seeking a Backend Developer to join their team in Pretoria.
Developing and maintaining software products and solutions offered by the company. Our technical stack comprises of Golang and gRPC to build fast, fault tolerant and distributed systems, MySQL for data storage, Jenkins for automated testing and deployments, Docker (and compose) for containerisation and Amazon Web Services (AWS) as hosting provider.
We are split into teams, each with a specific product focus. Each team will include a Business Analyst, Back-end- and Front-End Engineers, Android and / or iOS Developers, and / or Web Developers, each who bring a unique perspective..
Bachelor’s degree in Computer Science or Engineering (or similar)
MSc / PhD in computer science or other technical discipline Desired
5+ years working experience
Software Engineering experience
Skills and Knowledge
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.
Experience in Golang Desirable
Experience with continuous deployment technologies (Jenkins) - Desirable
Familiarity with (TDD) unit testing, performance, load, or end-to-end integration tests - Desirable
Important Competencies :
Adopting Practical Approaches
Key Performance areas
Analysis and Planning 20 %
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 agreed 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.
Testing and implementation 20%
Ensure that all work is tested, benchmarked and fulfills 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.
Reporting and Communication 10%
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.
Database Administration 5%
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.