Job Title: Software Engineer
Location: Ottawa, Canada (onsite)
Duration: 6 – 12 months
Job Description: At least 8 years of experience in development using development in C, C++, Java, Python.
Key Responsibilities:
· T1: Develop software components in C, C++ and Java language 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.
What are the Mandatory skills and skill proficiencies required for this position?
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.
Regards
Krishna
Job Type: Fixed term contract
Contract length: 6 months
Pay: $45.00-$50.00 per hour