Staff Software Engineer
YomlyStaff Software Engineer
Location: Remote
Why Yomly?
At Yomly we build and run HR and payroll products for enterprises across the Gulf and beyond. When a customer's payroll has to land on time and be correct, our platform is what makes that happen. The engineering decisions behind it affect people's salaries, the privacy of their data, and whether customers can rely on us when deadlines arrive.
This is a remote-first role working with an engineering team centred on the Gulf.
As a Staff Software Engineer, you would help shape how that platform grows. You would tackle problems that span teams, write the foundational code that makes systems easier to change, and see your decisions through to production. There is room to influence technical direction and improve how the wider engineering team builds and runs the product.
What you'll do?
As Staff Software Engineer, you'll shape technical direction across teams and drive company-level initiatives. You'll be instrumental in scaling our distributed platform while diving deep into complex engineering challenges - writing foundational code that sets patterns, simplifies systems, and unlocks team productivity. Through hands-on technical leadership, mentoring and knowledge sharing, you'll elevate the capabilities of our engineering organisation, focusing on high-leverage improvements that make our entire ecosystem more effective.
Core Responsibilities:
- Design and develop scalable, performant full-stack solutions for our SaaS platform
- Foster and guide architectural direction while ensuring good collaborative decision-making and implementation of core platform components
- Drive engineering excellence through reviews, technical mentorship, and best practices
- Partner with Product and Design to deliver exceptional user experiences
- Own end-to-end system reliability, from design through production monitoring
- Support our on-call rotation, driving improvements to system resilience, and to the experience of the on call team around incidents
What we're looking for:
Must Have:
- 3+ years building internet-facing applications at scale
- 8 years experience of developing software as part of a team
- Strong technical leadership and mentoring experience
- Track record leading complex technical initiatives across teams
- Deep, practical knowledge of distributed systems
Technical Expertise (We value experience in several of these areas):
- Full-Stack: TypeScript and Node.js, (Mandatory), Angular and Python (preferable).
- Distributed Systems & Performance:
- Experience building resilient distributed systems using patterns like service discovery, circuit breakers, and fallback strategies
- Experience owning and operating production services handling 10,000+ requests or transactions per second against defined latency targets is a plus.
- Caching strategies and performance optimization
- Experience keeping multi-service systems correct under partial failure: safe retries, timeouts, and handling of duplicate or out-of-order events across services
- Experience running long-running or scheduled processing that must complete correctly by a hard deadline, and recovering it cleanly when a step fails midway
- System Architecture: Building scalable, modular, and resilient microservices
- DB: MySQL optimization, schema design, and NoSQL solutions (Redis, DynamoDB)
- Cloud & Infrastructure: Any cloud with preference for AWS services (EKS, S3, Lambda, RDS), infrastructure as code
- Engineering Practices: Test automation, CI/CD, observability tools
Success Metrics:
- Drive architectural decisions that improve system scalability and reliability
- Establish engineering best practices adopted across teams
- Deliver technical solutions that significantly impact business metrics and delight customers
You should not apply if:
- You want a role focused on architecture discussions without writing and maintaining production code.
- You need every problem fully specified and every dependency resolved before you can make progress.
- You would rather rewrite a system than understand why it is the way it is.
- You see your responsibility as finished when code is merged, leaving rollout, reliability, and customer impact to others.
- You are willing to sacrifice correctness to deliver faster. In payroll, meeting a deadline does not justify errors in someone's pay.
- You expect technical decisions to be accepted because of your title, or are unwilling to work through trade-offs with other teams.
- You want to stay at the technical layer and leave the domain to Product.
Mindset and cutlure fit
We value observable behaviour over slogans. You will do well here if you:
- Own problems you notice until they are fixed or clearly in the right hands, including when the work crosses team boundaries.
- Move with urgency on customer problems and treat payroll deadlines as hard commitments, while protecting correctness and sensitive data.
- Stay calm and resourceful when requirements are incomplete, dependencies are unclear, or the cause of a production issue is not obvious.
- Make technical trade-offs explicit, document decisions, and change your position when the evidence warrants it.
- Treat incidents and failed approaches as opportunities to fix underlying causes and share what you learn.
- Help other engineers make sound decisions through pairing, review, and clear explanations. Challenge ideas while treating customers and colleagues