Updated Oct 2022
I’ve been programming professionally for almost 15 years now, and I frequently get asked how to get started coding. The story of how I got started so long ago is more a history lesson than advice (we had to FTP uphill both ways and in the snow!). But the one thing that’s stayed constant is there isn’t a clear path to becoming a professional developer. That’s both a major barrier to overcome, but it’s also an amazing superpower️ that can work to your advantage, which we’ll come back to.
why learn to code?
But before we get to the how, we’ll start with the why. Why is it even worth starting such an ambigulous journey?
- High pay. Depending on your city, you can reasonably expect to start at $50–70k as a beginner, with full benefits. And within a few years easily make 6 figures.
- No credentials. No degree or certification is needed, and all the materials are free online (back to that superpower thing mentioned earlier).
- Job security. Once you get your foot in the door, expect to never have to worry about employment for at least the next 20–30 years.
- You can still follow your passions. Every company is now a tech company. And tech companies need developers. Whatever you’re passionate about, there’s likely a progamming job in that field.
“ok… so what’s the catch?”
You’re probably expecting a “buy my book” pitch here to “unlock all the secrets.” Unfortunately, there’s not a quick path to programming (and if anyone is selling you that, don’t believe them!). In my experience these are the pitfalls for most failed attempts:
- No access to a computer. If you have a personal computer (even if it’s ancient), you have a privilege most don’t. Learning to code requires owning an expensive machine that is unfortunately a barrier (if you don’t own one, you can still learn to code but you’ll need to put more time and effort in and use all available resources like your local library).
- No definitive starting point. There are many niches within programming, and every year more specializations are added. The materials get outdated constantly, so even universities and bootcamps struggle to stay relevant.
- There are gatekeepers. Sadly, toxic tech and lack of diversity do exist. At some companies you’ll find jerks trying to keep newcomers out because it’s so good right now.
- The “continual learner” mindset is hard to learn. This is probably the biggest mental barrier to overcome. Many other trades have a clear path to certification, but mastery of programming is an illusion because it’s evolving so rapidly. Just accepting the reality that you will be learning forever can be hard for some people to grasp (but I personally find it exhilarating!).
If you’re reading this blog post, you can do it! There are so many empty seats waiting for new developers to fill. The ones that quit before they make it usually just aren’t aware of how many challenges they have to overcome, and they think “I’m not good at it” when that couldn’t be farther from the truth.
The reality is: you can do it. But it does require an understanding of what’s involved.
so, where do I start?
There are 3 questions you’ll have to answer to start your journey:
- What do I start studying?
- Where do I go to learn this?
- Where do I start applying?
In the interest of focus, I’m going to short-change #2 and #3 with my mostly-unexplained opinions and spend the time fleshing out #1. You may disagree, and that’s fine. But developing your own answers even if you disagree with my advice will make your starting clearer than before, and that’s all that matters.
ii. where do I learn this?
There are three major options: going to a university, going to a bootcamp, or self-taught. My quick opinion: self-taught is the way to go. Universities are too expensive and the material is usually out-of-date. A few bootcamps are phenomenal, but most are a waste of time and money. Self-teaching is H-A-R-D. And slow. And frustrating. But it is free/cheap, and it will set you up long-term the best because it’s at the very core of programming. So might as well frontload that now. I’m self-taught and I would do it the same way again. The best way to start is from sites like egghead.io or codeacademy.com, or any other place that offers free/cheap courses (you will have to spend a few dollars here and there to learn, but nothing truly expensive).
iii. where do I start applying?
Another quick-and-dirty opinion: being a web developer myself, I think you should apply to web companies. Web development has the lowest barrier to entry, greatest diversity of job titles, some of the highest pay, period, and is in the most demand right now. This in opposition to, say, game development (too much competition, too much burnout), or a more traditional software company (requires too much specialization, usually outdated pay and work environment). You can find these jobs on boards like builtin.com.
i. what do I start studying?
Back to the hairiest question: the answer to this decides your fate. Maybe not forever, but at least for the first year of studying and applying to jobs.
Within web development, there are two disciplines—backend and frontend—and within either discipline are myriad specializations, which are difficult to outline here but for now we’ll correlate those with programming languages.
discipline: backend or frontend?
Pick one. Stick with it until your first job. This is the way.
You can always change your mind later, and any choice here heads down the same general path. But you’ll need commitment to get there.
option 1: frontend
Frontend is a little easier to explain than backend because it’s what you’re seeing right now. Frontend developers manage what the users see. This means handling user interface, interactions, text inputs, animations, loading, and even the design of the website. Frontend requires a keen eye for design, and a very visual mindset.
However, frontend also sees an incredible amount of churn, and a nagging feeling that you’re always falling behind. For some that can be exciting; for others, stressful.
You may like frontend if…
- …you enjoy art, design, and typography
- …you love animation
- …you have an interest in psychology & user experience
You may not like it if…
- …you hate spending all your time getting two #@$%ing pixels to line up
- …you really don’t care what color that hover effect is
- …you don’t want to throw your code away constantly and rewrite it from scratch
option 2: backend
Conversely, backend is what you don’t see—it’s the massive iceberg under the water holding everything up. If you are new to programming, there are probably entire layers to the internet you didn’t even know existed—servers, databases, deployments, automation, and more.
You may like backend if…
- …you like solving puzzles
- …you like math, or you like the process of engineering things to fit together
- …you like making things go very fast
You may not like it if…
- …you’re not big on heavy reading and lots of writing
- …repetitive tasks drive you crazy
If you’re unsure which to start with, I recommend backend as a default, and frontend only if you are a visual person. And mind you, “visual” doesn’t mean “creative”—if that were the case, music artists wouldn’t be creative! Both frontend and backend require creativity and are different forms of art. But frontend can be a little harder to navigate for those that don’t also want to put time into graphic design and animation as well.
next up: specialization
Have you made a decision on backend vs frontend? Great. Now, you’ll want to pick a specialization. To do that, keep following along in part 2!