OpenSesame is disrupting the workforce development industry with an AI-powered marketplace of skills courses. They are seeking a Software Engineer to contribute to their eLearning platform by collaborating with engineers and engaging in Extreme Programming practices.
Responsibilities:
- Get fully integrated into the team’s workflow, develop a high-level understanding of the product and architecture (including legacy systems), and start participating in collaborative development processes
- Build relationships with engineers on the Marketplace team. Learn team workflows by participating in pairing and mobbing sessions to learn the product and development environment
- Write simple code and debug errors with guidance from senior engineers in the legacy Drupal 7/Angular system and come up to speed on modernization efforts using TypeScript, Node.js, and React
- Continue to develop your technical skills and begin to apply test-driven development (TDD) and continuous deployment to ensure high-quality, maintainable solutions with the help of senior engineers
- Engage fully in the team's agile ceremonies, retrospectives, and discussions. Participate in small sub-teams that use XP practices, including test-driven development (TDD) and pairing/mobbing
- Develop a mental model of the Marketplace architecture, including legacy and modern systems, and understand the high-level relationships between key components and dependencies. Have a basic understanding of our infrastructure and Terraform
- Participate in the on-call rotation and pair with a teammate as release captain for a legacy system deployment. Learn how to triage issues based on the mental model of the system that you are developing
- Continue working closely with peers in pairing and mobbing sessions. Contribute to planning sessions with other engineers to break down complex work into smaller, end-to-end user stories (vertical slices) that deliver value incrementally
- Apply test-driven development (TDD) and understand the team’s testing patterns and frameworks, including sociable unit tests and narrow integration tests
- Troubleshoot and contribute to many parts of the team’s codebase. Begin to develop recognized expertise in a specific area of the software, becoming a go-to contributor for that domain
- Volunteer to lead small to medium, well-defined efforts that deliver value to the product. Proactively seek opportunities to improve team workflows and the development system, collaborating with senior engineers or your manager to implement changes
- Apply test-driven development (TDD) and team testing patterns fluently. Use defensive programming techniques—including paranoiac telemetry, unhappy path thinking, and fail-fast principles—to build reliable, maintainable solutions
- Embrace collective ownership of code, documentation and outcomes, taking pride in shared success and supporting improvements to code written by others. Communicate clearly and respectfully in team discussions, practicing active listening, defending a contrary stance constructively, and building on others’ ideas to foster a culture of collaboration and continuous improvement
Requirements:
- Hands-on professional or project-based experience in software engineering
- Strong understanding of engineering fundamentals
- Motivation to continue growing in a collaborative, full-stack environment
- Experience with TypeScript, Node.js, and React
- Experience with legacy systems using PHP, Drupal, and Angular
- Ability to write simple code and debug errors with guidance
- Understanding of test-driven development (TDD) and continuous deployment
- Engagement in agile ceremonies, retrospectives, and discussions
- Ability to develop a mental model of the Marketplace architecture
- Basic understanding of infrastructure and Terraform
- Participation in on-call rotation and release captain for legacy system deployment
- Ability to contribute to planning sessions and break down complex work into smaller user stories
- Fluency in applying test-driven development (TDD) and understanding team testing patterns
- Ability to troubleshoot and contribute to many parts of the team's codebase
- Initiative on small to medium projects and improving team processes
- Ability to apply defensive programming techniques
- Strong communication skills and ability to practice active listening