Almost anyone can learn to program.
You don’t have to have a STEM degree to land a programming job. The best thing about programming is that it’s permissionless, like writing. You don’t have to wait for somebody’s permission to become a programmer, you can just give it to yourself.
Yes, you got me, I’m that annoying guy who evangelizes programming to anyone who would listen. I’ve become a little more selective picking the listeners over the years, but I’m still a bit too chatty about programming, even to people who are not necessarily that interested in it. I’ve told myself that I’m going to stop doing that, but that feels wrong. Programming and freelancing have changed my life for the better dramatically, so I want more people to know about it.
One of my favorite things is seeing someone who was unhappy with their job or unemployed decide to learn programming and in the end land a programming job. Just knowing that I’ve told them that almost anyone can learn it makes me happy. I don’t take any credit for their success, since I usually don’t babysit their learning very much.
I don’t know how many people I have told the story about my experience with programming, but it’s a lot of people. The majority of them didn’t succeed in landing the programming job and I think the main problem is their lack of belief in their own skills and abilities. They simply think that programming is too complex and that they are not intelligent enough to master it. It’s like they have a concrete tank barrier in their heads which prevents them from learning. And no one can help them remove it. You can lead a horse to water, but you can’t make it drink.
I think you need to be a little arrogant to land a programming job if you have never done programming before in your life. You have to think that programmers are not some wizards who possess hidden knowledge. No. You have to think that programming knowledge is attainable to you too, because it is available in abundance. You have to think that programmers are not some folks much more intelligent than you. A little arrogance is good. This arrogance means you don’t have the concrete tank barrier in your head. What’s left is just practice.
All effort invested in learning to program eventually pays off. It’s not that you have to invest a ton of time and then get lucky, like artists do. The demand for programmers is ever growing, not only because programmers create demand for more jobs by not dealing with technical debt, but because software is eating the world. This is why you can be sure that learning about programming will get you somewhere. The only requirement is that you pick a technology that is actually in use today and to stick with it for some time. Unfortunately, it requires a significant amount of time, at least a couple of months if you’re really focused on it. You can’t expect to land a job after a couple of weeks of learning.
Web development has become more complex since I started to learn it. The frontend’s complexity grew a lot. So much overengineering has made it difficult for beginners to figure everything out on their own. Frontend technologies are usually more hyped than backend ones for some reason, but I would not recommend them to absolute beginners. I think it’s much better to start with the backend.
If you get to pick the language you are going to learn, why not pick the one that looks like the most fun to you? For me it was Ruby, because of its beautiful syntax. It’s like English. A client asked me the other day when a payment becomes refundable. I looked into the codebase and found the answer in this line: 2.business_days.after(date)
. I could’ve just pasted this line of code into Slack and he would’ve understood.
Starting out can be overwhelming, to say the least. You are usually bombarded with terms you know nothing about: git, CSS, HTML, SQL, and so on. But the right approach is to take it slow. Yes, there is so much to learn, but take your time. Do it one day at a time and see how that goes. Landing the programming job is the end goal and you get there step by step.
Just setting up your computer for programming can be a hassle. I recommend using your own computer instead of using some web environment that doesn’t give you any context on what’s happening and what you are actually editing. There are sometimes weird issues with versions of Ruby not being compatible with the version of an operating system. There could be some native dependencies that might cause issues.
If you’re on a Mac, the solution could be using rails.new. Otherwise, I think it’s best to look for help from an experienced programmer, if you get stuck. I don’t think it’s worth it for a total beginner to figure out how to fix that on their own.
When my wife finally got interested in programming, I told her to set up Rails on her own machine. When she got stuck, I thought it was something that I’d be able to fix quickly, but it took me two hours to properly set up. She got interested in programming not because of my 8-years-long evangelization, but because she figured out exactly what I work on. She started doing QA for my client, so she started being on our calls. When she heard that we brainstormed about the logic of the application she knew the purpose of, she immediately got interested and wanted to do that more. I think most people have the wrong picture of what a programming job actually is and I think we can thank our schooling system for that.
After starting out you’ll probably get stuck on a dumb issue. In fact, you’ll probably get barraged with dumb issues. One after another, it seems like they don’t stop. Please don’t think that you are dumb because of it. The fact is, senior developers are so used to dumb issues that they don’t realize how often they happen themselves. It’s the water they swim in. It can be annoying when something doesn’t work properly, which is why programmers often swear a lot. One gets used to it and hopefully stresses about it less.
Paul Graham compares programming to painting. You don’t draw the owl in one perfect attempt. You start small and iteratively improve the painting stroke by stroke. Beginners are suspicious when the first attempt doesn’t work. Seniors are suspicious when it does.
Even after several years in the industry I still feel like a novice so it's always nice to read some motivating words like this. Also, Ruby syntax is something else. I'm really in love with the elegance of the syntax. 😍