The BuildAModule Guide to Acquia Certification
If you're considering taking the Acquia certification exam, it's probably a good idea to beef up on a few topics, even if you're a veteran. The certification program is still new, so it has yet to be seen just how valuable a meter it is for potential employers to gauge prospective employees, but the feedback so far has been generally positive. People who have taken the exam feel like the questions are thoughtful and that they reflect scenarios that a real-world Drupalist will have to deal with at some point or another. They're also tough. Like, sweating bullets tough. So, before plunking down the $250 to take the exam, it could do you good to review some material either as a refresher or to introduce you to the major topics that are outlined in the exam blueprint.
Because BuildAModule has been focused on dispensing practical Drupal learning for the last four years, we have a set of videos that map almost perfectly to the requirements of the Acquia certification. In addition to covering the broad topics, we also cover the in-between steps and concepts. From what we heard, questions on those in-between subjects are likely to emerge on the exam, so it could be a perfect fit, especially if you want to do some quick review.
Below is a mapping of BuildAModule videos to the Blueprint for the certification exam. Each heading is one of the domains or sub-topics that are evaluated. The paragraph below each sub-topic is a description of what BuildAModule videos are relevant to the topic. At this point, nearly all links point directly to BuildAModule. There are two other guides to other resources online, including Tanay's that references mostly Drupal.org resources, and Webchick's study guide.
Domain 1.0: Fundamental Web Development Concepts
1.1. Demonstrate knowledge of HTML and CSS
The video collections on BuildAModule assume a basic understanding of HTML and CSS, though we do go into how to rapidly test and adjust CSS using Firebug (the same skills apply to Chrome's developer tools). We also cover some common use cases for CSS such as hiding elements on the page and changing a background image.
1.2. Identify PHP programing concepts
If you're new to PHP or to coding in general, the PHP Programming Basics will expose you to the most important techniques in procedural PHP programming with an angle towards eventually working in Drupal modules and themes. The exam doesn't appear to be focused on Drupal 8 yet, but you can also spend some time with our Object Oriented Programming (OOP) as well.
1.4. Demonstrate the use of Git for version control
We created an entire series around using Git called Change Management and Version Control. In it, we first go through the process of installing Git and explain the major concepts behind version control in general. We then dive into the various Git commands and how to use them in a practical Drupal project. We also go over common branching strategies, like GitFlow, how to version control configuration from the database and a lot more.
Domain 2.0: Site Building
2.1 Demonstrate ability to create and configure Content Types with appropriate fields and field settings for building basic data structures
In the Build Your First Drupal 7 Web Site we go through the process of building a complete, practical Drupal 7 web site. Near the beginning, we explore how fields work and how to add new fields. We cover several of the default field types like taxonomy reference and node reference, as well as the Date field and Fivestar fields from contrib.
2.2. Demonstrate ability to configure field display and view modes for content types
We look at the field display settings in the process of hiding a field title (a common task). We also cover what view modes accomplish, how to choose the correct view mode for the right context and how to use the Display Suite module to modify and add new view modes.
2.3 Demonstrate ability to create and use Taxonomy vocabularies and terms for classification and organization of content
2.4 Demonstrate ability to configure Blocks for building layouts from information widgets
After we discuss the role of blocks and what they are, we cover how to identify blocks as well as how to enable and configure blocks. We go through the processing of adding a new block and configuring its visibility settings. In a separate video collection called ]Advanced Site Building in Drupal 7](https://buildamodule.com/collection/advanced-site-building-in-drupal-7) we cover multiple methods for arranging blocks, including exploring the Context and Panels modules.
2.5 Demonstrate ability to build main and alternative navigation systems by using Menus
We have an extensive section on working with menus, including how to work with with the menu listing page, how to add and position new menu items. We explore working with secondary menus and adding menus as blocks. The videos around these sections also work through the nuances of working with the menu system.
2.6 Demonstrate ability to create and configure Views for building content list pages, blocks and feeds
After we dive into what the Views module is for and explore the basic components of a view, we go deep into several examples for using views to create a calendar-style list of events and also build a block to display a single piece of related content. We also explore using contextual filters and relationships (some of the more advanced and complicated features of Views). One thing we don't cover yet is how to create an RSS feed with Views.
Domain 3.0: Front end development (theming)
3.1 Given a scenario, demonstrate ability to create a custom theme or sub theme
3.2 Demonstrate knowledge of theming concepts
In the first chapter of the Theming collection, called Important Drupal Theming Concepts, we discuss what theming is, review the numerous ways there are to modify the output of Drupal and how to choose the best method for each scenario. We explore the conventions behind view modes, field formatters and template files.
3.3 Demonstrate ability to build or override PHP templates for defining layout content
3.4 Demonstrate ability to use theme () functions for overriding custom output
3.5 Demonstrate ability to write template pre-process functions for overriding custom output
We cover the basics of creating a preprocessing function on the modular level or in a theme, and how to name them to work with templates or theme functions. We also explore ]how to get preprocessing functions to trigger only if certain conditions are met.
Domain 4.0: Back end development (coding)
4.1 Demonstrate ability to develop Custom Modules using Drupal API for extending Drupal functionality
4.2 Demonstrate ability to work with Drupal's Database Abstraction Layer for managing tables and CRUD operations on data
We walk through the process of creating a module that manages the entire CRUD setup. We begin by explaining what the Database Abstraction Layer does, and then build the schema for our module using the Schema module. After that we work through the process of INSERT-ing, DELETE-ing and SELECT-ing from the database using the Database API. We also explore the benefits of writing a dynamic SELECT query and using hook_udpate_N() to keep module databases up to date.
4.3 Demonstrate ability to debug code and troubleshoot site problems
Throughout each of our video series, we talk through the process of troubleshooting problems with the site. The best way to get a feel for the various approaches you can take in narrowing down problems is to watch the videos in order and see how we approach problems when they arise. Throughout the development collections, we use Xdebug in order to inspect variables and stop code mid-way through execution. However, we also explore other approaches to tracking down specific problems. Doing a search on BuildAModule for "troubleshoot" will bring up some interesting videos, as well as a search for "error".
4.4 Demonstrate ability to write code using Drupal Coding Standards
Reviewing the Overview of Coding Standards section will bring you up to speed on how to make sure your code is good to go. In it, we talk through how to deal with white space, operators, comments and arrays, among other things.
4.5 Demonstrate ability to analyze and resolve site performance issues arising from site configuration and custom code
Improving performance is one area we haven't covered much on BuildAModule. We do discuss the importance of using include files to improve performance, but do not walk through the steps of identifying non-performant code.
4.6 Demonstrate ability to analyze and resolve security issues arising from site configuration and custom code
When it comes to writing secure code, we cover the most common mistakes and solutions. We dive into using string filtering functions, setting proper access control and working with the database securely. When it comes to configuration security, the most common problems that come into play are assigning the wrong permissions to your users. We go deep into how permissions and roles work, and what control each permission in Drupal core gives a user. We also explore some best practices in setting up roles.