Learn the mistakes now so you can avoid them yourself
I have good news for you, friends! Now is the best time to learn to program and it is kinda heaven for self-learners. It is much easier today than 10 or 20 years ago. Today, we have almost unlimited access to different information about languages and libraries. There are thousands of online courses, video tutorials, and forums where we can find answers and ask for help or advice.
And yet, students still make mistakes as they did 10 or 20 years ago. It is only natural for human beings and there is no avoiding it. However, the number of “rookie mistakes” can be minimized if you do it right from the very beginning.
In this article, I describe the most common mistakes every programming student makes. Making these mistakes again and again, potential programmers often lose motivation to learn, consider themselves incapable, and at best delay their studies. With the right approach, they’ll find the best way to learn to program and become a software developer in a year, if not faster. The proper initial technique will help you buy the most valuable thing: time.
I am going to explain how to set these techniques to shrink the pain of failure that some new programmers experience. The collection of these errors is based on my personal experience as well as the experience of my students (I am not only a practicing software developer but also a Java Tutor). Let’s start.
The next thought is extremely important: Programming is a practical activity. Every practical activity needs, well… practice!
You can’t become a violinist (even the worst one) without playing an instrument. You can’t become a swimmer just by reading the book “How to Swim: 1000 and 1 Tips.” The same story jives with our topic: You can’t become a programmer by learning a lot of theory and writing a little bit of code.
If we learned to walk in the same manner as we do to program, we would risk not getting back on our feet. Seriously.
What could be more logical? The best way to learn to program is to write the code!
However, this is not obvious to everyone. Students forget that programming is practice and perceive it as the study of an academic discipline. They dig into the theoretical jungle, do not understand anything, lose motivation, and finally abandon their studies.
Sure, theoretical knowledge is important. You need to learn programming theory as well. However, the knowledge portion, especially on the very first steps, should not exceed 20%.
Write code from the very first day of your Java learning. Lots and lots of code! The best way is to find a collection of simple problems or good practical courses that contain them and get your hands on them. You should write programs not after reading the basics, but concurrently. Do it again and again. This is the number one rule.
During my teaching career, I have met a wide variety of students. Some of them were keen on programming. They could grasp the topics almost immediately. Wow… I wasn’t anything like them during my study!
On the other hand, some people didn’t absorb knowledge quite as quickly. Some of them seemed to be real slowpokes. But sometimes, I have to say pretty often, the folks from the second category gradually caught up with the first, and sometimes even overtook them.
The other situation also happened from time-to-time: A gem of a student stopped showing up in class, stopped sending homework, and then just disappeared.
I analyzed all the cases of “sudden student disappearances” and realized that the most common problem for those who quit was not a “low level of natural ability” but irregular learning.
The reasons were different for everyone, but here are the main ones:
- Very busy at work
- Family obligations
- Lost motivation
- Not knowing what to do next
It’s complicated to do something with the first two reasons, but if you’re serious about becoming a programmer, it’s extremely important to integrate programming into your life regularly. Think about what you can sacrifice for your dream to make it real.
Here are some examples from my students:
“During my studies, I gave up shopping, used delivery service, and freed up a couple of hours a week that I needed.”
“I quit my favorite choir when I started learning Java. The choir took four hours a week plus learning new parts and chanting on my own. To be honest with you, I missed it badly. But now I am a Java Developer and returned to my choir! I’m incredibly happy about this!”
“I decided to develop my own Android game, so I temporarily stopped killing time in other people’s games.”
“I shrank hours watching fewer TV shows and I delegated walking with my dog to my wife and kids.”
“I started using the subway instead of a car for my commuting. So I had 40 minutes in the morning and evening for programming.”
“I started waking up earlier, took my laptop, and went to a cafe for breakfast to learn Java there. What a great time it was!”
It is much easier to deal with reasons three to four. It is especially important to create an adequate schedule and learn regularly. According to my observations, the most successful students studied two to four hours a day, every day, with one day off per week. Difficult, but still acceptable: one hour every other day.
Try not to drop out of learning for more than a week. It’s like in “Alice Through the Looking Glass.” If you stay, you slowly step back. It takes all the running you can muster just to keep in the same place. If you want to get more, you must learn at least twice as fast as that!
Consider that if you have not been programming for a week, you have taken a major step back. A month goes by — two months — and suddenly you have to start over from the beginning.
Remember in the previous section, among the reasons why students quit learning was, “I don’t know what to do next.” This is very common with self-taught people who learn mainly from videos and articles. Naturally, they do not yet know what video they will open next.
Some people just love the process of learning. Sure, it’s a good way to broaden your scope and it could be a good hobby, but often such people just waste their time jumping from one hobby to the next.
If you want to become a software developer you need to reconsider your attitude toward learning and make it not a goal but a path to a goal.
If you study on your own, it’s very important to realize the sequence of actions. Decide what, and in what order, you will study. Where can you get a study plan?
Your best bet is, of course, to find appropriate online Java courses that suit you and follow them. If this is not possible, go to the forum and see which open courses, books, and tutorials are recommended most often. Go to the table of contents of such books, tutorials, and courses and use them to build your study plan. The best tactic is to write it out or copy the main topics and deal with those first.
Very often, students try to understand every line of code or how the language works when it’s too early to do that.
For example, this prominent line of code:
System.out.println (“hello world!”);
Here you can see one of the first lines to be typed by every future Java developer. It is responsible for displaying the phrase “hello world!” to the console. If a student who has just written their first program starts to bother about what the “System” is and why “out,” they will most likely not understand anything and will waste a lot of time. However, if they get to that after learning the basics of Java and OOP experience, the organization of I/O streams will be much easier to understand.
Of course, this is a very difficult moment for a self-guided student — determining what is incomprehensible because it is too early, and what is incomprehensible because you did not put in enough effort. All good courses and textbooks are built on the principles of “repetition with deepening.” First, the topic is studied superficially, and then you return to it several times, taking into account the student’s new knowledge.
Ask yourself a question:
- Is it important to get this knowledge right now?
- Can you use an incomprehensible object without understanding its nature?
If it’s really important, ask a question on the forum. Formulate the question clearly and describe your previous experience in plain terms. For example: “I have been studying Java for a month already, I know basic constructions and OOP, I cannot understand this.”
Free access to any information is great. But besides the benefit, it also creates a problem. There are always students who simply do not know where to stop, so they are constantly looking for a better resource, a more detailed and understandable article, a more interesting video on the topic, etc. It turns out that beginners spend their time not studying but collecting resources, articles, and videos. As a result, they do not have time to process them and they lose motivation. Or, on the contrary, they begin to delve into this or that topic in a way that they can’t get out of it, turning into problem number four.
If you have a friend who learned Java or teaches it or anyone to ask for recommendations on good Java resources, ask them. If you don’t, ask anyway… on the online forum!
Or at least read the guidelines and select the resources to try. Choose one or two main sources and one to three auxiliary resources to focus on.
- One course with tasks
- One or two tutorials or a book
If you have to Google too often, change your resource. If you feel that the search for an interesting article or video draws you in like aimlessly scrolling through a social network page, drop it.
Since I’m a Java tutor, I will give my recommendations. Here are the resources that I recommend to my students, especially those learning Java on their own.
- CodeGym — A very good website with a Java course that helps newbies avoid a lot of the mistakes described here. The most valuable things about it are the huge number of tasks, the validator that checks the correctness of your code, and an “automatic advisor” that helps you understand what you are doing wrong. The course covers almost all sections of Java Core and has a nice study plan.
- GeeksForGeeks — A web portal that also has excellent courses, many tasks of different levels, and articles. Try not to get overwhelmed — it’s quite extensive. When you learn the basics of Java, I recommend practicing algorithms and data structures. This is very useful for every future programmer.
- Coursera — Princeton university algorithms course by Kevin Wayne and Professor Robert Sedgewick.
Starting from scratch:
- “Head First Java” by Kathy Sierra & Bert Bates — Great book for first-timers with nice schemes and graphics. Very beginner-friendly.
- “Core Java Volume I — Fundamentals” — A very clear and detailed book. Don’t be intimidated by the large volume. Everything is written clearly and there is little unnecessary information. However, examples are sometimes lacking. “Core Java for the Impatient” by Cay S. Horstmann — I recommend this book to anyone who knows a different programming language but is starting Java from scratch.
At the next level, when you have already written a lot of code and solved a good number of problems, and you want to understand deeper how everything works, I recommend the following two classic books:
- “Thinking in Java” by Bruce Eckel and “Effective Java” by Joshua Bloch. These authors know Java from the inside-out and will share this secret knowledge with you.
- Of course, Medium is especially useful here.
- Java Magazine — Not for comp