At Lights On Software, we were doing quite a bit of interviewing over the last few months. We specialize in Django software development and we interviewed candidates for Django contracting positions. I did a quick search on the Internet to find a good base for my list of questions, but unfortunately, the search didn’t yield many results. So half an hour later, I had my own list and hopefully some of the readers will use it for their own interviews.
All recent positions we hired for were contract and we skipped the usual HR-style questions such as ‘Where do you see yourself in five years?’, ‘What are your weaknesses?’ and concentrated on figuring out if the person is qualified for the job we have at hand.
The usual disclaimer: the questions are higly subjective on our experience and your milage may vary. For example, we are located in Canada and the two official languages empose specific requirements – we frequently internationalize our apps. Moreover, these questions will test only knowledge and will not test unimportant traits such as problem-solving skills, initiative, and ability to research and learn on the job.
- How are you using Django? What sorts of projects have you worked on and in which capacity?
- What do you like about Django? Python? Compare Django with other frameworks you have used.
- Describe how Django is MVC? or shall we say MVT:)?
- How good are you at estimation? Everyone is bad at estimates. You are looking for people who know that they are bad and multiply their estimates by 2 or 3.
- Do you test code? It is strange if the candidate never tested code, but it is equally suspicious if she keeps going on about the benefits of TDD. We love the idea of TDD, but in practice, very few organization, clients, and the developers have patience to do it properly.
To assess the depth of the person in a certain topic, I usually start with a general question that everyone should know and then move into more specific areas probing if the person has been exposed to some of the finer details.
It is unlikley that the candidate will fit perfectly and you should give people the benefit of doubt as long as they meet your broad criteria. Also, learning individual things on this list will be easy, but learning a multitude of different things will take a couple of months at least.
- What Django tools and pluggables are you using or aware of? South, multilingual, tagging, profiles, registration, etc. This question is very useful in order to understand how long someone has been developing with Django.
- What are the named url patterns? What is the url template tag and what is its usefullness?
- Tell me about a templating system in Django. What is template inheritance? How do you get contents of a parent block?
- What is a template tag? What is an inclusion template tag? How do you create a template tag?
- What is ORM? Why is it useful? How does Django accomplish such functionality? What is model inheritance? What types of model inheritance are there in Django?
- In table inheritance, how are the two tables related? (the pointer mechanism)
- How would you internationalize Django application? (if it is important) How would you internationilize values stored in the database?
- How do you extend a user profile in Django?
- What is a forms framework? How do you use it to create a form? What is a shortcut way of creating a form for a model?
- Describe signals in Django? What is their usefulness? What design pattern do they remind you of? How would you implement the above mentioned design pattern? ( My favourite question )
This is about an hour of interviewing right there. Feel free to add your questions below in the comments.
Shameless self promotion -> Meanwhile for all those of you who are looking for experienced Django developers, there are a couple available at Lights On Software
Lights On Software