9

I am in the process of hiring my first full time data scientist in an academic setting. The position is entry level, and I expect to personally provide mentorship for the skills specific to my field that they will need to succeed. My organization is large, and they will also have support from other groups.

However, I worry that if the applicant I decide on does not have the requisite foundational knowledge that I will spend too much time helping them learn these skills. For example, I would expect the applicant to know basic joins in SQL, how to write a basic program in language X, and how to use Git. These expectations are clearly delineated in the job description, and the candidates I have all claim experience with these skills.

Tentatively, I am planning to implement a short (approximately 30 minute) assessment exercise that will completed during an in-person interview. I will encourage applicants to use online resources (such as Stack Overflow) and also encourage them to ask me any questions. I will warn them in advance that they will be asked to complete the exercise. However, I have read a number of experiences on this site as well as this Q&A that indicates these types of tasks are sometimes not well received. I worry that this type of assessment could be stressful and off-putting for applicants.

I have nearly complete control over the interview process.

How can I ensure applicants for an entry-level position have the requisite foundational technical skills while not scaring them off?

I am also open to a frame challenge. Perhaps I am approaching the problem incorrectly and the more important quality is attitude and ability to absorb new skills.

10
  • 2
    Personally, I never agree to coding assessments - to the point that I stop any interview process as soon as they're mentioned. I would lean more toward the fizzbuzz-type assessment that is pretty basic and at least gives you some indicator of their programming aptitude without requiring coding knowledge.
    – user83977
    Commented Aug 3, 2022 at 15:13
  • 2
    The obvious answer to you question is that if you want someone who knows how to do a join in SQL, ask them in the interview how they do a join in SQL. If you want to know that they can program in language X, ask them to write a short program in language X in the interview. Is that the answer you were looking for, or is there something else? Commented Aug 3, 2022 at 15:22
  • 8
    @Ian: If asking someone whether they have a particular skill during a job interview scares them away; were they really a suitable applicant to begin with?
    – Flater
    Commented Aug 3, 2022 at 15:57
  • 2
    @Ian: There's a very different reception between coding challenges and a simple interview with a few probing questions to gauge general aptitude. You're not expected to essentially hire people based on their own claims on blind faith.
    – Flater
    Commented Aug 3, 2022 at 16:00
  • 3
    @Ian, the problem in my view with "coding challenges" is that they don't really represent the real world. Most coders are not employed to perform half-hour tasks on well-defined problems, but (at the very least) multi-week projects on often ill-defined problems, and I'm not convinced the skills for the latter are really stretched by the former. It could be the opposite even - someone who can do basic things quickly may in fact blunderbuss into anything of real importance, whereas the one who has barely got started in half an hour will be the only one with anything to show at the end.
    – Steve
    Commented Aug 4, 2022 at 6:46

6 Answers 6

15

This is a fairly standard concern, and there are a number of ways of tackling it.

Obviously the first thing you do is filter resumes, removing anyone who doesn't list the skills you want. I usually prefer people who have actually used those skills in a project, but that may be harder if the skill is incidental to their main job.

Then there are number of ways of assessing technical competence. In increasing order of effort:

  1. Technical Questions. Ask in the interview questions about the language/system that you expect people with the required competence to know. In your case SQL I would simply give them a problem - i.e. define some tables, and ask them to write SQL to retrieve certain records such that they need to use a JOIN. This should be doable on a whiteboard in five minutes or so. Don't worry about syntax errors that would be picked up by a good IDE. I use this approach to check language knowledge, and I've never had anyone who answered satisfactorily and didn't end up being competent.
  2. Short Coding Exercise If you really need to check language skills, then have the candidate write a short piece of code in the appropriate language. You can do this interactively on a whiteboard, giving them the problem, or you can leave them to do the exercise on a screen. Google uses the first approach. Using a screen can mean problems if the candidates isn't familiar with the development environment. I failed one once because it took me a significant amount of time to get the environment working. This can be longer than the example above, and longer than fizzbuzz, but keep it down to 30 minutes or so.
  3. Online coding exercise. Platforms exist where you can set candidates coding tasks for them to do in their own time, but time limited and taking an hour or two. These are really for positions where coding is the main activity, not data scientists, and even then some people dislike taking them. If your company doesn't have a system like this it will not be worth setting one up.
  4. Take home coding exercise. Here you get given a problem to code on your own time over a few days. These get a really bad reputation and many candidates will decline them - especially the good ones. If you are a candidate with multiple promising applications progressing you won't waste time with the ones who want a lot of work from you. It's a different matter if your company is extremely desirable of course. This is definitely not the right approach for a position where coding is not the main activity.

For your position I expect that the first option, and possibly the second, are appropriate.

Do remember that a candidate who has used SQL, but not for a number of years, may struggle to write SQL in an interview if they are not warned in advance that they will need to. However a person like that will probably come back up to speed very quickly, so don't necessarily fail them.

