As a student of web development, i often run into errors or new technology that seems insurmountable. I sit in front of my computer, and with my mouth gaping open, witness the overwhelming mass of confusion that is laid before me. I have no idea where to begin, and all i can see is how big and impossible this looks.
This exact feeling is what keeps many beginner developers from continuing on. It does seem insurmountable and you know it is going to take a big chunk of time and energy to figure it out. Some thoughts that might go through ones head: Do i even need to figure this out? Maybe i’ll just skip this and move on to something else. Maybe i should try a different career.
10 Reasons Why Climbing Mountains Can Enrich Your Life explains ways that climbing mountains can affect your life in positive ways. Ill be the first one to tell you that there’s no way i’m going to try climbing an actual mountain in my current physical state, but I am going to use quotes from this article in relation to programming.
The physical health and fitness benefits are unimaginable. Not only will you built incredible strength and endurance from climbing mountains (consistently) but you will also find that your diet becomes better.
In programming, this can mean you become smarter and more efficient. Once you climb one mountain, you can climb another using the skills you learned from the previous one. Your programming endurance becomes stronger. You become more efficient.
Climbing mountains will teach you patience, persistence and gratitude. Exposed and tricky climbing and route finding can get the best of your mental abilities. The classic quote that tells you “not to look at the whole mountain take it one piece at a time” is something you will come to understand.
This is 100% true in learning to program. You need to move your focus from the impossible task, look down at your feet (or your keyboard), and take that first step (or keystroke). Just one step leads to the second step, and so on. You’ll find that after like 1,000 of these steps that you really don’t have that much farther to go. But be aware of your surroundings! You don’t want to just take steps over a cliff or break your leg. Do your best to prepare for the steps ahead, even if this means to prepare for each step one at a time.
They will teach you why we want to protect the environment. After seeing what untouched places look like you will want to protect them. Clear cutting and human interference in any of these beautiful places will be the worst thing imaginable to you.
While this is definitely true of nature, it is also common in web development. There are huge mistakes that some programmers make that aren’t really that obvious to them until they have actually built and overcome some of these large tasks. You learn why you would not do certain things and how much of an effect these mistakes can have.
They will teach you how to be positive. If you have negative thoughts about climbing a mountain it is probably your one-way ticket to failure. Telling yourself you can’t or that it is impossible don’t help in any way. If you are positive, even if the climb is impossible at the moment, you will continue to try.
In programming, you will also find out that the more determined you are to succeed, the higher the likelihood of success. Internal positive dialogue eases your path. The more you tell yourself that the mountain (or programming error) is to big or impossible, the less traction you will have in the climb. Even if you don’t know what to do, seriously you do know how to start typing “google.com” in order to find a first step. You will find the solution and move on to the next problem.
They will teach you to enjoy the small luxuries in life. A grueling six hours of vertical in the heat and you stop for water break. It will probably be the best water you have ever tasted in your life. We overlook the small things in life that we take for granted, like water.
While programming is not a physical test, it is definitely a grueling mental one. Spending 8 hours a day doing math or visualizing concepts that are on the edge of your understanding, can tax your whole body, even though you are sitting the whole time. When it’s over and you go home, try and relax and know that you don’t have to think about it till tomorrow. Take some deep breaths and let what you learned soak in. All you have to do is survive, pay bills, eat, sleep, be a good parent – the things most people have to do every day. Not that those things are easy, but it can feel that way after pushing yourself through learning a new programming language or framework. Enjoy your life and get back in there tomorrow to climb another mountain. It will be easier next time. Enjoy your water.
Every Mountain will teach you something. I always find that every mountain I have climbed has taught me at least one important lesson.
Programming is problem solving. Although there is some creation and art involved in the process, it’s mostly “why won’t this work”, and the eventual hours (or days!) of troubleshooting your problem. But every time i do tackle a large problem and find a solution, the clouds open up slightly and things become clearer. I probably wont have that problem again, and if i do, i will now how to resolve it. Every error you encounter, is the gateway to understanding the error and learning something new.
While developing software seems very little like strenuously climbing a mountain, to the programmer it feels very much the same mentally. It’s too easy to give up and turn around and never try again. What makes a good mountain climber, as well as a good developer, is in the mind. When you’ve climbed a few mountains, the next one never quite seems that bad. Eventually you will find yourself more of an expert, than a beginner. Just keep the positive attitude and take things one step at a time, with enough endurance and practice we’ll all be experts!