Thursday, April 13, 2017

Coding Interview: Coding fluency

"Interview is an artificial reality designed by companies to keep people out" - Manager Tools
Many companies won't offer helpful feedback on your interview performance. I think that feedback is a fair game, and the process should be transparent.

Coding fluency

Coding fluency is how quickly you translate your solution into code. Though I measure the time (with a stopwatch), coding fluency is not as important to me as other criteria [1]. Most good companies, however, have their bar set very high on coding fluency.

I saw weak candidates rapidly producing a lot of code, and very strong candidates who needed help getting going. In the end, a person who quickly wrote the initial implementation may spend a lot of time getting it right, and a candidate who took extra 10 minutes to think it through may come up with an elegant solution.
People are nervous during the interview. Many experience a blank page syndrome, or a writer's block when staring at that whiteboard. Candidates who deal with more than one language or discipline may feel rusty due to the context switching. I just recently experienced a block, panicked and then wrote messy code. I attribute it (or I hope so) to 6 months of doing web front-end development.

Nevertheless, companies like Google and Facebook have bunch of candidates knocking on their doors, and they can afford missing out good candidates in the effort to hire "the very best". You may need to heavily invest in the preparation for several months before you even do a phone screening with those companies.
So, while coding fluency correlates with the overall coding experience, I believe it has more to do with the preparation.
The only way to prepare for the coding interview is to practice solving algorithmic problems. Preferably, on a whiteboard or piece of paper. LeetCode is my most favorite destinations for algorithmic problems; it currently has 557 problems with test cases, and most of them are free.

Also, I think that these two behaviors are particularly important to be perceived as code-fluent:
  • Do not jump into the code until the solution is crystal clear in your head. Remember, the timer starts when you begin writing code. Developers often think with their hands, but it can do you harm during the interview. Especially if you use a whiteboard, where refactoring is very labor intensive.
  • "Trust and focus". Some logic could be tricky or difficult to get right, and it will only slow you down during the interview. Assume you get correct results from a function that you will implement later ("trust"), and get the overall algorithm right first ("focus"). In my experience, your interviewer will often be satisfied with this approach, and move on to a next task.

Also, this article has some helpful tips on this subject (see Get unstuck and Get your thoughts down sections).

External links

  1. Interviewing podcasts on Manager Tools
  2. Coding Interview Tips on Interview Cake


Such as problem solving, communication and computer science fundamentals.

11 comments:

  1. > 'Do not jump into the code until the solution is crystal clear in your head'.
    What if it is not crystal clear for a long time? Wouldn't it be better to at least try and fail, rather than finish the session with only diagrams and test cases on the board?

    On a different note, thank you for the insights, discovered your blog through your leetcode profile, would be a nice gift if you share your twitter handle so that us plebs can follow for more :)

    ReplyDelete
    Replies
    1. Thanks for your comment and insights. If you are interviewing for a top company, try and fail is losing too much opportunity 😊 If you are struggling to get an intuition, you can start easy and implement a naïve solution first. It’s also better to ask for a hint (and some interviewers consider it even a good signal) then keep digging yourself in.

      I put some more thoughts on this in this post: https://www.programmercoach.com/2019/02/interview-insider-power-of-brute-force.html

      With respect to the twitter handle, it’s (surprise!) @programmercoach. Not very active now; may grow it one day.

      Delete
  2. The article was up to the point and described the information very effectively. Thanks to blog author for wonderful and informative post.
    website development Pakistan

    ReplyDelete
  3. Thank you for sharing this amazing piece of content with us. https://naukry.net/nts-jobs/

    ReplyDelete
  4. This comment has been removed by the author.

    ReplyDelete
  5. Your post is really helpful to me thanks alot.

    ReplyDelete
  6. Thanks for updating about the new Updates

    I have share this to my Official Blog

    I really Appreciate your Content Because this is awesome content

    Thanks


    New Jobs in Pakistan

    ReplyDelete
  7. Thanks for updating about the new Updates

    I have share this to my Official Blog

    I really Appreciate your Content Because this is awesome content

    Thanks


    Government Jobs

    ReplyDelete