So how long does it take to learn Java? Ten years, ten weeks, or one day? Maybe your whole life? You may find very peculiar answers to this question on some online forums. Let's make it clear from the very beginning. In this article "to know Java" doesn't mean you can write "Hello world program". It is about knowing Java well enough to find your first job.
Buzz Lightyear's motto here in the title is not exactly a joke. You really may continue to learn Java or any other language for the rest of your life. The reason is that the language is constantly evolving, its scope is changing and… Good news, friends! There is no reason for panicking! The learning of Java mission is definitely possible to complete in 3 to 12 months, however, there are many nuances that we will discuss in this article. Here we'll try to answer the question "how to learn Java fast" as well.
The question "how long does it take to learn Java" is kind of tricky. We split it into more specific sub-questions and answer them here. To be more precise, we used interviews with CodeGym students, open sources, and the statistics from the Survey that happened at the end of 2019. That Survey was about Java learning processes and searching for that first job. It was conducted by one of the local CodeGym units. Survey participants were CodeGym students of level 30 and above, who've found that first Java-related job or took part in a Java Internship.
The most accurate, albeit very general answer to this question would be "be able to solve the problem using Java." Such a problem may be the goal of "passing an exam" or "getting a job". Or it can be a technical task, either a big one "to create my own project good enough for Play Market", for example, or a small one such as "understand how to write code that does what you need."
Of course, your problems will change over time. After getting your first job, you will need to grow into positions (for example, from Java Junior Developer to Java Middle/Senior Developer). The first coding task is followed by the second one.
Further, when you do it, some new goals will appear. Let's turn back to our question. What themes should you know to write "I know Java" down in your CV?
Java students usually learn the next topics:
- Core Java or
- Core Java + JUnit or
- Core Java + DataBases or
- Core Java + Tools or
- Core Java + Libraries or
- Core Java + Spring + SpringBoot + Hibernate or
- Core Java + Android SDK or
- …and all of the above combinations.
All these topics have one thing in common. It is Core Java, the basics. So if you don't know Core Java, you definitely don't know Java at all. Therefore, to learn Core Java is step#1 for every future Java Software Developer.
Core Java covers the fundamental concepts of the language:
- Basic types and objects
- Basic constructions (Special Operators, Loops, Branches)
- OOPs Concepts
- Wrapper Classes
- I/O Streams
- Exception Handling
So Core Java contains basic types, objects, constructions, and principles as well as the most important libraries and frameworks. In addition Core Jav covers classes for networking, security, database access, graphical user interface (GUI) development, and XML parsing.
Mostly all packages of "Core Java" started with 'java.lang..'
The first goal for every Java Student is to learn Core Java.
What to learn after Java Core? It depends on what you are learning Java for.
In this article we don't consider options like "I learn Java just for fun" or "I want to teach Java in the Future". Here we are talking about professional usage of Java in IT. Currently, most often Java is taught in order to go in one of three ways:
- Java Developer, from trainee/Junior Developer to Senior Developer
- Android Developer, indie or in a company (Junior to Senior)
- QA Automation (with Java)
Java Developer's pool is very broad and the requirements for Java knowledge are to get your very first job which can vary greatly. According to CodeGym Survey, there are some people who got their first Java Junior job knowing Java Core only and nothing more. The companies were ready to train them during work processes. However, this is a pretty rare event. More often such a person can join an internship or becomes a Java trainee after passing some exams.
Usually Java Junior applicants should know more than just Java Core to get their first job. Here is a list of relevant technologies that Java Developers should know.
- Core Java
- JDK API
- Java 8 (lambdas)
- Testing Libraries (JUnit)
- Spring Framework
- Spring Boot and Spring MVC
Below is an extended infographic based on the CodeGym survey and analysis of current Java Junior vacancies. We only note that it depicts not Java itself, but also a number of other technologies that modern Java developers are supposed to know.
Its size and branching can scare an untrained reader. Please, stay calm and breathe deeply! These technologies you will learn in detail during your work. Usually a beginner software developer needs to just have a general idea about most of these techs (with rare exceptions).
Android developers could work for a company or have their own projects. They should know Java Core for sure and some other technologies. Here we have one infographic that demonstrates a way of Android Developer.
Well, there are a lot of points in the list, but not many of them are about Java directly (only test tools, and actually Core Java). Usually developers agree that learning Android programming on your own is somewhat easier and faster than Enterprise development.
Nevertheless, even for those who aspire to the position of Java Junior, it will be useful to create Android projects to train your programming skills.
A good QA Automation should know the programming language pretty well, it is one of the most important skills for this profession.
Connected to Java
- Core Java (especially OOP, Collection, FileOperations)
- Testing Libraries (JUnit)
- IntelliJ IDEA
- Selenium RC/WebDriver framework
- Page Object Model
Usually the way to Junior QA Automation is somewhat shorter than Java Junior Developer. The precise numbers you'll find at the end of this article.
" I think it depends on your background and the amount of time you can spend studying. When I started my journey as a software developer I would spend at least 40 hours a week studying. After 6 month of studying full-time I felt confident enough that I can master any new technology by myself.
In order to land your first job as a software engineer you will not only need to learn Java, but also to understand the basics of computer science, object oriented programming and write a few projects that can showcase your work. I think this can take somewhere between nine and twelve months.
I know this sounds like a lot of work, but don't feel discouraged! This journey can be real fun if you discover what aspect of coding is bringing you joy and allow yourself to play."
Yuliya Deinega, Self-taught software developer. Yulia works for LinkedIn as REACH Apprentice Engineer. Also, she created YouTube channel, to share her experience of learning computer programming and finding a job in Silicon Valley.
We can divide those who begin to learn Java into three main categories:
- "Rookies". Zero experience. Well, here are people who know nothing about programming.
- "Middles". Students with minimal or chaotic programming experience. Those people learn programming at school, university or courses, but it wasn't serious learning.
- "Pros". Software developers who know other programming languages (1 or more).
According to the Survey, 49% of our students had basic programming at schools or courses before they started to learn Java seriously.
- 33.3% were absolutely newbies
- 17.6% knew at least one programming language ## What positively affects the study time? In order not to waste time in vain, you need to approach learning effectively from the very beginning. We have identified the main points that contribute to successful study programming. ## Choose the right sources You can find a lot of different information about Java on the Internet. It is easy to get lost in it. Sometimes if you don't understand a topic, it's useful to google new sources, but before you start, it is a good idea to choose:
1 main course and 1–2 auxiliary sources such as Java books or tutorials. Stick to them.
In this case, you will save your time avoiding wandering aimlessly on the Internet and looking for something.
John Selawsky, Java Tutor and Software Developer said in one of his articles that sometimes he had some students that did programming amazingly well, but some of them just stopped their learning. Their problems weren't in free time, age,or gender. It wasn't about ability! It was about consistency. All successful students had a consistent schedule and they stuck to it. They made progress, even if it was sometimes slow.
So you should have a schedule (you can take it from your main course or tutorial) and set time for learning.
You can't learn how to swim without trying to swim, just by a book. The same story with programming. You can't learn Programming without writing code. Programming is a practical activity. It is important to start writing code as early as possible. You don't need to learn too much theory at once, especially in the first months of study. It is better to study it in small portions, and then immediately fix it in practice. So, 20% of your time is for theory research and 80% for practice.
Here is the right place to return to the very first question "What does it mean to know Java" and clarify the answer. To know Java means to be able to code in Java. Not "know about Java" but be able to write programs of varying complexity and have some experience in such coding.
Newbies pretty often try to solve some hard tasks, try them again and again. If they do it for too long, the result could be sad. This is a road to lose motivation. For beginners it is more beneficial to solve many small and simple tasks than a few complex ones. Good ratio for the first months of learning is 1 difficult task to 10–20 simple tasks.
And one more thing: if the task is too complicated for you and you tried to solve it several times, be brave enough to… postpone it until you know more. It is better to solve several more easier problems, and then return to the impassable fortress. Or .. if you still think this is the right time to solve it, don't be afraid to ask a question. This is the next point.
Beginners often hesitate whether they should ask questions on forums and communities, because they think that their questions could be stupid. Well, they definitely could! But it is ok, there is no reason to worry! Every software developer was in your shoes and needed an answer on a stupid rookie question. So what? Programming communities are somewhat collaborative. Software developers usually work as a team and all of them were beginners once.
Every student and even every professional software developer asks stupid questions from time to time and there is no crime in it.
So, if something went wrong, go to the forum and ask a question! It could be Javaranch or Stack Overflow or CodeGym Help, for sure.
Best forums to ask questions or look for answers:
- CodeGym Help
- Stack Overflow
- JavaRanch ## So how long should I learn Java to get my first job? We have come close to the point where we can answer the main question of this article: how long does it take to learn Java before you start sending out your CV and getting your first job?
We use the data from the survey and students interviews to create the following graphs, which took into account the initial level of respondents and one of the three needed positions. For each group we determined the time intervals for which they studied Core Java and the time they spent studying the related technologies needed to get the first job.
Attention! Here is information to read graphs.
"Rookie" is a person with zero experience of programming, "Middle" is one who learned programming a little bit at school or courses. In the case of Java and Android Developer, "Pro" means a person who knows one or more programming languages well.
In the case of QA Automation "Pro" means the one who already works in manual testing and wants to become an automator with Java language. For all the graphs we used a time scale with the number of months. The red rectangles mean time spent learning Core Java, the blue ones are for other needed technologies apart from Core Java.
It's important to understand that the graphs indicate the average time spent by respondents from each group to study technologies. In fact, there were champions in each group who coped with their learning much faster, and there were also those who delayed their studies for several years.
The general time of learning indicates the moment when the applicants began to send out a resume or completed their first project (one that began to make money). According to our survey, on average, it takes from a month to three to find a job. These months of searching begin at the end of studying related technologies. There were lucky people who found work a week after sending their first CV, but there were also those who spent a year searching.
How long to learn Java? According to research results, the speed of learning Java and related technologies depends mostly on regularity and the initial level of the student. Sure you can do nothing with your initial level now, but regular study is definitely your responsibility.
How to learn Java fast? Try not to take long stops, or procrastinate while you're learning. It is extremely important, because during long stops, you don't just stand still, but roll back little by little.
Daily practice, perseverance and motivation - you'll definitely need all of these if you decide to learn Java and related technologies.
If you follow a set schedule, observe the right balance of theory and practice,and practice daily for at least 1–3 hours, not be afraid to ask questions, it is quite possible to learn Java to the level that will allow you to find your first Job in 6–12 months. … And then continue your learning as a Developer/QA Automation professional to infinity and beyond!
P.S.: Now what about you? How long do you learn Java for now? Is this process tough?
Or maybe you already found your first Java-related job? Was it hard? Or maybe you just started looking for it? Share your experience here!
Firstly was published on Codegym Java blog.