Participate in the design of software tools, subsystems, and reusable components, contributing to domain analysis and design discussions led by senior engineers
Assist Applications Engineers and senior Application Programmers in interpreting software requirements and design specifications into working, tested code
Integrate and test software components, ensuring that units, modules, and services work together correctly across the microservices architecture
Design, develop, test, and maintain Java backend microservices and REST APIs, following established coding standards, architectural patterns, and the program's Definition of Done
Work with PostgreSQL databases, including schema design, writing and optimizing SQL queries, and implementing data access layers
Integrate backend services with Elasticsearch / OpenSearch for search indexing and with AWS S3 for file storage, AWS SNS and SQS for event-based messaging, and AWS RDS for relational persistence
Build and maintain containerized Java services that run on AWS Elastic Container Service, ensuring services are observable, resilient, and ready for deployment to isolated VPC networking environments
Contribute to Python backend services where the team's work requires it, applying the same standards of testability, readability, and maintainability
Author and maintain unit tests and integration tests for backend code, supporting the program's test automation strategy and code coverage expectations
Support and maintain GitLab CI/CD pipelines for backend services, including build, test, scan, and deployment stages
Contribute to infrastructure-as-code in Terraform under the guidance of senior engineers, and support peer review of infrastructure changes
Participate actively in peer code review, both submitting code for review and reviewing teammates' code against agreed standards
Participate fully in SAFe Agile ceremonies (Sprint Planning, Daily Standup, Sprint Review, Retrospective, and Backlog Refinement) providing accurate estimates and status updates on assigned work
Break down assigned user stories into appropriately sized technical tasks and track work transparently in the program's Agile tooling
Support Tier-2 and Tier-3 production issue resolution for backend components developed by the team, participating in troubleshooting activities and implementing prioritized fixes
Remediate backend code and dependency security vulnerabilities identified through routine security scanning within required timeframes: 30 calendar days for High-Priority vulnerabilities and 180 calendar days for Medium-Priority vulnerabilities
Document code, APIs, and data models clearly, and maintain technical documentation in the program's collaboration tools
Requirements
Bachelor's degree in Computer Science, Software Engineering, Information Systems, or a related field (or 3 years of additional experience)
Minimum 3 years of professional backend web development experience
Demonstrated, hands-on experience developing production backend services in Java
Working experience with Python for backend development or scripting, sufficient to contribute to Python services when team priorities require it
Hands-on experience designing, querying, and optimizing PostgreSQL (or similar) databases, including schema design and SQL tuning
Working experience with Elasticsearch or OpenSearch for search indexing
Hands-on experience building and running containerized microservices, including writing/maintaining Dockerfiles
Working experience with AWS services relevant to cloud-native microservices (e.g., Elastic Container Service, RDS, S3, SNS, SQS)
Working experience with GitLab (or equivalent) source control and CI/CD pipelines
Exposure to Terraform or equivalent infrastructure-as-code tooling
Proficiency writing unit and integration tests for backend code
Experience participating in peer code review, both as author and reviewer
Experience working in Agile/Scrum environments, including active participation in sprint ceremonies and backlog refinement
Strong written and verbal communication skills, with the ability to collaborate across a scrum team, ask clarifying questions of senior engineers, and provide clear status on assigned work.