How you could learn Java on your own and where to start
Learning Java on your own doesn’t have to be difficult; there are plenty of resources for independent study and practice. No matter your age or experience level, you will find plenty of websites that will give you hands-on experience and teach you how to program in Java. Find out how to take those first steps into becoming a programmer.
Being a Java tutor, I’ve seen plenty of reasons why people start to learn programming. A great passion is one of the major reasons, but that’s not all.
Sometimes people of different ages and occupations get that annoying feeling that they keep shifting from one foot to the other. For example, you feel that the whole “educational saga” at the university is over, but you’re not that into your profession. Or you love your job, but it gives you far fewer perspectives than you assumed from the start. Or you simply want to get out of the comfort zone and believe that the best way to do it is to master an extremely tough skill, like programming.
Time is, above all, the major obstacle in learning. Time, or rather, the lack of it. Dedicating a certain number of hours in a certain number of days for studying simply doesn’t work for many people because of the pace of living. And this is when self-education, a concept where you simply learn on the go and adjust your own schedule takes the stage.
And what’s more important, I can tell you from the personal experience that it’s very effective in learning Java programming. But first things first…
Why exactly should I learn Java programming?
Isn’t it a crowded market? Isn’t Java losing popularity/dying/too hard to learn as a first language, and so forth? The answer is no. :)
It is a cross-platform, flexible programming language with a great number of libraries, that can help you write the concise solutions for almost all tasks for enterprises, small and medium companies, big data, scientific developments, mobile programming, game development, and many other things. Java constantly updates and offers new features for developers. The newest version of Java was presented this march, and the creators aren’t going to stop. :)
Simply put, Java is a mature, modern programming language. It might not be the language with a low learning curve (though you don’t have to be a math genius to start with it), but once you master it, you’ll be in high demand.
Ok, sounds good, but ain’t I’m too old for this?
All in all, this is a reasonable question, especially if you assess the risks. Probably, you don’t know now:
- how many time you’ll be able to devote to learning;
- exactly how hard it would be for you to master programming
- which sources for learning will be effective and which are no good
Who would want to waste 6 months to a year and a half (or even more) on something unattainable, especially if you’re in your 30s, 40s…50s?
Well, believe it or not, age is not a problem in learning. A lack of motivation is. And a self-distrust. Try searching for success stories of cool Java programmers who’d started from scratch in their 30s or 40s and you’ll be amazed. I don’t want to sound cheesy, I actually know the guys and recently wrote a post about why you’re never too old to learn Java. You might wanna read it to get some inspiration.
What are the ways to make self-education successful?
Your performance in learning Java depends on many variables. For instance, your previous educational and programming background, the amount of time you’re ready to devote to learning, your further career plans (Mobile or web developments? QA automation? A career at an enterprise or a startup? etc.).
There’s no predefined term of apprenticeship, I’m sorry to say that. :) But based upon the experience of my fellow programmers and students, it takes from 3-6 months to 1-1.5 years to master Java programming. Try following these basic rules:
Make your goals in programming crystal clear. This will help you to quickly progress from getting acquainted with the basics of learning the advanced stack of technologies.
Adjust your learning program according to your goals. Generally, you should start with the installation of basic development tools (JDK and JRE — IntelliJ IDEA, Eclipse or NetBeans), mastering Java syntax, Java core, learning most popular collections and understand the basics of multithreading. Later — explore frequently used APIs, like servlets, JSP, JDBC, JUnit; pay attention to design patterns, databases, data structures and algorithms, popular tools like Git and Maven, and so on.
Balance the theory & practice. It may seem that you’ll have tons of research (yes, you will), but be reconciled to a fact, that you’ll need at least three or four times the amount of practice. Take it as the most important advice: you should code every day.
Where should I learn Java fundamentals?
Read, watch, Google every single thing you don’t understand. Among dozens of books on general programming and specifically about Java, I’d recommend:
- Head First Java by Kathy Sierra and Bert Bates. It’s probably the best Java self-teaching guide because it’s really simple and helps you understand the logic (and basics) of Java programming;
- Java: A Beginner’s Guide by Herbert Schildt . This book is for you if you prefer a traditional approach to explain the subject;
- Core Java Volume I & Core Java Volume II by Cay S. Horstmann. In my mind, this is a great source for students, equally on the start and on the midway of a learning experience. And it has every chance to become your table-book even after you master Java programming.
Try video tutorials and see if they work for you (personally, I’m not a fan and prefer the practice). There’s a great set of Java video courses on EdX, from the introduction to Java programming to advanced subjects. You can also search for Java tutorials on YouTube. Here’s the fresh Java tutorial freeCodeCamp.
Where can I practice Java programming?
I always advise my students to code every day as much as possible. So here are the three best sources for unlimited coding I’ve discovered.
- CodeGym — an online gamified course on Java programming that’s based 80% on practice. The course is adjusted for learning Java from ground zero and includes programming tasks from the first lessons.
- CodeCademy — this course helps you gain useful technical skills for the real programming job and also consists of lots of practice.
- Codewars — this is a source for advanced programming practice and sharpening your coding skills for when you learn Java fundamentals and acquire the needed minimum of programming experience.
Even though mass culture often portrays programmers as the grumpy dudes with lumberjack beards that would do almost anything but interact with others, it’s not like that. Or at least it’s not completely true. :) You won’t make it through the learning if you don’t communicate with other students and experienced programmers.
To get some help and hints on improving your coding skill, I advise you to use Java and Programming subreddits at Reddit.com, StackOverflow and CodeGym help sections.
Don’t hesitate to ask questions — communication is the key to your success.