Photo by Mihály Köles on Unsplash
Learning Drupal can feel daunting. Its ecosystem is like a rich forest with all kinds of fruit and wildlife, but for those who aren't experienced in exploring it, the foliage can look thick, dark, and foreboding. The sounds drifting from the trees seem mysterious and enchanting. But also a little dangerous. You know there are paths through the woods, but some aren't well-marked, and some lead to dead ends. Some take you the long way around and then loop back on themselves. If you want to become a Drupal developer, what path should you take to explore the vast Drupal ecosystem?
Guest author Marcos Cano, senior developer at Lullabot, outlines what we agree is a good path to follow, from absolute beginner to web development to Drupal developer. Edited by Amber Matz.
The resources listed in this article are a mix of free external resources, Drupalize.Me tutorials (some of which require a paid membership to access), and paid external courses.
Table of contents
- Connect with a supportive community
- Map out your learning goals
- "Learning" path: Read, study, practice
- Web development: fundamental concepts
- HTML and the DOM
- CSS: fundamental concepts
- PHP and Object-oriented Programming (OOP)
- Git basics
- LAMP server and infrastructure
- Set up a local development environment
- Get familiar with Drupal through site building
- Learn Drupal backend and module development
- Learn Drupal frontend and theme development
- Contribute to Drupal
- Other learning resources and programs
- "Doing" path: Get real-world experience
Connect with a supportive community
If you are new to web development and/or new to Drupal and your goal is to work as a developer on Drupal sites, this article outlines a path that will take you through web development fundamentals to essential concepts in Drupal site development. But first, get yourself set up to find and connect with others who can help you along the way.
Create a drupal.org account
More than just a piece of software, Drupal is a community. Your account on drupal.org describes, to some extent, your trajectory in this community. If you haven't already done so, go ahead and create your user account on Drupal.org. Like any trip, the journey begins when you decide to travel!
Find a mentor
A mentor can suggest resources and help you decide what makes the most sense for you to learn next. They can provide you with a vision of the overall process, set realistic expectations, and help you with questions or blockers.
Connect with a local Drupal meetup, or engage with the various Drupal communities over Slack and express your desire to find a mentor. Often folks in these groups and channels will be happy to connect you. Finding someone near your location -- or at least in your time zone -- can make it easier to meet through video calls.
Also, familiarize yourself with Drupal's values and code of conduct. It's good to make sure they resonate with you.
Map out your learning goals
Set realistic expectations and plan your steps. Depending on where you start, you might need to spend more time with basic concepts, or you might be able to dive into learning how to write Drupal code immediately.
Divide the path ahead of you into 2 distinct pathways: Learning and Doing. The "Learning" path is focused on reading, studying, and practicing in sandbox environments, while the "Doing" path is focused on gaining experience with real-world applications or on-the-job learning.
"Learning" path: read, study, and practice
Set aside some time to read, study, and practice on your own. Even though some people are comfortable with the learn-by-doing approach, Drupal development is complex enough for this to be a daunting task if you don't have some familiarity and practice with fundamental concepts. Here are some suggestions to get you started.
Web development: fundamental concepts
Goal: Understand HTTP, how browsers talk to servers, and be familiar with terms such as GET, POST, 200, 403, and 404.
- How the Web works (developer.mozilla.org)
- HTTP -- an Application-Level Protocol (dev.opera.com)
- HTTP: Let's GET It On! (dev.opera.com)
- HTTP: Response Codes (dev.opera.com)
- What is the difference between webpage, website, web server, and search engine? (developer.mozilla.org)
- What is a web server? (developer.mozilla.org)
- What is a Domain Name? (developer.mozilla.org)
Understanding HTML and the DOM
Goal: Recognize the main parts of an HTML document, understand when to use each of the main semantic elements, know what the DOM is, and use development tools built-in to certain browsers.
- Web Demystified (video playlist) (youtube.com)
- Introduction to HTML (developer.mozilla.org)
- Tutorials - HTML (developer.mozilla.org)
- Introduction to the DOM (developer.mozilla.org)
- The Basics of Chrome Dev Tools (medium.com)
- Firefox Developer Tools (developer.mozilla.org)
CSS: fundamental concepts
Goal: Define CSS, apply CSS to a simple HTML document, have a basic understanding of how CSS works and is structured.
- CSS first steps (developer.mozilla.org)
Further your understanding with:
- Learn CSS (web.dev)
Further your understanding with:
This resource should provide you with a basic understanding of the importance of accessibility, common mistakes, and tools to help check accessibility compliance.
Understanding accessibility from the beginning of your web development learning journey will solidify your understanding of HTML and the DOM and ensure that you understand the implications of how your application's code is interpreted by a broad range of users and devices.
Start with the "Key Tutorials" and further your understanding with the resources listed in the "Other documentation" and "See also" sections:
- Accessibility (developer.mozilla.org)
PHP and Object-Oriented Programming (OOP)
Goal: Use concepts in object-oriented PHP to build a sandbox application.
Further your understanding with the courses and resources listed on:
Goal: Clone a Git repository, create a new branch, edit a file, and check differences against the default branch.
Further your understanding with the external resources listed on this page:
LAMP server and infrastructure
LAMP refers to a stack of "infrastructure" software that can host PHP applications, like Drupal. Simplified, LAMP stands for Linux, Apache, MySQL, PHP. However, there are a number of alternatives within each component of this stack that can be used to host a dynamic web application.
Goal: Understand the infrastructure required for a CMS such as Drupal.
- LAMP (software bundle) (wikipedia.org)
Set up a local development environment
Goal: Set up a local Drupal development environment on your computer using DDEV.
DDEV is one of several Docker-based local development environment setups that you can use to practice Drupal development.
- Local Development Guide (drupal.org)
- DDEV docs (ddev.readthedocs.io)
Further your understanding with the resources and tutorials listed on this page:
Get familiar with Drupal through site building
Goal: Recognize fundamental concepts in Drupal site building and administration. Note: Drupal 8 resources will apply to Drupal 9+ sites, too.
Go through all chapters of the Drupal User Guide.
Further your understanding of site building tools and concepts with this guide to Drupal site building:
Learn Drupal backend and module development
Goal: Understand how Drupal code is structured, where to write your own code, some common Drupal hooks, and some patterns to follow (using controllers, plugins, services, etc.).
Go through this guide to Drupal backend development:
Further your understanding by learning Symfony, since Symfony components are part of Drupal's codebase. Focus your study on Symfony 4 for Drupal 9 and Symfony 5 for Drupal 10.
Drupal 10 (scheduled to be released June 2022) is planned to contain Symfony 5 components.
Learn Drupal frontend and theme development
Start with this guide to Drupal theming:
Further your understanding with Drupal's community docs on theming:
- Theming Drupal (drupal.org)
- Theme system overview (api.drupal.org)
Contribute to Drupal
Little secret: This is the best way to learn Drupal.
Goal: Understand how Drupal contribution works.
Start with: - Contributor Guide (drupal.org)
Further your understanding:
- Spend some time trying to contribute. Your mentor should be able to help you find an appropriate task for you at this point. If you don't have a mentor, read through the Contributor Guide and decide on what role you want to initially adopt and find a task. (See the links in the Contributor Guide sidebar.)
- Go to: Drupal project issues
Other learning resources and programs
- Discover Drupal (drupal.org)
- Drupal Career Online (drupaleasy.com)
- Acquia Certification Exam Preparation guides (Drupalize.Me)
- Drupal.tv (drupal.tv)
- Debug Academy (debugacademy.com)
- Jonathan Daggerhart videos (youtube.com)
"Doing" path: Get real-world experience
Few people will be willing to hire you as a Drupal developer if you can't demonstrate Drupal experience. You acquire this experience by developing with Drupal. But how do you get some real-world experience developing with Drupal if no one will hire you? Here are a few ideas to help you avoid this chicken-and-egg problem:
Choose a side-project
Goal: Launch a resume-worthy side project.
Go ahead and start implementing that (simple) side-project you have been thinking about for some time. Or just put on your client hat, specify some characteristics of a fictitious site, and then go through the exercise of implementing it from scratch. Keep these around once you finish. They might be a good source when talking about what you know with potential employers/clients.
Partner with an agency or freelancer as an apprentice or intern
Goal: Enter into a short-term apprenticeship or internship working on Drupal sites.
Maybe your mentor can help you with some networking, or perhaps they can suggest how to look for an opportunity to learn in a real-life project. The important thing here is to focus your expectation on the learning opportunity, not on the monetary earnings this could bring you.
Contribute to the Drupal project!
Goal: Contribute to resolving, testing, or documenting an issue in a core or contributed issue queue.
As mentioned earlier, several Drupal developers refer to the experience of contributing to Drupal as one of the best learning experiences of their careers. Don't set your expectations too high, though. It's often frustrating. Many times, it's hard to find where to even begin. Arm yourself with a good deal of patience and motivation to help. If you have this as your starting point, your contribution experience has very little chance of going wrong.
Get that job
Goal: Identify potential employers and apply for Drupal developer jobs.
Hopefully, at this point, you will have created connections in the Drupal community that could lead to interesting opportunities. Your mentor might also be a great reference point in what your next steps could be. Here are some additional suggestions:
- Drupal.org has a job board. Keep an eye in there for opportunities that might be a good match for your skills and values.
Your local user group may also be an excellent source for job openings. Connect with nearby Drupalers. Also, sponsors of Drupal events are often hiring.
Other job searching resources and job boards:
- StackOverflow Drupal job board
- LinkedIn Drupal Jobs
- Blacks in Technology
- Diversify Tech
- Women Who Code
Job searching tips
Goal: Build your network and connections with other Drupalers online.
- There are multiple Drupal Slack channels, and you can find the "Jobs" board inside that Slack channel. For example, here is a direct link to the Drupal jobs slack channel. (You will need to join the Drupal Slack first).
- Make sure your social network accounts know you are available. Twitter, LinkedIn, Facebook, and others. It never hurts to let your network know what you are looking for.
- Go after the job where it is. Do not restrict your search to published job offers. Talk to people in the community. Get in touch with companies you admire. Send unsolicited applications, even if it seems like a long shot. You never know which doors can open when you least expect.
Last words of advice: YOU ARE NOT AN IMPOSTOR
Goal: Join a community of Drupalers for encouragement and advice.
You might feel intimidated when interacting with teams that have decades of combined experience in the Drupal world. It's normal. We've all been there. Regardless of whether you have a Computer Science background or have taught yourself how the internet works, as long as you keep an honest approach towards learning, helping others, and letting others help you, everything will turn out fine. Some of the best developers have experienced impostor syndrome at some point in their careers, so don't let this be an obstacle to building your new professional life.
Joining a community of other Drupalers can help you navigate through the dense Drupal forest. Whether you're looking for technical solutions to a problem, a new job, or feedback on a presentation, a community can help you overcome feelings of doubt or imposter syndrome and help you thrive at any stage of your developer journey.
Welcome to the Drupal community! We are happy to have you here.
Great content, guys!
I'm building a Drupal Bootcamp to select and "create" new Drupalers to our company (Just Digital, from Brazil) and this guide came in great time! It's a very similar structure I was doing, since the web basics that a lot of people seems not to give the needed attention to the site building practice, but now I'll be using some of the contents (publicly available) that you showed here!
Thank you! Let's Drupalize more people! :)
Well structured, clear and encouraging guide,
Thanks !, it's really helpful
Thank you very much for this article. It's like a gem.
Thanks for sharing this informative blog, keep sharing.