Software Engineer - Timelines & Conversations Infrastructure
Twitter’s purpose is to keep the world informed by serving the public conversation. Hundreds of millions of users come to Twitter every month to see public conversations about what’s happening in the world. Our infrastructure today considers and ranks millions of Tweet candidates per second to produce relevant reply content on every Conversation Timeline load.
Who We Are:
The Conversations team is a new group formed to create the next generation platform to power public conversations on Twitter. We built this team out of leaders from the existing very successful Home Timeline team, and see this as one of the next largest opportunities for Twitter. We want to invest in a more powerful, sustainable platform that can enable fast-paced product development and encourage healthy discourse on Twitter. We need engineers with a passion for product infrastructure. We’re giving this team a broad charter and a lot of freedom to craft a solution to a technically challenging problem.
What You’ll Do:
As an engineer on the Conversations team, you’ll work directly with smart, passionate peers. Working on a small team, you’ll not only get a chance to both architect and build a new platform at a huge scale, but also lead and build new product initiatives on top of that platform. You’ll work directly with engineers, product managers and designers across the company.
Your work will directly impact the lives of every Twitter user, especially on the Home Timeline and Conversation Timeline. You’ll develop a platform that defines the future of how public conversations happen on Twitter. Most importantly, you’ll own specific problems related to Conversations and be given the resources, support, and autonomy to drive solutions.
Who you are:
Able and desire to take on unexplored, complex product and technical problems, learn quickly, understand tradeoffs, and communicate a solution
Have a self-driven attitude - able to own problems and deliver solutions. We give engineers a lot of autonomy.
Fluency with at least one of the following languages: Java, C/C++, Python, Ruby, Scala, or any functional language (we primarily use Scala)
Experience with designing, improving, and debugging complex, scalable distributed systems
Experience with writing tests for production software
Experience operating production software in a UNIX/Linux environment
Some familiarity with classical computer science algorithms (e.g. tree traversal)
Bachelor’s, Master’s or Doctorate in computer science or a related field, or relevant work experience