With wide application (you can create almost anything with Java - from business apps, mobile games, automated tests, etc.), the demand for Java jobs is continuously growing all over the world. Hence, the decision to master this programming language and advance through the seniority levels opens numerous opportunities for career advancement.
If you are determined to further direct your career in this direction, it will be useful for you to hear firsthand what the daily life of a Java developer looks like, about the variety of projects, which technologies prevail, how they are chosen and what your role can be in that. Boban Petković, Java Team Lead and Head of Architecture at Endava, shares his experience and perspective on working in this role. Before eight years ago he started to lead the whole team of Javanese, Boban himself worked as a Java Developer at Endava for six years.
Boban, tell us what a day of a Java Developer looks like on a certain project?
The specificity of the projects themselves as well as the seniority of Java engineers to some extent affect the daily routine. A typical working day starts with a short meeting with the team, where each of the team members shares information about what they have been working on, what they will be working on and whether there is any problem that is blocking them in their work. Most projects use Scrum or Kanban and therefore standard meetings/ceremonies are certainly part of the routine of every Java engineer. Most of them spend the rest of the day coding and implementing their daily tasks, occasionally meeting with other team members, and meeting with the client when necessary.
Senior engineers also devote part of their time to younger colleagues, through the process of code review and transfer of knowledge and good practices. One example of this is occasional technical discussions in our company, such as SOLID principles, design patterns, creating resilient applications, good practices in API design, etc. Often, Java engineers participate in the creation of the design of new functionality or the assessment of some new technologies, as well as the possibility of their application.
When we talk about technologies, what do you think are the advantages of new and older technologies on the project? And what are the options in situations when there is a lot of legacy code on the project?
Certainly, new technologies are something that attracts most engineers, because they bring new challenges and opportunities to learn new things. Also, new technologies bring novelties and improvements that facilitate the daily work of engineers.
On the other hand, new things often bring new challenges. New technologies often have not yet passed the process of proving a large number of production systems, and therefore the decision to switch to them can lead to difficulties on the project. For this reason, clients of large systems such as banking systems do not easily decide to switch to new technologies, and therefore sometimes end up with legacy code.
Namely, large and serious systems have been developing for years and certainly cannot keep up with the pace of the emergence of new technologies, so it is inevitable that they will become a legacy at some point. The best approach to this problem is to keep the legacy code at some optimal level through a continuous modernization process. Most of the projects that are based on legacy code do not pay much attention to the monitoring of technical debt and the continuous review process of the system architecture. A continuous, incremental and controlled process of refactoring and modernizing smaller parts of the system is crucial.
As a senior, to what extent are flexibility in work and interesting projects important for senior Java developers?
Flexibility in work is certainly an important aspect for every engineer. I think that today it is unthinkable to work in any IT company where there is no possibility of flexible working hours or working from home. What is most important to seniors is the ability to make decisions when it comes to the technologies used in the project.
Every experienced senior engineer understands that it is not always possible to simply rewrite a large system, but it is very important that there is a continuous process of refactoring and switching to newer technologies. Although working with legacy code may seem like a bad thing at first, it's actually one of the best ways to gain experience with new technologies. What is important is that in this entire process of modernization, senior engineers have the ability to make decisions based on the experience gained. Projects that bring some new and interesting technologies are certainly one of the important things. Working on such projects provides seniors with new challenges and gives them the opportunity to expand their expertise and further improve.
What else would you single out as an important factor in retaining experienced seniors in the company?
I think interpersonal relationships are an important factor. The existence of a healthy environment is very important for the normal functioning of each individual. Senior engineers work in teams where cooperation with different people working together towards the same goal is essential for the success of the project. An environment in which each team member knows and fulfills his part of the work, is ready to ask for and provide help, as well as an environment in which opinions are respected and there is a fair evaluation system is an important factor that motivates everyone.
What are the advantages of the company you work for? To what extent does the diversity and large number of projects on which Java developers are sought affect acceptance of a job at Endava? And to what extent can projects be chosen in order to find a perfect match?
Endava provides the opportunity to work on a large number of projects where Java and the entire Java ecosystem are the primary technology. The projects are diverse, cover different domains and thus provide an opportunity for every Java engineer to find a project that suits him.
The fact that Endava clients come from different spheres of business creates an opportunity for the application of Java technologies in different areas, from standard web applications, mobile, embedded, streaming applications, all the way to systems for machine learning and cloud automation. In addition, the concept of rotation that exists in Endava gives engineers the opportunity to change the project after working on one project for some time, and therefore try something that seems more interesting to them at that moment.
Does the role of a Java developer seem even more interesting to you after this knowledge?
It is undoubtedly a dynamic position with opportunities for learning, progress and development, so if you are additionally interested in trying it out or learning more about working in the Endava team, check their profile on the Joberty platform as well as the open positions they offer. Among them are roles for Java engineers.