Software Engineer
Westwood, MA, United States
Software Engineer
Department: Engineering
Employment Type: Full Time
Location: Westwood, MA
Description
The Software engineer applies technical knowledge and expertise to design, build, and maintain BetterLesson systems. They work cross-functionally with product managers and learning designers to define the scope of system changes and enhancements. This role is also responsible for testing software to maintain and meet established standards.
Here are some things you can expect to accomplish in this role:
Write human-readable, clean code that complies with documented engineering standards with an eye for test-driven development using languages/frameworks including Java and frameworks including Spring Boot, Spring, Hibernate, Python, and frameworks including Flask, Django, FastAPI, Gruk, React, SQL
Write database migration scripts using database migration tools such as Liquibase, Alembic, etc. and integrating Auth2.0 access controls into services and applications leveraging Java Web Tokens
Work effectively in a cloud-hosted environment that is managed by Infrastructure as Code with the knowledge of Terraform and Amazon Web Services including S3, RDS, Athena, SQS, Lambda, and Step Functions
Complete detailed design documentation including data model diagrams, flow charts, and high-level task definitions using Lucidcharts
Test software to ensure the changes meet the expectations of the team, meet required team standards including security & accessibility, and do not introduce errors with existing software, including the creation of unit tests in Junit, Jest or similar technologies within the stack
Release software to production while following the expected change management procedures, including verifying changes are functioning correctly in a live environment
Perform manual testing that is required to verify changes using tools including postman and custom scripts
Develop, support, and maintain CICD pipelines to support other engineers with tools including CircleCI, Kubectl, and Helm
Develop, support, and maintain micro-services that comprise the platform
Develop and maintain React applications leveraging MUI and custom assets and active state management tools like Redux
Develop and maintain Python servers and data processing systems including server based and serverless
Develop and maintain legacy Linux based EC2 server instances, monitoring system health, and performing necessary system upgrades
Support existing systems by triaging reported issues, recommending fixes to prioritized issues, and creating support documentation
Actively contribute to agile planning and refinement meetings while maintaining scrum assignments via Jira
Take ownership of software deliverables and communicate frequently with key stakeholders
Support effective software delivery as a champion of Agile methodologies
About You: Bachelor's degree in Computer Science, Computer Engineering, or foreign equivalent plus 1 year of experience to include writing human-readable, clean code that complies with documented engineering standards with an eye for test-driven development using languages/frameworks including Java and frameworks including Spring Boot, Spring, Hibernate, Python, and frameworks including Flask, Django, FastAPI, Gruk, React, SQL
Write database migration scripts using database migrations tools such as Liquibase, Alembic, etc. and integrating Auth2.0 access controls into services and applications leveraging Json Web Tokens
Work effectively in a cloud-hosted environment that is managed by Infrastructure as Code with the knowledge of Terraform and Amazon Web Services including S3, Athena, SQS, Lambda, and Step Functions
Completing detailed design documentation including data model diagrams, flow charts, and high-level task definitions
Test software to ensure the changes meet the expectations of the team, meet required team standards including security & accessibility, and do not introduce errors with existing software, including the creation of unit and integration tests in Junit, Jest or similar technologies within the stack
Release software to production while following the expected change management procedures, including verifying changes are functioning correctly in a live environment
Perform Manual testing that is required to verify changes using tools including postman and custom scripts
Develop, support, and maintain micro-services that comprise the platform
Developing and maintain React applications leveraging MUI and custom assets and active state management tools like Redux
Develop and maintain Python servers and data processing systems including server based and serverless
Support existing systems by triaging reported issues, recommending fixes to prioritized issues, and creating support documentation
Actively contribute to agile planning and refinement meetings while maintaining scrum assignments via Jira
Take ownership of software deliverables and communicate frequently with key stakeholders
Support effective software delivery as a champion of Agile methodologies
We Can Offer You: The opportunity to work with an awesome team to solve important problems
A competitive salary
Health and other employee benefits
Equity in the business you are helping to build
A flexible schedule and vacation policy
The opportunity to spend every day working to improve outcomes for teachers and students