Facebook's mission is to give people the power to build community and bring the world closer together. Through our family of apps and services, we're building a different kind of company that connects billions of people around the world, gives them ways to share what matters most to them, and helps bring people closer together. Whether we're creating new products or helping a small business expand its reach, people at Facebook are builders at heart. Our global teams are constantly iterating, solving problems, and working together to empower people around the world to build community and connect in meaningful ways. Together, we can help people build stronger communities - we're just getting started.Facebook created and open-sourced GraphQL, a query language for describing the capabilities and requirements of data models for clientserver applications, in 2015. Since then, GraphQL has been adopted by a number of companies big and small, as well as the open source community. GraphQL is heavily used within Facebook by our web front-ends, mobile & desktop apps.
GraphQL being the de-facto way of fetching data in our apps, we have since started working on system-wide optimizations across our apps & backends. In a traditional client-server design, engineers working on the client & the frameworks available to them are disconnected from the efficiency of the queries they send, efficiency of the backend implementations and integrated cost of the entire system. We are working to bridge the gap between mobile engineers and backend execution of Facebook social graph queries, by building cross stack tooling integrated with development workflow. In the process, we are also building new features into GraphQL and frameworks on top of GraphQL that can adapt data fetching based on different system-wide events.
We look for expertise in building or understanding end-to-end systems, from mobile UI down to mobile infrastructure all the way to backend infrastructure. Experience rolling out new frameworks & APIs across large codebases will be very useful too.
Extensive knowledge of object-oriented software developmentMobile application development experienceC++ or Java
Knowledge of multi-threading and memory management specific to mobile devices and caching mechanismsExperience building complex applications for the iPhone or iPad using Objective-C / C++ with Cocoa and other frameworksExperience of building Android applications in Java using Android SDK