The Magento 2 Certified Professional Developer exam is a lot harder than to the Magento 1 equivalent.
Many Magento 1 certified developers who enter the test expecting to pass have been disappointed.
The scenario based questions require the ability to analyze the description, and then relate it to the question and answers.
Generic OOP development principles have to be applied to the Magento 2 context.
This presentation covers the underlying principles and discusses some sample questions from the official study guide as well as some new ones. It also offers the opportunity to ask questions and discuss preparation techniques.
Attendees will get an idea of how ready they are to take the exam and how to prepare to pass the desired certification.
11. Magento 1 &
Magento 2:
Questions are developed by a
Community Advisory Board
Becoming Certified - (c) @VinaiKopp - #MageTitansMCR - 2018-11-10
12. Magento 1 &
Magento 2:
Each question is written to fit an
Exam Blueprint Objective
Becoming Certified - (c) @VinaiKopp - #MageTitansMCR - 2018-11-10
13. Magento 1 != Magento 2:
Time frame and
Review Process
Becoming Certified - (c) @VinaiKopp - #MageTitansMCR - 2018-11-10
14. Magento 1:
Months of online meetings and reviews
Magento 2:
One week focus group, all in one room
Becoming Certified - (c) @VinaiKopp - #MageTitansMCR - 2018-11-10
15. Magento 1:
Rather contrived, memorization friendly
Magento 2:
Scenario based, real life, more natural
Becoming Certified - (c) @VinaiKopp - #MageTitansMCR - 2018-11-10
16. Magento 1:
Questions about Config XML Paths and Class Names.
Becoming Certified - (c) @VinaiKopp - #MageTitansMCR - 2018-11-10
17. The Reasoning was:
"Magento Developers with experience will have written
them countless times and know them by heart."
Becoming Certified - (c) @VinaiKopp - #MageTitansMCR - 2018-11-10
18. This was before Magicento existed...
Becoming Certified - (c) @VinaiKopp - #MageTitansMCR - 2018-11-10
20. Magento 2:
No questions about things
with IDE autocompletion
Becoming Certified - (c) @VinaiKopp - #MageTitansMCR - 2018-11-10
21. How do the questions look like?
Becoming Certified - (c) @VinaiKopp - #MageTitansMCR - 2018-11-10
22. Each item has 3 Parts:
▸ The Scenario
▸ The Stem
▸ The Options
Becoming Certified - (c) @VinaiKopp - #MageTitansMCR - 2018-11-10
23. ▸ The Scenario
Information required to choose the correct answer
Becoming Certified - (c) @VinaiKopp - #MageTitansMCR - 2018-11-10
24. ▸ The Stem
The question
Becoming Certified - (c) @VinaiKopp - #MageTitansMCR - 2018-11-10
25. ▸ The Options
The possible answers
Becoming Certified - (c) @VinaiKopp - #MageTitansMCR - 2018-11-10
26. Valid answer keys:
▸ Choose 1 out of 4
▸ Choose 2 out of 4
▸ Choose 3 out of 5
Becoming Certified - (c) @VinaiKopp - #MageTitansMCR - 2018-11-10
27. If more than one answer has to be selected,
the number of required options is stated like this:
"Which three actions do you take? (Choose three)"
Becoming Certified - (c) @VinaiKopp - #MageTitansMCR - 2018-11-10
28. For questions with multiple answers,
the right number of options have to be selected and
all selected answers have to be correct.
Becoming Certified - (c) @VinaiKopp - #MageTitansMCR - 2018-11-10
29. ▸ No trick questions
▸ No “none of the above”
▸ No “all of the above”
▸ No “which of the following are true”
▸ No double negatives
Becoming Certified - (c) @VinaiKopp - #MageTitansMCR - 2018-11-10
31. "How do you fix the issue?"
"What actions do you take?"
"What is the effect of that code?"
Becoming Certified - (c) @VinaiKopp - #MageTitansMCR - 2018-11-10
33. (1/2)
You are working for an extensions vendor who protects their
intellectual property by validating licenses against a license server.
Customers are complaining that running any bin/magento command is
very slow after installing one of the companies extensions.
The extension adds a command to bin/magento.
While investigating, you discover the following code in the
command class:
public function __construct($license)
{
$this->isLicenseValid = $this->validateLicense($license);
parent::__construct();
}
Becoming Certified - (c) @VinaiKopp - #MageTitansMCR - 2018-11-10
34. (2/2)
public function __construct($license)
{
$this->isLicenseValid = $this->validateLicense($license);
parent::__construct();
}
How do you resolve the issue?
A. Implement local license validation instead of over the internet
B. Move the validateLicense() call into the execute() method
C. Check the license at random samples instead of every time
D. Cache the validation result in the Magento config cache
Becoming Certified - (c) @VinaiKopp - #MageTitansMCR - 2018-11-10
35. Answer:
B. Move the validateLicense() call into the execute() method
Becoming Certified - (c) @VinaiKopp - #MageTitansMCR - 2018-11-10
36. Magento Technical Guidelines
2.3. Class constructor can have only dependency
assignment operations and/or argument validation
operations. No other operations are allowed.
Becoming Certified - (c) @VinaiKopp - #MageTitansMCR - 2018-11-10
41. (back to the topic of exam questions)
Becoming Certified - (c) @VinaiKopp - #MageTitansMCR - 2018-11-10
42. SOME QUESTIONS HAVE QUALIFIERS.
What are qualifiers?
Becoming Certified - (c) @VinaiKopp - #MageTitansMCR - 2018-11-10
43. Qualifiers are part of the Stem:
▸ Keeping simplicity in mind ...
▸ Keeping maintainability in mind ...
▸ Keeping compatibility in mind ...
▸ Keeping testability in mind ...
Becoming Certified - (c) @VinaiKopp - #MageTitansMCR - 2018-11-10
44. WHAT IS THE PURPOSE OF QUALIFIERS?
They guide us to the correct answer.
Becoming Certified - (c) @VinaiKopp - #MageTitansMCR - 2018-11-10
45. Magento is flexible.
There are many ways to accomplish a goal.
Becoming Certified - (c) @VinaiKopp - #MageTitansMCR - 2018-11-10
46. We often have to make decisions
how to implement a requirement.
Becoming Certified - (c) @VinaiKopp - #MageTitansMCR - 2018-11-10
47. For questions with qualifiers
often more than one answer is technically correct.
Becoming Certified - (c) @VinaiKopp - #MageTitansMCR - 2018-11-10
48. Do we use ...
a preference,
a type argument configuration
or a plugin?
Becoming Certified - (c) @VinaiKopp - #MageTitansMCR - 2018-11-10
49. Do we use ...
an ORM model
or a Api Data model?
Becoming Certified - (c) @VinaiKopp - #MageTitansMCR - 2018-11-10
50. Do we inject ...
an interface
or a concrete implementation?
Becoming Certified - (c) @VinaiKopp - #MageTitansMCR - 2018-11-10
51. Depending on the circumstances,
every approach could be valid.
Becoming Certified - (c) @VinaiKopp - #MageTitansMCR - 2018-11-10
52. Faster development vs. better maintainability
More upgradable code vs. more performant code
...
Becoming Certified - (c) @VinaiKopp - #MageTitansMCR - 2018-11-10
53. ▸ lifetime of the project
▸ project budget
▸ developer skill level
▸ security considerations (internal / external access)
▸ use of third party modules
▸ desired code reuse
Becoming Certified - (c) @VinaiKopp - #MageTitansMCR - 2018-11-10
54. Qualifiers tell us which answer to choose
for the given scenario.
Becoming Certified - (c) @VinaiKopp - #MageTitansMCR - 2018-11-10
55. Maintainability?
Probably rules out options where code is copied.
Favor answers that make changes and upgrades simpler.
Becoming Certified - (c) @VinaiKopp - #MageTitansMCR - 2018-11-10
56. Compatibility?
Rule out options with a higher
extension conflict probability.
Becoming Certified - (c) @VinaiKopp - #MageTitansMCR - 2018-11-10
58. Testability or Reusability?
Favor answers that allow replacing collaborators
with test doubles or other classes.
Becoming Certified - (c) @VinaiKopp - #MageTitansMCR - 2018-11-10
60. You need to customize the Magento_Checkout/js/proceed-to-checkout
JavaScript module.
How do you do that, keeping compatibility in mind?
A. Add a path override configuration to the requirejs-config.js
B. Add a global map alias override to the requirejs-config.js
C. Copy the file proceed-to-checkout.js to the folder
Magento_Checkout/js/ of the active frontend theme
D. Add a JavaScript mixin to the requirejs-config.js
Becoming Certified - (c) @VinaiKopp - #MageTitansMCR - 2018-11-10
61. Answer:
D. Add a JavaScript mixin to the requirejs-config.js
Becoming Certified - (c) @VinaiKopp - #MageTitansMCR - 2018-11-10
63. Study Guide
The study guide is based on the exam blueprint.
Becoming Certified - (c) @VinaiKopp - #MageTitansMCR - 2018-11-10
64. SWIFT OTTER STUDY GUIDES
Based on the Magento U study guide
but much expanded.
65. The Official Technical Developer Guidelines
(ask Why?)
Becoming Certified - (c) @VinaiKopp - #MageTitansMCR - 2018-11-10
66. Don't memorize OOP patterns and principles for the exam.
Without experience, that does more harm than good.
Becoming Certified - (c) @VinaiKopp - #MageTitansMCR - 2018-11-10
67. Better to go from first principles:
▸ What is a source code dependency?
▸ What are the consequences of a dependency?
Becoming Certified - (c) @VinaiKopp - #MageTitansMCR - 2018-11-10
68. Deeper understanding
of the principles behind the labels.
Becoming Certified - (c) @VinaiKopp - #MageTitansMCR - 2018-11-10
69. ▸ Interfaces and the Liskov Substitution principle
▸ Coupling and Cohesion
▸ Favor Composition over Inheritance
Becoming Certified - (c) @VinaiKopp - #MageTitansMCR - 2018-11-10
70. Familiarize yourself with
Kent Beck’s 4 rules of simple design.
Becoming Certified - (c) @VinaiKopp - #MageTitansMCR - 2018-11-10
71. 1. Passes all tests
2. Expresses intent 3. No duplication
4. Fewest possible elements
Becoming Certified - (c) @VinaiKopp - #MageTitansMCR - 2018-11-10
72. When a question has the qualifier
“Keeping simplicity in mind...”
apply these rules.
Becoming Certified - (c) @VinaiKopp - #MageTitansMCR - 2018-11-10