When creating solutions to meet their specific use case, developers do so with an eye towards creating reusable tools when possible, and/or collaborating with other developers to enhance existing tools that are close to, but not quite, the solution needed.
Developers are generally expected to be proficient with Drupal site building, and to know how to leverage the ecosystem of existing contributed modules and Drupal core APIs in order to prevent duplication.
Want to jump ahead? Here’s a list of the sections in this document:
- Meet some developers
- Learning tips
- Background and prerequisites
- Essential lessons
- Advanced concepts
- Broaden your skills
Meet some developers
Get to know more about what it means to be a Drupal developer through these interviews:
Learning to be a master of Drupal development can be a daunting task, especially when you’re just getting started. There’s a lot to learn, and a lot of the best information is spread out across Drupal.org and various other websites, books, and podcasts. As you’re climbing the ladder and becoming more proficient with Drupal, here are some things to keep in mind:
- Drupal is open-source software, and as such, the code is freely available to read. Looking at how Drupal core or other contributed modules have solved problems similar to yours is a great way to get started.
- The Drupal API is quite extensive; focus on mastering high-level concepts and terminology first. Don’t try and memorize all the details—instead, use the tools available to look up the documentation and examples for implementation-specific details.
- Knowing when to write custom code vs. using an existing solution is an important skill.
Background and prerequisites
Before you get into learning the Drupal specific parts of development, you’ll want to make sure you’re up-to-speed with some non-Drupal fundamentals.
PHP is the programming language in which Drupal software is written, so you should be comfortable with it before diving in. Drupal 8 is largely written using object-oriented programming (OOP), while Drupal 7 is written primarily using procedural programming, though you'll encounter a smattering of object-oriented elements there as well. As you learn to develop modules for Drupal, you’ll use a combination of PHP fundamentals combined with Drupal-specific functions and APIs.
Developers are expected to know how to work on a copy of the live site, instead of making potentially hazardous changes or testing new ideas directly on the live site. You should be able to set up a development environment for your work.
Developers will need to know how to create new Drupal modules—bundles of PHP code that extend, alter, or otherwise enhance Drupal’s functionality. This requires knowledge of Drupal’s system to allow your custom code to interact with existing functionality, using hooks and plugins. You'll also need to get familiar with the suite of APIs that make up the Drupal framework, many of which exist to ensure you don’t have to rewrite the same code over and over.
Once you’ve mastered the basics of creating a new module, you'll want to learn about the advanced concepts necessary to become a truly top-notch Drupal developer. Module developers need to be able to understand deployment techniques, work with production tools, write tests, and conform to coding standards. These skills and best practices will help you and your team be more efficient as you integrate them into your workflow.
Configuration management and deployment
Learn how to make a change to the configuration of a view or content type in the UI and then programmatically deploy those changes by encapsulating configuration in code. An essential part of the industry standard best-practice for implementing a development > staging > live workflow into your projects.
Drupal developers use the Git version control software to collaborate on the code they write, contributed module development, and even Drupal core itself. Learning the basics will help you stay organized and provide you with some essential skills for anyone working with a team. Even if you're the sole person on the project, there are still myriad advantages to using a version control system as part of your daily workflow.
Drupal ships with a wide variety of unit and functional tests. It is important to understand the main differences between these types of tests, as well as why they are important to improve the overall quality of your application. Drupal also includes a couple of methods for running these test suites.
In general, it’s a good idea to agree upon and then adhere to a set of coding standards. Doing so ensures that you and your team can focus on discussing the things that matter instead of debating if that brace should go on a new line by itself, or not. The Drupal project already has a great set of coding standards, and requires that they are followed for any contributed code. So, if you’re working on code for Drupal, it’s worthwhile to learn what those standards are.
This is just a selection of what we have about Drupal development. To find more topics and tutorials, you can look at the full listing of module development topics or browse the Module Development category in our library. You may also want to explore tutorials categorized as "Backend and Infrastructure" as often times these are skills that are expected of developers in addition to being able to write modules.
Broaden your skills
There are many ways to grow your skills and knowledge outside of tutorials. Here are some of our favorite resources for exploring Drupal development.
Contribute to the Drupal project
Although not a requirement, many Drupal developers also enjoy being active members of the Drupal community and contributing their solutions back to Drupal.org in the form of a contributed module, or by helping to resolve bugs in the modules they use, or even in Drupal core itself. Nothing will improve your understanding of Drupal like explaining it to someone else—or taking pieces of it apart and fixing them.
The following Drupalize.Me podcasts may also be of interest to developers.
- The New Lullabot.com — React js, CouchDB, node, decoupling Drupal; if any of that sounds cool to you, then this is the podcast for you.
- Let’s Chat About Web Accessibility — What you can do to improve accessibility on the web.
- The Syfy Project — Learn how Lullabot helped transform the new Syfy.com.
- Drupal Console — A new and developing suite of command-line tools for Drupal 8.
- Drush and Composer — The winning Drupal Toolkit.
- The RESTful Module — RESTful module, decoupling, headless Drupal.
- Content Delivery Networks (CDNs) — What is a CDN and how do they work?
DrupalCon sessions are a great way to get up to speed on the latest in Drupal development. All DrupalCon sessions are recorded and are available for free on the Drupal Association’s YouTube channel. The videos are also embedded on the session description pages for each DrupalCon, so you can browse developer tracks on the DrupalCon website and find session recordings to watch after the Con.
- DrupalCon — Find links to past and future DrupalCons and session recordings.
Drupal camps, sprints, user groups are great way to connect with other Drupal developers and learn new things.