# Interview Guidelines This document proposes how to execute the interview AFTER the submission of a solution to the challenge. ## Structure - Begin by allowing the candidate to provide an overview of the solution he has implemented. This should be high level, not in full detail. 5min ideally, in no case longer than 10min. - From there, you can take the discussion wherever you feel like. I suggest three different tactics, which you can distribute across your slotted time however you see fit: - Discuss why he has done things the way he has. - Ask the candidate about how he would do things better/differently in production. - Propose changes or additional requirements and discuss with the candidate how we would modify his solution to deal with them. I'll drop a mix of such questions by skill topic below. Asking all of them in an interview is impossible time-wise, so just take it as inspiration, not a checklist. I personally never know what I'll ask exactly, since the most interesting things to ask always depend on what the candidate has built. ### About the requirements - Why... - Did you make the assumptions you made? (Basically, discuss on the assumptions the candidate did). - In production... - What additional information would you ask for? - How would you manage the relationship with the technical team in the customer company? What would you expect from them? - How would you document the delivery for the customers of your work? How could we provide access to the data to them? - Imagine... - That bookings can have their checkin and checkout dates changed. Would that affect your approach? What would need to change? ### About the database choice - Why... - Have you picked this specific database? - In production... - Would you pick the same database? Another one? Why? - Imagine... - We would need to use Postgres specifically for this challenge. Would there be any limitations/feature lackness? What would change in your solution? Would you use something Postgres has and your chosen database doesn't? ### On performance - In production... - At what data volume do you think your solution would stop working? Where would the bottleneck/issue sit on? What would you do? - How would your design change if the data delivered by the customer API was immutable or was not immutable? (Events vs Updateable booking entity) - Imagine... - We suddenly need extremely low latency in processing. As soon as a booking is filled in the customer systems, we need to adjust to it. Perhaps we must visibly show the "ongoing" bill to the customer company. How could we achieve this near real-time processing? ### On Testing & Quality - In production... - How would you test ingestion pipelines? What kinds of failures would you write tests for? - What unit vs integration tests would you prioritize? - Imagine... - You discovered after deployment that the customer API occasionally returns duplicate or inconsistent booking records. How would you test and protect against that? ### On extensibility - In production... - Would you feel comfortable with the extensibility of the current code or not? Why? - Imagine... - We have three more customers like House Group Holiday Rentals that we want to integrate. Agreement, business rules, data needs are the same. They all have similar data around bookings, but they have different structures and IT systems in place. What parts of our current solution are general to all of them, which are specific to House Group Holiday Rentals? What would we need to change to onboard the new customers? ### On monitoring - In production... - How would we monitor this whole thing? What would you look for? What tooling would you like to use? - How could we organize the team to deal with tackling whatever could go wrong? Actually... what are all the things that can go wrong here? - Imagine... - The customer systems are flaky and sometimes fail and have outages. What would you change in your solution? ### On security - In production... - Where would security risks be present? How would we secure things down appropiately? ### On infrastructure - In production... - What kind of infra would you set up to deploy this? - Imagine... - You are starting from Truvi's current infra and architecture (this would require you to discuss our architecture with the candidate so he's familiar with it). How would you go about building and deploying this in our current one?