CodeNewbie Community

Cover image for Keep Calm and Start Coding: How to Fight Coding Anxiety
John Selawsky
John Selawsky

Posted on

Keep Calm and Start Coding: How to Fight Coding Anxiety

Does programming sound like a stressful job for you? People believe it shouldn’t be since it seems all coders do is sit in front of the screen, typing. There are no life-or-death situations, no enormous responsibility compared to medicine, banking, or accounting. Technically speaking, software development should be one of the calmer jobs out there.

Yet, it turns out, the coding anxiety is real. When I talk to my programming student, it turns out many can’t keep their focus when working for more than one hour and get consumed by the stress of finding a job in tech.

That’s why I wanted to share some tips to help programming learners de-stress their education. Applying these will give you more confidence and help enjoy every hour you spend studying.

Why Are Programming Learners Stressed Out?

To start with, let’s take a closer look at the main causes of stress among tech learners. To not bore you with long lists, I narrowed the list of reasons coders don’t feel at peace down to three:

  • Imposter syndrome. Since a programmer’s median salary is quite high ($86k/year, according to Payscale), it’s common for developers to think that their skills aren’t worth the paycheck. Working in teams adds to the pile of pressure as well — you are always in touch with your peers who seem sharper, more well-versed in tech, big-picture-driven, or attentive to details. All of the above makes software developers underestimate worth and start stressing that others might call them out as pretenders one day.
  • Not being the “real programmer”. If you’ve been interested in tech long enough, you are no stranger to the “real programmer” archetype. You can often see these coders in Facebook groups, on Reddit, or Stack Overflow, telling how much they work and how little they care about weekends or off-time. Seeing coders as no-lifers became so common that beginning programming learners started wondering: “I can’t code for 8 hours straight — maybe software development isn’t it for me?”. The truth is, working 16-hour long days is highly counterproductive — according to a Stanford study, 40-hour week employees work three times more productively than those who pull off 60-hour sprees.
  • Starting too late. Although, in my opinion, coding has no age limit as long as you are eager to learn and absorb new technologies, some of my students don’t seem to think so. Indeed, stories about 14-year-old AI engineers can intimidate and discourage whoever. 30+-year-old programming learners feel threatened by younger programming prodigies, start underestimating their proficiency, and don’t risk asking for a higher paycheck at work.

If you, too, struggle with these issues (and we’ve all been there at least once), the good news is, there are always proactive ways to deal with coding anxiety and improve the efficiency of your learning.

4 Tips to Learn Programming With No Stress

How can you make learning how to code enjoyable and consistent? How to make sure the successes and failures of your peers don’t make you jealous or discouraged? These are the tips I implemented over the years of learning programming languages and working with beginner Java programmers.

Tip #1. Choose a primary programming language

Is it better to master one programming language or be an intermediate-level programmer in many is a common debate in software development. Personally, I don’t mind taking on multiple languages. However, I believe that every programmer should have one technology that he knows like the back of his hand.

Think about languages we speak — there are a lot of people who know two, three, or five. However, most of us have the highest proficiency in one (at best, two) language — the one we think and talk to most people in our social circle in. Programming is similar in that regard — you can be advanced in many languages — however, make sure to have one language you “think” in as a developer.

Which language should a programming student learn first? Personally, I recommend taking the number of learning resources, the job market, and the versatility of the technology into account. I suggest programming learners start their software development journey with Java — here’s why.

Java leads by the number of job postings

Alt Text

According to Indeed, the largest job aggregator worldwide, Java, Python and Javascript are leading programming languages by the number of job openings.

Java is taught well

Programming learners often feel stressed and overwhelmed because they don’t trust the resources they find online. To make sure you are learning a programming language according to the highest industry standards, it’s helpful to look up to top universities and learning practices.

If you want to use academic materials for learning, going with Java is a smart choice since the top 10 CS degrees in the country choose the language for an introductory course (the Python leads by small numbers, with 13 available programs).
Alt Text

