So, you’ve decided to become a programmer. Great idea, but what should you do now?
There is a huge difference between having an idea and implementing it. You will face hesitations, wrong ways of learning, bugs, loss of motivation, laziness, lack of time, and so on. I don’t think you can find an article that solves all these problems.
However, you can definitely avoid at least some of them, if somebody tells you what’s wrong.
I can be this “somebody” for you if you want to learn Java.
This article describes common mistakes of those who want to learn Java and beginner Java (or students of any other programming languages). I am both a Java senior developer and a Java tutor, so I know a lot about the topic.
College or any other official educational institution gives you knowledge and understanding of computer science, but it hardly makes you a professional, industry-oriented software developer.
In college, you face an academic approach to programming. Your study is focused on theory and algorithms. You might also do some large close-to-scientific projects at the end of the year. It can be useful, but not for a typical industry-oriented software developer.
What I mean to say is that perhaps college is not the best source of software development knowledge, but it might suit you if you are dreaming of a scientific programming career. If you are a high school student and want to be a programmer, computer science college is also a good choice for you.
In any other case, IT college isn’t a necessity, and pretty often, it is just а wastе of your time. Remember, not all programmers have a computer science degree. Unsurprisingly, most of them don’t.
I remember Dave, who was one of my students. He tried different free online Java courses again and again. He bought, I presume, half of all the Java books on Amazon. He had a million pages in his browser bookmarks, all about Java … and … he didn’t know what to do.
He would start one course, then another, only to drop them one by one, again and again. Three years(!) of his learning endeavor passed before he met me.
“So, Dave, what topics are you on at the moment?” I asked.
“Scanner and reader,” he answered.
“Oh, well … How are your object-oriented programming and collections going?”
“I tried them just a little bit, but not in depth.”
“You told me you’ve been learning Java for three years, haven’t you?”
“… Yes, but I stopped a few months ago, you know, and just started from scratch again.”
He wasted three years just wandering around and skipping from one source to the next. Well, if you know Java even a little bit, you must be thinking that Dave just isn’t made for software development at all. Fortunately, that’s not correct.
His problem was that he started to collect courses and books instead of actually learning. He wasn’t a bad potential programmer, but a bad teacher for himself.
Dave became a trainee Java developer within a year after he joined me and started taking his learning seriously. I am not trying to say to everyone, “Hey, find a tutor right now; you can’t do it by yourself.” Most people can do it by themselves, if they know what to do and have a proper syllabus. And that’s what I did for Dave first of all. I developed his syllabus and learning schedule.
Don’t get me wrong. I know many people who learned programming by themselves using only the internet. They have one very important skill—the ability to work with information and to distinguish between what is useful and useless.
Mistake No. 0 can kill your dream quickly, and No. 1 does it by slowly and painfully eating away at your time and money.
It is easy to struggle with No. 0. Please visit any jobseeker platform and search for a Java software developer position. I don’t think you’ll find any that require a computer science degree but rather require technology knowledge and experience.
The No. 1 mistake, “the illusion of learning,” is a tough one. It contains laziness, lack of decision-making, and the hunt to find the magic pill for successful learning. A potential developer gets too much reliable information and doesn’t know what to do with it. They start to think software development is way too hard and stop trying … or try again and make the same mistakes.
Well, my main advice is to do it the right way:
- Get the right syllabus. If you have an adviser (a tutor or a programmer friend), that’s the best scenario. If you don’t have a syllabus, and you can’t or don’t want to take offline courses, search for a good online course, one or two at most, and go ahead. Independent reviews/ratings will help you choose the right courses, and later in this article, I give some examples of good free courses.
- Consistency is the key to successful learning. Code every day, or every other day at the very least.
- Of your time, 75 percent or more must be dedicated to practice and 25 percent or less to theory. I will get into the analysis of this typical beginner mistake in more detail below. ## Mistake No. 2: Reading Too Much Theory and Not Practicing Enough Imagine а 2-year-old little guy who is trying to talk. However, his mommy and daddy don’t let him do it, because he is too little and knows nothing about the subject. They decide to explain grammar rules to him first and hire a speech therapist (the sooner the better!). Well, after all these measures, they let him try. Well, I guess there would be more speechless people with such an approach!
Or let’s imagine a bigger guy who wants to play ice hockey. “Sorry, buddy. No ice for you until you read or listen to some lectures, such as:
- The physics of ice
- Kinematics and dynamics of hockey player movements
- Puck and hockey stick for dummies
- Psychology of ice hockey players’ teamwork
- Wounds and traumas of beginner ice hockey players
- What to do if the other hockey players’ skates are uncomfortably close to your face” “Well,” the guy says, “I’d better continue my life without this game. Hockey must be very boring and scary. And way too complicated.”
Seems ridiculous, doesn’t it? However, many students and some teachers think this is how it goes when we talk about programming.
My message here is very simple:
- To master any practical activity, you should practice it!
- Programming is a practical activity.
- The conclusion of 1 and 2 is obvious, right? From the very first steps, find a course or book with a lot of coding tasks, and solve them every day. If you do this, you will omit one of the biggest mistakes when learning programming: focusing too much on theory.
I don’t mean to say you should ignore theory. Just “less theory, more coding,” with a 25:75 ratio. Writing code is the best way to learn Java.
Does your code do what it should? Pretty often, the rookie programmer thinks it does, if they get the right result. However, it doesn’t mean everything is working fine.
The earlier you learn to test your code properly, the faster you become a better coder. Learning unit testing is a very useful skill to have, but not for a complete rookie. You know, proper unit testing is a kind of superpower!
The first step to mastering your own code review is to think in a “what if?” way and try different data sets. It is not easy to consider all cases, but you collect precious experience with every “what if” at the right moment.
However, I must admit that in recent years, some really nice programming courses and platforms have appeared, equipped with automatic code review. They simplify your first coding steps significantly and give you a chance to concentrate your attention on the tasks.
Below, you’ll find a couple useful links to resources with automatic code validation.
Do you know the most destructive and irrational way to develop practical skills? I can describe it with only one word—“sometimes.” Learning how to code is kind of like climbing an icy hill. If you stop, you will slide back very fast and probably even roll headlong down. It’s the same story with your coding skills. When you stop coding, you start to lose the skill surprisingly quickly.
Learning that way wastes a lot of your time. Stop torturing yourself, and practice coding regularly. By that, I mean at least three times a week—or, even better, every day.
Do you know what a professional software developer does when they aren’t successful in trying to solve a task with possible solutions they already know? They go to Stack Overflow to ask others on the forum. Why don’t you, my dear Java beginner, do the same?
“What if my question is stupid and other guys laugh at me?” you may ask. Well, really, what if? You know we are living in the Great Trolling Era, so a good idea is just to ignore them.
Remember one important thing: You have the right to ask the dumbest question in the world for the sake of your learning. But before asking, just google your question. Almost every beginner question has been asked by other students and has already been answered.
When it comes to programming forums, asking questions or just chatting with other Java beginners or software developers is really motivating. You realize that you are not alone with such issues, and there are many people who can help you, as well as those you can help.
“I tried to solve the task once and didn’t get the right answer. I should ask Google … or my tutor … or that software developer I met recently.”
Stop, stop, stop. You haven’t even tried yet!
Of course, it is hard to estimate the right time to ask for help. However, first ask yourself why you want to get help right now. Probably, it is just your laziness or that you want to go through the task faster. If that is the case, don’t do it. This is your learning we are talking about here, not a speed competition.
Well, this is the flip side of Mistake No. 5. Some students are ready to spend hundreds of hours solving one task, which is just too tough for them right now. I believe that solving a lot of simple problems for beginners is better than solving one difficult task, at least for the first two or three months of their learning.
I suggest you leave your tough task(s) for later, and go ahead and solve the others. You can always come back to the difficult task later. Maybe you’ll find it is not as tough as it seemed to be?
“I don’t understand the topic … I am not good enough for programming. I should give up and try something else.” Sounds familiar, eh?
Every—I mean it—every beginner programming student lost their motivation at least once. It happened to me many times. Way too often, in fact. All my teammates, as well as all my successful students, experienced this as well.
Remember this when it hits you again. If your lack of motivation seems serious, try to change the topic you’re learning right now. And don’t forget: Almost anyone can code. It is not easy to learn, but it is definitely possible.
I collected some good links for my students and for simplifying my own work as a tutor. They will be useful for you as well.
CodeGym is for beginners to upper-intermediate students. It is a practical online course where you can find an excellent Core Java syllabus, about 1,000 (I presume) coding tasks with automatic code validation, as well as hints and tips. It seems a little bit like a video game: You have your character (a roboguy) whom you have to level up from a rookie to a Java programmer. The more coding tasks you do, the more points you get, and you spend these skill points to open new lectures and tasks.
CodinGame is for lower-intermediate to advanced students of Java or other languages. It gives you the ability to change the game right in the browser-based integrated development environment, compile it, and look at the changes in real time! Take some tough challenges and become a better developer. It is not an online course but a fun way to code, with enjoyable, challenging exercises for serious beginners and for pro developers.
GeeksforGeeks is a huge computer science portal for geeks. It contains some academic courses for different programming languages with nice syllabuses and a lot of practical tasks, quizzes, and puzzles. You can also find useful problems connected with algorithms and data science.
Oracle Docs is the main source for every Java developer or student from the authors of the language.
Stack Overflow is the biggest developers society where you may ask your questions or search for the existing solutions to your questions (asked by other students).
Coderanch is smaller than Stack Overflow, but it’s very beginner-friendly and good for Java developers.
What to read/watch for your career:
- Head First Java by Kathy Sierra and Bert Bates is a nice book for rookies.
- Core Java Volumes I and II—Fundamentals by Cay Horstmann is one of the best Java books and suits every Java student. ## Face Java Challenges With Confidence You are not alone. All beginner Java students face challenges on their way to mastering software development. It’s okay to make mistakes; you’re still learning!
If you are stuck in your studies, perhaps you are faced with one of the problems I mentioned above. Remember, they all have an easy solution. Keep this in mind, and practice the right way.
Stop worrying, and start coding!
This article firstly was posted as a guest article on stunning Simple Programmer blog.