UPDATE 13 Mar 2015: this is one of the most viewed pages on my site. I am guessing people aren’t coming to it for my snarky comments. I reworded the list to make more sense. I will provide some guidance on how to find the answers in separate blog posts over time.
My Sarcastic, Original, Post
I saw this: Adobe CQ5 Interview Questions. OK, I’ll bite. I took a look.
A few (very few) of the questions make sense. For example: “What are the design patterns used in the dayCQ5?” Fair enough. Also, “how to implement localization?” and “how to connect an external DB from CQ5?” Those work.
But then there are some truly bizarre questions in there: “How can you inherit the properties of the same conversation in another dialog?” Say what?? A little context is needed, perhaps. “how to implement the etc/display?” OK…. Then there is my favorite: “What is the Manager of perseverance and how to implement?” I’m sorry, but with CQ5 you will need to manage your own perseverance. Maybe they were meaning persistence manager?
I think someone is either messing with people or has been relying too much on machine translation. Answer to the question, “how to implement localization?” The answer is, don’t copy/paste using Google Translate.
Original Source for the Mangled Translation
My Reinterpreted Version of the Questions
- What is the technology stack of Adobe Experience Manager?
Here’s some information about the technology stack.
- How would you architect an AEM application?
Wow. That is a hard question to answer briefly. I provide some links to guide you in your research..
- How is localization implemented in AEM?
AEM has some hefty tools for I18N.
- What is the way to connect an external, JDBC, server to AEM?
- What is segmentation as used with personalized content?
- How is access restricted or allowed to assets within AEM’s repository?
- What is the best way to perform redirects or URL rewrites?
- How is data stored? What is the Tar Persistence Manager? What is the TarMK? What is the MongoMK? How are they different? When should each one be used?
- What is an iparsys? What is a Sling resource type? What is a Sling super resource type?
- How are cq:include and sling:include JSP tags different from one another?
- What is a bundle? How do you create and deploy one?
- What is an Activator.java file?
- What is a Dispatcher farm? How is a farm configured?
- Have you created any custom components?
- Have you created any servlets?
- How can one component dialog inherit the properties from another component dialog?
- How is a web site implemented for a desktop browser vs. a smart phone or a tablet?
- From the original site: “How to implement the etc/display?” I’m not sure what this is about.
- How can resources be ordered in the repository?
- What is reverse replication? How is it implemented?
- What are common design patterns used in AEM 6? What are some anti-patterns?
Value of Example Questions
It is an interesting set of questions. These questions are, by no means, a complete overview of what is needed to know to get a job as an AEM developer and to do that job well. On the whole, though, if a person can answer these correctly they are a good candidate for the position.
One thing to take in account as well is what role does the position fill? There are three basic divisions of developer speciality. The questions above address aspects of each role. In some companies, a super star who knows how all of AEM works is needed. In other companies, individuals don’t need great width of knowledge over many roles, but a great depth of knowledge in a few roles.
- Advanced Developer
- System Administrator
The Role of an Advanced Developer
An advanced developer works with the OSGi stack. They need to be able to create OSGi bundles and services and use configurations. The common model for development of packages and bundles that gets support tools from Adobe is using Maven, Apache Jackrabbit File Vault and Eclipse for development. Adobe has plenty of documentation to guide development using this model. One good thing is that these things can be learned with Apache Sling and Apache Sling development tools. The basics do not change much for this sort of development when going from Adobe Sling to AEM.The tasks of the advanced developer, working with servlets, events and the JCR API, are possible to do with Apache Sling. Some of the details are different, but the basics are the same. You must use the latest version build of Apache Sling as possible. That is not easy.
The Role of (not so advanced) Developer
The (not so advanced) developer deals more with the layers that Adobe has added with its AEM Sites and other products to Apache Sling. Using Sightly and scripting for building components is the same in the (most recent builds) of Sling. But to that Adobe adds the WCM constructs that provide the real value of AEM Sites. AEM Sites has its own, built-in, framework for pages. There is no concept of ‘Page’ object in Apache Sling like there is in AEM. The page framework makes it possible to do things much more easily in AEM for the authors. But the developer has to work within that framework for the magic to happen.
The developer has to understand things that are not found in Apache Sling: designs, templates, workflows, live copies and client libs adds complexity to the developer’s job that needs to be accounted for. In return for that complexity, the developer can do some amazing things with much less trouble. To learn these things the developer must have hands-on experience with the Experience Manager from Adobe, not Apache Sling. To get over the steep initial learning curve, training is very valuable. Doing a death march through the documentation from Adobe and creating examples is a good way to learn what the tool can do, as well.
The Role of a System Administrator
The system administrator can learn quite a bit by working with (a recent build) of Apache Sling. Unlike with the developer, the Adobe constructs provide a disproportionate amount of benefits in return for the added complexity. Setting up AEM in the most optimal way is what the system administrator does. The answer to many questions that system administrators ask do not always have yes or no answers. There are usually a lot of, “depends,” attached to them. The system administrator must understand the Dispatcher. They must know when to use third party load balancers. Much of the basic knowledge and guidelines can be found in the Adobe documentation. Because many customer support problems are created by system administrators, quite a few of the knowledge base articles created by Adobe Support are there to help the system administrator. The system administrator must know what needs to be done on a regular basis to keep AEM running best. The system administrator’s job can have quite a bit of overlap with the advance developer or the developer. When things go wrong, the system administrator needs to understand the concepts behind a diverse set of systems to troubleshoot.
A great resource for learning about AEM is the Gems series from Adobe.
If you are looking to get a job as an AEM developer, do your homework. There is no substitute for experience. It will take quite a bit of resourcefulness and drive to learn what you need to know. These questions are only a quick guide to assess knowledge about AEM. Don’t rely on memorizing the answers to these to get a job.
If you are looking for the employee with the right skills, go luck in your hunt.