Drupal Skill Sets

From http://groups.drupal.org/node/172434

What is a "skill set"?

A skill set is a knowledge set that is used to accomplish a set of tasks. 

The point of describing Drupal skill sets, is to make it easier to see what skills are needed – and which skills are shared between different roles of Drupal professionals. ("Professionals" should here be taken as people working with Drupal in one way or another – not necessarily as their job.)

 

 

Drupal Skill sets

 

The image sources can be edited at https://cacoo.com/diagrams/Fu6NuballS0GgW0d. The current map has been discussed and improved for a while, so it makes sense to discuss any significant changes before implementing them. Image is distributed under the same creative commons license as Drupal documentation.

Drupal related skill sets

Skill set Description
Basic drupal.org skills Having a user account, being able to search issue queues and reporting bugs in a proper way, etc. Two important skills are knowing what to ask and how to ask it.
Community participation Includes taking part in discussions, attending in Drupal meetups, etc.
Active community contribution Doing things like organizing Drupal meetups, coordinating or actively contributing to community projects, maintaining drupal.org (code) projects, etc.
Content creation and management Also includes managing comments, and scheduling publishing (where applicable), and so on.
Simple site configuration Includes managing menus, users, blocks, front page settings, etc. Changing existing settings, but not creating new site functionality.
Advanced content construction This includes managing content and presentation settings on the site, for example by configuring Panels, Skinnr, Context, Simple Views and more.
Basic site building Includes installing Drupal, configuring fields, creating simple views, installing and setting up fairly simple modules (such as References, Scheduler and Automatic Nodetitles). It also includes being able to evaluate contrib modules.
Advanced site building Includes complex Views configuration, and complex modules such as Page manager, Rules, Organic Groups and access control modules. And Commerce.
Multi-site installations This includes managing multiple Drupal sites that in one way or another share content – such as sharing some data tables on a multi-site installation, using Domain Access or doing advanced site building with Organic Groups.
Multilingual sites Setting up multilingual sites, knowing the relevant modules, and adapting configuration of other modules accordingly.
Configuration export Taking Drupal configuration and turning it into exportable, importable and version-controllable code.
Basic theming skills This involves installing themes, creating subthemes, and tweaking sub themes with CSS and custom template files.
Advanced theming skills This involves responsive web design, grid based layout techniques, jQuery based interactions
PHP coding for theming This involves the basics you'd need to know of PHP before learning Drupal theming.
Front end development This includes developing base themes, writing layout plugins to contrib modules, optimizing front end performance, declaring new renderable elements, developing for modules like Skinr, using AJAX, AHAH and other techniques for creating good user experience. Writing theme functions, preprocess functions, form_alters, adding/changing theme settings and using the show/hide functions.
HTML5 web apps Being able to use HTML5 technlologies to build app-like pages for mobile browsers, possibly to embed them as downloaded apps with PhoneGap (or something).
Basic Drupal coding skills This involves PHP skills, knowing Drupal coding standards – including writing well-commented code, using hooks and using Drupal's API to write secure code. It also includes using Drush.
Coding for major contrib projects This involves writing Views plugin/handlers, as well as understanding or extending other important parts of the Drupal ecosystem.
  Knowing enough about even advanced core concepts – such as access control, rendering layer and DBTNG – that it is possible to write and review non-trivial core patches. Knowing when and how it is ok to hack core. (Wow.)
Secure coding Secure user input, XSS, Form API Security, etc.
Web services and native movile apps This includes using Services and REST, integrating with external APIs, and being able to expose data to consumers like mobile applications.
Basic performance analysis/optimization This involves things like setting up caching rules, being aware of performance impacts of complex architecture, etc.
Setting up Drupal servers Includes all server-side setup for getting a Drupal site running: web server (Apache), database, PHP, file permissions, etc.
Automated testing/continuous integration Being able to write automated teseting for Drupal functionality, and implement the tests during development. Involves SimpleTests, but possibly other testing technology as well.
Content migration Migrating large sets of data to a new site, including both database entries and files. Also involves leveraging contrib modules for migration.
Site maintenance Knowing how to update modules, doing backups, watching for security releases, etc.
Advanced performance optimizing This involves dealing with load times, memory usage, slow queries, identifying memory hogs, setting up reverse proxy caching, changing cache layers, etc.

Skill sets not depending on Drupal

Git skills Involves things like setting up Git repositories, cloning, branching, merging, plus creating and applying patches.
Documentation and training This is currently a stand-alone skill set, since documentation and training can be added to any of the other skill set.
Content strategy  
Task analysis  
Visual design Defines the visual language of the Drupal website in accordance with the stakeholders' goals and existing brand. This includes, but is not limited to, font treatment, layout, colors, imagery and overall graphic style. The visual design work is often delivered in the form of a style guide and one or more comps-- usually in .PSD or similar format.
Interaction design Defines the workflow for website users as they interact with the website to perform specific tasks. Often times, this work results in wireframes or prototypes of specific pages and or interactions based on a given user story.
User assistance Provides information to help a person to interact with software.
Information architecture Analysing client information and processes to facilitate design of intuitive navigation, content types and site structure.
Usability testing Performing testing to gather information about usability problems, as well as verifying good effect of interaction design.
Web strategy  
Requirements analysis Capturing end results that clients wants, and describing these in development terms – and communicating with the client about both of these. Also includes listing (internal) competence requirements.
Roadmap Planning and replanning project process, including milestones, large project subtasks and staffing planning.
Market analysis Involves identifying market segments and individual companies/organizations that are good potential clients.
SEO strategy Involves analyzing own or client's needs of marketing through web search results, and making plans for satisfying those needs.