Guide

Acquia Certified Backend Specialist Exam for Drupal 9

Acquia Certified Backend Specialist Exam

What will you learn

  • What to study for the Acquia Back End Specialist exam
  • Concepts you should know as a Drupal back end developer

Overview

The Certified Drupal 9 Backend Specialist exam is part of Acquia's Drupal certification program. The exam consists of 60 scenario-based questions that show your skills and knowledge of a developer in the areas of building and implementing Drupal solutions using code (module development). We've gathered together a concise list of the Drupalize.Me tutorials, and other resources, that will help you prepare for Acquia's Certified Drupal 9 Backend Specialist exam.

We have guides for the other Acquia exams listed in our Acquia Certification Exam Preparation guide.

Drupal 9

1. Fundamental web development concepts

In this section of the exam you need to demonstrate knowledge of HTML and CSS, object-oriented PHP programming concepts, managing dependencies with Composer, and automated testing, along with being able to demonstrate the use of Git for version control.

1.1 Demonstrate knowledge of HTML, CSS, and JavaScript

More information

HTML and CSS are the foundational languages for how browsers display web pages.

More information

JavaScript (JS) is an interpreted programming language that is widely used on the web to control web page behavior and interactivity.

1.2 Demonstrate knowledge of Object-oriented PHP programming concepts

Categories
Drupal 8, 9, and 10
More information

Object-oriented PHP utilizes classes and objects to organize code into reusable chunks. This approach helps us organize complex applications, such as Drupal, into modular code called classes that can be reused across the entire system.

Services

Topic
Categories
Drupal 8, 9, and 10
More information

Services are objects that encapsulate the code for performing specific tasks in a reusable and decoupled way.

Categories
Drupal 8, 9, and 10
More information

Dependency injection is a design pattern commonly used in object-oriented software architectures in order to support Inversion of Control.

1.3 Demonstrate knowledge of managing dependencies using Composer

More information

Composer is the preferred dependency management solution for PHP, is used by Drupal core, and is becoming increasingly popular for managing the modules and themes used for a Drupal project.

1.4 Demonstrate the use of Git for version control

More information

The Git version control system can help you keep track of changes in your codebase and make sure you don't unintentionally lose work.

1.5 Demonstrate knowledge of Automated Testing concepts

Drupal 7, 8, 9, and 10
More information

Drupal includes the PHPUnit testing framework. This enables us to write unit and functional tests to attempt to minimize the number of bugs in our application.

2. Drupal core API

2.1 Demonstrate an ability to register paths to define how URL requests are handled in Drupal using Routing system and Menu API

Drupal 8, 9, and 10
More information

YAML, which stands for YAML Ain't Markup Language, is a human-readable data serialization format that's been widely adopted in a variety of use cases in Drupal. Anyone wanting to write modules, or themes, for Drupal will need to understand YAML syntax. Even site builders are likely to encounter YAML at least in passing as YAML is the data-serialization format of choice for Drupal's configuration management system. Good thing it's pretty easy to learn even with the most basic of programming backgrounds.

This tutorial will look at the YAML data format and provide examples of how to write and read YAML. Starting with an introduction to the language's syntax and some of the strengths of YAML. Then looking at the difference between scalar data types like strings and integers, and collection data types like lists and associative arrays.

Since YAML in the Drupal world is read into PHP and ultimately becomes a PHP data structure that we can use in our own code we'll also look at how the YAML we write in a .yml file is represented in PHP data types. To do this we'll use the YAML Sandbox module that provides a handy textarea into which we can type YAML and have it parsed into PHP data structures.

Learning objectives

  • Explain what YAML is and its strengths as a data serialization format
  • Create scalar key/value pairs in YAML
  • Create lists, and associative arrays using YAML collections
  • Understand how the YAML you write is represented in PHP

Tips

  • In Drupal, use the .yml extension and not .yaml
  • Ensure your code editing application is configured to use spaces (preferably 2 spaces, as per Drupal coding standards), not the tab character when the TAB key is pressed. If you have tab characters in a YAML file within a Drupal environment, a fatal PHP error will be thrown and you'll see a White Screen of Death (WSOD).
  • Copy and paste from an existing YAML file to ensure the formatting is correct, and edit from there.

Additional resources

Routing

Topic
Categories
Drupal 8, 9, and 10
More information

Drupal's Routing API maps the URL of an incoming request to the code responsible for generating the content that is rendered in response.

