Software Developer - Infrastructure

Remote Product Full-Time

Software developers on the product team primarily work on our codebases, writing and reviewing code. Developers also work with other teammates and users of our software to make sure we're working on the most impactful things. 

Key Responsibilities

Software Development: 80%

  • Design, build, document, and ship software that improves healthcare outcomes in underserved communities around the world. Write code. 
  • Work with Medic and its partners along the entire software development life-cycle: Understand problems, capture requirements, design modular software systems, write great software, and document each step. 
  • Participate in daily stand-up meetings, weekly iteration reviews, and monthly milestone reviews. 
  • Learn new languages, platforms, toolkits, libraries, tools, and application development paradigms as necessary. Build step by step. 
  • Contribute directly to open-source and free software projects as appropriate. This involves posting an update in the corresponding Slack channel every workday and participating in a stand-up meeting daily. 
  • Handling of various backlogs by prioritization and putting them in the workstream. 
  • Follow up on new issues that are raised in the main repository and prioritize work on the main and urgent issues. Time permitting, follow up on new PRs that are created in the main repository. 
  • Evaluate reported bugs (new issues) within 24 hours after submission, optimally to find a solution, provide a workaround or assess priority and/or complexity.
  • Offer support to team-members by:Answering questions.Doing timely code reviews (ideally in under 24 hours from request).Direct support when needed.
  • Answering questions.
  • Doing timely code reviews (ideally in under 24 hours from request).
  • Direct support when needed.
  • Follow up on production issues and address high-priority issues or production issues within one working day of discovery/submission.
  • Keep abreast with changes in the app. Keep updated with any new developments. Check what the app developers are working on to ensure that there is no conflict and any arising issues are dealt with in good time.
  • Strive to deliver high-quality and near-perfect software that is feature-complete, well-performing, well designed, error-free, and user-friendly.
  • Proactively seek new technologies or implementations that might solve current problems in better/more efficient ways. This involves reading blogs, reading release blogs, and keeping aware of the changes happening with the technical scope. Looking for improvements for the existing software that has been worked on by other people. 
  • Proactively anticipate problems that might occur and act on them, preferably prior to release. This involves a daily review of all the possible risks involved. It also involves testing, mitigation of the possible risks, and a deeper understanding of the code in order to have a stable application. Imagine possible scenarios of what the user might do and come up with a solution. 
  • Assume release-manager responsibilities when assigned to a release.
  • Adhere to the development workflow + comply with administrative duties. This has to be adhered to. The code has to be well written and easily understood. 
  • New code must conform to the coding style guide 

Strategic Planning: 10%

  • Evaluate tools and technologies; develop long-term software and platform roadmaps.
  • Improvement; Assess if the solution is working and how it can be improved further. 

Team Support: 10%

  • Consult on technical needs for larger-scale deployments, including local hosting, SMS aggregators, app scalability, etc. This involves interaction with the app services and the relevant squads. 
  • Work collaboratively with the rest of the product team to turn user insights into new features and interfaces that help empower our users.
  • Work with regional tech leads- app services developers in Africa and Asia on the configuration of Medic’s toolkit as needed and offer support when need be. 
  • Provide remote troubleshooting support to active deployments as needed.
  • Prioritize troubleshooting urgent problems in live instances.
  • Identify possible production problems by checking through or reviewing the issues that have been reported.
  • Follow up and investigate questions asked on Slack channels and the CHT forum.
  • Keeping in contact with SRE team.
  • Provide workarounds and/or develop scripts that fix/address urgent issues that happen in production instances. When such issues arise, keep the product team informed about the progress made and implemented solutions.
  • Provide technical information, explain processes, clarify interactions when requested and ensure proper documentation.

Skills Knowledge and Expertise

Skills Required:   

  • Comp Science/ Engineering
  • Industry Experience in Software Development
  • Software development skills
  • Experience in Agile Tools Usage
  • Familiarity with SQL (relational databases) and non-relational databases

Key Competencies:

  • Software design and development
  • App Development
  • Bug Resolution
  • Technical Software Improvement
Medic is a global nonprofit organization with a mission to advance equitable healthcare and strengthen community health systems by building, innovating, applying, and scaling open-source, low-cost digital health tools in collaboration with communities, governments, and implementers.