Overview
Role: Skill 2 SW engineer Ottawa
Work location: Ottawa.
Background and Meet and Greet: MANDATORY
Job Description
- T1: Develop Java software components for the LCC subsystem, using containerized micro-services, network and data storage (SQL) functions, clustering features, cryptographic libraries, gRPC and REST API interfaces, common data formats (JSON, YAML, XML, Protobuf).
- T2: Collaborate with senior developers, architects, and the engineering manager to implement components based on architectural requirements: draft designs, propose solutions, review in weekly design syncs, and finalize through code inspections.
- T3a: Define unit tests for components, support the team in BDD feature definition, and assist with automation goals.
- T3b: Collaborate with QA to develop BDD feature definitions (e.g., Gherkin files), translating acceptance criteria into executable scenarios.
- T4a: Apply common practices to ensure code quality and maintainability.
- T4b: Ensure thread safety, proper memory management (no leaks or undefined behavior), as well as code security.
- T4c: Document your code with inline comments or lightweight documentation for public interfaces.
- T5a: Provide clear effort estimates during planning and flag any deviations in daily scrums.
- T5b: Update status daily on the team board (e.g., Jira), and in standups, flag any deviation greater than 10% from the original estimate; if you exceed 20%, notify the engineering manager and suggest a corrective action.
- T6: Ensure designs facilitate troubleshooting of field issues.
- T7a: Troubleshoot and resolve issues uncovered during feature or design testing.
- T7b: When a QA feature or design test uncovers a defect, reproduce the issue locally, perform a brief root-cause analysis (noting steps and findings in the ticket), and categorize its impact.
Key Responsibilities
- T1: Develop Java software components for the LCC subsystem, using containerized micro-services, network and data storage (SQL) functions, clustering features, cryptographic libraries, gRPC and REST API interfaces, common data formats (JSON, YAML, XML, Protobuf).
- T2: Collaborate with senior developers, architects, and the engineering manager to implement components based on architectural requirements: draft designs, propose solutions, review in weekly design syncs, and finalize through code inspections.
- T3a: Define unit tests for components, support the team in BDD feature definition, and assist with automation goals.
- T3b: Collaborate with QA to develop BDD feature definitions (e.g., Gherkin files), translating acceptance criteria into executable scenarios.
- T4a: Apply common practices to ensure code quality and maintainability.
- T4b: Ensure thread safety, proper memory management (no leaks or undefined behavior), as well as code security.
- T4c: Document your code with inline comments or lightweight documentation for public interfaces.
- T5a: Provide clear effort estimates during planning and flag any deviations in daily scrums.
- T5b: Update status daily on the team board (e.g., Jira), and in standups, flag any deviation greater than 10% from the original estimate; if you exceed 20%, notify the engineering manager and suggest a corrective action.
- T6: Ensure designs facilitate troubleshooting of field issues.
- T7a: Troubleshoot and resolve issues uncovered during feature or design testing.
- T7b: When a QA feature or design test uncovers a defect, reproduce the issue locally, perform a brief root-cause analysis (noting steps and findings in the ticket), and categorize its impact.
Mandatory skills and skill proficiencies
- Java Development
- Strong proficiency in Java programming.
- Experience with Java-based microservices.
- Microservices Architecture
- Containerized microservices (e.g., Docker, Kubernetes).
- Clustering features and distributed systems.
- Networking & APIs
- gRPC and REST API development.
- Understanding of network protocols and service communication.
- Data Storage & Formats
- SQL databases and data storage mechanisms.
- Familiarity with data formats: JSON, YAML, XML, Protobuf.
- Security & Cryptography
- Use of cryptographic libraries.
- Code security best practices.
- Testing & QA Collaboration
- Unit testing and BDD (Behavior-Driven Development).
- Writing Gherkin scenarios and collaborating with QA teams.
- Code Quality & Performance
- Thread safety and memory management.
- Code maintainability and inline documentation.