What skills should a Drupal Developer have?
With the ever growing Drupal Community, a beginner is many a times lost in the vast number of resources, with increasing number of developers in Valuebound, I spoke to some of the seasoned developers on their opinion about the skills that a Drupal developer should have and also sifted through tons of materials from Stackoverflow and some more places.
The skillset that we are discussing here will give a clear idea about where you stand, what you know, what you do not know and of course fill me up with what I have missed, and I will quickly add up the suggestions. Before this I have 6 things that drupal developer should know.
From what I have understood, the very basic things Drupal Developer would be expected to know in terms of languages are much similar to web development in general, since Drupal is built with PHP it is good to have a grip to begin with Drupal. And SQL well, a database to handle the rest.
Version control — Git
To collaborate in a project, Drupal developers use the Git version control software . Learning the Git basics will help to stay organized and enable with essential skills for working with a team. Even if you're the only person on the project, there are still lots of advantages to using a version control system as part of your daily workflow.
A Vision for Version Control — What is version control, and why should you be using it for all of your projects?
Git for beginners — Everything you need to know to get started using Git.
Apply and Create Patches — How to apply a patch to a module provided by another developer, and how to create your own so you can contribute your fixes back to the community.
Research and install modules according to project requirements
Configure basic modules and core settings to get a site running
Drush command line tool
Make a custom Theme from zero which validates with good HTML/CSS.
Able to customize and tweak forms, core, themes without altering core files but by using template.php or custom modules.
Can make forms from scratch using the API - with validation and posting back to the DB/email
Knowledge of key Drupal APIs like Queue API, Node API, Entity API,APIs of Drupal.
The Form API is not the only one. You should understand the Menu system (page, access, title and delivery callbacks, how to pass parameters to them, etc.), the Queue API for asynchronous operations, Batch API for long running operations, Entities and Field APIs for user editable structured data, Theme API and Render Arrays for anything presentation, Cache API, Schema and Database APIs, File API, Cache API and the Localization API.
Can create custom modules from scratch utilising core hooks and module hooks.
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.
OOPs - OOPs - OOPs
Web Services : The RESTful Web Services API is new in Drupal 8.
Modules There is no must know module list, since it will all depend on the site and how you use them, but the following are widely used:
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.
The Panels module allows a site administrator to create customized layouts for multiple uses.
At its core it is a drag and drop content manager that lets you visually design a layout and place content within that layout.
Be involved with the community and contributions, understand the naming conventions, CVS system and ideally have submitted some code or revisions, 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
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.
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.
For any kind of a development setup, even in Drupal there is a range of roles which cluster up together to build and support Drupal Applications which includes :
System Admin or Devops who run the live stack and work in the process of deployment of Drupal sites from dev to live, they deal with performance issues, set up a Content Delivery Network, Varnish, Memcache - basically everything related to things after and during Deployment. These facilitators also help to run Drills to avoid issues like the one that happened with Gitlab recently.
QA - Test to ensure Quality adherence and matching requirements. Set up automated testing environments, auto schedule and run tests.
Project Manager / Scrum Master - run the team, remove obstacles to progress, ensure on time delivery of the project within budget.
Product owner - Facilitates with the requirements working closely with the project manager to prioritize the backlog. Normally has final sign off of all changes.
Design / UX - Creates up with the design and user experience. They help build prototypes that can then be converted into a Drupal theme.
A complete team consist of all the things above and you can eventually choose to select a profile to evolve into.
In some of the upcoming posts we will discuss about the things you should know that will give you an edge as a Drupal Developer.