Take the 2-minute tour ×
Programmers Stack Exchange is a question and answer site for professional programmers interested in conceptual questions about software development. It's 100% free, no registration required.

As part of our application process we want prospective college interns to complete an assignment on their own - either programming or analytical - to give us something tangible to evaluate such as code or a flowchart. I have two ideas for these assignments, one programming and one analytical, I am interested in gathering feedback about these.

Programming Assignment

Generate an a month's calendar for a given date. The first row should indicate the days of the week (e.g. Sunday - Saturday). Each subsequent row should contain a week's days. The date supplied should be highlighted (e.g. bolded).

I am thinking we'll probably proscribe the output format even more strictly - probably down to what the HTML source should look like including CSS classes. Thinking is this forces answerers to actually do some work if they merely copy a solution from the internet.

Analytical Assignment

Diagram or describe in prose a system for managing a set of traffic lights for traffic at a four way intersection. Each direction (i.e. North, South, East and West) has two lanes (i.e. right and left). The left lane is turn only and has green arrow light to indicate right of way. The system is able to detect if lanes have cars in them and change the lights accordingly.

I would expect a flow chart or some prose describing a finite state machine that deals with each contingency. This would hopefully provide some indication of the applicant's ability to reason through a logic problem of sorts and articulate an approach for solving.

Areas Seeking Feedback

  1. Is it unreasonable to ask this of applicants? If not, is it better to request before or after a phone screen?
  2. Are these questions too hard or easy for a collegiate audience?
  3. Any suggestions for alternate questions?
  4. Do these seem like good tools for analyzing people who would part of a software development life cycle?
  5. Programming language suggestions - I'm thinking Java, Python and/or C# (we're actually a ColdFusion shop).
share|improve this question

migrated from stackoverflow.com Feb 24 '11 at 13:23

This question came from our site for professional and enthusiast programmers.

    
This question asks for ideas and opinions, not for verifiable concrete answers. It is thus much better fitting for Programmers.SE. Voting to migrate. –  Lasse V. Karlsen Feb 24 '11 at 13:16
    
Are the interns actually required to develop HTML/CSS? If not, you should ask them to program in technologies you would actually use. (Though picking up languages does not take more than a week if you know several already.) –  apoorv020 Feb 24 '11 at 13:40
    
@apoorv020: my feeling on this is that if you can program and think logically, thus the assignments, you'll be able to learn HTML/CSS and whatever programming language is necessary to succeed. –  orangepips Feb 24 '11 at 14:29
    
Yeah but learning html and css will take more time than people may want to put in for an internship application. The applicants probably have applied to other companies and would have their regular study stuff as well. They may also get the idea that you want them to work on a web-based project. Even if the first point does not matter, the second may matter(It does to me). –  apoorv020 Feb 24 '11 at 16:36
    
We'll literally give what the HTML source looks like. Don't care about how it appears in the browser. So there's no learning HTML or CSS involved. Instead it's just string manipulation. Really just to prove you can figure out when to output the right pieces relative to the proscribed output given. –  orangepips Feb 24 '11 at 16:43

3 Answers 3

We screen candidates with a coding task as part of our application process. In regard to your five specific questions:

Is it unreasonable to ask this of applicants? If not, is it better to request before or after a phone screen?

We do the coding task after a phone screen but before we call them in for an interview. We also ask them to do it in their own time - not on the clock in the office.

Are these questions too hard or easy for a collegiate audience?

Both task are pretty involved and would take a college-level programmer a fair amount of time (hours+) to implement. There might be better ways in the interview to screen for knowledge on finite state machines etc. so instead it might makes sense to think up a few smaller programming tasks that people won't resent doing prior to the face-to-face.

Any suggestions for alternate questions? Do these seem like good tools for analyzing people who would part of a software development life cycle?

We test candidates on our core technologies: SQL, ColdFusion and JavaScript.

I've blogged on this topic recently before and the code assignment questions I came up with were

  • Create a program, in CF, that can determine if a word is a palindrome. Implement it was a web page. Let them run with this and see what CSS/JavaScript spice they add. This question can be done numerous ways, so it gives some good discussion points in the face-to-face interview.
  • Some moderate SQL queries for a given dataset
  • Some JavaScript that allows the user to 'show off' their JS skills with proper OO Javascript and object prototyping - or not as the case may be.

But just as important as this is the questions we ask regarding their passion about development: what tools they swear by, what makes a good development environment and what are the signs of a good (well-programmed) site. Check out my blog post for a full list.

I really think that a candidate with good basic technical knowledge can become a master if they have the passion and interest.

Programming language suggestions - I'm thinking Java, Python and/or C# (we're actually a ColdFusion shop).

Ask it in CF then! Not only will the candidate (most likey) not have come across CF before, but it will show you if they can research the language and get to grips with it quickly. As I said, I try and give a test for each technology we use, because that's what you'll be paying them to use day-in day-out.

I hope that helps!

share|improve this answer
    
+1 for the interesting answer. To clarify, assignments would be on their own time. The calendar assignment was one I was able to do in 20 minutes 10 years ago. Only way I can see that taking hours is if they calculate the Julian dates rather than using built in date functions. Because this is an internship, and most CS/IS majors don't know SQL or CF, I think I need to accept answers in other languages. –  orangepips Feb 24 '11 at 13:32
    
That's 100% up to you but we also wanted to know what our candidates thought of ColdFusion - the last thing you want is someone looking down his nose at ColdFusion and having to listen to that every day :) –  Ciaran Archer Feb 24 '11 at 13:39
    
We'll be upfront about CF. The issue you raise is more about weeding out assholes; that's what the in person interview is for. –  orangepips Feb 24 '11 at 14:27

If you're looking for interns at a post-graduate level (i.e., students working on a masters or doctoral program), you can ask to see a published work, current thesis draft, or code from their thesis project.

For bachelor or diploma level students, you could ask for some of the work they have done for class assignments.

For comparison, we usually select interns from just phone screens and example works. We do not usually ask for extra coding assignments. Sudents are often applying during a semester that may be heavily loaded or during exam season, and asking them to do extra work may just not be practical for them. If they can supply you with something they have already done, then you can still get good information regarding their work without overloading their workload.

share|improve this answer

I would ask them something more relevant to your company or the job they would be doing. This will give them something more interesting to work on, that they will realize might actually be contributory to the company. It might also give you something beneficial.

With the traffic light example, sure you will be able to compare each of them and see if they are on track, however I'm not sure it will tell you too much about them. Its also too easy to "google".

I prefer to ask questions that will spark some flair and creativity, something that wouldn't have one set answer but also give the candidate change to shine above the others.

share|improve this answer

Your Answer

 
discard

By posting your answer, you agree to the privacy policy and terms of service.

Not the answer you're looking for? Browse other questions tagged or ask your own question.