Dealing with stress, self-doubt, and self-imposed pressure when learning to program

The journey of programming is seemingly a never-ending one. The more you learn, the more you somehow have left to learn, especially given that technology is always evolving. This reality can lead to a cycle of frustration and self-doubt. While I’m still new to programming, the following are my observations for learning to better manage these side-effects.

Accept that you will always be learning.

When learning a new skill, it’s natural to aim for ‘mastery.’ In my own experience, this has manifested into perfectionism. The idea that, if I’ve learned something once, I should be able to fully understand and apply it. Not grasping something is therefore a personal failure and a reflection of my abilities. Of course, such a standard gives unnecessary weight to mistakes, setbacks, and lapses in knowledge. Ultimately, aiming for ‘perfection’ only ends up holding you back and limits your ability to learn.

Accepting the fact that you will always have more to learn is actually freeing. It allows you to get comfortable with the unknown, and strengthens your belief in your own ability to deal with it. It removes the expectation of getting everything right, and normalizes coming across bugs or setbacks.

Don’t make a habit of comparing yourself to others. Instead, keep track of your own accomplishments.

This is pretty general life advice, but it certainly applies to programming. Learning from others, whether their strengths or weaknesses, can be a great thing. However, there is a fine line between that and using the strengths or weaknesses of others to either put down or uplift yourself. At the end of the day, your journey will always be your own. Comparison is a disservice to yourself and others, and removes the nuance and value of the unique experiences of all parties involved.

Instead, track your own journey and accomplishments. One thing I do for each project I work on is create a Trello board to track my progress. It’s easy to forget all of the problem solving that went into a project when you’re done with it, so keeping it in writing is helpful. You should have tangible accomplishments and examples of growth to reference when you are feeling low and demotivated. Not only will reflecting on your own growth remind you of how far you’ve come, but it reinforces the idea that your self worth should come from within.

Prioritize your own needs and mental health.

Programming is often described as a high stress, demanding career. External forces aside, how you deal with stress is up to you. There is strength and value in knowing where to draw your limits and when to take a break. There’s a popular idea that programmers just code all the time without stopping, and I’m sure some do. If that’s not you, then you should figure out what works best for you, and understand that refreshing your mind and caring for your mental health ends up making you a stronger programmer. Also, prioritizing yourself over raw code output can help establish the idea that your value != your code.

As you might have noticed, all of these tips are centered around ways in which we ourselves often block our own progress. Unlike my technically focused blogs, this one is more a stream of consciousness, and is by no means all encompassing. Thank you for reading and please feel free to add on in the comments.

Software Engineering Student

Get the Medium app

A button that says 'Download on the App Store', and if clicked it will lead you to the iOS App store
A button that says 'Get it on, Google Play', and if clicked it will lead you to the Google Play store