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 10 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 10 Backend Specialist exam.
We have guides for the other Acquia exams listed in our Acquia Certification Exam Preparation guide.
Resources
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
HTML and CSS are the foundational languages for how browsers display web pages.
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
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 are objects that encapsulate the code for performing specific tasks in a reusable and decoupled way.
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
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
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 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
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
- http://www.yaml.org
- YAML Sandbox module
- Find other tutorials and external resources related to YAML on our YAML topic page (Drupalize.Me)
Drupal's Routing API maps the URL of an incoming request to the code responsible for generating the content that is rendered in response.
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.
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
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 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
Develop Drupal Sites
GuideThere 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.
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 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.
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 are one of the ways that module developers can alter or extend Drupal without modifying existing code.
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.
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
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
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.
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.
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
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
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.
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
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.
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.
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.
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
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
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.
Drush is a command line interface that enables you to interact with your Drupal site without clicking around the graphical user interface (GUI).