Software Development Engineer II – Full Stack

Posted 4hrs ago

Employment Information

Education
Salary
Experience
Job Type

Report this job

Job expired or something wrong with this job?

Job Description

Full-stack SDE II building APIs, services, and data pipelines for Gather AI’s autonomous drone warehouse-intelligence platform. Operating production systems across development, deployment, monitoring, and reliability.

Responsibilities:

  • Build and maintain production backend services using Python and Node.js/NestJS
  • Design, build, and maintain REST APIs and integrations with internal and external systems
  • Work with PostgreSQL in production, including schema design, complex queries, indexing, connection management, and performance tuning
  • Build and support asynchronous workflows using message queues and distributed system patterns
  • Apply caching strategies across application and data layers, including understanding cache invalidation and performance tradeoffs
  • Take features and integrations through the full software development lifecycle, including development, testing, deployment, monitoring, troubleshooting, and iteration
  • Containerize and deploy services using Docker, Kubernetes, and CI/CD pipelines
  • Monitor production systems using logs, dashboards, metrics, and other observability tools to understand reliability, throughput, and performance
  • Diagnose and resolve production issues, including failures across APIs, integrations, queues, databases, and multi-service workflows
  • Contribute to secure development practices including authentication, authorization, secrets handling, and protection against common application vulnerabilities
  • Work closely with senior engineers on technical design and architecture decisions while progressively taking greater ownership
  • Identify opportunities to improve code, reliability, performance, engineering processes, and system design rather than only executing assigned work
  • Collaborate with Engineering, Security, Customer Success, Product, and other teams as our platform continues to scale

Requirements:

  • 2–5 years of professional software engineering experience building and operating production software
  • An engineering degree in Computer Science or equivalent practical experience
  • Production experience with Python and Node.js/NestJS, with strong production depth in at least one and working experience with the other
  • Experience building production-grade APIs, microservices, or backend systems and seeing them through deployment and ongoing operation
  • Strong SQL fundamentals and hands-on relational database experience, including complex queries, indexing, schema design, and production performance troubleshooting
  • Experience designing and maintaining REST APIs, not only consuming them
  • Experience integrating with external systems and understanding real-world concerns such as retries, duplicate processing, failure handling, and unreliable dependencies
  • Working knowledge of distributed systems concepts including asynchronous processing, message queues, retries, consistency, and failure recovery
  • Understanding of caching, including what to cache, where caching should occur, and how invalidation is handled
  • Experience with message queues or asynchronous processing technologies such as Kafka, RabbitMQ, SQS, or equivalent
  • Experience with Redis or another caching technology
  • Experience with Azure or another major cloud provider, deploying and debugging, using Docker, Kubernetes, and CI/CD pipelines
  • Familiarity with Git and modern code review workflows
  • Understanding of secure coding fundamentals including authentication and authorization, secrets handling, injection risks, and data exposure
  • Experience working with production systems beyond simply writing code, including monitoring metrics, investigating performance, responding to failures, and improving systems after issues occur
  • Strong written and verbal communication skills in English, with the ability to document decisions, explain tradeoffs, write clear PRs and design notes, and raise blockers early
  • A collaborative and curious approach, with the willingness to contribute ideas, ask questions, accept feedback, and work across component boundaries when needed