In my experience in the industry, I have learnt that Software Engineer’s can be further classified into the following more targeted engineering groups:
1. Product Engineer
This is an engineer who might not be very smart with data structures / algorithms, but this person would be very smart in understanding of a product and can build features for it. And to be honest you really don’t need a person who is a hard core Data Structures & Algorithm junkie. What you need is someone who can translate your ideas into features and ship them, and clearly that doesn’t need Data Structures & Algorithm, except for the fact that your product itself would be some high grade computational algorithm. Example: Using cache doesn’t need any Data Structures & Algorithm knowledge.
This is a person who needs to be fundamentally very strong with respect to Data Structures & Algorithm. The kind of problems this person is going to solve will appear at a core or scaled level of products. Example: Optimising the cache to perform faster is a hard core computational problem. These people are really experts in their domain of knowledge. They know their domain inside out.
These are people who are graduating out of colleges in the near future. These people mostly will not have a clear understanding of the industry and neither would they have worked on products to be judged on that. In this scenario you can only evaluate them based on what they have done in college or based upon what they have studied.
So how to hire the right engineer?
First, you need to go back to your product and team and understand your requirement. Based upon that, frame the right set of skills set needed.
If you are looking for a specialist, get to the root of the requirement. Try to understand their approach towards the solution. Check if they ask you the right set of questions when needed. Check if they thought about the problem from a perspective that was out the given scope. These are the kind of insights that help you identify champions.