Affirm · job-boards.greenhouse.io · checked today
Senior Software Engineer, Backend (Consumer Data Platform)
<div class="content-intro"><p>At Affirm, we exist for the moments that matter—giving people a clear, predictable way to pay over time, with no hidden fees, no surprises, and no tradeoffs on what matters most.</p></div><p>The Growth Platform Engineering team builds the core systems and tools that drive user acquisition, engagement, and lifecycle growth at Affirm. Our platform enables personalized communications, intelligent experimentation, and scalable services that help customers discover and adopt Affirm’s products.</p> <p>We collaborate closely with Product, Data Science, and Experience tea
Skills, with evidence
- Python
Proficiency in Python, Kotlin, or similar languages (experience with both is a plus).
must have - AWS
Experience with AWS or other major cloud providers.
must have · not practised here - Data modelling
Design and build scalable backend systems, APIs, and data models that power communications, experimentation, and personalization.
must have - Failure handling
<p>You will support the operations and availability of your team’s artifacts by creating and monitoring metrics, escalating when needed, and supporting “keep the lights on” &
- Streaming
Familiarity with event-driven architectures and stream processing tools (e.g., Kafka, Kinesis).
- Cost & performance
<li>Health coverage at no cost: We cover 100% of premiums for employees and their dependents.</li>
Your plan
- Python: the data-wrangling round≈ 3 h
Python
- Diff two snapshots of a tableIntermediate
- Explode an array column into rowsIntermediate
- Flatten nested event payloadsIntermediate
- Pivot a long metrics table to wideIntermediate
- Choose what an incremental run should readIntermediate
- Data modelling: the round most people fail≈ 3 h
Data modelling
- Addresses that stay true to the pastIntermediate
- Seat holds and the release-night raceIntermediate
- Subscription warehouse grainIntermediate
- Campaign efficiencyIntermediate
- Catalogue: products, variants and sellersIntermediate
- Pipeline design: safe to run twice≈ 4 h
Failure handling · Streaming
- The source will not let youIntermediate
- Parcel tracking pipelineIntermediate
- Is this change safe?Intermediate
- Five minutes behind the sourceIntermediate
- Changing a pipeline that’s already runningIntermediate
- Spark: read the plan Spark actually ran≈ 2 h
Cost & performance
- applyInPandas per country: what Spark ships to Python, and the native rewriteAdvanced
- Filters you wrote in the wrong place: where Catalyst moves themAdvanced
- snappy, gzip or zstd: measure the Parquet codec trade-off yourselfAdvanced
- Find the four suspects in a slow pipeline (one of them is innocent)Advanced
- A filter after a window function: pushed down or not?Advanced
- Say it out loud≈ 1 h
Not covered by the plan: AWS.
Readiness
Counted from drills you have completed anywhere on D8LooP.
leaves in 5 dremoved the moment Affirm closes it
