Early in 2025, I applied for a Senior/Principal Software Engineer position at a hospitality-focused company. The role aligned well with my experience—7 years in software engineering with expertise in ReactJS, NextJS, NodeJS, Prisma, and Postgres.
The Interview Challenge
During the interview, the Engineering Manager presented me with an MVP for a multi-tenant e-commerce application, along with an API architecture diagram and an Entity Relationship (ER) diagram. My task? Plan and design a feature for offers/discounts based on a client request.
My Approach
1. Clarifying the Requirements
I started by asking key questions:
- Are the offers exclusive to this client?
- No. The feature should be scalable for future clients, but offers are exclusive to VIPs.
2. Designing the Database
Since VIP access and offers were the core elements, I decided to introduce two new tables:
- Offers (to store discount details)
- VIPs (to manage eligible customers)
3. Defining Frontend & Backend Tasks
To implement the feature, I outlined key development tasks:
- Frontend:
- Add VIP selection to the maintenance page
- Add an offers configuration section
- Display applicable offers on the customer-facing page
- Backend:
- Implement API functions for CRUD operations on offers
Follow-up Questions & My Responses
During the discussion, the Engineering Manager asked some thought-provoking follow-ups:
-
"How can we support different types of offers?"
- I went blank for a second, unsure of what they meant. They guided me to add a type column in the Offers table to support multiple offer types.
-
"How would you deploy this to production?"
- Assuming the pipeline was already set up, I explained that I would create a release and let the pipeline handle the rest—running tests, building, and deploying.
-
"How do you define success for this feature?"
- I initially answered, "If all the acceptance criteria in the ticket are met, then the feature is successful."
- I added that built-in analytics could provide insights—if the feature receives significant engagement (e.g., clicks or redemptions), it indicates real usage and value.
My Reflections
Looking back, I feel I did okay, but there were areas where I could have done better. I covered the software development lifecycle well, but I could have been more structured in handling unexpected questions.
The Outcome
I didn’t make it to the next step 🥹—but I took away valuable lessons from the experience.
What do you think of this interview? Have you ever had a similar experience?
Top comments (0)