Experience: Meta
Why did I write this?
- To have a record of my work at Facebook
- To have examples of behaviours / complex challanges ready and fresh in memory for interviews
- To allow my interviewers to get a deeper scan of my experience
[Project] Scroll away
TODO Most impactful one, can source this data from
[Project] Navigation Chain
Summary
Facebook navigation pattern is to browse some content feed, open content detail and return to feed. A typical navigation pattern would look like this: Newsfeed -> My friend Kolin's profile -> Some post on their timeline -> Back to profile -> Back to Newsfeed -> Open fullscreen video.
Typical analytics frameworks work in the following way:
- At each navigation record the newly visited screen, send it to the analytics backend, for example google analytics
- Instrument custom event, in our case video play with additional attributes. When looking at the video event itself, based on the timestamp in fur the current screen.
What I did
- Implemented Navigation Chain for Facebook iOS
- Participated in evaluating use cases and choosing implementation
- Prototyped and presented Spark pipeline offline solution, was not picked because of more complex client integration
- Reviewed all Android code for the mirroring implementation
- Helped Jarman Rogers integrate iOS state restoration for Facebook iOS
- Supported people having questions / experiencing issues with the framework
- 3 (per week) x 4 x 12 = 144
- Nature of the questions
- Data issues (Covered half)
- Inconsistencies with 2d channels aka custom attribution methods they had before
- API access (All Facebook iOS, half Android)
- Race conditions
- Caching
- Access from a custom use case - without a user session, custom UI framework
- Server (Half, split with Laura Zha)
- Enrichment issues
- Onboarding FAQ (1/3d Laura Zha, George Zhao)
- Planning
- Talked with teams to make sure our framework is the right fit for their use case, helped design the solution end to end
- Data issues (Covered half)
- Oncall support nature, rotated with the above mentioned collegues
- Helped initialize and maintain documentation
- Partially initiated the merge of Facebook and Instagram documentation
- Helped keep code in good condition
- Did server side code cleanup after merging codebase with instagram - 1000s of lines cleaned up
- Delegated most cleanup to bootcampers
- Suggested and added JestE2E tests for logging
- Did server side code cleanup after merging codebase with instagram - 1000s of lines cleaned up
- Participated in team planning and suggested multiple efforts that the team undertook
- Focusing on new framework clients - prioritizing adoption and solving real analytics issues teams were expereiencing
- Troubleshooting and fixing a Site Event that would have affected people posting pictures on Facebook from Groups
- Prevented a likely Site Event by discovering a bug in impression logging for Facebook search
Notable sub-projects
- Navigation Chain Context
- Evaluated different implementation paths
- Integrated with an existing framework saving tons of effort for all platforms
- Build partnership with that's framework team
- Supported users
- Evaluated different implementation paths
- Sub-navigation support
- Made it easier to add nav chain to GraphQL mutations by passing navigation chain through GraphQL http headers instead of body
- Migrating Watch (All video plays) to our attribution framework
- Suggested solution and helped fix image load attribution
- Added generic coverage from Facebook Lite
- Used a codemod - modified 100s of callsites efficiently
- Evaluated a potential transition to PFH (Product Feature Hierarchy) instead of our custom Enums for each screen.
- Did the dirty work of manually mapping and reading out to the team the stats. Route not taken
- Refactored navigation logging for the family of apps
- Modal navigation was treated differently by logging
- Fixed multiple bugs related to double logging - for example fake push
- With help of onboarding new employee simplified navigation analytics pipelines saving ~1000 lines of code
[Project] Siri Shortcuts
Feed Facebook usage to iOS for better Spotlight and Siri suggestions
- Found the project, assessed potential impact.
- Created detailed project plan in collaboration with previous owner of the project
- Also collaborated with internship program manager to get the plan approved
- Drove meeting and took notes during a meeting with Apple discussing app intent integration for Facebook
- Volunteered the intern to present current integration and our plans
- Asked questions to determine how we can maximize Facebook rich ability using unreleased iOS 16 app intents, complied with apple guidelines
- Took notes during the meeting, condensed into company wide recommendation for using new app intents API. We have Learned a lot about the internals of Siri and spotlight will work past iOS 16
- Suggested adjustment to the interne project, adjusted based on internship project manager feedback, communicated with intern
- Filed and drove to completion reviews: #skills/collaboration
- Internal Privacy Review - includes describing what data is being shared with Apple
- Apple Store new feature review - involve creating a custom account with feature enabled, providing instructions for testing, collaborating with release team, interacting with apple reviewers
- Helped intern to onboard
- To Facebook systems by making myself available to answer any questions, especially the beginning of the internship. By pair programming
- Set up introductions with 2 peers
- Buck, modified build system to extract .appintents #skills/build-system
- Identified unlisted anywhere binary within XCode, played around with it to find what flags matter, documented it.
- Asked for help numerous times in internal dev community, kept updating posts with progress
- Looked for native buck rules implementations, assessed how difficult it would be to re-implement something like that. Example apple assets rule
- Created a simpler rule - that just run a bash command. Got it to work
- Collaborated with the intern on how they can unblock themselves by factoring out the work into multiple pieces
- Evaluated intern
- Put together performance review based on our axises
- Presented my intern's performance to the engineering director
[Project] Deep Links
Roughly I have analyized the domain by quering existing logging datasets related to deeplinks and reading the codebase. After planning out the project ofboarded part of the implementation to a colleague. Reviewed their code.
The goal was to modernise the deep links and present them in a sheet for a more modern iOS look. This would also allow the
Random
- Participated in 2 hackathons
- Improved filtering UI for an internal data query tool (Scuba)
- Social Audio Map - public audio guides to physical locations by Facebook users
- Actively provided feedback (bug reports, feature requests and focus groups) for VSCode @ Meta, especially for iOS development