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
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.
- I've never had a project to focus on that I could practice and refine my skills.
- 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.
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.
- 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.
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?
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.
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.
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.
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?
- 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.
- I want to build a chrome extension for daily gratitude.
- I want to make a SaaS product. Using one thing I'm good at Market Research.