Programming Self Improvement

How to Learn Programming Without All the Stress

Joel Lee 19-09-2014

Programming can lead to some great jobs 10 Computer Programming Careers and Jobs That Are in High Demand Looking for a career in programming? Here are just some of the best paying coding jobs that you can apply for today. Read More , and that’s got more and more people scrambling to learn how to code. Maybe you’ve decided to pursue programming, whether for a career or just as a hobby. Great! But maybe you’re starting to feel overwhelmed.


We’ve written before on choosing a programming language Which Programming Language Should You Learn For Software Development? When starting on the path of programming, it’s important you invest your time wisely in choosing to learn something that will both benefit you in the immediate future with visible results on your platform of... Read More and we’ve compiled places where you can learn programming, but there isn’t much about how to approach the learning process in a way that keeps you from wanting to tear your hair out.

I’ve gone through my own share of coding-related frustrations and I hope some of this advice can help to ease your journey as much as possible.

It’s Not Just You: Programming Is Hard

As with most things, you must have the right mindset before learning how to code. Sure, you could make do with a poor attitude and it would still possible to learn stuff here and there, but the process will take longer and you’ll hate it the whole way through.

Programming is hard, there’s no doubt about that. Even the smartest programmers are stumped on a regular basis by bugs and errors in their own code. It might feel as if everyone else knows what they’re doing and you’re the only one who’s struggling, but that’s nowhere near the truth.



Take solace in the fact that everyone has trouble with programming at the start. You are not alone in your struggle. Not only is it normal to be confused and frustrated, but even expected. There’s nothing wrong with you if you find it difficult, so don’t feel discouraged or stressed. It takes time.

And that’s the mindset you need to have if you want to learn programming: it’s going to take a long time. We’re talking on the scale of years. The quickest way to be stressed as a programmer-in-training is to expect instant understanding, instant improvement, and instant results. We’ll see in a later section that it just doesn’t work that way.

Make peace with the fact that the journey before you will be long and arduous.

Take It One Step at a Time

Like spoken languages, programming languages are vast topics of study that must be learned from the ground up. Consider the process of learning a foreign language like Spanish, German, or Korean.


Start with the fundamentals. The most basic units of any language begin with letters, then words, then sentences. For programming, you have to start with keywords, syntax, and overall program flow.


Don’t worry about advanced material until you first master the basics. It wouldn’t make sense to try writing poetry before you understood the basic rules of grammar, would it? Postpone the advanced stuff until you truly have a grasp on the foundations.

In other words, don’t rush it. Focus on one topic at a time before moving onto the next. By limiting your scope of study like this, you can keep yourself from being overwhelmed. It’s one of the rules of setting effective goals 5 Critical Mistakes To Avoid When Setting Goals Goal setting is a great way to cut down on procrastination and boost productivity. If you don’t have goals, you don’t have direction. Without direction, it’s easy for you to feel lost and confused. Fortunately,... Read More : to eat an elephant, take your bites one by one.


Sudden Epiphanies: It Has to Click

Over the past year and a half, I’ve been studying the Unity game engine 5 Free Game Development Software Tools to Make Your Own Games Free game development software is a great way to start video game making. We've compiled the best game software on the market. Read More , which relies on an entity-component paradigm rather than the object-oriented paradigm that I learned growing up. It was immensely frustrating for the first twelve months because I just couldn’t understand it.

Until one day, I sat down at my computer and it all clicked. The material that had caused me to bang my head against the wall for nearly a year? It all finally made sense. There was no particular tutorial or lecture that opened my eyes. Nope. It was literally an epiphany.


The lesson is this: not everything is going to make immediate sense. It has nothing to do with your intelligence or aptitude. Programming is one of those things that you either understand or you don’t and it can take a while for that switch to flip.


It will happen eventually as long as you don’t give up. Persistence is an important attribute for any kind of programmer. Scrape a stone wall with a metal spoon long enough and you’ll eventually make it to the other side. Don’t be discouraged along the way.

Find as Many Resources as You Can

Suppose someone showed you a photograph of a statue. It might provide enough of an image for you to get an adequate sense of the statue, but you wouldn’t get the whole picture. A zoomed-out photo would lose intricate details while a zoomed-in photo would lose a sense of perspective.

However, with each additional photograph, you can really start to see the fullness of the statue in texture, in size, in detail, from front-to-back, side-to-side, and top-to-bottom.


With programming, one explanation is often not enough to truly grasp a particular topic. That’s why it’s important that you exhaust as many resources as you can in terms of documentation, tutorials, videos, lectures, etc. Each additional resource can provide additional insight.