Java developers are paid well

Last but not least, not having the assurance that your work is well-compensated is stressful. That’s why ensuring a job in the programming language you study is financially lucrative is crucial. As for Java, it’s one of the most well-paid fields of computer science study. According to PayScale, an average Java developer gets $74,000 per year.
Alt Text

Tip #2. Plan your education

It’s common for beginning programmers to dive right into learning a programming language without doing much research on its fundamental concepts. They rely too much on all learning content they find online — more often than not, this is a straight road to a mess. Most beginners start meddling in advanced concepts too soon and get discouraged by the complexity of the language and the lack of progress.

That’s why mapping out the learning curve is crucial if you want to become a successful programmer is the shortest amount of time possible.

How to create an efficient curriculum you will actually stick to?

To start with, write down the concepts that make up the language you want to learn in the order of increasing complexity. For Java, the list will look the following way:

  • Basic Java syntax
  • Main OOP concepts
  • Collections and data structures
  • Databases
  • Concurrency and multithreading
  • JVM and memory management
  • Java Ecosystem proficiency

Break each of these concepts down into smaller modules — these will be the topics for day-to-day learning. Here’s how the breakdown of the Java syntax looks like:

Java Syntax Concepts:

  • Variables
  • Data types
  • If-else operators
  • Loops
  • Continuous and Break statements

Since this is not a Java-specific post, I will not lay out the entire curriculum in here. However, there are plenty of learning roadmaps online — be sure to check these out.

Set a clear deadline for each of these modules — this way, you will have a tangible understanding of how much time you need to complete a part of your curriculum.

Be generous in your estimates — a programming language concept might turn out to be more complex than you think. It’s better to have an overhead rather than to start stress-practicing for hours.

Tip #3. Collect the right resources

Having to apply the knowledge obtained when learning in real-world conditions is a major freakout cause among development students. A Freecodecamp forum user summarized this anxiety perfectly:

“Recently I realized that whenever I am coding, I am starting to have the fear that one day I am gonna be interviewed by other professional programmers.”

If you, too, are scared that you don’t have what it takes to ace job interviews, the resources you use for learning might be to blame. While books and video courses are important for absorbing the essence of the language, I’m confident that programmers should make a huge emphasis on practice while learning.

When speaking to beginner Java developers, I typically suggest the following resource stack

Practice-based platforms — 50% of all resources

In coding, practice makes perfect. That’s why solving real-life problems is just as important as soaking the syntax of the language from books and online courses.

I strongly recommend students to take their time and research practice games and platforms that help you get better in whichever programming language you chose. Here are my favorites for Java:

  • Codegym — a powerhouse practice platform to become a proficient Java programmer. There are over 1200 practice tasks combined with short lectures that help you refresh the theory behind every problem. Codegym covers all aspects of the language — Java Core, Collections, Multithreading, Services, and JSP, even database handling and SQL.

Alt Text

  • HackerRank — an easy-to-use and well-structured platform with Java practice problems. If you want to compare yourself with other programming learners, this is the right place to compete with each other by completing bite-sized challenges. There are tasks of different complexity levels — these will help both beginner and advanced developers.

Alt Text

  • Codewars is a community-driven Java practice resource where developers create challenges and practice tasks for each other. Other than Java, the platform supports JS, C, C++, and many other languages.

Alt Text

Books and tutorials — 20% of all resources, mainly for references

Statistically, most developers don’t read books. I understand why — most of them are boring, outdated, and don’t stick in your head well enough. However, if I’m stuck when working on a project, I am happy to know which books, documentation resources, and tutorials to reference when finding a solution to my problem. In my opinion, you shouldn’t thoroughly read books back-to-back — but going through a couple gives you a solid theoretical framework of the language.

Here are my favorite Java books and tutorials:

