Every company conducts interviews for entry level engineers differently. Some companies ask about specific technologies and skill sets, while others are less technical, focusing solely on the correct culture fit. At C.H. Robinson, we’ve found value in evaluating both technical skills and personality fit for our vibrant culture. On the technical side, we expect our entry-level engineers to demonstrate mastery in core Computer Science fundamentals. We believe these fundamentals are the difference makers - the often undervalued knowledge and skills that give C.H. Robinson a competitive advantage. Subsequently, rather than testing our candidates’ skills in specific coding languages or technologies, our process allows us to explore the limits of their abilities in three general categories: Fundamentals, Problem Solving, and Technical Design.
When we say fundamentals, we’re talking about concepts that are core to Computer Science. We’re looking to learn how well our candidates understand familiar school subjects, like data structures and algorithms. We start with a simple question that every software engineer should know, such as, “What is a stack?” From there we progress into more complex concepts and questions, giving us an idea of how well the candidates are able to apply what they’ve learned in school to various challenges.
In the problem-solving component of our interview, we evaluate our candidates’ abilities to apply their knowledge of a familiar concept to similar, but unfamiliar problems. Once again, we first explore their understanding of a core Computer Science concept by allowing them to solve a simple problem. We then ask the candidates to solve increasingly difficult, but related problems. The final challenge in this section allows candidates to produce “pseudo-code” that applies an algorithm produced in an earlier step to inputs of a given type to output an answer.
The design section allows us to evaluate our candidates’ thought processes as they relate to system design. We expose them to a real-world business problem, with minimal requirements, and ask them to create a technical system to solve it. This requires candidates to sketch out a high-level design that accounts for multiple variables. This portion of the interview gives us more insight into how they think about, and might solve for, the non-functional aspects of design, like security, availability, scalability, etc.
Throughout the entire process we encourage candidates to think aloud and ask questions as they progress through each question in each of the 3 major topics. We also ask them questions throughout each stage to learn more about the “whys” behind their assertions, and even to help them toward a solution if they seem stuck. This back-and-forth allows us to gain a more thorough understanding of their potential based on the limits of their knowledge. Perhaps equally as important as their technical skills or fundamental CS knowledge, the conversation helps us to evaluate another core component to success in almost any profession - communication.
When it comes to interviewing entry level engineers, there isn’t a universal recipe that guarantees success for all companies. In fact, our own process at C.H. Robinson has evolved over time to accommodate both the needs of our business and the ever-changing technology landscape. Our current process allows us to get a solid look at candidates’ fundamental knowledge, as well as how their thought processes and potential would impact their performance while working in our environment. Our model of iterative improvement and focus on general technical skills instead of specific technical stacks allows us to identify and hire the best and brightest out there.