Software Development Engineer II – Full Stack
Posted 4hrs ago
Employment Information
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




















