Adobe Experience Manager as a Java career: a developer's perspective

Anna Szemiot
Marcell Kristóf Pál Apr 4 2023 7 min read

As a company specializing in Java and enterprise-level solutions, Dynamic Solutions has built a good portion of its portfolio developing solutions based on Adobe Experience Manager (AEM).

AEM uses Java and supports Apache Sling, a web framework for RESTful web applications, and OSGi, a Java-based framework for creating modular applications. With its robust features, AEM has become a popular choice for enterprise-level organizations.

Today we asked Marcell Kristóf Pál, our AEM Developer, to share his experience of working on large client projects, and explain the main differences between AEM development and traditional Java development.

You are a Java developer. How did you start your career? What led you to the point you are in now?

Marcell Pál: My career started when I was still at the university. During my studies, I applied for jobs - at first, only part-time or student jobs, but later I was able to work full-time. I liked the Java language while studying and got really excited about it while working on projects. So, I decided to go in that direction and so far, it's been successful.

You are currently working as an AEM developer. How has your experience been so far?

Marcell Pál: I first came into contact with AEM here at Dynamic Solutions - the recruiter contacted me and I went through the tech stack of the job advertisement. It looked pretty different from what I knew and experienced, so I thought maybe this could be a new chapter for me.

I wanted to try myself out on a different area of Java backend, compared to the mainstream/standardized Spring framework. It's been nine months since my first day and so far, I've worked on two large client projects.

What do you think are the main differences between AEM development and traditional Java development?

Marcell Pál:  AEM is quite difficult to access - I mean, as a technology you’d want to learn on your own. It's not easy to try things out or build a "pet project" on your own because AEM requires licensing, and the cost of an individual license is quite high. However, if licensing isn't an issue, you can build large projects locally.

Apart from that, I think that the main difference lies in the underlying frameworks. In the Java world, Spring has been the go-to framework for new projects lately. The architecture of AEM uses Apache Sling framework with JCR for its content tree storage, and the OSGI framework to build and deploy content packages to be able to use different versions of code or static assets.

You usually need to have at least two instances running: an author and a publish instance. Of course for load-balancing you could have multiple publish instances. AEM is primarily used for CMS purposes, while Spring on its own isn't as strong in this area.

The good thing is that either frameworks you use, you can work with JetBrains IntelliJ IDEA. It has really great support for Spring and even for AEM via plugins.

How do those tools come in handy?

Marcell Pál:  If you're a Java developer, it's common sense to use JetBrains IntelliJ as an IDE because it makes your life easier - not only in the Java world. It provides many features that come in handy, and with just a few shortcuts and automations, your code and work will be easy to maintain. If you have the Ultimate edition of IntelliJ IDE, you can connect to databases without any other third-party program. You can also install and use community-built plugins. For example, for AEM, there are plugins that are specific to the AEM ecosystem and architecture that can help in development. IntelliJ also supports work for Spring, Maven, Gradle, and other areas.

It seems to be the common opinion that if you work with an older technology, then your stack of tools is going to be outdated.

Marcell Pál: It's common, because it’s usually true. However - and this is one of my favorite things about Java - if you have all the dependencies and necessary tools to run your code locally, you can use modern technologies as well. Some people think that AEM is really an old school thing and it uses only the old technologies. I had zero experience with AEM before, so I came across those opinions later, when I tried to deep-dive into some specific topics.

When I’m reading community forums, I usually see negative comments coming from people who played with AEM a bit a few years ago, and still think it's the same old framework. The facts are quite different: AEM supports the newest versions of Java, has active development in the background, and service packs and upgrades are coming out quite regularly.

Do you use communities or forums a lot, or would you rather ask people from inside our company?

Marcell Pál: I use both because, of course, if I'm stuck on something, my first instinct is to Google it and try to find the answer. But if I can't find anything, I can always ask the guys sitting here next to me. They're really experienced, and I can learn lots of things from just a few minutes of talking with them.

What are some of the most exciting projects you've worked on here?

Marcell Pál: I get to work for car manufacturers or airline companies developing their CMS framework. And for me it is a great thing to know  - and sometimes even see on these sites -  that my work and solutions are used by hundreds or thousands of people around the world. So I’d say this is pretty exciting about those projects.

Can you describe the training process you went through?

Marcell Pál: I found the training particularly interesting, because DS is developing its own product called WebSight, with many features and functionalities comparable to AEM. So we actually start by understanding how WebSight works on a structural level, and what its key features are.

After that, there is some developer training provided by the Adobe training program. It's a video guide where you go through all these core concept topics, finish quizzes etc. I personally also went through a Udemy course on AEM on my own, but the official Adobe version was definitely more thorough.

Share a story about a challenging project you have worked on.

Marcell Pál: Well, when I got my second AEM project, it was December. As you can imagine,  this is maybe the worst part of the year to do anything related to business or even to development. It’s Christmas time, and people are going on a two to three week holiday.

So, It was a new project for me, and I faced the task to update the AEM version for it. And did I mention that half of my team was already on a vacation?  

It was a tough job to do. I had really little AEM knowledge at the time, and was mostly on my own. But I was really focused on solving that problem, and slowly started to figure things out. The whole experience gave me a better understanding of the AEM world, and I became familiar with the project architecture in the process. When my team returned from the holidays, I was able to easily discuss technical topics with them.

This story really highlights the importance of practicing, doesn't it?

Marcell Pál: I think there are several stages to becoming good at this. Initially, you need to focus a lot on understanding the core concepts and completing tasks to gain experience. Later on, as you gain experience you also need to focus on staying up to date with technology.

Read much as you can - news, articles, and blog posts. Then you can start to explore different approaches and take your development to the next level.

Do you see yourself moving into an architect role in this stack?

Marcell Pál: It's possible, but definitely not in the short term. I still have much to learn, and being on a large project with challenging tasks every week or every other week is great for my development.

What advice do you have for Java developers who are interested in transitioning into a career similar to yours?

Marcell Pál: My advice would be to practice, gain experience, and never give up when problems become complex and difficult. It's also important to find a mentor who can guide you through the technical topics, discuss your thoughts, and help you out when you're stuck. Finally, try to work for a company that provides you with challenging tasks. This is what is helping me grow.

_
This conversation has been edited for length and clarity