Also tailor your interview to the job duties. If the employee will be doing 90% data science and 10% coding, don't make more than 10% of the interview etc. about coding.

8
  • 3
    In addition to 1, a question we've used that I found enlightening: "Tell us something you don't like about SQL/git/language X". It requires familiarity with a language to be able to answer that question. Commented Aug 3, 2022 at 16:03
  • 1
    @thursdaysgeek Reasonable, but they may have read online that X has this bad feature. If they are junior they may not have any languages to compare it to. Probably better for more senior people. Commented Aug 3, 2022 at 16:05
  • @thursdaysgeek That is an interesting question I wouldn't have thought of. I may consider asking it although DJClaworth's concern is valid. Might make an interesting answer. Commented Aug 3, 2022 at 16:06
  • 1
    We have found >50% applicant drop-off with take-home assessments. Coding tests are the wrong way to go if you're not Google or Facebook, and they might be discriminatory besides. Nothing wrong with asking shortish technical questions, but they should not be the bulk of the interview. You want to find people who will be engaged and who know how to learn. A few questions I've found useful, "What do you think about [new trend] in our industry? What are some of the things you're using that we're not using?" I personally find those types of questions give me a better sense of things overall.
    – Raydot
    Commented Aug 4, 2022 at 0:23
  • 1
    @Raydot - what do you mean by "and they might be discriminatory besides"? Isn't the entire point of the interview and any linked assessments to discriminate between candidates in order to select the one best suited to the position?
    – brhans
    Commented Aug 4, 2022 at 13:53
10

I'm going to flip this on its head.

You're bringing a data scientist on board. Their role should be more geared towards the data science portions of their role and less towards the fiddly technical bits of their role.

Not all data scientists know all tools. One could reasonably expect a data scientist to know a thing or two about R, Pandas or NumPy (not necessarily Python since you can always write Juypter notebooks which are Python-like anyway), but the movement of data and storing it into a database and the like is a bit of a reach.

In doing interview assessments, it's important to keep this in mind.

Why am I bringing this person on board? What do I value from their participation?

You could scare off a data scientist with 20 years of experience in the field because you're asking them to do something that they have never needed to do, versus getting someone with less than 2 years of experience in who has bigger aspirations of being a generic programmer because they know all these things.


Ultimately though I agree with DJClayworth's assessment. You do need to put together some kind of assessment packet that satisfies the questions you want answered. But I stress this: ask questions that value the actual position, not just your preferred nice-to-haves.

You can always teach someone how to use Git or how to craft SQL if you had to, and you should realistically budget some time in your onboarding process to do that, if nothing else but to at least get them familiar with your schema and Git repo layout.

If you spend too much time, well you need to quantify what that is. If an applicant isn't able to do what you're asking of them after about 3 months, then that's reason to terminate and re-start the search. But you should go into this process with the expectation that you'll be asked questions about these kinds of things for a period of time.

6

Perhaps I am approaching the problem incorrectly and the more important quality is attitude and ability to absorb new skills.

This would be my inclination. I would perhaps broaden it to some other factors, but I'd keep it at this higher level, rather than focussing too much on specific technical competencies like "can write a join in SQL".

Unless you have a very specific need for somebody who's ready to hit the ground running on an urgent SQL-joining project, looking at a specific narrow competency like this may not be a great indicator of overall capability. As noted in Makoto's answer, there are a great many data science languages/tools out there; just because somebody hasn't worked with SQL yet doesn't mean they're incapable of picking it up, and just because they've spent the last ten years working on a SQL project doesn't mean they're going to be great at anything else.

An approach that I've found effective for data science interviewing is to present candidates with an open-ended, language-agnostic scenario and get them to talk about how they would approach it, leaving it broad enough that any DS candidate ought to have some relevant ideas, while making it just specific enough that it's unlikely to be completely covered by a generic answer. For instance, here's a question that we used last time I was doing DS recruitment. (NB this was not an entry-level position, so we were a bit more demanding than you would want to be, but the general approach should translate.)

Computing: The purpose of this question is to test your knowledge of computing techniques that may be relevant for data science work. We're not assuming any specific programming language but you're welcome to discuss how different languages might affect this scenario.

Several years ago, [our org] implemented a new mathematical method for producing key economic estimates that runs on internally developed software. Recently, the amount of input data available for these estimates has greatly increased, and the run-time has become unacceptably long. You have been asked to find ways to speed up the software. You can rewrite the software as needed or transfer it to a different environment, but you can't change the underlying method - the results produced must be 100% consistent with the old version.

What options would you explore to improve the run-time of the software?

There are many different ways this could be answered, depending on the candidate's background, and I wouldn't expect any one candidate to cover all the options. But "how make computer go faster?" is a perennial data science problem and any good candidate ought to have something to say here.

