Monday, August 8, 2011

Drupal Important Questions for Interviews - Part 1


1. What modules do you always recommend to your clients?

Before you ask this question, check out the Drupal module usage statistics page on drupal.org. Your candidate should be able to recommend a number of modules in the top 30.

Prompt your candidate to explain why they recommend each module. They should be able to give you a plausible-sounding explanation. If they recommend a particularly unpopular module, ask them how well it is supported.

Follow-up questions:

    * Why do you recommend that module?
    * How well is that module supported?
    * Have there been any recent vulnerabilities with that module?

2. How does caching work in Drupal?

One of the common (mostly unfounded) complaints about Drupal has been, "Drupal is slow." You want to hire a developer who understands Drupal's built in caching system, and what its limitations are. For example, Drupal 6's block cache will not appreciably speed up the page if the user is logged in.

Ask your candidate to recommend some additional solutions to speed up Drupal's caching. These could include the Boost module, Varnish, Squid, Memcache or Pressflow. Ask if they've ever run into issues with Drupal's cache.

Follow-up questions:

    * What else can you recommend to speed up Drupal?
    * Have you ever run into issues with Drupal's cache?
    * How did you solve them?

3. What does Views do and how do you use it?

Views is a practical necessity for sites built on Drupal 6, and it's imperative that your developer understands how to take advantage of it. Earl Miles has written a great summary on the Views project page.

Follow-up question:

    * What's an example of a project where you needed to use Views?

4. How do you handle upgrades?

It's a fact of life that you'll have to upgrade your Drupal installation and contributed modules fairly frequently. Your candidate should mention:

    * backing up the site,
    * putting it into maintenance mode
    * downloading the new version of the module
    * uncompressing it
    * running update.php
    * testing the site
    * taking the site out of maintenance mode

Ideally, your candidate would also mention creating a development environment to minimize downtime. There is also a big difference between upgrading a module (process described above) and a Drupal minor version upgrade, which requires more careful patching. Drupal major version upgrades, which happen every couple years, are another can of worms entirely.

5. Show me some Drupal sites that you've built.

If you're hiring a single developer to manage all aspects of your project, from the requirements to the coding to the theme design, make sure you like their previous work. Ask for a list of sites that they've worked on, and the role they played in each project. Poke around and see if they still work!

Follow-up questions:

    * What role did you play in this project?
    * What other contractors/employees did you work with to complete this project?
    * Was the client satisfied with this project?
    * Can I get a testimonial from this client?

6. How many patches have you submitted to Drupal?

Thanks to collaborative open source programming, anybody can request access to submit patches to Drupal or its contributed modules. A very strong candidate will have found some issues with the existing codebase, and patched it accordingly. Hopefully, they have contributed these changes back to Drupal. Given their Drupal username, you can check!
=====================

    * Drupal Basics – Node, Module, Teaser, theme, Path, taxonomy, Patch, Region, Block, Menu
    * Installation of Drupal, steps and how to upload it on the live site from the local Machine.
    * Core Module in Drupal, their Names and their Functionalities.
    * Hook, Node Concepts
    * Functions and their Functionalities for – t() Function, l() function, Watchdog functions etc
    * Theme System in Drupal.
    * Themes and Theme Templates.
    * Theme Engines (Interface between the Drupal Core and the theme template).
    * Theme Hooks (Provide a way of interaction between the Modules and theme)
    * Theme Template structure and different sections as Page.tpl.php, node.tpl.php, block.tpl.php, box.tpl.php, etc
    * Derivative themes or Sub themes or Theme inheritance concepts that came into existence in Drupal 6, about it and its functionalities.
    * Steps to create a derivative theme and how to move for creating the theme from Derivative themes to a new theme right from scratch.
    * Theme function.
    * Where the Drupal theme functions are defined?
    * How the Drupal Theme functions can be overridden.
    * How to Implement the AJAX Effects on the Block modules in Drupal 6
    * Theme registration and the concepts in Drupal 6.
    * CCK modules and its importance with major functionalities.
    * How to create a Module.
    * How to insert the database table schema from the Modules when they are installed and remove the table scheme when they are un-installed (modules.)
    * User, Permission, Role in Drupal
    * How the Drupal database works?
======================

2 comments: