Some time ago people found programming something unattainable, something that can be acquired by few. But those times are far behind us. Today, more and more people want to master programming skills. Fortunately, there are many beginner-friendly languages novice developers can start their path with, and Java is one of them. The web is full of helpful resources that will help to learn Java without a hassle and make a dive into programming smoother.
In this post, I will show you that the path from zero to hero in programming is real — you only need to have the right approach and a few tips at hand to do that. So, without any further delay, let’s get to them.
Following these steps will help you level up and put yourself on a par with professional devs who are years in Java development.
Java is an object-oriented language, and without a clear idea of OOP principles, you will hardly realize all the opportunities Java can bring to you. They are literally endless. Therefore, it is necessary to have a good insight into Java. Even though Java forces you to write all your code within a class, you don’t really deviate from the procedural style if all of your code is in the same “main” class, without analyzing your domain and representing it as a hierarchy of classes with corresponding relationships.
On the contrary, you should know well how to design a project following OO principles. For that, acquire knowledge of solid principle, object modeling, inheritance, design patterns, and many other concepts covered in some of the must-read books. Among the latter, I recommend getting familiar with:
- “Design Patterns: Elements of Reusable Object-Oriented Software” by “Gang of Four”
- “Clean Code” by “Uncle Bob” Robert Martin
- “Clean Architecture” by “Uncle Bob” Robert Martin
- “Refactoring” (2nd edition) by Martin Fowler and Kent Beck
- “Extreme programming explained” by Kent Beck
- “Test Driven Development: By Example” by Kent Beck
You might have acquired strong theoretical knowledge, but you can hardly put them into practice if you have no idea of language constructs and main APIs, such as java.lang.* , I/O, collections, threads, JDBC, and many more. Whereas building web apps will require that you have a mastery in servlets and JSPs concepts, although some of the modern frameworks provide you with a good level of abstraction on top of those things.
When learning coding theory, you may think for a minute that things are much simpler than everyone is talking about. But only until the moment you begin to practice. The theory is necessary, however, if you can’t put your knowledge into practice, it makes no difference. Therefore, you need to complete hands-on tasks in parallel with reading books, watching tutorials on YouTube, and listening to podcasts.
To feel confident about your programming skills, you need to write tons of code, which is possible with the platforms I list further. Only repeated practice will extend your experience and allow working on advanced real-world projects.
However, to avoid adopting bad practices and falling into known anti-patterns, which is very easy to do if you are learning on your own, you may need to have an experienced mentor who would get your code reviewed and would guide you through the journey of self-improvement.
Consider CodeGym if you want to focus on learning Java only. This is a unique programming course that will force you to write tons of code. Still, it is user-friendly and offers lectures together with 1200 hands-on tasks starting from Java basics to concurrency and frameworks. The course is created using the latest techniques, including visualization, gamification, and storytelling aimed at making the learning process hassle-free.
Other than that, the virtual mentor assigned to you will check your solutions in an instant, so you won’t have to wait for verification forever. Another resource, where you can seek help with your assignments is the CodeGym forum. Here, the students answer each other’s questions and discuss how they cope with every single task.
This is another learning platform, where you can teach yourself to code in Python, C, C++, and Java language. With this resource, you can prepare for interview questions and land a programmer job in tech giants, apply minor tweaks to your code and test it, as well as get a chance to learn in the interactive IDE.
GeeksforGeeks is created to get you totally covered, whether you want to learn algorithms, data structures, or programming itself. So, if you want to get well-written, well-thought, and well-explained solutions to your questions, this is the right place.
Codecademy is a unique education company committed to building an outstanding learning experience. The choice of programming languages here is almost endless. Whether you want to know how to learn Java, Python, Kotlin, Swift, Ruby, or any other languages, this website will get you covered. If you are not sure where to begin, the platform offers to take a quiz to point you in the right direction.
During the learning process, you will also write real, working code, and get instant feedback right after submission. Thanks to the acquired knowledge, you will soon be able to work on real-world projects creating your own interactive web pages. Apart from that, the website provides courses devoted to back-end development, so you can become a full-stack developer in the future.
Here in the programming world, we are all in the same boat. Every day, someone starts the journey in programming that we’ve also started. Someone chooses to work with the same technologies as we do. Someone already knows the solution to a specific problem we’ve just faced during the work on a real-world project.
Although a simple test of a framework may not bring you real problems, weird errors happen to appear from time to time when you start using the framework. But the worst thing, in this case, is that you will hardly find a solution to the problem in the official documentation. This is where subscribing to relevant forums can help you. There will probably be someone who’s already faced the same problem and found a solution to it. So, you can seek help and get your questions all answered.
Here are my favorite forums that I would recommend putting on the list.
- StackOverflow is an open community for programmers who seek help with the toughest coding questions, desire to share their knowledge with other specialists and find a job.
Reddit channels, such as:
Slack channels, including
- Hashtag Developers, the biggest community of developers on Slack.
- European Dev Explorer, a helpful resource for programmers who are to move to or within Europe. This is where you can learn more about the best European cities and ask questions about relocating and everything related to it, including the cost of living, taxes, and the most popular jobs on the market.
- DevOps Chat, another Slack community of devs who love technologies and can boast extended working experience in the industry. Here, you can find DevOps jobs, events, and articles, or establish communication with other community members.
- SitePoint is a community for web designers and developers who want to edge their skills in the development and better understand specialists of related areas, such as UI/UX, etc.
- Hackers News is a #1 forum, where all hackers are coming together to learn about the latest news in the software development world, get the coding questions answered, and share working experience.
A good developer is supposed to not only know how to use a framework but also be able to read the code of various libraries and classes along with the code written by other specialists. The latter will help you better understand the internal working mechanism, understand and compare the way others find solutions to problems, and how you do it.
Register to the GitHub code hosting platform and find a source repository there to work on. Make sure you understand every line of code you read.
Keep an eye on trends in coding. As they are changing fast, sooner or later, you may find the framework you currently use outdated. Whereas, new frameworks and technologies come into play with an extended set of features added to help you solve the problem more easily. In the end, brand new frameworks displace the obsolete ones, so you should be attentive to what is going on in programming.
If you want to work on interesting and high-paid projects, it makes sense to get familiar with different methodologies, such as Agile, SCRUM, XP, Waterfall, and others. Sometimes, different companies use the development methodology — some prefer Agile, while others choose a Waterfall model. Therefore, knowing different methods allows you to be a flexible and highly competitive specialist on the market.
These are the steps I’ve identified over the years of mentoring and working in programming. I’ve come to these certain practices after some mistakes and learned lessons by myself, my students, and fellow developers. You may take them as reference points or find your personal approach, which is also fine. The only thing that should stay the same is a regular practice, keep up writing the code to succeed in your future career.
As for now, if you have something to add to these practices, feel free to share your thoughts in the comments.
First published on Quick Code.