Menus

Topic
Drupal 7, 8, 9, and 10
More information

A site’s main navigation elements, whether they be in the header, footer, or sidebar, are composed of links built using Drupal's menu system. Drupal allows site administrators to build menus while also allowing module developers to add and alter menus in code.

Categories
Drupal 8, 9, and 10
More information

Controllers are the portion of a Drupal module that handle responding to an incoming request with the appropriate response data.

2.2 Demonstrate ability to build, alter, validate and submit forms using Form API

Categories
Drupal 7, 8, 9, and 10
More information

Drupal provides a standard, secured method for module developers to add forms to a Drupal website. Learn how to use the Form API to build, validate, and submit a custom form.

2.3 Demonstrate ability to interact with the Entity system using Entity API

Entities

Topic
Drupal 7, 8, 9, and 10
More information

Entities are the fundamental building blocks that make up any Drupal site. Having a good understanding of the Entity system is an important part of ensuring the data model of your Drupal site is set up properly.

2.4 Demonstrate ability to use core APIs for building and extending Drupal functionality

Categories
Module Development, Backend and Infrastructure
Drupal 7, 8, 9, and 10

There are a lot of different APIs in Drupal. You should look through the resources in our Develop Drupal Sites guide and be familiar with all of them. In particular, you should make sure you understand the Plugin and Field APIs.

More information

Fields are the building blocks of Drupal's powerful content modeling system. The Field API allows for the development of custom field types to suit almost any data display and collection needs.

Hooks

Topic
Drupal 7, 8, 9, and 10
More information

Hooks allow modules to alter and extend the behavior of Drupal core, or another module. As a Drupal developer, understanding how to implement and invoke hooks is essential.

Categories
Drupal 8, 9, and 10
More information

Plugins are one of the ways that module developers can write code that extends Drupal. The Drupal Plugin API allows a module to provide functionality in an extensible, object-oriented way.

Events

Topic
Categories
Drupal 8, 9, and 10
More information

Events are one of the ways that module developers can alter or extend Drupal without modifying existing code.

Drupal 8, 9, and 10
More information

The Render API consists of a standard format for describing data using structured arrays and a process for converting those arrays into the HTML a user sees when interacting with a Drupal site.

Categories
Drupal 8, 9, and 10
More information

Use the Configuration API to access configuration data stored by a module, provide default configuration, create settings forms, and other tasks such as overriding settings for a local environment.

3. Debug code and troubleshooting

3.1 Demonstrate ability to debug code

Drupal 7, 8, 9, and 10
More information

Debugging is the practice of troubleshooting an application through the use of tools and processes in order to find and fix bugs, or better understand the underlying code.

3.2 Demonstrate ability to troubleshoot site problems

Categories
Drupal 8, 9, and 10
More information

Knowing how to clear Drupal's cache is an important skill for any developer. You'll likely find yourself doing it frequently in order to get Drupal to register the changes you make to your code, or other updates you make via the UI. It is also a good first step to trouble shooting problems with your Drupal site: Clear the cache before you do any other debugging to ensure it's not just a bad cache entry.

4. Theme integration

4.1 Demonstrate ability to work with Drupal's theme system using Render API and JavaScript APIs.

Drupal 8, 9, and 10
More information

The Render API consists of a standard format for describing data using structured arrays and a process for converting those arrays into the HTML a user sees when interacting with a Drupal site.

Drupal 7, 8, 9, and 10
More information

JavaScript files are included by a module or a theme by creating an asset library. Using this asset library system you can selectively choose which files to load, overwrite existing files, or customize them to suit your needs.

4.2 Demonstrate ability to work with Twig templates and syntax

Drupal 8, 9, and 10
More information

Twig is a template engine for PHP, which is the language used in Drupal. Twig can be used to design templates in generic PHP applications as well as Drupal themes.

5. Performance

5.1 Demonstrate ability to analyze and resolve site performance issues arising from site configuration

5.2 Demonstrate ability to analyze and resolve site performance issues arising from custom code

Drupal 7, 8, 9, and 10
More information

Debugging is the practice of troubleshooting an application through the use of tools and processes in order to find and fix bugs, or better understand the underlying code.

More information

Performance and scalability determine how fast your application can serve a page and to how many users at a time.

5.3 Implement Drupal caching strategies using Cache API

More information