Books:

  • Head First Java — an engaging, beginner-friendly read that gives you a quick understanding of how the language is used and its basic structure.
  • Effective Java — a one-of-a-kind book for experienced programmers who want to make the most out of the language’s toolset.
  • Java Puzzlers — an honest guide to the pitfalls and challenges of Java. Reading this book will save you hours of dealing with post-deployment threats.

Tutorials:

  • Java Code Geeks — a well-structured list of Java-related posts that’s easy to use for references when working on new projects.
  • Java Oracle Tutorials — official Oracle tutorials are most developer’s go-to reference resources (myself included).
  • Programming Creek — another intuitive and easy-to-use Java tutorial database — this one definitely deserves to be on your list of favorites.

Online courses — a deeper look at the language, mix theory, and practice — 30% of all resources

Video online courses come next in my list of software development learning resources. Unlike books, these are more practical and engaging. Lecturers often feature case studies and share real-world language applications. Other than that, there are learning platforms that allow students to get in touch with educators to ask questions.

While online video courses don’t give you enough room for practice to be confident in your coding skills, they are definitely a solid way to set up the context for the concepts you read about in books.

Here are my favorite Java courses:

4. Not joining communities

One of the fatal mistakes I’ve seen developer students make is trying to get through the hardships of programming on your own. Coding is hard and lonely as is, and, chances are, your family will struggle to understand your education hardships.
To make sure you don’t internalize challenges and get discouraged by minor setbacks, call out to colleagues for help. Personally, I’m a huge fan of Reddit, Freedcodecamp, and Stack Overflow — but you have to find what works for you.
Here is a list of programming communities to check out as a starting point:

Reddit:

  • r/codetogether
  • r/ComputerScience
  • r/dailyprogrammer
  • r/compsci
  • r/java
  • r/learnpython
  • r/machinelearning

Other platforms:

Conclusion

If you are a programming student struggling to deal with coding anxiety, remember that you are not alone in this. Although there are different ways to deal with learning stress, in my experience, having a clear goal and plan for your CS education will help you approach every day of studying with a calm mind.

As a starting point, choose one language you want to become proficient in, create a detailed, deadline-based curriculum. Find the right resources — books, courses, and practice platforms — to advance your learning. Don’t forget to connect with other developers as well — it’s easier to overcome the hardships of programming learning together.

Firstly published on Levelp GitConnected.

Discussion (16)

Collapse
sabineemden profile image
Sabine Emden (she/her)

I agree with the advice for new software developers to pick one programming language and master it thoroughly before learning additional languages. I would add career interest to the criteria for selecting your primary language. For example, JavaScript would be an obvious choice for frontend web developers, while data scientists may be better off with Python.

However, I don't believe you have to choose your primary language at the very beginning of your coding journey. Explore the field a bit and find out what interests you. Most basic programming concepts can be found in most, if not all languages, and it doesn't much in which language you learn them. Pick a language - any language - that has good learning resources and a friendly community. Be curious and explore different career options for developers. Once you've found your niche, choose your primary programming language. Happy coding!

Collapse
andrewbaisden profile image
Andrew Baisden

Well said I agree with this.

Collapse
gingercatjayne profile image
Jayne

I certainly feel this article was written with me in mind! I, too, am in the older (over 50) age group. Last year, I did html and CSS with Sololearn, and although I have ventured practising this with FreecodeCamp and W3Schools, I feel as if I am stuck in a record groove! I like html and CSS and feel so comfortable. I have started a course on becoming a WordPress developer, I don't mind the solitude of coding, I like being challenged. But I am still not sure this is the right path for me.

Collapse
sssiobhan profile image
sssiobhan

Stuck in a record groove! That's funny. I know for myself, I was pretty crazy when I was younger and I had a lot going on. Plus, the internet used to be so basic and lame. I like the way things are right now. If being old seems like a problem, I will just use a filter 🤭😉😺

Collapse
chukwukagideon profile image
Chukwukagideon

