Why I'm Learning to code (and maybe you should too)

March 15, 2020 (4y ago)

It's 2020, I've just turned 31 and I feel a little lost. I'm cruising in my marketing job, I have a podcast newsletter which I enjoy but it only takes up about 3-4 hours of my spare time. I'm just going through the motions.

All this has left me in an odd place, one that leaves me feeling a little bit empty and lost. I feel particularly empty because I've done everything I'm supposed to. Go to University. Get a good job. Earn a good income. It looks like I'm winning the game they tell you to play. But, it doesn't feel like I'm winning, I feel like a caged animal. I’m searching. Searching for something to give me more freedom.

I don’t want the freedom that is fleeting. Not freedom like the kind I get on the weekends with photography. That kind of freedom. It doesn't help me escape the need to rely on a full-time corporate job for income. Right now, I'm just living for the weekends. I feel like a small cog in a giant machine. Therefore to become freer, I've realized, I wanted to learn something that could possibly give me another income stream.

So...what could I do to fill the void in my life? I know I want to generate a passive income, give myself options to change my career and most importantly I want to build things. Lots of things. But, what I wanted to build, I wasn't sure.

Currently, I have a few skills that I'm good at:

  • Brand marketing
  • Market Research
  • Networking

The issue with these skills is that they don't give me many opportunities to build. I love introverted networking and meeting new people. I could teach people how to do this but it doesn't fill my need to build lots of things. What I do know is, if you want to build anything really new and exciting. Learning some form of programming is the best way to go about it.

Programming has previously interested me. I've dabbled in Python and made a few usable scripts but I've never been particularly good at it. I can hack things together using other's code, but I haven't really got any further than that. I think there are two key reasons I've never got past the fundamentals.

  1. I've never had a project to focus on that I could practice and refine my skills.
  2. I never consistently coded, I go for a few weeks then get busy at work and it would drop off.

I've always loved computers ever since my dad bought home our first family computer way back in the '90s. I'd play games like Duke Nukem and Commander Keen until my eyeballs bled. I went from playing games on computers to building my own computer at 14. But, I never really played around with coding. I didn't even understand that you wrote games and software with code.

Commander Keen screen shot from the original game Screenshot from the original duke nukem game

Duke Nuken and Commander Keen where I first fell in love with computers

But recently, I've started to understand the power of code. Not just for making games. It's a power that could give me the freedom I seek. I want to channel the love I had for computers as a child into who I am now. I want to learn to code. But, first I need to figure out what language I want to learn.

So how do I choose what language to learn?

Originally I started where everybody starts...I Googled what programming language to learn. The search threw up a bunch of results, from that I started to string together some key themes.

The key insights I took from the search were:

  • Job Market (job demand) is important - it gives you flexibility. Because, if you love what you're learning and want to get employed without a degree, you probably want to learn a language that is high in demand.
  • Language popularity - popularity means there will be a community that can help you learn. It also means that there are a ton of useful resources out there.
  • Pick a language that aligns with what you want to do - want to build apps? Learn objective C. Want to analyze data? learn Python. Want to build Websites? JavaScript is a good bet.
  • What difficulty are you willing to pursue? - If it's been a while since you've learned a new skill, it might be best to start with a language that is easier to learn. That will allow you to learn the basic syntax and then progress to other languages.

From these insights, I figured there were essentially two paths I can take.

Path 1: You can start by learning a low difficulty language, that has a simple syntax and then progress to other languages as you know what you want to do.

Path 2: You can choose a language that aligns with your end goals.

The first time I dabbled in code, I went with path 1. I'd read Python was easy to pick up and learn, I thought I'd learn and then inspiration would strike and I'd start building things. Unfortunately, it didn't work out that way. The inspiration never really came.

This time around I'm going to take path 2 and learn JavaScript as I have some projects I want to build that I can make with JavaScript. But, before I get into that project, there are a few other reasons I want to learn JavaScript. My reasons and thinking should be useful for you to understand as you go about picking a path for yourself.

Job Market

The first thing I looked into was the job market. Although a job isn't the end goal, I wanted to know that if I really like the language how hard would it be to get a job?

Demand

The first thing I wanted to understand was which programming languages are in high demand. So I looked at which ones were frequently listed in indeed software developer ads. Looking over the last few years JavaScript demand has remained relatively consistent, so it appears to be a solid building block language to springboard my learning.

Programming languages mentions in indeed ads over the last 4 years

Salary

I like to get paid, I also like to get paid well. So I wanted to investigate salary.  To investigate salary I decided to look at the average salaries for a software developer in the US and then at the salaries being paid in Silicon Valley. As I've often strived to be the best in my field I wanted to see what I could earn if I made it to the coding Mecca.

