views:

148

answers:

5

I'm trying to write out a list of key Drupal competencies, mainly so I can confirm what I know, don't know and don't know I don't know. (Thanks D. Rumsfeld for that quote!)

I think some of these are really broad, for instance there's quite a difference between making a functional theme and creating a theme with good SEO, load times and so on, but I'm hoping you could assume that a half decent web developer would look after that anyway.

Just interested to see what people here feel is also important. I've edited the suggestions so far into this list.

  • Knowledge of PHP, MYSQL and JQuery as a basic requirement
  • Able to install Drupal on a server (pretty obvious).
  • Able to research and install modules to meet project requirements
  • Able to configure all the basic modules and core settings to get a site running
  • Able to create a custom Theme from scratch which validates with good HTML/CSS and also pays attention to usability and accessibility. (Whilst still looking kick-ass).
  • Able to customise forms, core, themes without altering core files but by using template.php or a custom module.
  • Able to use Hooks in the theme template.php to alter forms, page layout and other core functionality
  • Can make forms from scratch using the API - with validation and posting back to the DB/email
  • Can use Views to create blocks or pages, use php snippets as arguments, etc.
  • Can create custom modules from scratch utilising core hooks and other hooks.
  • Be involved with the community, understand the naming conventions, CVS system and ideally have submitted some code or revisions.
+2  A: 

I good understanding of client-server architecture, how servers and browsers works. And knowledge of php and mysql, templates engines. And of course, you should also read Drupal documentations.

VOX
+2  A: 

Able to create a custom Theme from scratch which validates with good HTML/CSS and also pays attention to usability and accessibility. (Whilst still looking kick-ass).

You usually don't want to create themes from scratch but from a starter theme like Zen instead.

For Drupal you will need:

  • PHP, it's a PHP framework, so to really understand and use it, you need to understand PHP.
  • SQL, the list of SQL serves that Drupal can use is growing, but you will need to understand * SQL, relational database and how to setup some basic architecture.
  • Javascript (and jQuery). Drupal uses the jQuery js library, so it will be a lot easier if you not only, know how yo use javascript, but also understand how to use jQuery and some of it concepts.
  • The hook system and how you can alter Drupal core and modules implementing hooks.
  • The naming convention for hooks, theme functions etc.

Modules
It's not easy to make a must know module list, as not only is the modules you use very dependent on the site, but also how you use them. The two top modules in Drupal is.

  • Views
    • Know how to make basic views and blocks.
    • Know how to make more complex views with relationships and terms.
    • Know how to use hook_views_query_alter, to make complex queries.
    • Know how to use hook_views_default_views, to create specific views.
  • CCK
    • Know how to setup content - what field types to use.
    • Know how to create your own field_formatters - the foundation for theming CCK fields.

Another module that I find very powerfull once mastered is Panels. It allows you to do a lot of complex and difficult things with very little and simple code. There is a lot of hooks you need to learn, and not much documentation. But once you understand Panels, you find that you time has been well spent.

Hooks
The most important hooks to learn, to create a basic module is probably:

  • hook_form_alter() - change forms without changing code.
  • hook_menu()
  • hook_theme()
  • hook_nodeapi() - almost anything regarding nodes
  • hook_schema() - create tables
  • hook_install() / hook_uninstall() - create tables and clean up.
  • hook_perm() - when you need special access control.
  • hook_init() - things to want always to happen.
  • hook_user() - if you need to tap into user actions or modify the user object.

You don't need to use all of these hooks all of the time, but they are some of the most used ones.

googletorp
Some good points! Can you think of any more CMS related things such as specific hooks or modules which you consider it necessary to master?
hfidgen
+1  A: 

Great list so far! Some others for consideration:

  • Ability to use Drush to update or setup a site
  • Strong understanding of good best practices configuration for performance, security and SEO of a Drupal site (think launch checklists)
  • Having submitted a module to Drupal.org (however simple) or submitted a patch (the process of getting a CVS account and getting your first code in is instructive to the community and to standards)
Justin
Not come across Drush yet - just googled it and it looks interesting! I tend to go through front end, but having command line access would be pretty handy.I think knowing how the CVS system works along with all the terminology and best practice file naming stuff is probably a hurdle a lot of drupal devs never get over.
hfidgen
+1  A: 

You don't need SEO skills for templates, drupal usually helps with SEO alot. Ofcourse a developer who will slice a design must know that all headings must be done with h1,h2,h3,h4 tags. that's really basic one. everything all is up to drupal..

as for my opinion to be a drupal "developer", you need some very basic skills in PHP. Because drupal is really written without object-oriented programing, and without DESIGN PATTERNS, so these are two things is really makes you a programmer.. without them it just [sorry for this word] bullshit not a programming.

I think anybody can install drupal or wordpress or some cms-made-simple, systems if you have at least once connected to ftp in your life... to develop plugins for them is a requires basic skills of php. Ofcourse if you'll find skillfull developer then he will know oop basic, and will write plugins with OOP and that code will be really NiCE! =)

holms
+1  A: 

Being able to edit existing functionality (core or module) without touching the core or module and knowing whether to put it in template or a custom module.

McAden

related questions