To become a Senior Java Developer, I’ve been learning Java for many years and still I’m not gonna stop learning as actual coding never stops teaching. I’ve also been teaching it for over seven years now. Just fancy how many mistakes I’ve already made myself and how many I’ve watched my students doing. I am pretty sure now I know a hundred wrong ways of learning to code (as well as dozens of the right ones).
Plenty of paths are available for you to start your developer career. But the same thing creates an illusion that all roads to success in coding are equally good. From my experience, I can say that it’s not completely so. Here I will share the ineffective ways on how to learn to program and show you better alternatives.
When you feel like you are in a mood for an achievement you’re itching to do everything at once. You open several web pages and start learning a bit of Java, and then a bit of PHP, and then you give a short glimpse at JS frameworks. By the end of the day, you think you know a lot about programming. But no.
See how you wake up the next morning and suddenly realize you remember next to nothing from yesterday. Several hours of study for a (seemingly) zero result! Well, that’s the trick of learning anything new: focus on something. Java — then Java only. Stay with this strategy for at least the first few months. Later it might be even beneficial for you to go to the other technologies and try them together in real projects.
Who cares about the simple alphabet when you can start writing your first novel right away? Why waste time doing something only losers would do? Yeah, right. Skip the dull fundamentals. Why would you bother learning anything about classes or inheritance if the Next Big Thing is waiting for you?
Well, not exactly. Learning the basics is the brick and mortar of your future career. If you don’t do your job building it carefully now, you will stumble over it for years. When you get a real job you might really be very short on time to go back to basics. So the best moment to slowly move from points A to B is now. No, you are not the smartest crayon in the box (yet!), so don’t skip learning the fundamentals.
The next trick, which is connected with the previous one: learn regularly. Think “consistency” is just another buzzword? No, it’s not. This is the way the memory works: you have to repeat things several times before they actually become a skill. And without any further use, the skills you worked so hard to build will vanish out of your memory again. That’s why several hours of study with several days of oblivion is a direct course toward failure. Learning programming for thirty minutes per day is better than three hours of practice every other Monday.
“I will do it on my own.” “I thought coding was about typing the right lines. Why would I need people?” These are some of the excuses I’ve heard for not connecting with other people while you learn. Yeah, if you envision yourself hiding behind the monitor and coding genius things in solitude and silence… Well, say goodbye to this illusion! No matter how introverted software developers are, their profession is about teamwork. Yours will be too.
On your learning path, help from peers may also be crucial. And who knows, maybe you’ll also meet your future colleague or even employers there. Where? On the programmers’ forums, professional communities, etc. Come join forums like CodeGym, Stack Overflow, Reddit (e.g., subreddits like r\learnprogramming, r\java, and r\learnjava). Talk to others about your studies and work, ask for help, help others, and get some inspiration. This will definitely speed up your professional skills and — which might be even more important — your soft skills.
The more you read about programming, the better the programmer you become. Well, no. Theory only, even if it is in the form of a bright YouTube cartoon, won’t get you far unless you also practice. Try some coding challenge platforms, play games, and learn by doing. Here are some online options I’ve picked up for you.
CodeGym is a structured Java course that combines lectures and practical tasks. Here you can start doing tasks from the beginner level and get to the confident middle level. The whole course is built as a quest that involves gamification and storytelling. Doesn’t it make the whole process much more interesting?
Gitconnected is a community full of tutorial resources for learning programming. All materials are filtered by software engineers and developers, so the quality of content is super high. Here members not only learn but communicate with each other to find the best possible solutions to complete the tasks.
This resource is a challenge- and problem-resolution-based. There are starter courses, a huge library of challenges with marked levels of difficulty, and job interview preparation tools.
Codechef is a place for a friendly competition. It also has starter courses and monthly challenges. See how your name will look if you become one of the top performers!
Let’s get back to the learners’ mistakes. At first, you will really just learn simple coding. But the “repeat after me” type of the tutorials cannot last long. Creating software is not only about writing lines and lines of code. It’s about making something that would help people fill some gaps and solve some issues.
That’s why you have to start figuring out how to resolve problems with your coding, not just doing monkey business. The thing is that you won’t receive tasks at work like “write 50 lines of Java code.” They would mostly come like, “We need this thing to work this way. Can you do that?” And here’s when you either can or cannot. Try coding challenges like those mentioned above for drilling problem-solving skills.
In a make-believe world, developers create ideal code from scratch, and it miraculously works all at once. But in the real world, things are way more complicated. You write and write features for some app, and then — oops. The app just won’t operate. And don’t you actually know what’s wrong, whether things went wrong one by one or several at a time. And now you have to check up on everything from the very beginning. Good luck! A much better option is to double or triple check every part of your project before you move on to the next step. Then the chances you create something good are much higher.
It’s hard to realize you’ve made a mistake. It’s even harder when there are plenty of mistakes every day and in every line of code. But pretending that it’s alright and should be this way is even worse. So face it: you will write a lot of bad code. And you will have to rewrite it every now and then. It’s inevitable, and it’s a part of the process. Audit your code, and if something has to be changed — go and change it.
When you’re learning to play a musical instrument you barely wish to show anyone your sluggish finger movements. The same goes for code — until it’s perfect, you don’t want to show it to anyone. It’s common that beginner developers don’t ask for help and refuse to seek advice. You can only imagine how much longer and harder their learning path becomes because of this.
Ask for reviews of your code from someone who’s been there before. Go to the professional communities and forums (f.e. Stack Overflow, CodeProject or CodeGym forum), to your tutors if you are a student, and discuss it with your fellows. You will get a different perspective on resolving the same problem. And more than that, you will learn better and faster, as you also gain knowledge from experienced developers. By the way, there is a nice after-effect: you will be able to share your knowledge with the next newcomers to the profession, which is also quite rewarding.
It does require time and effort to learn to program. But you don’t have to complicate the process with the mistakes every newbie programmer makes. If you only read and don’t start practicing, if you never let others review your code, if you don’t acquire a problem-solving approach, it will take ages for you to become a professional. And remember, the very worst thing you can do is never even start learning — or give up after the first failure.
Stay strong! Mistakes and flops are part of the process. Don’t get discouraged every time you do something wrong. The most important part is that you learn regularly and improve your skills eventually. Start right now, and good luck to you!
First published on the Gitconnected.