When hiring a Drupal site developer it's important to understand what you need and where you can find the service provider with that set of skills.
There are six sections to this document:
- Define the Scope of the Project
- Define the Budget for the Project
- Match The Desired Skill Level to the Task
- Advertise the Job
- Give yourself time
- Contribute Back
If you're having trouble doing these things, or are unable to, there are many professional project managers who can help. They can assist in (or even accomplish) every one of these steps. Most consulting companies have full time project managers on staff. For anything but the smallest of projects, their "overhead" will actually save you money and time. Look for "PMP" behind their names - that means they are certified "Project Management Professionals" with demonstrated education and experience.
Define the Scope of the Project
Before you try to hire someone, you may want to define what the project would entail. Most developers like to work from clear requirements to achieve well defined goals. Having vague requirements and shifting goalposts is very frustrating for you, the client, and for the developers.
Remember that different skill sets are required for different projects, as well as for different parts of the same project, depending on size.
- Do you want installation and configuration?
- Do you want a theme designed?
- Do you want modifications to existing modules?
- Do you want new modules written?
You may not have the answers to all the above, but it helps a lot if you have some idea of what you need.
Note: This does not mean that you should read the modules list and then create your own list of modules that sound good. Your requirements should be a list of functionality and features that you need on the site. Your site developer is an expert at determining the best mix of modules to meet that goal.
Note: When you plan the time and resources for your project don't forget to include time and developer hours for a security review. In case of third party themes and modules that you use this can be done by the developers you've hired, but for in-house developed themes and modules you should try to get a third party developer to do this. Keep in mind that the contributed themes and modules on drupal.org are not reviewed in any way and you use them on your own risk.
Define the Budget for the Project
Having a budgetary figure will help bring the scope down to earth in many cases. For example, your wish list may need to be trimmed back if you do not have enough budget to implement all of it.
Once you do that, you can now break the project into tasks (e.g. installation, theme design, programming).
Match The Desired Skill Level to the Task
- Hire a contributor to the Drupal community to ensure the sustainability of the project
- Hire someone who can research your needs to see if the many contributed modules already do what you need
- Hire a designer with CSS skills to customize an existing theme or create a new theme
- Hire an experienced Drupal developer if you have a short project time line
- Hire an experienced PHP developer who can learn and code to a well defined set of APIs if you have a large project and a multi-month deadline
- Hire someone who understands your industry and the particular needs of your sites users
Advertise the Job
There are several listings of Drupal service providers. After your needs analysis, if you determine that you need a Drupal consultant--as opposed to a PHP or CSS consultant-- consider the following resources. These lists also contain qualified PHP/CSS consultants, but you may have a relationship with such a service provider or be able to find a PHP/CSS provider somewhere else.
- List of Drupal.org profiles that "provide Drupal services" you can generally contact these individuals on their contact page in their profile. When you are in the users profile, read a few of their postings on their tracker page to get a feel for the kind of person they are and how they have helped the community.
- Marketplace - list of Drupal service providers.
- The Drupal Consulting List is another place to post a call for applicants
- The forum to post or browse Paid Drupal Services is a place where you can post your requirements and contact information if you would prefer that interested parties contact you.
- The Groups.drupal.org site has a job listing page where anyone who is a Groups.drupal.org can advertise jobs. The job submission form explains the process in more detail but please remember not to post the job to more than 4 groups.
- The Groups.Drupal.Org Group List has job postings and geographical groups which frequently have meetings. If you want someone local consider attending a meeting and advertising your project. If no meetings are scheduled, host one!
- If you are familiar with IRC you can use the IRC channel #drupal-consultants
Give yourself time
Experienced Drupal developers can create amazing sites in a very short time, but keep in mind that implementing the site's functionality is only a small part of the work involved. Start planning your project well ahead of the deadline, because you need:
- time to prepare a request for proposals that is detailed enough for developers to provide a price quote (if you want one quickly), or to at least get a reasonable understanding of the project.
- time to answer questions from interested developers.
- enough time for many developers to bid on your project so you can have more options.
- time to research the bidders, ask them questions, and to make a judicious choice.
- time for the contractors to become available. Remember that the best Drupal developers have a busy schedule. They won't be available to start working on your project right away, or tomorrow, and maybe not even in two weeks. But they will almost certainly be able to add your project to their schedule if you can wait a little.
- time to think about the site's functionality and information architecture. The developer will help you, but you will have options to think about, people to consult (colleagues, committees, community members, etc.), and sometimes difficult decisions to make.
- time for communications, and communication takes time indeed (meetings, calls, e-mails, etc.)
- time for graphic design. Design often involves many iterations, and again more thinking, meetings, debates, etc.
- time to create content for use on the site (texts, graphics, artworks, videos, photos, etc.)
- time to develop a migration path for your old site's data, if any.
- time to interact with the developer and discuss various details all along the project. The devil is in the details!
- time to learn how to use the system and to manage content.
- time to test and validate the work that has been done, and for the contractor to make the necessary adjustments.
- time for the contractor to examine and comment on your use of the system, and to give you useful advices.
- time to enjoy life all along the project!
If what you need is improvements to an existing Drupal module, a key part of your approach should be making sure the work you have contracted for is contributed back as improvements.
If what you end up with is a version of a module that's been customized (hacked) to work on your own site, you're missing out on a lot of the potential benefits of choosing open source.
- Every time you want to upgrade, you'll need to worry about how to merge the hacked code back into the original module. Too often, because updating requires specialized and costly technical skills, modules or whole sites that have been heavily hacked are permanently stuck in a particular version and miss critical security updates as well as the range of new functionality that comes with updates.
- If you want to extend the solution you contracted for but the original developer isn't available, there may be little documentation and no one who understands what was done.
- More than likely, some other approach will emerge over time to the improvement you suggested, but it may not meet your needs because it was developed without reference to your solution or your use case.
Contributing back takes more time than getting a "quick fix" applied. But, in the end, it can save you a lot of time and money.
The following tips can help ensure your improvements are contributed back:
- If they are available for contracts, consider hiring one of the module maintainers to make your improvements.
- As you interview potential contractors, ask how they will work to get changes incorporated. Assess their prior experience with contributing back.
- Define success not as "I have code running on my site that meets my needs" but rather as "the improvements I contracted for have been accepted and applied."
- Include posting "patches" via the drupal.org issue queue as a deliverable in the contracts you write. Consider as a potential condition of completion that patches have been accepted or are justifiably marked "reviewed & tested by the community"--i.e., all issues with the patch have been resolved.
- Be sensitive to the fact that you are creating work for module maintainers, who are usually volunteers. Minimize the work you're creating by making sure you and the developer you've contracted provide everything the maintainers need, including ample explanation and timely responses.
- Keep in mind that you don't have to choose between a "quick fix" and a contributed solution. You can have both. Use the quick fix on your site while you and your contractor work to have the solution accepted and applied.
- Be flexible enough to define your need in a generic enough way that its solution can be useful to others as well as on your site.
- Factor the time it will take your contractor to contribute the improvements back into the contract price.
For each new feature you need, you can work with your developer to:
- Post an issue on the module including ample documentation of the issue being addressed and of the proposed solution.
- Follow up, responding to questions, hearing suggestions, and posting new iterations that address issues that were raised. This follow-up is just as important as initially posting the suggested change.
- When a patch is accepted, make sure your site is updated to run the version that was accepted, rather than an earlier draft.