logo

View all jobs

Software Developer (Contract)

Ottawa, Ontario

Embedded Software Developer

Location: Ottawa
Contract Duration: 6 months

We have partnered with an Ottawa based avionics company that is one of the leading providers of tracking, monitoring, and messaging services, as well as airtime and billing services, primarily catering to the aviation industry's mission-critical operations. The company is growing and is looking to add an Software Developer to help with some upcoming project based work. This is an excellent opporunity to join a small, collaborative team in a role that would offer lots of exposure and impact.

The Role:
  • Design, build, and maintain backend services and distributed system components written in Go.
  • Develop APIs, workers, daemons, event-driven services, and internal tools.
  • Write clean, idiomatic, maintainable Go code with clear package boundaries and explicit error handling.
  • Participate in code reviews, technical design discussions, and ongoing improvement of engineering practices.
  • Work with databases, queues, caches, object stores, and other infrastructure components safely and efficiently.
  • Design service architectures that support growing traffic, data volume, and operational complexity.
  • Apply sound distributed systems practices, including retries, timeouts, backoff, idempotency, and failure isolation.
  • Work with REST, messages queues, event streams, and other service communication patterns.
  • Optimize system performance, resource usage, startup behaviour, latency, throughput, and cost.
  • Identify and remove bottlenecks in application code, infrastructure usage, and service interactions.
  • Develop containerized applications using Docker and related container technologies.
  • Configure health checks, readiness checks, graceful shutdown, resource limits, and deployment behaviour.
  • Collaborate with DevOps team to ensure services are reliable, repeatable, and easy to operate.
  • Design systems for high availability, fault tolerance, graceful degradation, and recovery from failure.
  • Build observability into services through structured logging, metrics, tracing, dashboards, and alerting.
  • Participate in production operations, incident response, debugging, root cause analysis, and system hardening.
  • Apply security best practices for secrets, authentication, authorization, service communication, dependencies, and sensitive data.
  • Support secure container images, dependency management, access controls, and auditability.
  • Produce and maintain technical documentation for internal and external stakeholders.
  • Write and update Application Programming Interface (API) documentation, change logs, and technical reference guides.
  • Document software architecture, module behavior, service interactions, configuration procedures, and development workflows.
  • Ensure technical documentation is clear, accurate, version-aligned, and suitable for engineering, support, and integration use.
  • Participate in unit, integration, regression, and system-level testing for embedded software releases.
  • Support internal teams by triaging and responding to technical issues related to backend Linux applications and services.
  • Contribute to continuous improvement of software quality, maintainability, and development practices.


The Requirements:
  • Professional experience in software development, preferably in backend Go systems on Linux-based platforms
  • Strong understanding of backend service design, distributed systems, and production reliability.
  • Experience writing Linux applications and services
  • Experience building, deploying, and operating containerized applications using Docker or similar technologies.
  • Solid understanding of networking fundamentals, including HTTP, DNS, TLS, load balancing, and inter-service communication. Strong programming proficiency in Go, Bash, and SQL
  • Strong knowledge of Go concurrency patterns, including goroutines, channels, context cancellation, and safe shared-state management.
  • Experience working with relational databases, caches, queues, and object stores.
  • Experience working with RabbitMQ, AMQP, MQTT or similar message broker technology.Strong debugging and investigative skills

How to Apply?
You can apply directly to peter.mills@talentlab.com  or on our website at www.talentlab.com. We want to thank all applicants for their interest, but only those in consideration will be contacted
 

Share This Job

Powered by