{bc}
Company Site

Senior Software Engineer – Computational Algorithms

GeoSoftware
Calgary, CAN
Full-time
Mid · 5+ years experience
Onsite
Discovered 1 weeks ago
numpypython

Full Job Posting

Duties and Responsibilities

  • Algorithm Development and Modernization
  • Separate established numerical code from the application framework it grew up in, producing headless, testable, independently deployable components
  • Work inside a large, mature, sparsely documented C++ codebase and leave it better understood than you found it
  • Define each algorithm's interface—its inputs, outputs and parameters—precisely enough that the surrounding platform can validate, present and re-run it without knowing what the algorithm does
  • Expose C++ to Python through pybind11, with attention to memory ownership, the GIL and zero-copy array handling
  • Research, Prototyping, and Optimization
  • Investigate how an algorithm can be made substantially faster — reformulation, better numerical methods, exploiting structure in the problem — not only tuning the code that implements it
  • Follow the relevant literature, and evaluate published approaches honestly against what we already have
  • Build quick prototypes in Python with subject matter experts, iterate with them on the science, and only then decide what deserves to become production C++
  • Profile and optimize: vectorization, cache behavior, memory layout, threading and choice of numerical library
  • Decompose algorithms for parallel execution, and reason rigorously about what that does to floating-point reproducibility
  • Work with the platform engineers on how compute is distributed and on the seam between native code and the execution layer
  • Verification
  • Build the regression harness that validates parallel and distributes output against the single-threaded reference
  • Define and justify the acceptance tolerance for each algorithm family
  • Write characterization tests before refactoring and regression suites that catch what code review will not
  • Collaboration and Delivery
  • Work in short iterations with continuous integration, code review and acceptance criteria agreed before implementation
  • Work with geoscience domain experts to confirm that a result is not only numerically equal but scientifically sound
  • Contribute to the technical direction of a small team, and write down the decisions that matter
  • Skills and Competencies

Skills

  • Strong modern C++ with real numerical computing experience—linear algebra, signal processing, transforms, optimization, or inversion
  • Strong Python, including the scientific stack—NumPy, SciPy, and the array-programming idiom—and experience binding native code to it
  • A physics, geophysics, or applied mathematics grounding and the ability to read a paper and implement what it describes
  • Solid grounding in floating-point behavior, numerical stability, and error analysis
  • Parallel programming: threading, SIMD, and the trade-offs of data decomposition
  • Ability to work productively inside a large, unfamiliar, poorly documented codebase
  • Prototyping speed: able to get something working and demonstrable in front of a domain expert quickly and comfortable throwing it away
  • A test-first instinct and the patience to establish a baseline before changing anything
  • Strong written English and the habit of documenting asynchronously
  • Competencies:
  • Rigour, and comfort with being held to a numerical standard
  • Ownership and self-direction
  • Pragmatic judgement about where complexity is worth it
  • Collaboration across disciplines
  • Technical expertise (numerical and scientific computing)
  • Alignment with company interest
  • Qualifications & Requirements
  • Required:
  • Degree in physics, geophysics, geoscience, applied mathematics, or a closely related quantitative discipline, or demonstrable equivalent depth in a quantitative discipline. A postgraduate degree is welcome but not required
  • Minimum 5 years of professional experience in numerical, scientific or performance-critical computing
  • Strong Python, including the scientific stack, and experience at the native-to-Python boundary
  • Demonstrable modern C++ experience in a production codebase
  • Demonstrable experience with parallel programming and performance optimization
  • A genuine interest in making algorithms faster and in the research that leads there
  • Experience working directly with scientists or other domain experts and prototyping collaboratively with them
  • Able to work effectively in a small, remote, multi-time-zone team: writing things down, communicating asynchronously, and operating without close supervision
  • Fluent written and spoken English
  • Desired:
  • Geophysics or seismic processing background
  • Published research, or a research background in a computational discipline
  • Experience with inversion, deconvolution, transforms, or wavelet estimation
  • Distributed compute frameworks—Dask, Ray, or MPI—or GPU computing
  • Performance work with BLAS, LAPACK, FFTW, or Eigen
  • Petrophysics or well-log computation
  • Cloud-native, chunked array storage formats
  • Experience extracting library code out of a monolithic application
  • Fluent with AI coding tools for prototyping, test generation, and refactoring, with the judgement to know where their output must be verified rather than trusted
  • We value the unique ways in which we differ, and we are committed to equal employment opportunities for all professionals.

Qualifications

  • Strong modern C++ with real numerical computing experience—linear algebra, signal processing, transforms, optimization, or inversion
  • Strong Python, including the scientific stack—NumPy, SciPy, and the array-programming idiom—and experience binding native code to it
  • A physics, geophysics, or applied mathematics grounding and the ability to read a paper and implement what it describes
  • Solid grounding in floating-point behavior, numerical stability, and error analysis
  • Parallel programming: threading, SIMD, and the trade-offs of data decomposition
  • Ability to work productively inside a large, unfamiliar, poorly documented codebase
  • Prototyping speed: able to get something working and demonstrable in front of a domain expert quickly and comfortable throwing it away
  • A test-first instinct and the patience to establish a baseline before changing anything
  • Strong written English and the habit of documenting asynchronously
  • Rigour, and comfort with being held to a numerical standard
  • Ownership and self-direction
  • Pragmatic judgement about where complexity is worth it
  • Collaboration across disciplines
  • Technical expertise (numerical and scientific computing)
  • Alignment with company interest
  • Qualifications & Requirements
  • Degree in physics, geophysics, geoscience, applied mathematics, or a closely related quantitative discipline, or demonstrable equivalent depth in a quantitative discipline. A postgraduate degree is welcome but not required
  • Minimum 5 years of professional experience in numerical, scientific or performance-critical computing
  • Strong Python, including the scientific stack, and experience at the native-to-Python boundary
  • Demonstrable modern C++ experience in a production codebase
  • Demonstrable experience with parallel programming and performance optimization
  • A genuine interest in making algorithms faster and in the research that leads there
  • Experience working directly with scientists or other domain experts and prototyping collaboratively with them
  • Able to work effectively in a small, remote, multi-time-zone team: writing things down, communicating asynchronously, and operating without close supervision
  • Fluent written and spoken English
  • Geophysics or seismic processing background
  • Published research, or a research background in a computational discipline
  • Experience with inversion, deconvolution, transforms, or wavelet estimation
  • Distributed compute frameworks—Dask, Ray, or MPI—or GPU computing
  • Performance work with BLAS, LAPACK, FFTW, or Eigen
  • Petrophysics or well-log computation
  • Cloud-native, chunked array storage formats
  • Experience extracting library code out of a monolithic application
  • Fluent with AI coding tools for prototyping, test generation, and refactoring, with the judgement to know where their output must be verified rather than trusted
  • We value the unique ways in which we differ, and we are committed to equal employment opportunities for all professionals.

Apply for this job in 1 click

Skip the repetitive application forms

Install the Base Career Chrome Extension and autofill job applications across major job boards with your profile.

Sarah M.James T.Maya R.

Trusted by over 500,000 job seekers on Base Career

Start Free Today

More from this employer

More jobs at GeoSoftware