Yesterday was interview day! We're looking for a junior developer, 1 or 2 years out of school, with a bit of experience / exposure to Microsoft Technologies. We use .NET, C# and SQL and I expect to have to train them some, (I'm not expecting a Chris Sells or Rory Byth to come walking through my door looking for a Jr. Developers job). A brief synopsis of my 3 candidates yesterday - all of them are CS graduates, and all have the required 1-2 years experience, and each one has spent the last year working in .NET (either VB or C#) and claims to be reasonably proficient in SQL.
Excerpts from the SQL Interview
Question : What's a clustered index?
Candidate 1 : A class what? Can you say that again?
Candidate 2 : Um….
Candidate 3 : Is that in SQL or in .NET?
Question : What's an index?
Candidate 1 : You put an index on a column like 'Customer Name' when you want to do a search on Customers. It makes the query run faster.
Me : Can you have more then 1 index on a table
C1 : I don’t think so but I'm not sure.
Candidate 2 : Um….
Candidate 3 : I don’t know, is that like a primary key?, that’s something you have to have on every table, but I haven't heard of indexes really.
Me : Didn’t you say you did a semester on Relational Databases in college?
C2 : Yes, but I'm pretty sure they didn’t cover indexes.
Question : Well you've been working with SQL Server for the past year, what did you do when queries performed badly?
Candidate 1 : Well we had one query which was slow, so we ran a batch job at night which aggregated the data and then ran the query on the aggregated data.
Candidate 2 : Our queries were fine, we never had a problem.
Candidate 3 : We had one query which was very inefficient, it was a directory list of all the employees. So we made Employee Name the Primary Key for our Employee Master instead of Employee Number.
A question on GROUP BY somehow got converted into an ORDER BY - I guess they both have 'BY' so that’s close enough. All three of them used embedded SQL in their code, and not stored procedures, on asking why, one said stored procedures were much harder to write, the other said he had a unrealistic deadline for the project and didn’t have the time to learn stored procedures and the third said his boss / mentor didn’t like them. There really was no point going any further with SQL, none of them knew what an index was.
Ok, I thought, so SQL wasn’t going well so, lets try programming languages. All of them had studied C++ and Java in college. Two worked on C# apps for the past year and one on a VB.Net app.
Question : What is the difference between a public, protected and private member in C#
Candidate 1 : A public member is accessible to everyone, a private within the class it belongs - I never used a protected one so I don’t know.
Candidate 2 : Um….
Candidate 3 : He knew it (thank god - I was ready to start crying)
Question : What's option explicit?
The VB candidate : You know I've seen it used in the application on which I was working and always wondered what it did. Can you tell me?
Question : So you've worked with both C# and C++, can you tell me some of the differences and if you like one over the other?
C# candidate 1 : I like C# more, its easier
Me : Why?
C1 : C++ does a lot of strange things, which C# doesn’t allow
Me : Could you elaborate?
C1 : Um - I read that some where
C# Candidate 2 : In C# I can drag and drop controls, in C++ I cant.
OK - no luck here either, So lets see what they know about ASP.NET or just ASP or just anything at all.
Question : So you've worked with ASP and ASP.NET, what are the differences, what you like or dislike about ASP.NET
Candidate 1 : Well its nice to separate the UI from the business logic so I like ASP.NET.
Me :(thinking - this is a reasonable answer - I don’t want to ask a follow-up question because he might blow it and I'd be very depressed)
Candidate 2 : Um…..
Candidate 3 : ASP.NET is nice, you can drag and drop everything, but its too big, it has too many libraries and no one can know all of them. I wish they had made it smaller.
Well it went on and on - by the end of the day I had a splitting headache and was truly depressed. Today, having had a day to reflect, I am angry as well.
What are universities teaching these days. I would have thought public, private, protected would be something covered in the first semester, probably first lecture of a c++ course. Even a databases 101 class should make at minimum a reference to indexes and what they are. Who are these people teaching and why are we allowing them to teach?
More disturbing, is these kids learnt nothing at their jobs either. They hadn't heard of Source Control, didn’t understand what I meant when asked about their CM processes, and the only testing they had heard of was unit testing - the application moved directly from their desktop into a production environment. Who are these people in charge of Software development and why are they in charge?