Software Engineer- Ad Serving
Who we are:
The Ads Serving team builds the most critical systems and infrastructure in our whole business that’s directly responsible for our multi-billion dollar revenue stream. More can be found here: https://blog.twitter.com/2016/resilient-ad-serving-at-twitter-scale
Context, responsibilities, and challenges:
Twitter is synonymous with staggering scale. Hundreds of millions of users use our service every single day, generating huge amounts of traffic, often in an unpredictable manner. Advertisers seize these opportunities and react quickly to reach their target audience in real time, resulting in demand surges in the marketplace. In the midst of such variability, Twitter’s ad server — our revenue engine — performs ad matching, scoring, and ad serving at an immense scale.
We face a set of daunting challenges: Process tens of billions of ad requests, serve billions of ads both on- and off-Twitter with tight latency constraints, be highly available (four-nines+), be resilient to massive query spikes, reliably deliver the highest quality ads possible for every query, and do all of this at minimal cost (optimal resource utilization). Our ad serving engine is built to take on these challenges.
In addition, we also build systems that process ad spend information in real-time. The “live-spend pipeline”, which works hand-in-hand with serving, is also a massively scalable system that processes impressions, clicks and engagements using real time stream processing technologies, and provides data to the serving, billing, and advertiser-analytics systems.
In order to achieve all this, we use state of the art open-source and proprietary technologies, and build some of the world’s largest and most complex distributed systems. If you are passionate about building such world-class systems, we invite you to join our team!
What you’ll do:
- Be a technical lead or an individual contributor and partner with a high performing team in head quarters (SF).
- Build the world’s best ad server: The ad server is composed internally of several core “tier-1” services (services with strict SLAs around high availability). You will play a direct role in architecting, designing, developing and operationalizing these high performance, scalable, reliable and resilient services. In doing so, you will interact with several subsystems and sister teams such as our Prediction, Targeting, Data Infrastructure, User Modeling, Marketplace, Billing, and Ad Formats teams. Ads is serious business, and ad serving is a highly complex space. This role will stretch your capabilities, and challenge you to come up with the best, most effective engineering architecture to address the complex demands of the business.
- Build a world-class live-spend pipeline: You will be exposed to the best in streaming compute technologies as you help build and evolve our live-spend pipeline. The ads we serve result in a massive stream of user-driven engagements (impressions, clicks) flowing back at us, and the responsibility of processing these engagements, applying the right traffic-quality and click-fraud filters, and ensuring the accuracy of the raw data used for serving, billing, and analytics lies with the live-spend pipeline.
- Help craft Twitter’s revenue roadmap and shepherd critical projects: Since we are the delivery engine for all our ads, we play a central role in the Revenue organization. In this role, you will work very closely with the rest of Revenue in crafting and prioritizing our roadmap, and shepherding projects that are critical to our company’s revenue strategy.
What else can you expect:
We believe that people are our strongest asset, and take special interest in each and every one of our engineers. You can expect a real investment in your professional growth, and a commitment to crafting a strong, sustainable career for you. Our teams are composed of highly talented and passionate 'A' players, and you’ll get the mentorship and coaching you deserve to hone your skills and expertise. Our vibrant culture and work environment will kindle your passion and bring out the best in you!
You will also be joining the Twitter Boston engineering community! You will be surrounded by 6+ engineering teams that play key roles in almost every aspect of Twitter’s business. While the office continues to grow, Twitter Boston has maintained a small startup feel and the engineers here share a common focus of delighting users.
Who You Are:
You're someone with a lot of potential who is constantly looking for real engineering challenges to tackle and hard problems to solve. You want to own significant projects while working in small teams of highly-talented, passionate engineers. The prospect of getting to work with an open-source tech stack that powers a solution people around the world love to use, and where massive volumes of data are extracted in real time excites you. You want to be mentored by amazing engineers; you want to see continued investment in you by the business; and you expect excellence in everything. You see your future self as a force multiplier (and not just a great technical resource for an employer). You see challenge as opportunity and you're looking to jump ahead of the pack in your career. You're applying to this role because you're hoping for a chance to jump in and see what you can do to make a difference in an iconic software company.
- Strong CS fundamentals: algorithms, data structures, design patterns, etc.
- 4+ years of backend or distributed systems experience
- Backend development experience with a solid foundation in fault-tolerant and resilient distributed systems, concepts of asynchronous programming, concurrency, performance analysis, and/or large-scale data processing
- Direct experience building systems with online components to them (i.e., they serve requests to users)
- A solid grasp on good software engineering practices (e.g. thorough code reviews, deep focus on quality, design documentation)
- Great communication skills
- BS, MS, or PhD in computer science or a related field, or equivalent work experience
For bonus points, you would have:
- Experience with Storm or other Streaming Compute based technologies
- Experience with Cassandra, Redis, Memcached or MySQL
- Experience with Hadoop or other MapReduce-based architectures
- Contributions to the open-source community