Average salaries of programming languages - 2017/2018

Although the data is a few years old now, it gives a good indication the JavaScript developers get paid.

From my research, I saw that JavaScript was relatively well paid. Coupled that with the high demand for the skill and it meant if a career change was on the cards I would still have my financial stability.

Company stacks

Next, I wanted to know which programming languages were used in certain organizations. As I have a few organizations I'm particularly fond of like Amazon and Product Hunt. So I wanted to see what they used. Searching for jobs on their website there are a lot of roles going that require proficiency in JavaScript that interested me.

You can check out the stacks of companies here, it's cool but I didn't put too much weight into this as these organizations move so fast and are constantly growing their product portfolios.

For me, this was the lowest of the factors that weighed into my decision for which language to learn. Although I'd love to work for Amazon and contribute to making amazing products. If my role was doing something I didn't love in the process of making that product, well I'd be right back to where I am now. So, if you're looking more to do what you love rather than work for a company you might love don't stress about this.

Community

The next area I wanted to explore and one of the most important to me, was what the community is like. The areas of community I most wanted to understand were: can I get access to good tutorials, are there people I can reach out to for help, what's the twitter scene like, are there local meet-ups and are there open source projects I can contribute too. These were all things I really enjoyed about the Python community that motivated me to keep learning.

One thing I absolutely loved when I was learning Python was attending Pycon Australia. A conference for all things Python. I was only a beginner, but everyone there was amazing. I felt super welcome, even though I was a beginner and had never worked as a developer. I learned heaps. And I got an awesome t-shirt I still wear now. So I definitely wanted to do more of that.

I thought the best place to start in order to see if there was a thriving community was GitHub, and their 'State of the Octoverse' report. Why? Because GitHub is home to a lot of awesome open-source projects. My thinking was if there are lots of projects using one language that means there might be a big community for that language. Looking at the State of the Octoverse report for 2019 one chart really stuck out to me.

Chart showing the most popular programming languages on github overtime

JavaScript is consistently the number one.

The consistency of popularity of JavaScript was a real positive, it means there are lots of opportunities to contribute to open-source projects and learn from others that do so. I definitely made me start looking into JavaScript seriously.

Next, I also did a #javascript search on twitter and found a community brimming with people talking enthusiastically about the language so another big tick.

Another big resource of community when learning python was the r/python and r/learnpython subreddits. The learning subreddit was a great resource and community to post problems, search to see if others had the same problem and to chat with others struggling. It meant I didn't feel so alone in the process. Thankfully there is a r/learnjavascript with over 100K subscribers at the time of writing this.

The Python subreddit was fantastic to get an idea of what I could be making in the future. So many people were posting awesome projects on there and discussing them, it was very inspiring. Again Reddit has a vibrant community for JavaScript r/javascript and it had a PokeDex project that inspired me to start learning.

The community is a huge one for me. Self-directed learning is a lonely pursuit. It is nice to know there are others out there going through the same struggles, and there are people willing to help.

Thanks to Reddit I've already found someone willing to do paired programming with me each week to help me get over the hump of what I'm learning. How good is that?

Can I build things?

Finally, the biggest reason I choose JavaScript is because of what it will allow me to build. Below is the list of things I wrote out that I wanted to make.

  1. I want to build out my podcast shuffle business and be the technical founder while letting my other founder take the lead with other areas of the business.
    • So HTML and CSS we're a great starting point for me.
  2. I want to build a chrome extension for daily gratitude.
    • You can build these with Javascript and React.
  3. I want to make a SaaS product. Using one thing I'm good at Market Research.
    • Again can be built using JavaScript and other libraries.

Javascript will allow me to build all of these projects and that is the reason I chose JavaScript. Because even though it is nice to know there are great job opportunities out there and a great community. What I really want to do is make things. I want to make things I think are cool and hopefully, I can use my marketing skills to find other people who will think they are cool too.

The making and creating is what hopefully will set me free from the 9-5 grind. At the very least, it might mean I'm able to find a job that is more aligned to my strengths and values. For me the money doesn't matter, I just need enough to live a comfortable life. What I truly value is the freedom of choice in the work I do and the time I do it. JavaScript is the first, and right step on the path to me achieving that goal.

I’m insanely excited about learning JavaScript. The thought of building things has my giddish. If you're excited by the thought of building things and learning something new, I’ll be doing a post on how I’m learning and how you can join me so stay tuned for that.

Now I'm off to learn to code, if you're keen to jump in and learn as well let me know.