Intermediate Software Engineer
GeologicAI
Intermediate Software Engineer
Department: Software Development
Employment Type: Permanent - Full Time
Location: Calgary
Description
The Platform Infrastructure team owns the infrastructure, tooling, and engineering practices that let us ship software safely and scale our systems reliably. This role sits at the intersection of software engineering and DevOps: you will build the CI/CD pipelines and deployment automation that get code to production, and you will go deep into the platform itself, profiling performance, identifying architectural bottlenecks, and refactoring the systems that limit our ability to scale.
This is not a role for someone who wants to maintain the status quo. We have the foundations, but we need someone with the instincts to find what is slowing us down next whether that is a fragile deployment pipeline, an unscalable data processing pattern, or a legacy component that needs to be modernized and the engineering depth to fix it
Key Responsibilities
CI/CD, Deployability & Infrastructure as Code
- Design, build, and own automated deployment pipelines from development through test, staging, and production, including deployments to field-based hardware at remote mine sites.
- Implement infrastructure as code (IaC) and configuration management practices that make environments reproducible, auditable, and easy to reason about.
- Drive environment parity across local development, test, staging, and production so that deployment failures are caught early and consistently.
- Automate release processes to reduce manual steps, eliminate deployment risk, and improve release cadence.
- Maintain and improve deployment reliability to distributed and edge environments, including trailer-mounted compute units operating in the field.
Scale, Performance & Distributed Systems
- Profile and analyze distributed processing systems to identify performance bottlenecks across compute, I/O, memory, and network layers.
- Design and implement optimizations that allow our data pipelines and processing workflows to handle growing data volumes without degrading performance
- Develop pattern detection tooling to proactively surface systemic issues, resource contention, throughput degradation, failure modes before they become incidents.
- Contribute architectural thinking to discussions about how to scale components that were not originally designed for current data volumes
Refactoring & Platform Modernization
- Work within and improve legacy codebases, identifying the highestleverage refactoring opportunities and executing them without disrupting production systems.
- Containerize Python-based scientific processing applications to improve portability, isolation, and deployment consistency.
- Reduce technical debt incrementally and pragmatically, with a bias toward changes that improve scalability and maintainability simultaneously.
- Establish and promote platform engineering standards around code structure, dependency management, and deployment readiness.
Testing & Release Quality
- Build and maintain test environments that accurately represent production at scale, including large-volume data processing scenarios.
- Develop automated regression, integration, and end-to-end validation frameworks across multiple processing systems.
- Improve release confidence through rigorous pre-production validation, automated quality gates, and controlled rollout mechanisms.
- Create shared testing utilities and reusable fixtures that lower the cost of writing high-quality tests across the engineering organization.
Observability & System Reliability
- Instrument systems with structured logging, distributed tracing, and metrics that make it possible to understand system behaviour under real workloads.
- Build dashboards and alerting that surface the right signals, not noise and enable the team to detect and respond to issues quickly.
- Establish reliability baselines and SLOs for critical processing pipelines and track progress against them over time.
- Conduct post-incident analysis and translate learnings into systemic improvements, not just one-off fixes.
Developer Experience
- Reduce friction in the development workflow: faster feedback loops, better local tooling, clearer onboarding, and self-service access to environments.
- Document what you build, runbooks, architecture decision records, onboarding guides — so knowledge is accessible and the team can operate independently.
- Collaborate with engineers across the organization to understand pain points and translate them into platform improvements with real impact.
Skills, Education, and Experience
Must Have Skills, Education, and Experience:
- 3–6 years of professional software engineering experience, with meaningful exposure to platform, infrastructure, or backend systems work.
- Strong Python development skills; comfortable working in a Python-centric codebase at scale.
- Solid understanding of distributed systems: how they fail, how to profile them, and how to reason about performance across multiple components.
- Hands-on experience building or significantly improving CI/CD pipelines and automated deployment workflows.
- Experience with Docker and containerized development and deployment environments.
- Demonstrated ability to refactor complex, legacy codebases safely and incrementally.
- Experience with performance profiling and optimization, you know how to find the real bottleneck, not just the obvious one.
- Strong grasp of software testing: unit, integration, end-to-end, and what makes tests useful at scale versus brittle and expensive.
- Experience implementing or working with observability tooling: logging, metrics, tracing, alerting.
- Experience with infrastructure as code and configuration management practices and tools.
- Linux-based development and operations as a daily practice.
Assets:
- Experience with Azure or other cloud platforms, particularly around managed compute and storage at scale.
- Familiarity with MLOps practices: model serving infrastructure, experiment tracking, or ML pipeline tooling.
- Experience with scientific computing, high-throughput data processing, or analytical software systems.
- Experience with edge or distributed hardware deployments — shipping software to systems outside a data centre.
- Exposure to specific IaC tooling such as Terraform or Ansible.
- Experience with Databricks, Spark, or similar large-scale data processing frameworks.
Benefits from Working at GeologicAI
What You'll Love About Us:
We're a fast-growing well-funded company working on interesting products that are making a difference to the world. Our products and services are helping find the hydrocarbons that power our world today, and the metals and minerals required for the energy transition of tomorrow.
We offer:
- A casual and fun work environment
- Flexible schedule and opportunities for remote work (depending on role)
- Extended health and dental benefits (confirm for geographic location)
- Robots with lasers!
Reference: WJ-291_11834376