In December 2019, after a career in journalism, I decided to become a web developer. A few months later, I was one. A very junior web developer, with seven months of experience, none of it in an actual job. I knew a bit of PHP, Symphony, CSS, HTML and Git. That was it.

To my surprise, I was recruited by a company who was looking for people like me: with not much experience in web development but a solid background in another field. They were looking for a Drupal developer and told me that it was going to be me. And that's how I became a very junior Drupal dev.

It was not easy at first. My first task was to write a custom module to handle translations in 25 languages from a remote server and load them into the right Drupal websites. It took me three months to complete the task. I could probably do that in three days now.

What's next is what I wish I knew back then, when starting with Drupal.

Read on or jump to each section: 

1. Cover the Basics

It might sound obvious but having a global understanding of what Drupal is and does will save you lots of time. Drupal comes with its own infrastructure, and ways of doing things. So invest in training.

Drupal training is offered by a number of organizations, including Evolving Web. We have an extensive catalog for both developers and content editors, so feel free to reach out!

Here are other resources that can be helpful:

On top of the official documentation on drupal.org, I’ve found that Drupal at your fingertips is the written best resource around. It's full of detailed practical examples that you can reuse in your own work.

2. Make Drush your New Best Friend

Drush is the command line tool that lets you interact with your website and its database.
On top of the command you're going to use the most, drush cr (to clear the cache), Drush will also help you synchronize and update your database, manage your modules, execute custom scripts, and generate a lot of boilerplate code.

This last command (the drush generate command) is especially valuable because it creates boilerplate code for things like modules, forms, controllers, and services following Drupal best practices. Since Drupal comes with its own ways of doing things, knowing it all takes time. The good thing is that Drush can help you generate what you need the right way. You need to create a custom module? You can do it with Drush. A controller? You can do it with Drush. A form? A plugin? A field? A hook? A custom entity? A JS file? An SDC? A service? Drush can do all that, the right way and save you a lot of time.

3. Use DDEV to Focus Only on Drupal

DDEV is an open source tool that manages your project’s Docker containers. It's in my opinion, and in the opinion of the vast majority of developers that I know, the best tool around to do that. And it's the official Drupal development tool, so using it is a great idea.

If you want to test something in Drupal. you can spin up a stable new environment in just a few minutes with DDEV. It makes it easy to set up and you can focus on coding. And if you need to work on several projects at the same time, which is often the case if you work in a web agency, DDEV will help you smoothly transition from one environment to another.

Bonus point: It’s not just for Drupal. DDEV also supports WordPress, Laravel, Symfony, Magento, Node.js, and many others.

4. Use the Examples for Developers Module

The Examples for Developers module is designed to help you learn how to build your own Drupal modules. It contains 33 sub-modules with concrete examples on how to hack Drupal core, the right way. If you want to know more about events, cache, entities, queues, and so on, this is a must. The documentation is good, and it covers a lot of topics as far as the core APIs are concerned.

Other modules, such as Webform and Entity Browser,  also contain Examples sub-modules. So before you start looking for a solution to change a module's behaviour, check if there is an Examples module in it. Maybe the job has already been done for you!

5. Devel is in the Details

Devel is a helpful module that provides a wealth of information about your Drupal site, including details about the current request, database queries, and more. It also provides clean and readable variable outputs to help with debugging. But that’s not all—Devel has a great feature called devel generate, which lets you quickly create dummy content on your website. It’s incredibly useful when you need content fast to test the code you just wrote!

6. Join the Community

The community aspect of Drupal is everything. This is how Drupal was built, and how it evolves and is maintained. So first create a profile on drupal.org. It will put you on the map and it will be useful if you want to report bugs, or later help fix them.

More importantly, Drupal has a lot of community contributed (contrib) modules that you should be using. You can do everything on Drupal by writing custom code but that doesn’t mean you should. When you want to add a new feature to your Drupal website, check first if there is a contrib module that does that. Most of the time there is and by using this module, you will save a lot of time to focus on the very specific needs that you have that are not covered by the community. It's also a good thing in the long run since you don't have to maintain code that you didn't write.

Where to connect with the community:

7. Of Course, AI

Drupal has been around for a long time and AI tools know a lot about it. Tools like ChatGPT, Claude or Mistral AI can quickly answer questions about Drupal best practices or generate boilerplate code. These tools are perfect but are definitively helpful and I use them everyday. A word of caution though: don't feed AI any code written by you or your coworkers unless you’re using a locally hosted LLM with no internet access. Protect your work.

8. A Good IDE is Not an Optional

I try as much as possible to use open source software but I make an exception for PhpStorm. It's a great code editor for PHP and Drupal in particular. The way Drupal is integrated into the software really makes your life easier. You have useful code hints, coding standards integrated, and so on. You can achieve a similar setup with VS Code and some plugins but it requires more time.

9. Xdebug to Stop Time

Xdebug is by far the best debugging tool I use. While tools like Devel are helpful for quickly dumping variables, nothing matches the power of Xdebug when you need to dig deeper.

By enabling Xdebug, you will be able to put breakpoints in your code and stop its execution at any given moment. This then gives you the ability to inspect everything Drupal has in store at this specific moment (meaning that you can also get lost because Drupal has a lot in store).

It's the best way to take a look at how Drupal does things behind the scenes and understand how you can make it do what you want. I use Xdebug on a daily basis to inspect my variables, see what I send to templates, check the cache status of an object… And since it's fully integrated with DDEV, you won't even have to sweat to enable it. Cherry on top? In PhpStorm, you can play with variable values live to try things before actually writing the code. It will save you a lot of time.

Learn, Build, Repeat

Now, this list is long enough. Hopefully it will help you with your Drupal journey! Keep in mind that developing with Drupal can be fun and you will get there. There are great tools out there to help you thrive as a Drupal dev, so don't be afraid to use them!

Ready to take your Drupal skills to the Next Level?

If you’re serious about mastering Drupal, investing in structured training will save you months of struggle.

Explore our training.