For example, you may not receive much benefit from Tutorial A and it leaves you feeling lost. Tutorial B also confuses you, though it might clarify some of the subject matter. But then you read Tutorial C which is presented in a way that brings everything from Tutorials A and B together. Finally, the topic makes sense.

It also helps to find a mentor or coding buddy. Self-taught learning is great, but it’s better to have someone to whom you can ask questions and receive an instant response. This can turn three days of frustration into a simple five-minute conversation.

Practice and Play Around – Be Bold!

Last word of advice: programming is more practical than theoretical. Not that there aren’t any theoretical aspects (because there are) and not that programming isn’t a cerebral exercise (because it is), but no amount of study will matter if you never put it into practice.

I can’t tell you how many times I’ve spent countless hours reading documentation on a code library that I couldn’t understand, yet within an hour of launching a terminal and playing around with the code itself, it all became clear.


Don’t be afraid to practice by playing around. Launch a blank project and start messing with the code. Fiddle with it, break it, and repair it. None of this is wasted time. You may not be writing code that ends up in a final product somewhere, but you’ll end up saving yourself a lot of learning time down the road.

Programming is not something that can be learned passively. You have to get your hands dirty. Instead of fearing bugs and errors, embrace them. Learn how to fix them or work around them. Practice builds experience, experience builds confidence, and confidence keeps you from feeling overwhelmed or stressed.

I also recommend playing these coding games for programmers The 9 Best Coding Games to Build Your Programming Skills Coding games help you learn faster with hands-on practice and experience. Plus, they're a fun way to test your programming skills! Read More , which are designed to help novice and intermediate coders hone their skills. Most of the games are free and you can get started right away.

Image Credit: Nerdy Programmer Via Shutterstock, Frustrated Coder Via Shutterstock, Building Blocks Via Shutterstock, Coding Epiphany Via Shutterstock, Open Book Via Shutterstock, Source Code Via Shutterstock

Affiliate Disclosure: By buying the products we recommend, you help keep the site alive. Read more.

Whatsapp Pinterest

Leave a Reply

