tags:

views:

166

answers:

3

Dear All,

We have some new fresh .net developers, and we will give them an ASP.NET task that should take about 2 weeks, after which we'll evaluate them individually, and choose to keep some of them.

Can anybody suggest some basic points to take into consideration for this evaluation? If you have any references, that would also be welcome. We want to do this in a very professional way.

+2  A: 

First, you'll have to decide exactly what you're trying to evaluate, and customize both your task and your grading criteria accordingly. Some ideas:

  • Code quality/cleanliness. Does the user comment their code thoroughly, and in a meaningful way? Are their variable names easy to understand? Is their layout formatted well and easy to follow?
  • Knowledge base. Does the person use a select set of methods well, or do they show experience in different areas of .NET programming by how they're using the database, cleaning up their connections, etc.
  • Critical thinking skills. Can the user think about possible solutions, even when there's something that prevents the most obvious answer? How unique is the solution they've come up with - is it a standard, closed-end solution, or have the built it with an eye towards later additions or modifications (even if they're not specifically tasked with this, it can indicate that it's always part of their thinking).
  • Teamwork. Can you give the person a task where they'll need to interact with others, or are you looking for just an example of their "on their own" skill level?
  • Business context. Do they ask questions about what it's going to be used for, and attempt to proceed in the context of the end user's need?
  • Resemblance to other solutions on the internet. Though I'd expect them to come up with a solution on their own, does a search for segments of their code on Google return exact matches? Do you consider this a plus (they didn't waste time re-inventing the wheel) or a minus (they've copied large sections verbatim, and can't write code themselves).

While a few are obvious good/bad points, the others are up to you - do you want somebody who thinks about what the customer needs and reacts accordingly, or do you want somebody who sticks to a spec? Will the person work alone or collaborate?

If you can give some more indication of what qualifications you're looking for, or what points you might consider a plus, then I can customize my answer to help you pick some criteria that match what you're after.

rwmnau
A: 

In addition to what has already been said, you should mesure their code maintainability. This would be akin to a peer review of the code.

Some new developper consider themselves very "clever" about their 5 layers of nested inheritance, they do it very well, clean code with some documentation. But no one wants to debug and update that stuff.

Eric
+4  A: 

Measuring things like code quality can be difficult. It's subjective and can be a function of time.

I'd argue that ASP.NET-based applications make this problem worse, as not only is the core language changing dramatically every few years, but new technologies (WPF/Silverlight/XAML, WCF, ASP.NET MVC) that influence your application are coming out all the time.

If you look for best practices on one particular point, that might cause you to toss out a really ideal candidate. I'd worry less about "What do I look for in the code?" and more about "What do I look for in the candidate?"

Here's what I'd hope for:

  • Are they interested in learning? This is an incredibly important point. If you're providing them with feedback, are they listening? Are they proactively seeking better ways to do things? If the next big technology comes out, can I count on them to ramp up on the API on their own?

  • Do they have a passion for software development? Are they excited about development? Is this their core competency, or are they more excited about a pay check? Are they doing something in their spare time to keep their skills sharp?

  • Do they work well without supervision? Will they let themselves get blocked by minor details and miss deliverables, or will they proactively seek to get back on track? If they are given a task, can I count on them to get it done without micromanagement?

If I were looking at the code, my priorities would be:

  • Is the code they write functionally correct? Does their output actually work and meet all business requirements? Does it do so in a stable way, or does it crash?

  • Is their code easy to read and maintain? Does the application adapt to changing business requirements well, or are changes impossible without intimate knowledge of the code?

  • Are they making an effective use of readily-available data structures, or are they reinventing the wheel? If they are reinventing the wheel, do they take my feedback to heart in future deliverables, do they reject my feedback with a well-reasoned argument, or do they continue along the same path?

Gabriel Isenberg