Late in the evening, I was clearing my emails on my home computer. My 7 year old son Shivam came to me and asked “Mama, what is cancer”. My face turned pale for a few seconds before I regained my attention and focus. Usually, any question posed by him including crazy absurd ones always have an immediate answer but this was a particularly difficult one for me. His life flashed before me including the long disease and treatment. I explained to him that our body was like a pure garden of grass and cancer was the unwanted weeds that sometimes overtook our garden. If weeds had their way, they would take over the body leaving no place for the grass and beautiful body to live in harmony.
If I was to explain this example to an adult about cancer, they would look at me as if I was crazy. Always remember that you should try to formulate your answers based on who you are speaking. I was rejected for a job position once as the interviewer thought I was not technical enough and another time when the interviewer thought that I was too technical for the position. Design questions posed by developers, testers, program managers or executives need different answers. Speak in terms of your listener to get the best of the conversation.
What is an abstract problem?
As I mentioned in my previous blog post, problems related to the approach of defining and designing a system can be considered as abstract problems. I love this diagram as it explains what happensto a product when the requirements are not clearly understood.
Approach to abstract problem
- First and most important part of approaching abstract problems is making sure you understand the problem clearly.
- Ask a lot of clarifying questions to the interviewer.
- Spell out your assumptions.
- Now you are ready to jump to the white board, paper or verbally start designing the solution.
- Think about the big picture of your solutions; put your imagination to work.
- Start defining the workflow, processes, input, output and constraints for it.
- If there are UI elements to your solution, start putting it together (first screen, next one, and different parts of the screen).
- Try to call out a couple of scenarios/test cases to make sure your solution will work for them.
- Ask for feedback from the interviewer on a regular basis.
- As you hear the feedback from the interviewer, modify and change the design as needed.
If you disagree with the interviewer on certain points, voice your points to the interviewer. Bigger companies value voicing your opinion rather than submissively agreeing to what your peers suggest, but do so in a respectful way.
Example 1: Design an airport
This was a question asked to me many years back before I was a program manager. I completely left the requirements and clarifications and jumped into designing an airport including detailed information about takeoff, planes, etc. About 10 minutes into designing, my interviewer tells me that this is a 100 sqft by 100 sqft area to design the airport. Duh..
- What is the size of the land for building the airport
- Does this area include the hangar (location to store aircraft), runway (for plane landing and taking-off), terminal building and control tower?
- What is your budget?
- Do we have an existing airport in this location?
- How many planes do you expect in a day?
- Is there a particular time of the day that the planes will be flying most?
- Are these planes commercial, delivery or military?
- How many people do you expect on a particular day?
- What type of enhanced security would you like to see at the airport?
- How many runways do you need?
- I am assuming this is a special airport that is run by your corporation instead of the government specifically for private planes.
- To you, the most important thing is security and comfort of the passengers.
- Space is a constraint as you do not have much real estate available.
- There is no limit to the money spent on this project.
- As this airport is specifically for private planes and space is a constraint, we can build the hangar and parking lot for customers underground to save space.
- Go on to describe how the terminal will look, the control tower and the runways.
- Since this is not for commercial planes, the runways will be smaller in size and we will have 2 of them to improve the experience of the users.
Example 2: Design a water heater in a hotel
- Understand from the interviewer the type of hotel, the number of rooms, size, budget, etc of the hotel.
- Spell out your assumptions.
- Be innovative about the design of the water heater. Do you want to have instant water heaters in each room, do you want to have a heating device in the water tubes, do you want to have a heat measurement device through which automatic heating will occur when the water falls below a temperature. What about if we have the room heater pipes and water pipes in close proximity? These are just some ideas on how you can think through the problems.
Again, remember that most design questions will not exceed 45-50 minutes, so spending 40 minutes on gathering requirements is not a smart idea. Spread your time out to cover the design and scenarios of your solution.
The key takeaways to approaching abstract design problems is:
- Think on your feet
- Have a positive attitude
- Speak your thought process
- Ask clarifying questions
What are your thoughts on approaching abstract design questions in an interview?