The company is hiring a Senior Software Engineer to build backend software components and microservices for large-scale, distributed applications.
The role covers the full software lifecycle, from requirements through maintenance, and works in an agile setting with product managers, architects, designers and other engineers.
Responsibilities
Design, build, test, debug and document backend components and microservices that fit the system architecture and business needs.
Work with cross-functional teams to turn requirements into working software.
Take part in every stage of the lifecycle: gathering requirements, analysis, design, implementation, testing, deployment and upkeep.
Hold code to coding standards, best practices and quality guidelines.
Design and build efficient, scalable database solutions, maintain stored procedures, and tune queries to cut latency and find bottlenecks.
Keep improving the performance, scalability and reliability of systems.
Spot weak points and inefficiencies, and fix them or the problems customers report.
Set up Kafka clusters, brokers and topics, and keep message queues healthy, available and fast.
Investigate defects and production issues raised by internal teams or customers, analyse logs, find root causes and ship fixes.
Integrate with internal and external systems alongside other engineering teams, keeping data flowing smoothly between them.
Write up software designs, technical specifications and development processes.
Share knowledge and good practice with teammates.
Assess new tools, technologies and approaches that could improve functionality and performance, and recommend them.
Join sprint planning and help the team meet its goals.
Requirements
Either a Master's degree or equivalent in Computer Science, any engineering discipline or a related field, plus 1 year of software engineering or related experience, or a Bachelor's degree or equivalent in the same fields, plus 3 years of software engineering or related experience.
Hands-on work with Java, Spring, Hibernate and Apache frameworks.
Experience designing large distributed systems that are scalable, available and performant.
Working knowledge of SQL and NoSQL databases, data structures and algorithms.
Experience running Kafka clusters and managing topics and partitions.
Experience across the software lifecycle, from requirements through deployment.
Experience with Microsoft Azure for building and deploying scalable applications.
Experience designing and building APIs, including RESTful architecture and integration.
Experience diagnosing and fixing complex software problems.
Experience working in agile teams using JIRA.
Experience with unit testing frameworks, test-driven development and clean, maintainable code.
Experience writing technical documentation such as design specs, user guides and architecture diagrams.
Experience integrating GraphQL subgraphs to connect frontend and backend.
Experience with Kubernetes for container orchestration and service deployment.
Experience with Azure Blob Storage and Cosmos DB.
Experience with CI/CD using Jenkins for automated builds and deployments.
Experience with monitoring and observability tools, including Grafana, Prometheus and MMS Monitoring.
Experience building test coverage for production-grade systems.
Any amount of professional experience with these skills is accepted.
Conditions
Pay runs from $143,104 to $216,000 per year, with annual or quarterly performance incentives on top.
Equal opportunity employer.
Benefits
Competitive pay and performance-based incentive awards.
Medical, vision and dental coverage.
401(k), stock purchase and company-paid life insurance.
PTO including sick leave, parental leave, family care leave, bereavement, jury duty and voting time.
Short-term and long-term disability cover.
Education assistance, with company-paid college degrees at 100%.
Company discounts, military service pay and adoption expense reimbursement.
Some benefits depend on job classification and length of employment, and plans may change under their own terms.