More than 10 years ago, we started exploring the field of education and decided to create a programming course that would best fit the modern realities and make it as easy as possible for adults to transition to becoming programmers. Our idea proved well done. CodeGym became a successful product, and we received enormous positive feedback from those who managed to change their profession and lives.
However, we noticed that the percentage of people who were unable to complete the transition, despite initially showing enthusiasm and interest, was quite high. Unfortunately, not everyone is self-taught, and we must acknowledge that fact. After conducting research and surveys, we developed another product, a hybrid one, offering both self-study through our main course and regular sessions with mentors.
In this article, I would like to share the journey we have taken and the conclusions we have drawn about self-study and mentorship in programming education.
Modern Education and CodeGym
Traditional education has been a subject of debate for quite a long time. On the one hand, its foundation has remained largely unchanged for centuries and seems to fulfill its purpose. People still learn to read, write, and solve basic arithmetic problems.
On the other hand, criticism of education, particularly in applied fields, is becoming more prevalent. It is argued that high schools and universities are designed to prepare either professors or scholars but struggle to deliver knowledge to those seeking practical professions. So poorly, in fact, that young people are acquiring much of the information they need from YouTube videos and internet articles. Experiments aimed at introducing modern approaches to traditional education, such as bite-sized lectures and focusing on practice, have shown promising results.
According to researchgate
, 75% of the respondents agreed that the speed of course materials presented in bite-sized lectures was just right. However, the implementation of these approaches is slow and not widespread.
A few years ago, the landscape of online education faced similar challenges. For instance, programming courses were primarily focused on theory. Nevertheless, online platforms have continuously improved and gained popularity. Self-paced online learning to program has become increasingly popular in recent years, with the number of online resources and courses available growing rapidly. According to Forbes
, the online education market is projected to reach $350 billion by 2025 from $107 billion in 2015.
The idea of creating CodeGym, a structured online course for learning Java, with short lectures and a vast number of practical tasks accompanied by mandatory code checks and guidance from a "virtual" teacher, arose from the desire to bring about change in this field.
The story of CodeGym began 10 years ago when my friend and the project's main inspiration, Dmytro Vezhnin, was a senior Java Developer with a decade of experience. In our country (Ukraine), developers earn significantly more than representatives of most other mass professions. At that time, a trend emerged of adults who had already obtained an education and worked in other fields transitioning to IT. There were quite a few people eager to retrain, and Dmytro decided to help his friends become Java developers.
The experiment was successful, but over time, the demand for his services exceeded his capacity. This led him to the idea of an online course with feedback, which would allow teaching a vast number of students simultaneously. Dmytro quit his job and invited me to join the startup.
Thus, CodeGym, an online course for learning Java, was born. Its key features included a vast number of practical tasks (currently over 1200) covering Core Java, with code correctness checks and hints, a well-structured curriculum, short lectures, and gamification (students progress through levels, earn points, and spend them to continue their journey).
Our course has been highly successful. Over 2 million students from more than 40 countries have already completed it, and new students continue to subscribe regularly. In addition to the course, we have created a Java learning community where students can communicate, discuss tasks and language features, solve problems together, ask questions, and receive answers. This community has also helped us better understand students' needs, conduct surveys, and improve the course.
Does self-paced learning work for everyone?
Our graduates prove that finding a job in the IT field is achievable if you invest time and effort in learning and preparation. However, let's be honest: there are pitfalls in self-paced learning that cannot be ignored. We have noticed that there are many students who start off learning very well and actively, solving problems, asking questions, and participating in the community, but then... they simply disappear.
We took the initiative to conduct surveys with such individuals to find out what hindered them. Very often, it was a lack of motivation and uncertainty about where to go next. Sometimes, people were demotivated by a lack of understanding in a specific topic, changes in their family situation, lack of time, or financial instability, which forced them to focus on their main job. Many students found that they needed a certain pace, but maintaining it independently proved to be too challenging.
Among self-paced students, the following doubts and fears are common:
"What if I can't dedicate enough time to studying?"
"What if it becomes too difficult for me?"
"What if I don't understand something and can't find an adequate answer?"
"What if I lack the motivation to finish?"
"What if I give up as soon as it gets tough?"
"Can I learn without anyone monitoring me and without external deadlines?"
It would be naive to say that these fears are unfounded. After all, not everyone possesses iron willpower, and not everyone finds it easy to dismiss doubts when they attack. Some people simply need stronger feedback, control, competent opinions, and a pace set for their studies – in other words, a teacher. Traditional "teacher-student" models have persisted for centuries for a reason!
Taking this into account and considering the global trends in online education, we decided to create a new product, the Hybrid Java University, as an addition to our main CodeGym course.
The university provides access to our "traditional" online course and tasks, but it also offers "live" lessons with mentors (professional developers) in real-time online. They explain complex topics, set the pace of learning, provide and assess homework assignments.
The course is divided into modules, each culminating in a "graduation project." After graduation, we provide assistance with job placement. We have launched Java University in several countries and can already assess the initial results.
Since we offer both self-paced and mentor-led options for online learning, through our surveys and research, we have gained a good understanding of their positive and negative aspects. Below are some brief conclusions.
Self-paced approach vs mentor-led learning: advantages and disadvantages
Time constraints and the need for regularity in study
Yes, our self-paced online course has a time limitation, but it only applies to the subscription. How you choose to go through the course is solely your responsibility.
I remember one of our students, Victor, who tried to complete our course for seven years without success. He would quit over and over, take breaks for six months, and then return to studying, often starting from the beginning because he had forgotten a lot. Despite having good programming skills and analytical thinking, by the time of our survey, he was extremely unmotivated and convinced that "programming just isn't right for him."
He became one of the first individuals we offered to enroll in the CodeGym Java University program after its launch. Victor agreed and successfully completed it, even finding his first job. He only regrets one thing: not realizing earlier that he should have joined mentor-led courses, as it could have significantly advanced his programming career. Victor cited the inability to organize his own studies over an extended period and the lack of an internal study rhythm as reasons for his struggles.
There are quite a few students like him, especially among those who already have a steady job and a family.
Another example is Peter, who attended in-person courses, spent a lot of money on them, but didn't finish because he got distracted at some point and fell far behind the group. However, he didn't want to completely abandon his studies, but didn't want to buy another expensive course with a teacher either, so he purchased a CodeGym subscription.
He completed the course fairly quickly and filled in the gaps through video tutorials. In our survey, Peter mentioned that he had already tried self-paced learning, having learned to play the guitar through online videos, and, in general, he prefered studying when it's convenient for him.
Thus, the absence of a study rhythm and systematic approach can be an advantage for some, like Peter, and a disadvantage for others, like Victor.
Choice of topics and learning methods
At some point, a self-paced CodeGym student named Max became interested in machine learning and decided to pursue that particular field. Since he was studying independently, he adjusted his study program accordingly. He continued his CodeGym course at a more moderate pace while concurrently focusing on machine learning and independently exploring various algorithms, libraries, and practical projects in that domain.
However, not everyone can make such decisions independently. For example, Anna, who attempted self-paced learning, got stuck on a challenging topic. She tried to delve into it but couldn't understand it, which eventually led her to abandon her studies for a long time.
She has now joined the new Java University program and is currently undergoing training. We asked her if she had already covered that difficult topic, and she replied affirmatively, successfully grasping it with the help of a mentor and specific assignments.
So, self-paced learning provides students with the freedom to choose topics and learning methods based on their interests and goals, while mentor-led learning offers support and expert guidance in selecting the most relevant and effective topics and learning methods.
Access to Expert Knowledge
There are things that can only be learned by interacting with an expert in the field. Our students who have undergone training in the CodeGym Java University program in the early cohorts claim that they have gained a lot of non-obvious information that helped them in interviews and their subsequent work directly from the mentor.
A mentor is a practicing software developer who has access to up-to-date programming information and modern project approaches. However, there is a risk of a subjective perception of information. After all, the mentor is also a human being and may, for example, be attached to certain technologies while rejecting others, even if they are relevant and advanced, and pass it on to their inexperienced students.
Alex is a student from one of the early cohorts. By profession, he is a journalist and is used to finding and processing information independently. Thanks to this skill, he has learned a lot by exploring Java-related online resources, developer forums, and documentation. This greatly helped him in his studies, and it is unlikely he would have achieved the same if he were learning at the pace of a group course with a mentor. However, the ability to find the necessary knowledge is not something everyone possesses.
"I spent a lot of time searching for information. It was very difficult for me to assess which sources presented the topic well and which did not. So I wasted a lot of time reading unverified or questionable articles. Thus, self-learning provides access to a wide range of online resources and materials, while learning with a mentor allows students to receive direct feedback, consultations, and expert knowledge from an experienced specialist in the field."
The Matter of Price
Of course, a good Java programmer who knows how to teach is worth their weight in gold. At CodeGym, we have been constantly searching for such specialists from the very beginning.
Before creating our Java University, we had the idea of recording video lectures and conducting seminars. Additionally, we constantly need to update our main course with new lectures and tasks, which requires not only understanding Java but also possessing teaching abilities. Honestly speaking, finding such a Java methodologist turned out to be the most challenging hiring task in the entire history of the project.
We had applicants who were excellent programmers but couldn't explain a complex concept to a novice, or good teachers who were too far removed from the corporate programming that we teach.
What I mean to say is that such specialists are extremely rare, and they know their worth. Consequently, their time is very valuable, and this is reflected in the cost of mentor-led courses. The self-paced online course is obviously significantly cheaper, and some information can be found for free. Nevertheless, the price in some sense serves as motivation not to abandon studying.
"When the online platform boom began, I enrolled wherever I could," writes Maria, a student at CodeGym University. "Among them, there were many free courses and a few inexpensive paid ones. These were courses on Python, Java, SQL, French language, music theory, history, furniture design... Can you guess how many of them I completed? You probably guessed it right. At the same time, I completed the paid French courses and received a B2 certificate, and now I am immersed in learning Java at the university. And yes, the significant amount of money I paid for them motivates me when things get difficult or when I feel lazy."
"After college, I didn't pursue a career in my field (marketing) and got a job as a sales consultant at a technology store," says Alex, a CodeGym graduate. "If it weren't for the low cost of programming courses and access to free information, I probably wouldn't have become a developer now. I simply didn't have the money for expensive mentor-led courses."
There were quite a few self-taught students like them, as well as those who were motivated to take studying more seriously due to the high price of the courses.
Responsibility for Motivation
Of course, this point encompasses all the previous ones. However, it is the loss of motivation that was named among the main reasons for the majority of self-paced students abandoning the course.
Yes, learning programming can be very exciting, but at the same time, it is a challenging technological process. And like any such process, it contains numerous pitfalls, routines, and the necessity to work hard and continuously with vast amounts of information.
Therefore, it is truly difficult to maintain motivation without comprehensive (human) feedback. In our course, having a highly active community and automated correctness checks partially solve this problem. However, almost everyone who dropped out of studying (completed no more than two-thirds of the course and didn't continue their education) attributed it to the loss of drive and motivation.
"At first, it was great. Programming was like a new world for me, opening up wonderful prospects for the future. On that drive, I studied for a month and completed 10 levels of the course. And then... then I just felt tired and unsure if I was moving in the right direction at all. Could the course creators be misleading, claiming that I could become a programmer by studying the course? And in general, there are already so many difficulties at this stage, and it's just the beginning..." shared Peter with us. Now Peter is finishing the Java University, and according to him, there is more than enough motivation and feedback there.
In conclusion, choosing between online mentorship and self-study in programming requires considering the pros and cons of each approach. Online mentorship offers personalized guidance, real-time feedback, and a structured learning environment, but it can be costly and finding a skilled mentor can be challenging.
Self-study provides flexibility and autonomy, but maintaining motivation can be difficult without regular human interaction. The choice depends on individual preferences, available resources, and personal motivation.
Dedication, perseverance, and a passion for learning are crucial for success in programming, regardless of the chosen path.