Contact Information
Description
...
Use your software career to make a real difference in >40 countries around the world! Work with developers all over the globe, remote and with travel. Lead our frontend technology renaissance in this part-time contract position. Become a critical member of our Product Support Team.
Our Product Support Team: Everyone on our small global Product Support Team are mission-driven self-starters who want to help our open-source community project thrive. The OpenMRS Senior Frontend Engineer is a critical member of this team. We are developers, product managers, and designers working together to support devs and PMs who use our software at their NGO, government, and vendor sites on five continents. The team is led by our Director of Product.
How We Work: We sustain our software project through technical collaboration with many organizations and volunteers. The global Product Support Team helps coordinate this effort. Currently we are creating the next generation of the OpenMRS product: “OpenMRS 3.0” or “O3”, leveraging technical contributors in our community's multi-organizational Frontend Squad. More on the history of O3 here; dev docs here.
Our Frontend Tech Stack: React, TypeScript, Webpack, SWC, REST, Husky, ESLint, Jest, Service Workers, Carbon Design, and Single-SPA.
Must Have Requirements
- Very Strong Frontend Experience: Substantial experience writing well-structured JavaScript applications. Expert React development skills and can explain how React works (e.g. hooks, render/resolution/commit, etc). Typescript and Webpack experience preferred. Experience with CI/CD. Good security awareness.
- Seniority Experience: Has led software development team(s) in a technology company; responsible for mentoring other developers while still contributing. Able to design forward-thinking security-conscious applications, and get team buy-in.
- Communicator and Team-Player: Can clearly communicate complex technical concepts to both technical and non-technical audiences
...
Responsibilities
...
- Motivates team members around a direction.
- Prioritize the work themes and specific tasks. Take user stories and break down into technical tasks that more junior community members can work on
- Coordinate team members’ efforts - watches for duplication, delegates work based on contributors’ skills and allocates learning experiences.
...
- Mentoring community members. Strong collaboration and mentorship skills. Excellent PR reviews - uses structured PR review processes to mentor others and synchronous pairing sessions.
- Pair Programming to help unblock squad/team devs.
- Clear expectations from junior/mid/senior devs. Clear principles: “When writing code, this is what we’re looking for.” Apply decision making process for how to engage particular people in issues, e.g.:
- Is person able to do this issue on their own?
- If not, are you prepared to do pair programming on this issue?
- If not, is there someone else who can provide mentorship?
- If not, reassign ticket to different person.
...
- . Good at building camaraderie and consensus on public forums. Demonstrated ability to explain priorities amidst competing goals. Excellent written communication skills (e.g. forum posts and RFCs are helpful). Proficiency in the English language, both written and verbal, sufficient for success in a remote and largely asynchronous work environment. Willing to work across multiple timezones.
- Good Software Development Practices: Well-versed in asynchronous agile development. Proficient with test frameworks and peer code review.
Nice-to-Have Requirements (not required)
- Familiarity with microfrontends architecture.
- Familiar with Webpack Module Federation.
- Some knowledge of Angular is a plus.
- Familiarity with Single-SPA.
- Experience with performance and optimization problems and a demonstrated ability to both diagnose and prevent these.
- Experience working with a global or otherwise multicultural team.
- Relevant sector experience, such as awareness of EMR goals, and challenges specific to healthcare; and/or, experience with an LMIC setting and challenges in low-resource sites.
- Open-source collaborative software development past experience, e.g. contributions to major open source projects.
- Willingness and ability to travel internationally (~10%)
Responsibilities
- Frontend Platform Technical Steward (70%)
- You will be responsible for leading & collaborating with devs from the community to design the architecture and technical direction of our frontend platform. (Current Frontend core at esm-core.)
- DevX: Make it easy for devs to re-use and contribute. Anticipate engineering risks or inefficiencies. Create intuitive, high-quality abstractions to strategically reduce duplication and make future feature development easier.
- Implementer Experience: build tools that make product configuration easier by non-devs in the field.
- Tech debt & maintenance: Identify & prioritize technical debt. Handle the “twilight zone” of critical work that the community is not incentivized to do (e.g. React, Carbon upgrades). Introduce migrations while minimizing breaking changes.
- Documentation: Improve & maintain docs for frontend development (e.g. the READMEs of major repos, our frontend dev guide, the esm-core API docs). I.d. what else is needed to guide feature developers.
- Dev support (30%)
- Lead engineering by example & via relationships: Work alongside community devs but get the gritty, tricky stuff done or at least started
...
- /stable enough
...
- so others can join in.
...
- Tech Stack & Modelling Decisions: proactively anticipates and mitigates engineering risks or inefficiencies. Considers tradeoffs between different software frameworks.
- Makes decisions & moves forward but doesn’t just say “this seems like the right way”. Understands sustainability & implementer implications of their engineering decisions.
- Sets standards, guidelines, and oversees their application.
...
Break down Requirements & Designs: Translate UX designs and high-level problems/user stories into coherent, workable problems that developers of multiple skill levels can work on
...
- Build close connections with developers from the NGOs, vendors, and other orgs active in community software development, to understand their needs and task-share or coach them on tasks with community benefit (e.g. from the Frontend Framework or O3 features boards).
- Community Member Coach: Mentor and use PR reviews and pair programming to help unblock squad/team devs. Coordinate team/squad members’ technical efforts; delegate work based on contributors’ skills and allocate learning experiences. Clarify professional expectations for junior/mid/senior devs, e.g. “When writing code, this is what we’re looking for.”
- Support for Organizations Implementing our Software: Technical guidance to organizations implementing OMRS. Be a person who implementation devs can turn to when they have technical or system design issues.
How to Apply
Interested? Use our online application form to submit your information, a cover letter, and a CV/resume that addresses the responsibilities and skills outlined above.