Adobe AEM is a hot product right now. Finding available, skilled talent is difficult, to say the least. I get two to three messages on LinkedIn every week about project that is looking for someone with AEM experience. When assembling a team, you have a few options: use professional services consulting, partner with an experienced agency, or build a team of your own in-house.
Assuming you’re building a team in-house and you can’t find someone with AEM experience on their resume, what skills should you look for when hiring a developer to train as an AEM developer? Developing in AEM is not difficult; however, there is definitely a learning curve around all of the underlying technologies (SLING, OSGi/Felix, JCR, etc), understanding best practices, comprehending all of the new terminology you’ll be bombarded with (DAM, CRX, MSM), and understanding CMS concepts in general.
Here’s a list of skills I look for when I’m building a team of developers who do NOT have AEM experience. These skills truly lend themselves to molding a solid AEM candidate:
- Servlet and JSP development – All of the templates and components in an AEM project are built using Java Server Pages (JSP), so 2-3 years experience with this is a must. No JSP experience on the resume? Move on.
“No JSPs? Survey says? Bzzzzzzzz.”
- AJAX/JQuery/EXTJS – Adobe AEM pre-compiles published pages into static HTML, so dynamic content is pulled-in via AJAX – usually with a library like JQuery. Additionally, EXTJS is used to create custom widgets for your editor dialogs. Experience with these is in my top 3 must-haves.
- OSGi/FELIX – Scheduled jobs and services run as ‘bundles’ in the built-in Felix console. While OSGi-specific experience is not a requirement, experience developing some type of service is required. See below.
- Web Services creation and consumption – Any dynamic content ingested from an external service is usually accomplished by interacting with an service-layer running on an application server like Tomcat or JBOSS. A web services developer will be a key player on the team to assist with this interaction. You need at least one on the team with this skill.
- CMS development experience – This isn’t a must-have, but understanding the concepts surrounding using a CMS versus traditional MVC (Model, View, Controller) development is helpful. It helps with the learning curve of using a CMS.
- Java Content Repository (JCR)/CRX – Getting away from the relational database mindset, where everything is tied together with some sort of key is a hard concept to grasp. Not a must-have, but having someone on the team understand the underlying data repository who can evangelize it is a nice-to-have.
- Other nice-to-haves – Eclipse IDE, Maven, SVN, Jenkins, Artifactory, Apache Sling, Lucene, Tomcat/JBoss, Apache web server, analytics tagging
Have you found a characteristic in your hiring practice that lends itself to become a great AEM developer? Share in the comments below.