Learning to love programming to learn programming
Published: 2020-09-06 00:08:07

In past weeks, I've been continuing to upload a bunch of articles that have to do with technical concepts that I've been learning from various places like Udemy, Youtube, and Frontend Masters. All of these are great resources, and they have been vital in  continuing to learn after finishing my bootcamp. However, with all of the confusing syntax and mazes made of algorithm, it's no wonder why it's difficult to stay motivated. I wanted to reflect on some of my process with you this week.

Particularly in the area of our lives that pertain to looking for work, the most obvious reason why someone would want to work is for money. This is probably the primary reason why most people go to work everyday, and it has to do with the idea of delayed gratification. Work now, so that I can have money to spend later. It can mean that there are times when you would rather to kick back and watch Netflix on a Monday, but you'll go, because you are probably going to get fired if you do that. It's tough to like what you're doing all the time every single day. It's all good though, you just have to get survive until 5, and then you can go home and then you can binge.

To be frank, the carrot on the stick has been a job or money, and to be even more frank, that's probably also why bootcamps are so popular. Hey, easy money! Just take this bootcamp, become a well paid programmer in 3 months! Guess what though? It's been almost a year since I started and I still don't have a job. I put in the hours and hours of work, and then the feeling like there is going to be no reward(job) in the end, has been downright exruciating at times. After a while, a giant Interstellar sized wave made of cynicism and imposter syndrome shows up threatening to overthrow your tiny little boat called 'I want to become a software engineer'.

This challenge has been tough, but the struggle has been a blessing in disguise, because I realized there's something worse than not getting a job. It's thinking that the time you are spending doing whatever work you are doing is a waste of time. What's worse not having a job, is getting that job and then watching the clock every 10 minutes to see how much time you have until you get to clock out. To actually enjoy your job is the central issue, which has to do with a more wholistic sense of meaningful success (and even getting hired). 

This week has been a huge breakthrough in finding this kind of enjoyment, and there are three sticking points that have been crucial for me in learning to enjoy programming. 

**Build Something**

Something I've consistently heard since starting to code is that coding is the only way to learn to code. I've understood this to mean that you need to practice actually doing something in order to learn it, but a better context for me to understand this advice is to learn to build something. What is that we are learning to do, type commands on a keyboard? Is it enough to know what a function is and does? No, both of these are irrelevant without the context they hold in a specific program, and to understand the true meaning behind Admittedly, I've learned a lot of facts about programming, but without a larger context to remember them, I have forgotten a lot of them. In order to truly learn something I have to love what I'm learning.  

This tip was actually given to me by a software engineer I recently met a Google, who told me that out of everything I could be doing to find a software engineering job, the most important was that I should be working on projects. Ever since I started doing this, I began to notice everything that I was learning sticked much better, because solving an actual problem in your project requires more comprehensive understanding. Also it was easy to stay motivated, because programming is a rare kind of work that offers a sort of instant gratification in immediately rendering your amazing results. Beyond the individual features, building a project gives you a vision, whether it's helping a client with a specific problem, or just making something that looks really cool. Either way, when you care about the problem is when you stay an hour past your designated work hours to continue improving your application. 

Overall, I realized this vision is what fuels long term employees to stay at their companies, and also the reason why a lot of employees end up leaving Google after only a couple years. It probably has to do with  whether they like what they are building, or if they are even building something at all.  

**I am a builder**

This is somewhat related to my last point, but with a bit of a deeper reflection on my identity. I've always kind of realized this, which is why I was always writing on my resume "I love to build things", but as I mentioned before, a big temptation that comes up is often feeling like you'd rather be doing something else. 

Basically I realized, there's nothing I would rather be doing than building something.

It might be tough to wrap your mind around tough ideas, but when you remember that your hard work can create something that wasn't there before, it all becomes worth it. The harder you work and learn the hard stuff, the more splendid your creations can be. Overall, it's really important to remember that you were created for greatness (although may lie dormant). You are meant to do great things, whether that is in building something or in other areas of life.

**Stay gritty**

Kind of like the recursive title, my final point is a return back from staying motivated to learning. Ultimately, I believe these two things are connected, and they feed off of each other. Initially, it can be hard to stay motivated, because you can't see any results, even in the most simple things. That is where grit and believing you can do it is absolutely necessary, as a sort of firestarter when you're beginning to learn anything. In my opinion, without this kind of attitude, it is impossible to attain the kind of motivation that is necessary to truly love programming. 

Obviously the toughest part is dealing with the excruciating feelings of self doubt and not making any progress after hours of time investment. In my experience, these seemingly useless hours are also the most indispensable and are invaluable to growth as a programmer and person. Those hours of trying to find that bug that was a misspelling teach you to not give up on a solution, to be more detail oriented, and that you should probably be more mindful of spelling errors next time. Growing is painful, but sticking with it and finding the joy of overcoming your hardships will reap immense benefits. You got this!

**Overview**

I feel like these lessons are ones that many people are aware of, but it has been such a livening experience for me, that I wanted to take a break from the usual technical post to share about this progress. As of now, I haven't completed even one project after my bootcamp, but I have really started to enjoy working on a grocery delivery application which I've called BreadBasket. I've made over 50 git commits this week! New personal record! I hope to finish it in this coming month. 

Overall, I hope to continue to develop a vision for what I want in the life of software engineering.