How I chose a programming language and beat bad habits
Tags: python, javascript, java, csharp
Published: 2020-06-21 15:37:20

TLDR: Sit down. Reflect on what you truly want out of learning to program. Make a list. Tally it up. Commit to the one that has the most tally marks until you are comfortable with it enough to branch out to others. If you never get past step 1 you won't make it to the top of the staircase. 

Backstory - I have been interested in learning a programming language since about 2007 but really started learning or pursuing languages in late 2018 early 2019 and never really got past the basics of the basics. In the last two years I struggled with this hardcore because I would "choose" a language and then randomly a week or two later YouTube would recommend a video titled "why this language is bad... and what you should focus on..." or "top language to learn in 2018, 2019, 2020..." and I would lose focus and change plans. Because of this, I am sure I have 100+ courses on my Udemy account but none are more than 20% complete... Till now.

After watching one of those typical "why this language is dying..." videos I scrolled down to read some of the comments and I came across a thought-provoking comment. It essentially said "Stop falling for this endless loop of being influenced by these shitty YouTube videos. If you want to truly become a software engineer or a developer you need to pick a language and stick with it.". How have I not come to this conclusion in the last few years? How have I been too blind to this bad habit loop I was stuck in? I decided to make a change. That change was to follow the advice of that comment. I wish I remember who made the comment and which video it was on (I watch way too much YouTube every day... /sigh) so I could give them credit. Whoever you were I would just like to say THANK YOU! 

I hope this post helps you just as much as that comment helped me. 

So what did I do? Well, I got out my notebook and at the top of the page I wrote  "WHAT PROGRAMMING LANGUAGE?!?". Yes, most of the time I write in caps as I am probably a psycho or some loser who never learned lowercase writing. Anyways, I then wrote, "What do you want to make in the future?". Below that, I made a list that lists out everything I would like to get out of programming or make out of interest and it looks a little something like this:

- I want to be able to create Android Apps
- I want to be able to create software on Windows
- I want to be able to create functional web apps that assist or provide information on games
- I want to learn a more simple to learn a language at first and become proficient with it
- I would one day like to transition into a programming career
- I don't necessarily want to work for FAANG companies as I would have to move
- I would like to make software to teach my daughter stuff in the future

Now that is my list, yours may be different as I like to think everyone is unique in certain ways so I encourage you to sit down and reflect what YOU want in your future and make a list if you are stuck like I was. 

Then I google searched "Which programming language" and hit images as I knew there would be some kind of tree created to help you navigate which language is good for what and I came across this image that I posted as the cover art. I will also post it below if it doesn't show up that well. 
![Alt Text](https://dev-to-uploads.s3.amazonaws.com/i/mnfuku6dqypydvpefkwe.png)

I originally found this image on a FreeCodeCamp blog post but it seems to be re-uploaded all over the web. I have no idea who created it originally but thank you to whoever did!

After looking over this image I put which language is good for which goal on my list. Looks a little like this:

- I want to be able to create Android Apps (Java/Kotlin)
- I want to be able to create software on Windows (C#/Java/Python)
- I want to be able to create functional web apps that assist or provide information on games (JavaScript/Python)
- I want to learn a more simple to learn a language at first and become proficient with it (Python)
- I would one day like to transition into a programming career (Python, C#, C, Java)
- I don't necessarily want to work for FAANG companies as I would have to move (Java - I had to look for jobs in my local area and find what was currently the majority language for local companies)
- I would like to make software to teach my daughter stuff in the future (Java, Python, C#)

After that, I tallied them up and it was obvious that Java and Python were the majority on this list. Now I already knew some of the basics of Java but all over the web I every blog post I read kept saying "Python is really easy to learn" so I figured since they were both so close and I truly want to stick with one for a while then I will just go with Python. Before this, I was aimlessly following YouTube advice not really seeing a direction. By making a list it helps you see the bigger picture. 

But, all of this is pointless if you do not commit. Don't listen to the endless waves of YouTube programming community videos on which language is the best. You will perpetually be stuck like I was. I would like to add the analogy that if you don't get past step one you will never make it to the top of the staircase. You could look at being a developer/engineer/programmer as being in a skyscraper that has many flights of stairs. So just focus on one for now, more will come in the future and you will be great with whatever you choose and stick with for a while. You don't need to live, breathe, and eat that one language till the day you grow old and die. But you do need to get past the basics. 

I know this got long, and I rambled on at times. I hope this helps at least one person! If you want to learn Python check out my Github - https://github.com/Thesnowmanndev where I am creating a repository for learning Python. Its essentially just notes so don't get overwhelmed by the number of comments in each file. That shouldn't be normal programming practice. 

Take care everyone. 

Kyle