I want this article to guide people who are lost in the current artificial intelligence (AI) trend. Over the last years of my mentoring activity, I have witnessed many different "trends" related to acquiring knowledge by future Junior Java Developers. In one part of the article, I will describe the mentioned trends. In the second part, I will describe current "trends" in the employment of Junior Java Developers.
Developing the thought as a signpost for people lost in the artificial intelligence trend. I see two basic issues that keep people who want to become Junior Java Developers awake at night - how to learn and whether is it worth learning to program in Java. I hope that the following article will help you find the answer to the above questions yourself.
My way of acquiring knowledge
I will start by presenting the method of acquiring knowledge that I used, which was a very long time ago, about 20 years ago. My main source of knowledge were books and magazines related to the broadly understood computer industry, at which time the term IT industry was not widely used. The books I learned from weren't like how to create an application (desktop, web, mobile) in 10 minutes.
There were books that thoroughly described the programming language, I started with Pascal and C++. Having book knowledge about a given programming language, you had to find an idea for an application yourself and implement it. My first Pascal application was to display a graphical menu (console, CLI) with the option of selecting a given option and performing some action, then there was a calculator (desktop, GUI).
After some time, I replaced the books with online documentation, which, unlike the paper version, could be updated. I had books on Java, Spring Framework, and Hibernate. Over time, when I used newer versions of the mentioned technologies, I could no longer rely on books.
Of course, I could go back to each book and read about the foundations of a given technology. For example, in Java there are classes, interfaces, and collections; in Spring Framework there are Dependency Injection (DI) and Inversion of Control (IoC); in Hibernate it is Object/Relational Mapping (ORM).
Below I have described the "trends" related to acquiring knowledge by future Junior Java Developers - in chronological order - that I encountered during mentoring.
Ways of learning – from my experience
Self-study
I have already written a little bit above about learning from books – my way of acquiring knowledge. Together with the benefits of the Internet, we have unlimited access to programming knowledge at our fingertips. Limiting ourselves only to the Java language, we have a wealth of information. Currently, my students' main sources of self-study are YouTube and Udemy. As you can see, reading articles and tutorials has been replaced by video.
A serious problem that I have noticed with my students is that they receive very poor, imprecise results in Internet searches. It is often the case that when I perform the same query, I receive "perfect" results that learners do not have access to - my search engines have well-trained algorithms for specific content.
People who learn on their own struggle with the problem of version variability over time. This means that the tutorial and/or video course is for Spring Boot version 2.7.12, and by generating a new project using https://start.spring.io/ we get a newer version 3.1.0. Which means that all dependent libraries, e.g. Spring Security, Spring Data JPA, Hibernate, are in newer versions. I have fallen into this trap myself more than once.
Self-study
I noticed a lack of additional IT knowledge in the field of: computer operation, operating systems, computer networks. I wrote more about it in my articles: Computer basics, seriously? – Junior Java Developer and Useful books and websites for learning Java.
StackOverflow
What is StackOverflow ? According to Wikipedia: "Stack Overflow - a social networking site where programmers can ask questions about broadly understood software development." In short, it is a place where you can quickly find the answer to a specific programming problem. Personally, I compare learning programming using StackOverflow to exercising at the gym and building muscle mass using stimulants. We can quickly obtain satisfactory results, but our form can return to the starting point just as quickly. Worst of all, the results achieved will not be "ours" and we will boast about something that we "don't understand" and did not achieve on our own.
I am not against using StackOverflow, but you should do it wisely and consciously. I find many solutions to various problems on StackOverflow. On this website, we can find solutions to a given specific problem, which are isolated and detached from the context. This is what I am against, using StackOverflow solutions without understanding the broader context. In my opinion, the right approach is if this website will motivate us to expand our knowledge about the problem whose solution we found there.
StackOverflow
I often hear from people who have passed their first interview: "I didn't know that theory was needed, if only I had access to an IDE and the Internet, I could solve this task." My articles: Three programming triads - how to make programming easier and Where to start creating an application? – Stop writing source code – a practical example.
Bootcamp
Kolejnym trendem, który napotkałem w trakcie pracy z moimi uczniami jest Bootcamp. Czm jest Bootcamp? Według Wikipedii: „Bootcamp programistyczny – kurs, który pozwala w krótkim czasie na poznanie wiedzy potrzebnej do rozpoczęcia pracy jako programista.”. Opiszę trzy, moim zdaniem, najważniejsze aspekty, które sprawiły, że Bootcampy stały się, aż tak popularne. Pierwszy, to wyznaczenie jasnej i pełnej ścieżki, która prowadzi do stanowiska Junior Java Developer. Drugi, to nadzór merytoryczny nad osobami uczącymi się. Trzeci, to obietnica zatrudnienia po Bootcamp. Wszystkie aspekty wydają się przemawiać na korzyść tego sposobu nauki. Niestety rzeczywistość okazała się inna.
Let me start by saying that supply has outstripped demand. IT companies recruiting people for the position of Junior Java Developer have started to "protect themselves" against the flood of CVs from people after Bootcamp - increasing the minimum requirements for junior programmers and female Java programmers. The duration of such training – from 3 weeks, sic! up to 12 months, on average 9 months - several hours a week requires a huge pace of knowledge transfer, which does not translate into the quality of the acquired knowledge. In my opinion, Bootcamps have diluted the market for junior Java specialists. Which caused employers to start looking for other options to replace or not employ Junior Java Developers at all.
Bootcamp
Many people come to me for help after Bootcamp. Sometimes it is about the final project, but mostly these are people who have not been able to find the promised job right after completing the Bootcamp for a long time. In this case, we work on the portfolio, verify and improve the CV, and conduct a job interview simulation. We often learn "from scratch". My articles: Pitfalls of the CRUD template in your own portfolio and real project and Your own portfolio - how to build a good portfolio and where to put them?.
Learning with a mentor
I look at mentoring Junior Java Developers not only through the prism of my own business. Many new "personal blogs" offering mentoring services have been and are still being created on the Internet. In my opinion, several things are contributing to this trend. Thefirst of them is a sea of opportunities and learning paths to become a Junior Java Developer. Next is the imperfection of group learning, e.g. Bootcamp. Thethird one is an individual approach to the learner.
I will try to explain each of the above elements that have influenced the popularity of mentoring. A sea of possibilities and learning paths. When you start learning, it seems that the basics of Java are enough, but this is not enough. Junior Java Developer may deal with programming: back-end, front-end, database (SQL) and/or a combination of all three, i.e. full-stack developer. Currently, the industry standard is knowledge of Spring Framework, Hibernate, Maven, git. I encourage you to read my article What should the real requirements for a Junior Java Developer look like? – Just Join IT.
It is very difficult for people who start learning on their own to find their way in all this. Additionally, learners have read in various places on the Internet, Facebook, forums and blogs, that Bootcamp is not perfect and does not actually guarantee knowledge acquisition or employment. Smoothly moving on tothe imperfections of group learning. It should be remembered that the amount of knowledge to be acquired imposes a rigid time frame - a huge pace of work - for transferring the material, and therefore does not provide space for an individual approach to the student.
The above elements lead to many people deciding to work with a mentor, me. I wrote more about the mentor-student relationship in my article Mentor-student relationship, how to understand each other - theory and practice.
Learning with a mentor
Many of my students tell me "If you are not there, the issues seem complicated." As you can see, even learning with a mentor requires many repetitions and exercises to learn a given topic well.
ChatGPT
This topic is new and unexplored for everyone. I haven't used ChatGPT or GitHub Copilot (Your AI pair programmer). For now, I am exploring knowledge about artificial intelligence (AI) from a mathematical perspective. In my humble opinion, we're not dealing with AI, it's just a well-trained tourist information employee. In this case, ChatGPT is a well-trained mathematical model that has been inflated with a huge collection of data "from the Internet". AI supported by machine learning (ML) provides tools such as ChatGPT. During my exploration of knowledge, I found a great video course on YouTube (yes, I also learn from my students searching for knowledge on YouTube) No Black Box Machine Learning Course – Learn Without Libraries by freeCodeCamp.org, which places a strong emphasis on data and its processing to achieve machine learning, all without using ready-made libraries for machine learning (ML). In my opinion, this is a good approach to understanding the nature of tools like ChatGPT.
ChatGPT
Recently, my students have been solving their homework using ChatGPT. They answer "I don't know" to the following questions: do you know how the generated code works?, is the generated code correct?, do you know how to modify the generated code?
Writing above about StackOverflow and ChatGPT I want to show a disturbing trend, I do not want to defame people who learn this way in any way. The connection "I didn't know that theory was needed, if only I had access to an IDE and internet, I would solve this task" and the answer "I don't know" to the questions "do you know how the generated code works?, is the generated code correct?, do you know how to modify the generated code?",is a recipe for "disaster ”.
Current employment trends – in my opinion
In terms of current trends in employment for the position of Junior Java Developer, please remember that:
We use “old” frameworks – Java EE vs. Spring Framework – David vs. Goliath
Nowadays, both tools have become a bit dated. Spring Framework is now "of age" - it turned 20 this year. However, Java EE is turning 23 years old, and Java itself is already 27 years old.
I would add to the above that Java alone is not enough – Is Java alone enough?. After learning Java, I recommend learning on a project - Where to start creating an application? – Stop writing source code – a practical example.
The following elements are a collection of my own observations and information collected from friends working in the IT industry.
Outsourcing software development work to India
Many IT companies have moved most of their departments to India, such as help desks (various support lines) and software development departments (programming, testing). What's worse, companies take into account that several percent of the source code - written in India - will be re-written "by the same people" and it is still profitable for them. This may help to reduce the number of offers for future Junior Java Developers.
Fewer IT projects
I have received information from people working in HR that the number of IT projects, i.e. recruitment, they handle has decreased significantly. In Europe, this was caused by the armed conflict on our eastern border, and mass layoffs in the IT industry in the United States have an additional impact. This may help to reduce the number of offers for future Junior Java Developers.
Random, excessive requirements in job offers
Most future Junior Java Developers wonder how it is possible that job offers include such excessive requirements. I invite you to read my article What should the real requirements for a Junior Java Developer look like? – Just Join IT. It's true that job offers have excessive requirements for a Junior, but these requirements coincide with what is needed for the position of a programmer in companies. These and no other requirements constitute a kind of firewall for IT recruiters who are flooded with CVs of people after Bootcamp. Such people will think twice before sending their CV to a given company and will first decide to gain more experience.
Code generation – ChatGPT, GitHub Copilot
I have already written a little about ChatGPT itself in the ChatGPT section. I described the code generation itself in detail in my other article Low-code and No-code – will source code generators replace programmers?. In my opinion, tools - based on artificial intelligence (AI) - such as GitHub Copilot can become a solution that will permanently reduce the need for Junior positions to a minimum. With a tool like GitHub Copilot, a Mid-Level or Senior Java Developer will be able to quickly generate code that previously could be outsourced to a Junior Java Developer. I haven't used this tool myself, but many of my developer friends use it on a daily basis.
To sum up, I do not want to give a gloomy vision of the future for Junior Java Developers, I just wanted to describe the current reality - learning methods and current employment trends. In my opinion, each of the described forms of learning is good, provided that a given programming issue is thoroughly studied and understood by the learner. When it comes to current employment trends, like all trends, these will pass. You must dynamically adapt to changing conditions. It's not like artificial intelligence (AI) is taking our jobs immediately, here and now. It is a slow process that we agree to. Let us be the creators of our own future, acting here and now.
Zdjęcie autorstwa cottonbro studio z Pexels.