
SOFTWARE ENGINEER - JAVA (contract)
- Location
- Ottawa, Ontario, Canada
- Arrangement
- On-site
- Type
- Contract
- Posted
- Closes
We are seeking a Skill 2 Software Engineer to design, develop, and maintain Java-based software components within the LCC subsystem. This role requires strong expertise in Java programming, microservices architecture, networking, and data storage, along with experience in secure coding practices and test-driven development. You will be responsible for delivering high-quality, maintainable software, collaborating closely with architects, senior developers, QA, and engineering management to ensure successful implementation of system features and reliability in production.
Key Responsibilities
Core Expertise:
Key Responsibilities
- Develop Java software components for the LCC subsystem using containerized micro-services, SQL-based data storage, clustering, cryptographic libraries, gRPC/REST APIs, and common data formats (JSON, YAML, XML, Protobuf).
- Collaborate with senior developers, architects, and engineering managers to implement components based on architectural requirements, including design drafting, solution proposals, design sync reviews, and code inspections.
- Define and execute unit tests, support BDD feature definition, and contribute to automation goals.
- Work with QA to define Gherkin-based scenarios, translating acceptance criteria into executable tests.
- Apply best practices for code quality, including thread safety, memory management, and code security.
- Document public interfaces with inline comments and lightweight documentation.
- Provide accurate effort estimates during planning, track progress daily via Jira or equivalent, and flag deviations (>10%) in scrums; escalate (>20%) to engineering management with corrective action proposals.
- Ensure designs support effective troubleshooting of field issues.
- Reproduce, analyze, and resolve defects found during feature or design testing, documenting root-cause analysis and categorizing impact.
- Strong proficiency in Java programming with experience in building Java-based microservices.
- Experience with containerized microservices (Docker, Kubernetes) and distributed clustering systems.
- Hands-on expertise with gRPC and REST API development; solid understanding of network protocols.
- Proficiency in SQL databases and data storage solutions.
- Familiarity with structured and semi-structured data formats: JSON, YAML, XML, Protobuf.
- Experience with cryptographic libraries and secure coding practices.
- Unit testing, BDD collaboration (e.g., Gherkin), and QA integration experience.
- Strong understanding of thread safety, memory management, and performance optimization.
- Skilled in code maintainability practices, including inline documentation and clean design.
- Effective collaborator with architects, senior engineers, QA, and management.
- Agile/Scrum team contributor with strong accountability for estimates, task progress, and communication.
- Quality-driven mindset, ensuring reliability and security in delivered software.
- Troubleshooting-oriented, with ability to reproduce and resolve complex issues quickly.
Core Expertise:
- Java software development for microservices
- Secure coding and cryptographic implementations
- Test-driven and behavior-driven development
- Java
- gRPC, REST API frameworks
- Docker, Kubernetes
- Microservices clustering
- SQL databases (e.g., PostgreSQL, MySQL)
- Data serialization formats: JSON, YAML, XML, Protobuf
- Jira for task tracking
- Collaboration with QA automation pipelines
- Cryptographic libraries
- Secure coding practices
- Strong collaboration and communication in cross-functional teams
- Detail-oriented with a focus on quality and security
- Problem-solving and troubleshooting mindset
- Accountability for estimates, deadlines, and corrective actions
