Open Curriculum: Definitions – Scenarios – Roadmap – Skill sets – Open certification – References - Roles
Follow discussions here on g.d.o, on IRC at #drupal-skillmap, or on Twitter with the tag #drupalskillmap!
Some sketches for 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
|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.||This area might be too wide, but I don't think it makes sense to break it up into smaller pieces //Itangalo|
|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.||Maybe Drush should be moved somewhere else. //Itangalo|
|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.||Incorporate in "Basic coding skills"?|
|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.||This skill set might deserve being broken up into smaller parts. //Itangalo|
|Task analysis||Is this a part of interaction design? Or is the area useful in itself?|
|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.||This needs a description. Risks overlapping with "requirements gathering"?|
|Usability testing||Performing testing to gather information about usability problems, as well as verifying good effect of interaction design.||I suggest using usability testing instead of usability research!|
|Web strategy||Description needed! (Should this be moved to project management?)|
|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.||(Please correct me if the description is wrong!)|
|Market analysis||Involves identifying market segments and individual companies/organizations that are good potential clients.||(Please correct me if the description is wrong!)|
|SEO strategy||Involves analyzing own or client's needs of marketing through web search results, and making plans for satisfying those needs.||(This description is mostly my mumbo-jumbo. Please update if you got more to say.)|
What is a "skill set"?
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.)
Here, skill sets are characterized by the following properties:
- Skill sets describe sets of skills, describing what you are able to do – not milestones or achievements showing what you have done.
- Skill sets should be fairly broad, covering a several related skills – "managing content" is much better than "creating a node".
- All skills covered by a skill set should be related to the same kind of Drupal work – skills for managing content shouldn't, for example, be in the same set as skills for contributing patches.
- Every skill set should be separate from other skill sets (or, realistically, minimal overlap with other sets).
With a good collection of skill sets, it should be possible to do the following:
- An expert Drupal user of any kind looking at the list of skill sets should feel that the relevant sets can be used to describe her competence fairly well (while some expert skills may still not be covered by the list)
- A Drupal user of any kind should be able to look at a list of skill sets and identify which ones she has covered
- A Drupal user of any kind should be able to look at the list of skill sets and identify skill sets that borders to her current competence
- An employer for Drupal talent should be able to describe the talent she is looking for by mapping it to the skill sets
Skill sets and roles
The skill sets above could be assigned to different roles for people working with Drupal. One way of doing this is described by the image below – but this should only be taken as an example (since roles and tasks vary between projects and Drupal shops).
(See this page for more discussion about roles. Suggestion: Move the role discussion to another page. //Itangalo)
Current important tasks/questions
- We need more details descriptions of the skill sets!
- Are we missing any important skill sets?
- Some skill sets – in particular "web services and mobile" probably needs to be split up
|Drupal subject areas (sketches).png||36.57 KB|