How to Become a Drupal Developer

Tenerife, Spain's wonder, the northern rainforests where the trees grow horizontally.
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

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!

Create Drupal.org account

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.

Find Drupalers near you

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.

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.

CSS: fundamental concepts

Goal: Define CSS, apply CSS to a simple HTML document, have a basic understanding of how CSS works and is structured.

Further your understanding with:

JavaScript: fundamental concepts

Goal: Create a "Hello World" JavaScript file, and read and understand basic JavaScript syntax.

Further your understanding with:

Accessibility

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:

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:

Git basics

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.

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.

Set up Drupal on DDEV

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

Goal: Understand basic frontend development in Drupal, how a theme works, how to override markup, preprocessors, templates, some Twig knowledge, where to add your CSS and JavaScript assets, and more.

Start with this guide to Drupal theming:

Further your understanding with Drupal's community docs on theming:

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

"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:

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:

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.

Related Topics: 

Comments

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

Add new comment