We're looking for server-side developers to join our team building user-friendly online services for consumers. We have a microservices architecture with a broad range of different technology stacks and high levels of automated test coverage. We believe in the right tool for the job and rely on a variety of programming frameworks and technologies to achieve this.
Your responsibilities may cover systems that each bring their own set of interesting technical and design challenges, especially around scale, security, and availability.
We’re open to candidates with various levels of experience. From engineers with only 1-2 years experience to those looking for their first job!
What you’ll be doing:
We have many different teams working on solving a lot of varied, interesting and challenging problems. Here are a few:
- Targeted Communications: Build systems that seamlessly communicate with our customers, whether it be in applications, mobile push notifications or email. Enable our marketing team to reach custom audiences with the right message.
- Highly Concurrent Distributed Systems: We serve customers all around the globe with our highly available global infrastructure. You’ll build highly concurrent systems and maintain applications that are delivered to 100s of data centers around the world, making sure our customers experience lightning fast experiences wherever they are.
- Marketing Attribution: Utilize resilient data pipelines to ingest large volumes of events for various attribution channels. Then serve this information to internal systems to produce analysis and insights for our business development, marketing and affiliate teams.
- Split-testing: We make heavy use of A/B testing to optimize our front-end for sales conversions. We have enough volume to often get significant results within one day and believe in letting data guide us.
Profile of an ideal candidate:
- You love to solve problems, you’re excited about building well-designed systems and take pride in seeing how your code operates with real users.
- You’re a prolific learner, you read lots and enjoy picking up new skills and applying them in your work.
- Enjoy collaborating with others, learning from their code through review, responding positively to feedback and bouncing ideas off each other.
- A desire to learn best practices for software development:
- Agile Development. We use Kanban and similar development workflows focusing on flow and business value delivery
- Continuous Delivery. All logic is tested automatically. We deploy multiple times per day. We often use TDD & BDD.
- Microservices architecture. We can pick the right stack for each individual application. Currently those involve combinations of Ruby, Node.js, Python, Go, mySQL, Postgres, Redis, RabbitMQ, Docker, Kubernetes, Terraform, Ansible and many other cloud native technologies.
- Code-reviews. We invest in spreading knowledge around the team, and keeping our code easy to read, test, and maintain.
Challenges you’ll learn to overcome:
- Scale and performance. Handle tens of thousands of rpm, scale across geographically distributed datacenters, solve complex computational tasks quickly, and be highly available for the millions of people that visit our site and use our services.
- Securing applications. We work with world-class penetration testers, learn and practice industry leading processes.
- Systems Architecture. Learn from experts in architecture design how to build highly scalable and resilient architectures and micro-services.
- API design: We have client-side apps for Windows, Mac OS, Android, iOS, and soon Linux. Keeping API designs simple and backwards compatible allows us to meet the various requirements for our apps.
Note: Please upload your resume as a PDF and do not include any salary or compensation information in it.