
From Junior to Lead
Each of us started out in ABAP as a junior, made mistakes, learned a lot of new things, and wondered how we were supposed to learn all the new topics.
Table of contents
In this article, I'd like to walk you through the journey from junior to ABAP lead. I'll show you what stages and obstacles a developer might face, and how you can perhaps even speed things up a bit.
Introduction
The developer, or more recently, software engineer, is responsible for the development and maintenance of software. The path of a developer from the beginning of their career and the gathering of knowledge to the design of software and products is somewhat different for each individual. Some developers need a lifetime, others only a few years to gain sufficient experience in their field. ABAP development has evolved over time and therefore also has many outdated technologies at its core. One of the challenges is filtering the relevant components to obtain a measure of what you can learn yourself in a reasonable amount of time.
Junior
Training in the area of ABAP can vary greatly, and getting started with the subject isn't necessarily easy. You can start as an ABAP developer during your apprenticeship or after your studies. If you're lucky, you might be able to gain initial experience in SAP and ABAP during your studies if your university offers corresponding courses. During your training, you are therefore dependent on the knowledge of your instructor and tutor; you can be lucky or unlucky here. You can either learn the relevant topics right away, such as object-oriented development, or start with a bit more classic ABAP development.
First Topics
One of the most difficult topics you should understand at the beginning is the dictionary. ABAP is a strictly typed language, and the connection between structure/work area and internal table must first be established. What can you do with the table, how do you add data, and how do you work with the data. Therefore, this is the entry point and will be of varying difficulty to each developer.
You learn the actual ABAP syntax like any other programming language. Start with the basic commands, variables, and internal data types. Then move on to loops and data processing to learn how to create database tables and how to work with them. Working with data and the database will take up the majority of your time and should form the foundation.
One of the most important aspects today is working with classes, the structure of classes and objects, and the development of maintainable code.
Depending on your company's current technology stack, the next step should be to master your front-end technology. Reports and WebDynpro are no longer state-of-the-art, but are still widely used by companies. Therefore, I recommend learning the bare essentials for your job, but also avoiding delving into the depths of complex GUI development. Fiori Elements is currently the target strategy for quickly providing frontends with UI annotations.
Role Models
What has helped me in the past and motivated me in my daily work has been role models. I don't mean people who lead the community and are visible everywhere. Start with the people around you, your instructor, the colleague who makes the rules or has the most knowledge. You can exchange ideas with these people and ask them questions every day to learn. Role models who are too far away will rarely be able to give you personal advice or take much time for you.
Learning
An important tip from me: always try to solve a problem yourself or research it first, and then get feedback from your contact person at the end so you don't go in the wrong direction. Here, you can lay the foundation for the future, as you will encounter more problems in the future that you may have to solve yourself first and won't have a contact person who has a solution. The more independently you work and the creative solutions you come up with, the easier things will be for you in the future.
Challenges
As a junior developer, you will often encounter situations where you may not understand something or find learning very difficult. As a developer, you need to stay on top of things or ask an experienced colleague. Many developers before you have been in this situation and had problems with certain topics.
Since you are not yet very familiar with ABAP, you probably won't understand all the connections right away. Your everyday life will consist of many new experiences that you must evaluate, sort through, and bring together.
Goal
As a junior, your goal is to first gain an overview of the topics of ABAP development. In this status, you will still have many gray areas on your knowledge map and won't be able to solve every problem on your own. You won't yet understand some topics in detail. Your trainer and contact person will help you complete topics and gain more insight into development. However, you can also use this time to look around and examine topics in detail, since you have very little responsibility.
Developer
As a developer, you have a rough overview of the most important topics. You support the expert in implementing larger projects and usually take care of software maintenance. During this phase, you should primarily strengthen your fundamentals, which means acquiring basic skills in the technology, but also learning everything about object-oriented design and unit testing. A developer who has never heard of design patterns will not understand the software of experienced developers and will only develop software that is half as good.
Concepts
Concepts like Clean ABAP are therefore also important. While you don't need to memorize the Clean ABAP Guidelines, you can read through them once and should at least live by them. I often have discussions with colleagues about this, but I wouldn't take every rule seriously, as some rules are open to discussion within the team.
Which ABAP commands are actually considered old, and which have since been revised? A modern development style in ABAP also includes the use of new functions. Personally, I would recommend not overdoing it and using the functions carefully. Too many nested functions will eventually become unmaintainable, readable, or easily understandable for your colleagues. After a while, you'll probably even have trouble understanding such functions yourself, even if they seemed logical to you at first. Functions like REDUCE are also not easy to understand and are rarely used. Although they are often recommended by "professionals" and explained in pseudo-examples, you'll rarely find them in modern development. Sometimes, a simpler approach is the right approach.
Projects
As a developer, you'll usually be assigned your first projects, where you're responsible for the conception and implementation. Here, you can start to explore, contribute your own ideas, and create the software to the best of your knowledge and ability. Not every piece of software will be perfect, and after months or even weeks, you will be annoyed by this source code because you have learned many new things and methodologies in the meantime. This is also a process that many developers before you have gone through and that I personally still come across from time to time in my everyday life when I look at my own old source code.
Expert
The expert has already gained several years of experience, knows his tools and methodologies, and can create complex software.
Community
The topic of community also represents a major task. If you work in a larger company, you probably already have various formats such as working groups or exchange groups. At the very least, you should be in contact with your closest colleagues; only then will you leave your own know-how and knowledge bubble. The more you leave the inner circle of your own company, the more different views, opinions, and ideas you will encounter. This will advance both you and the company. Leaving your own bubble and immersing yourself in the community is an important step towards further development and meeting new developers.
You can find communities at SAP at in-house events such as TechEd or Sapphire. If the journey is too far or the community is in the wrong language for you, you can also check out the local communities and user groups. You can find a list here. Maybe there's even an SAP Stammtisch (regular meeting) near you? There you'll find like-minded people for exchanging ideas on technical or technical matters.
Technology
As an expert, you should be confident in most of the technologies used in your company. In principle, you can provide support in many different areas and aren't tied to a single module. How do you build a database, model Core Data Services, and create a corresponding UI? Thinking outside the box broadens your horizons and makes you more open to modern technologies.
Information
Research and information on current technologies are relevant for every developer. This way, you stay up to date and don't miss any trends. Various channels and media are available to you. If you look at SAP, you can find a lot of information on the Learning Hub, the SAP Community, and the company's own YouTube channel.
Since the SAP Community is no longer supplied with as much new content as it was a few years ago, there are also numerous blogs and information sources on YouTube that address current topics in SAP development. Here, you should see for yourself which formats and channels interest you and help you progress.
Lead
The final level is the lead. As the name suggests, you lead topics in certain areas. In the internal community, you will most likely set the direction and keep an eye on current SAP technologies and where the journey should go. You are the contact person for many of your colleagues, are happy to give advice and support, and take care of the further development of SAP and ABAP development within the company.
Further Development
An important part here is the right direction. Development needs to be modernized over the next few years; not all developers are ready or want to go down this path with you. You know the most important technologies and can enable your colleagues to use them. This makes it all the more important to look ahead: what should you use less in the future, and where are you headed? As a lead, you most likely set the direction for the company and thus have greater responsibility for moving things in the right direction.
Role Model
In the past, you had role models you wanted to emulate; you are now most likely a role model for many developers and juniors who look up to you. Those role models from back then are now good colleagues, and you interact with many other developers. Here, too, it's about taking responsibility and guiding the less experienced developers on their path. Software development isn't just about writing source code; it also involves good tests, clean documentation, and sound methodologies.
Creativity
Knowledge breeds creativity in development. If you know how a framework works in detail and what it can do, you can derive further possibilities and hacks from it. This breeds creativity when working with the technology, and you can quickly identify missing functions, modify existing functions to achieve your goal, or break down requirements into various standard patterns that you can easily integrate. This way, you promise your department only those features that are easy and cost-effective to implement, and you won't get lost in freestyle development, for example.
Influencers
If you'd like to engage with top SAP influencers, you can find the current list of SAP Mentors and SAP Champions in the SAP Community Influencer Directory. These are experts in various areas of SAP technologies. You should take a look at the directory. All influencers are willing to listen and are certainly open to discussion if you have questions or would like to discuss various aspects of SAP technology. You'll generally meet these people at larger events in your area and can interact with them there.
Investment
A big factor when learning new topics is time. The more time you invest in learning and delving into the topics, the sooner you'll be able to understand and apply them. Using a function that works is one thing, but have you also taken the time to test the different versions and perhaps remember useful things for next time? Perhaps it will help you produce a quick solution for the next problem without investing a lot of effort or code. Knowing what a programming language can do will give you an advantage in the future and speed up your development.
However, you need time for this knowledge, which you have to invest. How much time do you really have available in your day-to-day life when you're supposed to solve tickets and the next project is already on the horizon? In reality, we actually have too little time to develop ourselves further or to explore things in detail. The higher your title, the more time you'll spend on other things.
Good software is usually created through experience and the many lines of code you've written up to that point. Being a master of theory doesn't mean you can also write good software. Therefore, many very good coders are also involved in small and large projects in their free time. Investing in your free time relieves the pressure of having to accomplish everything during working hours and allows for a much broader development of skills.
You should carefully consider this investment in yourself. You can invest your free time to develop your experience and skills more quickly and broadly, or you can try to cover all the topics at the end of your job. Ultimately, the decision is always yours, and you should carefully consider your own expectations and how much you are willing to invest.
You should also be aware that you cannot learn all technologies, frameworks, and techniques. The multitude of possibilities and variations is so great that in-depth knowledge in all areas is almost impossible. You'll be able to rely on certain core competencies and cover the rest with general knowledge, or consult your colleagues and consultants in an emergency. SAP and technology are currently evolving too quickly for that, so gaps are quite normal.
For example, I personally am not good at Fiori Freestyle development, AMDP, or WebDynpro. When I have more time, I would like to take a closer look at the topics, but the focus for now is on the core and deepening this knowledge.
Other Roles
If you've been in the business for a few years, you'll probably want to develop further. Do you still enjoy software development? Do you enjoy working on your software, fixing bugs, and taking care of further developments? For many developers, this now leads in different directions:
- Software Engineer - Do you still enjoy fixing bugs and developing new software comes easily to you? Then you can most likely continue to be a developer and pursue your calling.
- Solution Architect - Have you developed enough software in your life, but the design of the architecture and the goal are important to you? Then a role as an architect is exactly right for you. Here, you focus less on implementation and more on general integration, the technology used, and the design of software. The topic of Clean Core will also play an important role in the coming years, as many companies need to be enabled for this.
- Leadership - Would you like to coordinate and manage development more? You can take on a leadership role. Depending on the company, there are roles such as product owner, team leader, with and without management responsibility. However, this usually also involves a lot more scheduling and organization, so not every task will be fun. will do.
Conclusion
Where are you on your personal journey, and how do you feel about personal development? In this article, we wanted to take a look at the topic of different levels and grades from our perspective. Perhaps it will help you orient yourself on your personal journey as a developer and show you things you can still improve on. Role models were a key component for me in developing myself personally and getting a taste of more and more topics.