Add Future-Dated Effective Changes to an Employee Records App
Company: Rippling
Role: Software Engineer
Category: Software Engineering Fundamentals
Difficulty: medium
Interview Round: Onsite
In an AI-assisted coding round you work on an existing small HR application that manages employee information, with a frontend, a backend and a database. HR users can edit an employee's details, such as the salary, and in the current version every edit takes effect immediately.
Extend the application so that a change can be scheduled for the future. An HR user enters, for example, salary = 20 together with an effective date, and the new salary applies only from that date; until then the employee keeps the current salary. You may use the AI coding assistant provided in the round to write code, but the design is yours, and the interviewer will keep probing how the effective date is handled.
### Clarifying Questions
- Which fields can be future-dated: only the salary, or any employee field?
- Can several changes to the same field be pending at once, and can a pending change be edited or cancelled?
- Is an effective date in the past allowed, as a backdated correction, and should it then apply immediately?
- In which time zone does an effective date begin: the company's, the employee's or the server's?
- Does anything else need to react when a change takes effect, such as notifications or other systems that read employee data?
### Part 1 — Store and expose scheduled changes
Design and implement the database, backend and frontend changes needed to create, view and cancel future-dated changes.
```hint What must be remembered
Ask what the database has to record once a change has been scheduled but has not yet taken effect, and what it should still record after the change applies.
```
#### What This Part Should Cover
- A data model for current, scheduled and past values, and the migration from the existing one
- API endpoints and validation, including past dates and several pending changes
- Frontend changes: entering an effective date, and showing pending changes without presenting them as current
### Part 2 — Decide when a change takes effect
Compare resolving the current value at read time with applying the change to the stored value when its date arrives, choose one, and implement it.
```hint If nothing runs on the date
For each option, think about what users see if no process runs on the effective date, and what a page listing many employees has to query.
```
#### What This Part Should Cover
- How each option determines the value in effect, including date boundaries and same-day ties
- The failure modes of each option and how they are handled
- Read cost, changes to existing code, and tests that control the clock
### What a Strong Answer Covers
- A single, explicit rule for which value is in effect on any date
- A reasoned choice between resolving on read and resolving on write, not just a list of both
- End-to-end changes across database, backend and frontend that keep immediate edits working
- An audit trail of who scheduled, changed or cancelled what
- Review and tests of the code the AI assistant writes, especially migrations, time zones and date comparisons
### Follow-up Questions
- HR wants to see an employee's record as of any past or future date. What changes in your design?
- A scheduled salary change had the wrong amount and is discovered after it took effect. How is it corrected without losing history?
- Two HR users schedule different salary changes for the same employee and the same date. What should happen?
- An auditor asks what the system showed as an employee's salary on a past date, before a later backdated correction. How would you answer that?
Overview: An AI-assisted full-stack coding task: extend an HR employee-records app so that edits such as a salary change can be scheduled with a future effective date across the database, backend and frontend. It probes the data model and the trade-off between resolving the effective value on read and applying the change on write.
Read the full Rippling Software Engineer interview experience this question came from