Once they've made some suggestions, we can then dig further in those areas to explore their competency further. For instance, if a candidate mentions changing language, I might ask them to explain why they expect Language X to be more efficient than Language Y, or about what the risks are in changing languages and how they could be mitigated. Effectively, we're starting by identifying where their existing experience lies, and then exploring how they can show competence within that experience, rather than testing on one or two specific points of knowledge.

The "must be 100% consistent with the old version" requirement is here because we don't just want candidates who know a bunch of different methods; we want candidates who can think critically about which of those methods is appropriate for the problem at hand. For instance, we had some candidates who suggested changing the estimation method; this might have solved the speed problem, but it didn't fit the problem requirements.

In addition to this question, we also had one that was a bit more on the data science side - here is a situation with an information need, these are the sources that are available, talk us through how you would approach this. I don't have a copy of the question text handy, but it was the same kind of strategy: pick something broad enough that any good candidate will have something to say about it, then based on their initial answers dig further.

1

Specifically when you check if someone can use git: It takes quite a while to setup git, or to get used to the way it has been set up. Likely more than 30 minutes. Once that is done, tasks are a lot easier. So a 30 minute test doesn't work very well.

What would work a lot better is to ask them what you can do with git, about the principles, everything to do the basic work. Being forced to talk about it makes it hard to make up non-existing knowledge on the spot.

1
  • This is an excellent point. I was thinking about trying to work git into the assessment, but scrapped it because of those issues. I think your approach is better for this aspect. Commented Aug 4, 2022 at 15:13
0

Entry level could mean BSc or MSc in Data Science or something else, perhaps a graduate Journalist with major in history, becoming a scrum master then an expert in programming over time.

Match your expectations to the goal, long term or short term? SQL major or minor?

Computer Science skills are primary to the job but so may be Business Analytics and university marks ought to have been attached or requested ought to be a graduate of Data Science. If your company goals are soft on marketing analytics vs software development, overlook SQL but look for majors in other software languages that show aptitude. Mastering one or diversity in many both counts as "points".

Is SQL just a routine "scraper" for other apps to manipulate? Can those tasks be automated?

To this end, grade each of your requirements with a weighting value * experience then add up the scores. Choose at least 6 (see below.)

Like bidding cards in Bridge, are you willing to pay for a strong hand or just looking for sufficient majors worth more points?

Analytical skills. Computer and information research scientists must be organized in their thinking to evaluate the results of their research.

Communication skills. Computer and information research scientists must be able to clearly explain their research, including to a non-technical audience. They write papers for publication and present their research at conferences.

Detail-oriented. Small programming errors could affect an entire project. How do they design self-checks/tests? afterthought or during design.

Interpersonal skills.

Logical thinking. Ask what are their favorite algorithms and why.

Math skills critical to computing. Ask about neural networks, non-linear algebra, Fourier Spectrum

Problem-solving skills. Ask about their most innovative solution

The mathematical product sum of each requirement ought to select your best candidate, unless you want to change importance factors or add personality types like Meyers-Briggs or self-motivated introverts or task-following extroverts.*

-1

DJClayworth has great ideas. The other idea that comes to mind is to have them do a technical interpretation of a sample of your project.

For example, provide them a snippet of code (basic table structure and query) and ask them what it does. This will ensure that they either know what it does and have the requisite knowledge or can figure it out and will be able to gain the required knowledge (many frameworks, databases, etc have similar syntax that provides them enough info to get started).

5
  • Remember: OP is hiring a junior data engineer, not a developer.
    – Makoto
    Commented Aug 4, 2022 at 17:27
  • @Makoto I believe everything I stated would apply. Different frameworks/languages, same concept.
    – depperm
    Commented Aug 4, 2022 at 18:04
  • It's still a junior position. You're basically advocating for an interview style that punishes the junior applicant for not having 2 years of experience already.
    – Makoto
    Commented Aug 4, 2022 at 18:13
  • @Makoto no it ensures they have the requisite knowledge or can guess. My first tech job in college had this style of interview. They had technical questions about a technology I had no experience in, but from schooling I was able to show I knew enough to get the job. It also helped me know the type of work I'd be doing. I still remember it as one of the most effective interviews
    – depperm
    Commented Aug 5, 2022 at 10:26
  • ...yeah, but you were going into a tech job. As in, you could be reasonably expected to be exposed to or subject to questions about technologies you learned about in school or had anecdotal exposure to. I cannot say with any confidence that this same approach applies for a data scientist, since they could have been exposed to those technologies, but it's not germane to what their actual day-to-day is. I've actually been bedeviled by this on a (now defunct) project which required a dev team work closely with data engineers so each could focus on what they were good at.
    – Makoto
    Commented Aug 5, 2022 at 15:48

You must log in to answer this question.

Not the answer you're looking for? Browse other questions tagged .