The Render API is capable of detecting poorly-cacheable (highly dynamic) parts of a page and rendering them later using a process called auto-placeholdering. This works by using #lazy_builder callbacks to lazy load certain very dynamic subtrees of a render array. The place in the array where that very dynamic content would appear is first assigned a placeholder. At the very last moment it is replaced with the actual content.

This allows Drupal to do things like cache the overall page in the Dynamic Page Cache despite parts of the page being too dynamic to be worth caching. It also allows the Render API to assemble a page using cache fragments combined with non-cacheable elements.

In this tutorial we'll:

  • Discuss what lazy builders are and how they work in conjunction with placeholders to speed up the rendering pipeline
  • Cover some common gotchas for lazy builders
  • Look at some example code that implements a lazy builder callback

By the end of this tutorial, you should know how and when to use the #lazy_builder property of a render array and how Drupal uses placeholders to increase the cacheability of content and speed up the rendering process.

More information

The individual items that make up the content of a page impact the cacheability of that page. In order for Drupal's cache and external caches to better understand how the content varies on a page, module developers use the #cache render element property. The #cache property defines cacheability metadata for individual elements in a render array.

Additionally, these Render API elements can become fairly complex. The calculation of what the final HTML output should look like often involves looking up content in the database, checking multiple conditions, maybe querying an external API, and various other tasks. This can cause turning a render array into HTML to become quite expensive. In order to speed up this process, the Render API will cache the generated HTML for each element and reuse it on future requests whenever possible -- but only if you tell it to do so.

In this tutorial, we'll look at:

  • How render caching impacts the performance of a page
  • Defining the cacheability of an item with cache tags, cache contexts, and cache max-age
  • Examples of using the #cache property in a render array

By the end of this tutorial you should know how, and when, to use the #cache property when defining render arrays.

Drupal 8, 9, and 10
More information

Caching in Drupal is controlled by Drupal's Cache API which is used to store any type of data on a permanent or temporary basis. Some types of data tend to take a long time to compute, but utilizing the Cache API in your module can help your site load data more quickly.

6. Security

6.1 Demonstrate ability to analyze and resolve security issues arising from site configuration

6.2 Demonstrate ability to analyze and resolve security issues arising from site custom code

6.3 Demonstrate the ability to implement Drupal core security mechanisms

The 3 subsections in this domain are all covered with different resources in our Security topic.

Security

Topic
Drupal 8, 9, and 10
More information

Keeping a Drupal site secure requires monitoring security announcements, performing regular updates, and knowing how to properly use Drupal’s APIs to write secure code.

7. Leveraging community

7.1 Demonstrate the ability to contribute to the community

More information

As an open source project, Drupal depends on community contributions in many forms including documentation, code, translation, speaking, organizing events, mentoring others, and even donating money.

7.2 Demonstrate ability to write code using Drupal Coding Standards

Drupal 7, 8, 9, and 10
More information

Coding standards provide a set of rules for how your code should be formatted, and best practice guidelines for naming conventions and the location of files.

General knowledge

These are not required for the exam, but topics that we think you should know and will complement the knowledge directly in the exam.

More information

Drush is a command line interface that enables you to interact with your Drupal site without clicking around the graphical user interface (GUI).

“Drupalize.Me has trained thousands of Drupalistas. Their video lessons help to address our constant need for more Drupal talent. Drupal needs training like this to support its growth.”
Dries Buytaert
Drupal Founder and Project Lead
Photo of Dries Buytaert
“They’re easy to understand. They’re thorough. They’re funny. They’re always entertaining, and it makes it easy to learn parts of Drupal and how you can integrate it into your workflow and learn more and have a good time doing it.”
Roger Carr
Drupalize.Me Member
Photo of Roger Carr
“The mission of the Drupal Association is to foster and support the Drupal software project, the community, and its growth. Drupal education, like that provided by Drupalize.Me, is important to this mission.”
Megan Sanicki
Former Exec. Director, Drupal Assoc.
Photo of Megan Sanicki

FAQs

Am I required to sign a contract?
No. You can purchase a membership and/or cancel any time. Drupalize.Me is a pay-as-you-go service.

Can I preview tutorials before joining?
Yes! Just navigate to our tutorial library. Our free tutorials are labeled with a green "FREE" tag.

Can I watch videos on my mobile device?
Yes! Drupalize.Me is a responsive site and can be accessed in the browser on any mobile device. More FAQs