Senior Software Engineer
Mercy Corps · Portland, OR/Washington, DC/Remote (USA)
About Mercy Corps
Mercy Corps is powered by the belief that a better world is possible. To do this, we know our teams do their best work when they are diverse and every team member feels that they belong. We welcome diverse backgrounds, perspectives, and skills so that we can be stronger and have long term impact.
Program / Department Summary
To ensure that we can anticipate and adapt to changes in the toughest challenges around the world, Mercy Corps must continue to seek ways to enhance our organization’s culture and functionality. This requires ensuring we have the right people, capacities and systems to not only implement programs but to ensure learning is used and leveraged to enable influence and impact throughout implementation. As part of the Program Performance mission, Mercy Corps has a web-based software solution, called TolaData, that is used by Mercy Corps team members to support learning and adaptive program management by improving the quality of program data and ensuring we retain the evidence necessary to support the results we report on our programs.
The global TolaData team helps a program or country team analyze their current portfolio and provide custom solutions based on our well-defined and tested templates and standards in Monitoring and Evaluation (M&E). These solutions create a holistic M&E and learning system flexible enough to meet the ever-changing team demands while providing new opportunities to share and aggregate data. We are continuously gathering feedback, testing and making changes to ensure the product is of value to the users.
General Position Summary
The Senior Software Engineer is the lead developer/architect on Mercy Corps’ product development team, working primarily on our internally built web application for program performance Monitoring, Evaluation, and Learning (MEL). This position will also support the development and execution of other key agency priorities, such as business intelligence, database integration, grant management, and data security.
Essential Job Responsibilities
- Provide architectural leadership, developing strategic solutions to improve the overall performance, reliability and scalability of our systems. This could include selecting software packages and libraries, establishing software patterns, and collaborating to design code deployment processes to meet business needs.
- Utilize an understanding of algorithmic best practices and the technical limitations of the existing codebase to collaborate in adapting business requirements to software implementations, which may include providing estimates for feature proposals as well as proposing technical solutions to challenges in feature implementation.
- Read and interpret design documentation, soliciting clarification and refinement of acceptance criteria as needed to ensure new features that are developed meet business requirements and quality specifications.
- Develop new features and fix bugs following PEP8 and Django coding style and standards to resolve user stories.
- Write unit tests in an existing Continuous Integration (CI) testing environment.
- Refactor existing code as necessary to bring it up to standards with PEP8 and Django’s recommended best practices, ensure it is testable and maintainable, and implement updates of dependent software packages and libraries.
- Write reusable, testable, and efficient code.
- Follow and implement OWASP recommendations for writing secure code.
- Integrate front-end functionality with backend.
- Integrate different systems using different databases including MySQL, PostgreSQL, and MongoDB.
- Design and implement low-latency, high-availability, and performant application functionality that scales.
- Facilitate engineering design reviews and participate in code reviews.
- Participate in work scoping and estimation discussions.
- Provide mentoring to more junior engineers in their technical career development.
Reports Directly To: Director of Data Services and Enterprise Architecture
Works Directly With: UX lead, other back and front end developers, other business units as needed.
Accountability to Participants and Stakeholders
Mercy Corps team members are expected to support all efforts toward accountability, specifically to our program participants, community partners, other stakeholders, and to international standards guiding international relief and development work. We are committed to actively engaging communities as equal partners in the design, monitoring and evaluation of our field projects.
Minimum Qualification & Transferable Skills
- Bachelor degree in Computer Science or related field or equivalent experience.
- Must have 5+ years professional computer programming experience with object oriented languages, such as Java, Ruby, and, preferably, Python.
- Must have 5+ years professional experience with back end web frameworks, preferably Django.
- Must have 5+ years professional experience with database development, including the creation of queries, stored procedures, views, tables, and schemas, as part of a web application; experience with relational databases, such as MySQL or PostgreSQL, and NoSQL databases, such as MongoDB
- Must have 3+ years professional experience with front end web application technologies and frameworks, particularly React or Vue, but also with jQuery, CSS/HTML, RESTful APIs and AJAX/JSON.
- Experience working with AWS and/or Microsoft Azure is a plus, particularly in relation to ETL, data warehousing, and data exchange.
- French, Spanish, and/or Arabic language ability is a plus.
All members of our software development team are expected to be strong communicators who can effectively work with colleagues from a variety of technical and non-technical backgrounds including developers, designers, and subject matter experts. They do not hesitate to seek clarification and assistance when needed, and are able to explain technical concepts to a non-technical audience. They are curious about other people’s ideas and perspectives, and willing to share their own. They welcome and proactively seek feedback, and are interested in exploring alternative paths to solving a problem.
Living Conditions / Environmental Conditions
This is a remote position open to applicants authorized to work in the US. The applicant must be available to collaborate with team members based in the Pacific (GMT-8) time zone. Team members based in Portland, OR or Washington, DC will eventually have the option to work out of Mercy Corps' headquarters offices when they reopen.
In support of our belief that learning organizations are more effective, efficient and relevant to the communities we serve, we empower all team members to dedicate 5% of their time to learning activities that further their personal and/or professional growth and development.
Diversity, Equity & Inclusion
Achieving our mission begins with how we build our team and work together. Through our commitment to enriching our organization with people of different origins, beliefs, backgrounds, and ways of thinking, we are better able to leverage the collective power of our teams and solve the world’s most complex challenges. We strive for a culture of trust and respect, where everyone contributes their perspectives and authentic selves, reaches their potential as individuals and teams, and collaborates to do the best work of their lives.
We recognize that diversity and inclusion is a journey, and we are committed to learning, listening and evolving to become more diverse, equitable and inclusive than we are today.
Equal Employment Opportunity
Mercy Corps is an equal opportunity employer that does not tolerate discrimination on any basis. We actively seek out diverse backgrounds, perspectives, and skills so that we can be collectively stronger and have sustained global impact.
We are committed to providing an environment of respect and psychological safety where equal employment opportunities are available to all. We do not engage in or tolerate discrimination on the basis of race, color, gender identity, gender expression, religion, age, sexual orientation, national or ethnic origin, disability (including HIV/AIDS status), marital status, military veteran status or any other protected group in the locations where we work.
Safeguarding & Ethics
Mercy Corps is committed to ensuring that all individuals we come into contact with through our work, whether team members, community members, program participants or others, are treated with respect and dignity. We are committed to the core principles regarding prevention of sexual exploitation and abuse laid out by the UN Secretary General and IASC and have signed on to the Interagency Misconduct Disclosure Scheme. We will not tolerate child abuse, sexual exploitation, abuse, or harassment by or of our team members. As part of our commitment to a safe and inclusive work environment, team members are expected to conduct themselves in a professional manner, respect local laws and customs, and to adhere to Mercy Corps Code of Conduct Policies and values at all times. Team members are required to complete mandatory Code of Conduct elearning courses upon hire and on an annual basis.