As a beginner programmer, you might often hear how fun coding is from your peers. When I talk to senior developers, they share a lot of reasons for why they love what they do so much — the field challenges you constantly, it’s highly stimulating, and the thrill of building new things from scratch and seeing your code is hard to compare to anything else.
The way experienced programmers feel about coding can be summarized with this quote from Linus Torvalds:
“Most good programmers do programming not because they expect to get paid or get adulation from the public, but because it is fun to program”.
Inspired by countless r/coding posts and Freecodecamp articles about developers who build websites after months of learning, I couldn’t wait till I finally started learning.
However, when I actually hit Java courses and books, all of a sudden, I realized I am facing the issue programmers don’t talk that much about — stress. Lots, and lots of stress.
A while back, I saw this post on r/learnprogramming that, in my opinion, summarizes the way beginning coders feel perfectly:
“So I’m nearing the end of the semester in software eng undergrad and what the hell! programming is seriously hard.
Like I’m doing maths, physics, and Chinese, and learning java is seriously a struggle.
I am actually overwhelmed with it at the moment like I’m reading chapter 2 and I just don’t get it and the book is saying things like everyone should just automatically assume. So many buzzwords. they just tell you to this and that and I’m asking myself why all the time but no answer.
Am I the only one in this situation?”
Before I got into coding, I was surprised. Can programming really feel more overwhelming than learning a challenging foreign language?
Only months after becoming a beginning Java student, I fully understood the feelings of frustrated students. Juggling a day job, a social life, and programming classes was too much for me. I felt like I was burning out — and I had barely started.
I didn’t want to quit Java — so when I felt that I started hating the learning curve, I had to look for ways to deal with programming anxiety. Now, 4–5 months later, I am still not fully at ease when programming — however, stress levels have become manageable and learning has become an integral part of my routine.
For the sake of other Java students who, too, struggle with integrating programming into your daily life and feel overwhelmed by the large volume of new concepts, I decided to share a few tips that helped me deal with programming anxiety.
The first thing that helped me lose sight of the rut of stress where I was steadily heading is understanding that there’s no such thing as “having learned” programming. I started learning programming as a huge perfectionist — instead of settling on the simplest way to solve the problem, I wanted to find the best (and often, quite a complicated) one.
Long story short, I was lost before I knew it.
Solution: The first thing I would suggest to beginner developers is to not waste too much time following multiple courses, books, tutorials at once. While such a thorough approach might give you a deep understanding of concepts, at the end of the day, you will feel like you are not going anywhere.
To stay focused on improving and make constant progress, I needed to wring out the resources I use regularly. Right now, my study material list goes as follows:
- Courses: CodeGym Java Course
- Youtube channels: Derek Banas
- Text-based tutorials: Oracle Documentation
Having such a defined list of resources helps me avoid chaos when learning and get a feeling of tangible progress after each learning session.
At the beginning of my programming journey, I was a faithful follower of the “Practice makes better” principle. I made it a goal to code as much as I could — before and after work, at traffic, during a party I didn’t enjoy.
After just months of learning, I became the accurate representation of this meme:
Solution: As I was nearing burnout, I realized that I can no longer let programming suck out joy and energy out of my life. Although I did feel guilty about it in the beginning — I started taking much-needed breaks from studying.
If you are thinking “I am a slow coder as it is, how am I supposed to get better if I don’t practice”, take a look at some reasons why a 15-minute break can actually make you a better programmer:
- According to statistics, people can’t be fully concentrated at complex tasks for over 50 minutes. After an hour of intense work, we need a 15-minute break to recharge our focus.
- For the sake of our eyes, ophthalmologists recommend taking a 2-minute screen break after 20 minutes of intense work (and coding is a highly straining activity, even if you use a large monitor).
- Workplace exhaustion leads to embarrassing mistakes and can tank months of work (not to mention your job interview).
If you are at a loss for things to do when you are on a coding break, here are some ideas that work for me:
- Have a quick workout — it’s been proven to stimulate cognitive functions.
- Take a shower — it’ll help you refresh both your body and mind.
- Go for a morning walk when no one is around (for the sake of social distancing).
- Play an instrument — I discovered that learning how to play music and programming require similar skills so jamming some guitar is actually a boot camp for your brain.
When coding errors pile up and you can’t discover what’s wrong or when you can’t get the hang of multithreading, I would inevitably ask myself — what am I doing this for? At the beginning of my path, I didn’t have a clear reason as to why I chose Java or programming in the first place.
It took me a while to define the “whys” for my development journey — here’s what I came up with.
- A lucrative job market. As a programming student, I recently became friends with a physics graduate who had a hard time finding a job related to his major. As a developer, he sent barely 20 CVs out and still keeps getting recruiter emails. He was extremely pleased to discover that, thanks to coding, he’ll never be in a job pickle again.
- A wide range of roles I can apply for. After doing some research, I discovered that learning Java can land me a position in back-end development, mobile programming, even big data or embedded devices development. Having access to so many different tasks will help me prevent burnout and stay challenged even after 10+ years in the field.
- A lot of remote opportunities. When I get too fed up with Java, thinking that knowing how to program allows me to not spend a single day at the office really keeps my spirit up. If workplace flexibility is important to you, remind yourself of a wide range of remote opportunities developers have to stay motivated throughout the learning curve.
Another piece of advice I’d give to beginner developers is to join as many professional communities as you can. Exchanging experiences and getting support from your peers is a powerful way to not stray from the learning path.
Here are the groups and forum threads I follow:
In the beginning of my Java development journey, I believed that once I start doing programming, it will be love at first sight. I thought “I should watch out for practicing too much”.
However, later on, days were coming when I didn’t want to program at all. I could still reluctantly read a coding book or watch an inspiring video, but I hated to practice.
Then, I realized that coding is similar to playing a musical instrument or doing sports. While, to some, the aspects of technique come in a flash and, in a few years, they are ready to play professionally or run full marathons, others need years to get to the same point.
In other words, when we start learning a programming language, we often expect to become prodigies who just get it. However, statistically speaking, only 1 in 5–10 million learners is a prodigy, and only 10% can be classified as gifted. So, whether we like it or not, we’re likely to end up on the average side of the spectrum.
There’s no other answer but through discipline and consistent practice. At one point, I realized that if I don’t hone my craft, I’ll end up losing the progress I already have.
So, even on days when I don’t click with Java well, I commit to 3–4 hours of studying. I am not doing it because I am convinced that studying every day makes me better.
I just know that not practicing will definitely make me a worse coder.
When I talk to Java programmers on Reddit or Stack Overflow, they often point out that the learning curve has no end in sight.
That’s why it’s so hard to draw a line between a learner and a junior, then a junior and a middle and, finally, define someone as a senior developer.
To make sure I don’t get stuck in the student mentality, I needed to add some external pressure to my learning curve. That’s why I decided to find out how much time it takes to learn Java and create a step-by-step learning plan that will allow me to hit the estimate.
How much time does it take to learn Java?
Depending on whether you are a busy, average, or a committed learner, the timeline will vary for you. According to statistics, these are the estimates for learning Java:
- Fast learners — 16 months.
- Regular students — 26 months.
- Busy students — 39 months.
Since I have a full-time job, I chose to classify myself as a busy Java student and built a Java learning plan that spanned three years. I put main Java arguments and deadlines next to each one in a spreadsheet.
I marked the completion status next to each concept to track my learning progress. It was extremely helpful for me as it helped define the limits of my learning path.
After all, the number of things to learn in Java might be infinite — but the number of rows in a spreadsheet isn’t. Two and a half years from now I’ll complete my learning plan — that will be my clue to switch from the learner to the junior developer mentality.
I am frustrated that few people mentioned and publicly share coding anxiety experiences. It’s painfully common among developers — that’s why I would strongly encourage the programming community to open up about it.
As for ways to fight coding anxiety, most of the tips I shared above boil down to pacing yourself. Armed with the right resources, ready to take breaks and commit to the language, you will be much calmer and more confident when it comes to coding.
Learning Java might feel like a dark tunnel — but, with enough determination and discipline, we’ll definitely reach the end.
First published on LevelUp GitConnected.