John Selawsky
Posted on July 15, 2020
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 students, 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
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).
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.
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.
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:
- Object-oriented programming in Java by Coursera
- Java Fundamentals by Pluralsight
- Java Programming For Complete Beginners by Udemy
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.
- 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.
- 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.
Tip #4. Join 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:
- Freecodecamp forum
- StackOverflow
- GitHub
- PHP Programming Forum
- JavaScript Forums
- Gamedev.net
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.
First published on Levelup Gitconnected.
Posted on July 15, 2020
Join Our Newsletter. No Spam, Only the good stuff.
Sign up to receive the latest update from our blog.