Your email address will not be published. Required fields are marked *

  1. Dolapo
    April 11, 2018 at 9:35 pm

    Thank You So Much!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!

  2. jai
    November 6, 2017 at 11:10 am

    Lovely article,thank you so gave me confidence :)

  3. Stephen Sarfo
    August 2, 2017 at 10:42 pm

    I started doing some Android app development with Android studio, but my Java programming skill are still in it's beginner phase. Do any one of you guys recommend that I continue trying app development or do I focused solely on building my Java skills? (Btw I'm also studying to get CompTIA A+ certified and starting college again in a couple of weeks) Some tips on time management would be good; I feel like I'm not putting 100 percent into anything.

  4. alex
    June 19, 2017 at 9:48 am

    i have major case of adhd but im very interested in being a web devloper for businesses and non profits but doe to start

  5. alex
    June 19, 2017 at 9:47 am

    im very interested in web devlopment but im not where to start i do have a major case of adhd.

  6. kushi
    July 17, 2016 at 2:45 am

    As m begginer larner of java s it easy?

  7. Rodney
    June 16, 2016 at 9:26 pm

    I am a professional software developer with over 25 years of experience. I am completely self taught and fluent in at least 15 - 20 different languages and frameworks.

    The one method that has been the single best way to learn any language is to pick an application to write which will require all the most common tasks - presenting forms, loading and saving data, etc. I usually choose to do a checkbook application - withdrawals, deposits, etc.

    Then sit down and write it until all of it works - you may have to google for hours before you can write the next line of code, but when you are done, you have marketable skills!

    Persistence and determination are key.

    • Joel Lee
      June 24, 2016 at 1:31 am

      Absolutely agree, Rodney! With that much experience under your belt, I can't imagine how much stuff you've had to persevere through over the years. Impressive. And yeah, those practice projects can really help when you're feeling lost or overwhelmed!

  8. Mowaan
    May 22, 2016 at 12:01 am

    The article is great, I am working on a project with a colleague but I really see myself very slow compared to him. I finish a task,he finishes 5. Although we started together and have the same knowledge and -I believe- the same effort . I don't code , I am always stuck at an endless issue.

    • Joel Lee
      June 24, 2016 at 1:30 am

      Just keep at it, Mowaan! Some people have more programming aptitude, but persistence and endurance are the true attributes that lead to programming success. :)

  9. Dasa
    February 27, 2016 at 11:41 pm

    I am struggling like hell to use C to build programs in my upper level CS courses. It is absolute hell. I do not want to give up, but when it's just me in front of the terminal for 24 hours straight and exhausted all the google stackoverflow links or videos. That's my hell.

    • Rodney
      June 16, 2016 at 9:28 pm

      You should not be spending that amount of time on C - it is not a language for the future. C++, sure, C, no.

      C skills are not going to transfer forward very far - you need some OO stuff.

  10. Leo T Mills
    May 30, 2015 at 2:29 pm

    Find As Many Resources As You Can - really? How NOT To Learn a programming language: - Do not try to learn for the first time from bits of unrelated or related tutorials online; this is the worst way to learn a programming language. It could work for some after countless such tutorials, but it is an inefficient process that lacks the proper hierarchical structure needed for learning a subject matter thoroughly. And this could lead to your being stuck quite frequently, when you start to build applications with the language. In short, you will not have the know-how - the comprehensive knowledge - you need to use that language as a tool - as your tool. - Some resources may be great for the Advanced, but not for Beginners when you need the core concepts in a detailed, clear, and easily digestible form. - And do not try to learn the language by using only Codecademy; while you will learn how to program bits of small tasks, you will not have learned enough to build complex applications. Nonetheless, Codecademy is a great supplemental learning resource. In other words - choose carefully, because ultimately you want to be left feeling accomplished in the shortest amount of time.

    • Isaac Orija
      December 3, 2015 at 10:39 am

      I agree with you, I'm a beginner with Javascript but guess what I have over 50 resources on javascript and I haven't even finished any of those books. I became stuck and frustrated at a point. Programming is really hard

  11. Anonymous
    February 13, 2015 at 1:08 am

    "you’ll end up saving yourself a lot of learning time down the road.", that's very true from my experience. While I was in college, writing and playing around with code on the textbook makes my learning afterwards much easier.

    • Joel
      February 13, 2015 at 7:43 pm

      Yup. Probably because it activates different areas of the brain instead of just passively taking in information without ever applying it. Synthesis is an important skill and it really helps cement education!

  12. Victor C
    December 23, 2014 at 12:22 am

    From my own experience, I have to say that everything in this article is true. Programming can be confusing, difficult at times, frustrating, but it has its satisfactions. I studied computer programming at college, and I was really good at it. I really enjoyed learning to do stuff with BASIC, FORTRAN, COBOL, RPG, and my personal favorite, PASCAL. Yes, it was in the 80's. Although there are a lot of new programming languages and paradigms, the principles and techniques are still useful today. Sadly, I have to say I became more of a user than a programmer over the years, and my skills are a little rusty. But I'm willing to get my hands dirty again.

    • Joel Lee
      December 24, 2014 at 6:36 pm

      "Sadly, I have to say I became more of a user than a programmer over the years, and my skills are a little rusty. But I’m willing to get my hands dirty again."

      This statement resonates a lot with me. Tech is evolving so fast that it's near impossible to keep up, so I feel like I'm also becoming more of a user than a programmer. Is the effort of keeping up worth it? Some days I think yes, others no! :P

  13. Ishan
    October 14, 2014 at 4:16 pm

    I like your post very much.
    I am trying to pursue Android Programming. But, it's very with no Prior Knowledge. I started Learning Java, and it's been a year now. But at the end, it all sums up for nothing.
    Any tips?

  14. Zzi Pong
    September 23, 2014 at 6:51 am

    I'm learning web development especially the front end part because I know this is where my heart belongs the effects on the pages and thinking how the user will interact with my page .
    Still an aspiring front end dev I can relate to this kudos to the writer.
    This kind of article keeps me going and motivates me more.

    • Joel L
      September 25, 2014 at 12:36 am

      Glad to hear that it motivated you! As Churchill said, "If you're going through hell, keep going." :)

  15. A41202813GMAIL
    September 22, 2014 at 5:47 am

    Epiphanywise, It Took Me Almost 20 Years To Understand How To ‘Build’ All The Calculations Around A Salary Slip.

    One Day, I Received A Second Wrong Tax Report And Suddenly All Clicked.


  16. Saad
    September 20, 2014 at 5:18 pm

    I've started learning at Codecademy but still can't figure out where to test those lessons... What resources do I need to start coding a website or even start a little project?

    • Joel L
      September 25, 2014 at 12:36 am

      Unfortunately, that's the downside of sites like Codecademy. They'll teach you the languages but rarely will they teach you how those languages are applied in the real world.

      You might be able to find those kinds of courses on or, but they probably won't be free.

  17. dragonmouth
    September 20, 2014 at 2:46 am

    Programming is like the game of Go, it is easy to learn the basics but it takes a long time to become a master.

    Just like with human languages, there is no one computer language that is the basis for all others. However, all computer languages are based on the same basic concepts and the same basic logic. Once you learn those see those concepts and the logic, you can learn to program in any langauge, from machine language to the latest ones.

    • Joshua
      September 22, 2014 at 11:54 pm

      Yeah, hahah that's why i love programming, and Go.

    • Joel L
      September 25, 2014 at 12:34 am

      Nice analogy with Go. Would be even more fitting if this was an article about the Go programming language, ha!

  18. mehdilamaaffar
    September 19, 2014 at 9:28 pm

    i believe this quote 'learn by doing' is the key of success in programming word .

    • Joel L
      September 25, 2014 at 12:33 am

      I agree with you 100%. Theory can only take you so far.

  19. ed
    September 19, 2014 at 5:44 pm

    Been studying web development courses from Udemy that I bought through Stack Social for a pay-my-own-price that was mentioned right here on MakeUseOf.

    Looking to transition into front end development coming from way too many years of phone tech support.

    Udemy seems pretty good. Will also subscribe to Treehouse shortly.

  20. Saikat B
    September 19, 2014 at 3:00 pm

    One of the tools that always helps me avoid stress and study something abstract is "visualization". When struggling to understand a concept, visualization is a good technique to start with.

  21. Tim
    September 19, 2014 at 1:46 pm

    I'm still something of a novice programmer myself, but I've become competent in a couple of easier languages and can say that all the points are dead on. It's always good to know I'm not the only one that can get completely frustrated with the learning process too!

    Now somebody just needs explain java to me...

    • Joel L
      September 19, 2014 at 1:54 pm

      Knowing that we're not alone in our struggles has been one of the more helpful realizations for me, too. :)

  22. dev
    September 19, 2014 at 1:41 pm

    What is the best programming language to start with? One which provides the base for the rest?

    • Joel L
      September 19, 2014 at 1:53 pm

      There are so many languages that it'd be impossible to set one aside as "the best" or "the base" for all other languages. For someone with no programming experience, I would personally recommend starting with (in no particular order) one of these: Python, C#, or Java.

    • Tim
      September 19, 2014 at 2:01 pm

      I started out using a 4D systems board []. They have their own language called 4DGL, which has a few quirks but is fairly straightforward. It only has one type of variable and having a screen that you can print to can make it easier to figure things out for a beginner. It also makes you very grateful when you move on to something a little more complex like c++ and get to use all the cool stuff it can offer.

      I don't have enough experience to say it's the best but it worked for me, that's where I learned fundamentals of programming.

    • Simen B
      September 19, 2014 at 2:03 pm

      I guess there's no "base" when it comes to programming languages. A little simplified, it's all just ways of making binary code (0 and 1) in a more easy-to-understand way. So if you really want to get to the "base", start making 0 and 1.

      But that's actually an awful idea. You should use a easier language first, and get used to the concepts, and then dive deeper in when you're ready. For example, you might want to start with something like javascript, and then proceed to java and eventually c++. That way, you don't have to worry about the advanced stuff while learning the fundamentals.

      Otherwise: as a novice/intermediate developer, the article is spot on, especially the part about playing around. Whatever you do, make something cool or slightly useful as early as possible. That makes it far easier to stay motivated as well.

    • Bruce E
      September 24, 2014 at 4:37 am

      Wrong question(s). What you need to know is how to think computationally or like a programmer (or better yet, like a computer). Once you learn how to do that, you can pick any language you want and you can be successful with it. Shifting between languages also becomes easier.

      The single biggest hurdle any programmer can possibly have is learning how to approach a problem in order to find a solution. I am one of the lucky ones. I have always thought in this manner, but many others that I have talked to about programming have always said that this required a major shift in the way they think.

      You may want to look at some of the courses offered on MITx offers an entire xSeries that starts with an introduction to computation and programming (they use Python for the first courses) that then shifts to Java for later courses. They are free or you can pay a small fee for an ID verified certificate. The material is easy to follow, the lectures are clear, the exercises are effective tools, the forums offer pretty good help from fellow students regarding the "homework," and the pacing is not overwhelming. This is my recommendation for all new or intermediate programmers who have not undergone formal education in programming.

    • VM
      April 28, 2015 at 9:17 am

      I don't think there's one answer to what is the best programming language to learn because it depends on a few things like-do you know someone who knows and can provide some guidance learning a particular language. For instance, if your buddy knows Java, then that's probably the best place to start learning Java.

      The hardest language to learn, first, is probably going to be that first langauge so I recommend starting with Python. Use a fun program like Jeroo (a downloadable program at or Penjee ( ). After you get the basics of Python in either of those gamified fun ways, you can try to get some additional interactive practice, and go from there