Pelmorex·about 8 hours ago
In this role, the successful candidate will work closely with technology and business teams to define and implement functional requirements for meteorological applications and services. Working within an Agile development environment, the developer will build and maintain backend systems written in C/C++, Go, Python, and Rust while solving complex technical and algorithmic challenges associated with processing and distributing large-scale weather data. These services are deployed and running under Kubernetes (EKS), ECS clusters and EC2 instances. Development of these distributed applications and microservices within Linux environments uses technologies including Docker, Kubernetes, Istio, HTTP/gRPC services, Redis, and cloud-native architectures.
Background in meteorology is a “nice to have”, but if you don’t, don’t worry you will be working closely with our Meteorology R&D team and have the support of the current development team.
The developer will participate in requirements analysis and help design, implement, integrate, test, document and deploy backend meteorological systems and processes. The developer will also provide professional technical support and be well-versed in SDLC and building robust, high performance systems.
Design, implement, and maintain high-performance meteorological software systems using C/C++, Go, Python, and Rust, including backend services, distributed systems, REST and gRPC APIs, and large-scale data processing pipelines. Deploy and operate these solutions in Linux-based, cloud-native environments leveraging Docker, Kubernetes, Istio, Redis, ECS, EC2 instances and other services across AWS and Google Cloud.
Implement software solutions pertaining to our Meteorological systems.
Work within an Agile software development process.
Use AI-assisted development tools and workflows to improve productivity, accelerate delivery, enhance code quality, support troubleshooting, and streamline operational tasks while maintaining quality and accountability.
Work with Technology teams to produce effort estimates on the various work required; execute work based on sprint priorities.
Work with cross-functional teams to ensure all systems function as intended and without impediment to existing products or processes. This includes the development and/or integration of monitoring systems.
Work with Technology Operations team to ensure end-to-end data monitoring in software design, from data acquisition to delivery.
Use knowledge of databases and database technology to create applications which are distributed, multi-tier, and able to service large volumes of data.
Perform unit testing, integration testing, and other automated testing; work closely with QA team to address defects as they arise to ensure production of high quality software.
Architect designs for reuse, scalability, flexibility and customizability.
Work with Technology teams to continuously analyze in-house software systems, identify weaknesses and propose changes for improvement.
Provide support to our operational teams for the relevant production systems.
Roles, responsibilities and duties may evolve and change over time.
Degree or diploma in Computer Science, Mathematics, Engineering, or equivalent practical experience.
Minimum 5 years of experience in enterprise software development.
Strong experience developing and supporting production microservices using Go as primary language, with experience in C/C++, Rust and Python considered an asset.
Strong experience developing applications with CMake and compilers such as gcc/g++, Go, and Rust, as well as the Python interpreter, along with operating distributed systems in Linux environments using Docker containers and Helm charts.
Experience developing software that processes and manages large volumes of data.
Strong understanding of data structures, algorithms, and their practical application to solving complex problems.
Experience implementing caching strategies and technologies to support high-throughput and low-latency systems.
Knowledge of software security best practices and secure development principles.
Experience with containerization technologies, including Docker.
Experience developing HTTP and gRPC-based applications and services.
Experience with Redis and distributed caching platforms such as AWS ElastiCache.
Experience implementing and maintaining CI/CD pipelines using tools such as Jenkins.
Experience building and consuming REST-based APIs and web services.
Strong understanding of multi-tier, distributed, and microservices-based architectures.
Experience building highly available, scalable, and fault-tolerant systems that support large-scale workloads and data processing.
Experience building microservices and managing Kubernetes deployments, including service mesh technologies such as Istio.
Experience working with cloud platforms such as AWS and Google Cloud.
Strong problem-solving and communication skills with the ability to gather requirements, whiteboard solutions, articulate technical trade-offs, and collaborate effectively with the broader team.
Keen interest in data and data mining
Experience with spatiotemporal data sets and scientific data formats including netCDF, HDF, GRIB and BUFR would be a plus.
Education or experience in applying ML/AI to augment data analysis
Have strong analytical, problem-solving, and troubleshooting skills with the ability to diagnose issues and drive solutions.
Bring curiosity and creative thinking to solving complex technical challenges.
Thrive in fast-paced environments, effectively managing priorities and staying focused under tight deadlines.
Can work independently with minimal supervision while consistently delivering on commitments.
Are an engaged, collaborative team player who builds strong relationships and enjoys helping others succeed.
Have a natural curiosity about data: especially understanding source data such as meteorological data, what it means, and how it can create value.
Possess strong written and verbal communication skills.
Have strong organizational skills and value clear, effective documentation