Coding Interview Practice
Getting a software engineering job almost always requires coding interviews. It is done in various settings.
- Hand-written code: some on-site interview involves writing code on a whiteboard. It is drastically different when the modality change. Hopefully, CS major students have some experiences of writing code on a piece of paper from introductory programming class. However, typically this is very different from general coding practice.
- Think-aloud: Often interviewees are asked (or strongly recommended) to express their dynamic process by verbalizing what they think while coding. This helps interviewer if the interviewers can solve the problem in a logical manner.
- Blind coding: In general, during coding interview, interviewees cannot run the code and see if their code is right. Sometimes, the interviewer simply gives simple binary feedback: whether that is correct or not, which is also difficult because the interviewee needs to declare that the program is done. Therefore coding interview is very different from typical programming practice where we frequently run the program to check the program state.
Therefore, a coding interview requires separate kinds of training from just hands-on programming. I believe there are interesting research questions involved in this process.
Q1) What do interviewers look for form interviewees? : If two people can solve a problem in same time in two different ways: for example, one being silent and the other being verbose, or one being caring less about detailed syntax and the other being precise on coding style. What are the things that the practitioners want to learn from the coding interview process?
Q2) Does doing well in coding interview help programmers in any other way than getting a job? Let’s say one gets to do a very good job in a coding interview by practicing it a lot, does that help someone being a good programmer? Is this a good evaluation method in general?
Q3) If we understand better about coding interviews from answering the question 1 and 2. What is the system that can help students to practice coding interviews? Not a text editor. How can we design a system that is targeted to practice coding interviews (or to enhance programming skills in general concerning answers from Q2)? Is it going to be like a programming quiz website like https://www.interviewbit.com/? How can we create a system that well reflects the actual interview? I believe it should have different functions from a plain editor such as voice narration, replaying code/voice, limitation in code execution, and limited feedback on correctness. I can imagine an online social website that is open to the public where they can write code and share their replay with other people.
Q4) what are the ways to utilize such an interactive system for employers (interviewers)? Can we create a system that an interviewee can simply open and solve a programming task, share with the employer so that the interviewers do not need to be present during the interview? Can an intelligent algorithm grade the replay beyond running test cases, whether their thought process is correct and reasonable? If they do not watch the replay in real-time what is the good way to summarize the performance of a programmer?