Thanks alot for the tips.
I've covered some basics of web development in past times and I want to learn JavaScript as my primary language.

Would love to know of any good friendly community for JavaScript beginners.

Collapse
brandelune profile image
Jean-Christophe Helary

Imposter syndrome

I have no issue with that. I know that IT salaries are overblown. Obvisouly, they are still way below what they create as extra value to the owners of the code so we still have a case of productivity gains pocketed by share holders and not workers.

Not being a real programmer

I've been in IT for 35 years, solving problems that involved code I did not fully understand, writing code in languages I did not fully master, and all sorts of other things. I know "real programmers" who are not able to do what I can do, etc. What we do is what defines what we are. If the label people stick to us doesn't match, either we try a bit more to match or we change of label. There are tons of jobs in IT that are "programming jobs" and do not involve programming from morning to evening.

Starting too late

With life expectancy at 75+ for a lot of us, starting anything now (50+ for me) means I could be proficient with tools I don't know yet in like a year or so, and I have 25 years or experience in various IT fields that can help me find things that 20+ years old people don't know or understand or care about. That's fine with me.

Tip #1, primary language

The comparison to natural languages proficiency is tricky because it's more complex than that (I'm French, I've lived in Japan for the last ~25 years, and I use written English on a daily basis, my working language is Japanese and I barely use French on complex issues anymore). Plus, I did not really have a choice in the languages that I speak/learned/use.
Java is a suggestion that fits my current activity (free software collaboration on a Java based package), but I'm not sure I'll even be able to sell that. Plus, I'm not sure what I want to do with that language learning thing right now. So, Java ? I'm not sure, but I get the arguments (pay, teaching quality, availability of jobs, etc.)
Also, I see where getting a job can be a priority and then learning a language that hires comes as a #1 tip. But what if I want to create applications/services on my own ? Like macOS apps ? How does that influence my way of thinking about my priorities ?

Tip #2 planning my education

The native language comparision was interesting, but here the breaking down of concepts makes it look like learning a computer language is a totally un-natural way to learn a symbolic way to think. Would I focus on learning "pronouns" and then "adjectives" and then other aspects of natural languages to learn them ? Is that the best way to actually learn a computer language ? This tip feels weird.

Tip #3 ressources

Interesting list of items. I would have thought participating to free software development would have made it there.

Tip #4 communities

Interesting. Communities are nice. I guess my thought about free software development above is covered here.

Collapse
ordinari_john profile image
Amaechi John

I'll totally agree with you on the last reason why programming learners are stressed out. I personally come across people that would want to start learning how to code but they feel frightened by the fact that they are starting out late.

Collapse
diegopaula profile image
Diego Paula

Great post, you mentioned many things that i identify with. For sure i will put into practice a lot of what you wrote. Thank you so much! Great way to start #CodeNewbieChallenge

Collapse
kamalselnhrawy profile image
kamal s elnhrawy

i think i will go with python for now

Collapse
kingtoby123 profile image
kingtoby123

you're a blessing- This will definitely help me get into it. Thank you so much!!!

Collapse
ebbs237 profile image
ebbs237

Well said , This article ngives you the feeling of I am doing everything wrong. It has given me a better way to approach complex programming language features.

Thanks very much

Collapse
el_gejor profile image
Leon Kompowski

Completely nice advices for new programmers as me. I really felt identified with more than one of the reasons why coders don’t feel at peace.

Collapse
jrlunap profile image
𝔏𝔦𝔠. 𝔏𝔲𝔫𝔞

One of my biggest issues is: I like it all. I really need to focus on one thing!

Collapse
ordinari_john profile image
Amaechi John

Thank you John ! This is a value-packed post that has just cleared some bugs in my head.

Collapse
jak7 profile image
Jak7

I need to follow every bit of advice in this article. I need to look at all the times I didn't finish a challenge or a totorial as one step closer to my goals.