7 Lessons for Self-Taught Developers

What I wish I knew when I began teaching myself to program

Published on
Jun 25, 2019

Read time
7 min read

Introduction

“Nothing will work unless you do” — Maya Angelou

Taking your first steps into development can feel like a leap into the unknown. Even choosing what to learn can feel like a major obstacle, given the number of options. Then, once you start, you are entirely responsible for your own progression.

It’s no mean feat, and yet as many as 1-in-5 professional developers are self-taught. In StackOverflow’s 2019 survey, 63% had a degree in Computer Science or a closely related field, while 16% attended a programming bootcamp. That leaves 21% who became professional developers without paying for their programming education.

I’m a self-taught web developer, and in this article, I share several lessons I learnt the hard way. These lessons are mostly about the approach I recommend you take when you’re trying to teach yourself, rather than tips about any specific language or framework. That’s because — in my experience — how you learn is much more important than what you learn.

1. Don’t Sweat the Small Stuff

One of the biggest challenges I faced as a self-taught developer was choosing what technologies to learn. I now think of the choice of language as a relatively small factor in your success as a developer: any popular programming language will teach you useful transferable skills, and learning one language will invariably help you pick up others later down the line.

When I got started, I knew very few other developers to help guide me one way or the other. I read several articles digging into the technical differences between PHP and JavaScript before I had any real understanding of what they meant, and that was a mistake: when it comes to choosing your first language, technical distinctions aren’t important.

What a beginner can research is how popular a language is, whether there’s a job market for it, and the kind of projects it’s most commonly used for. I don’t think you can make a bad choice of a first language, as long as:

  • It can solve a problem you’re interested in solving.
  • It’s popular enough that it has a large community and lots of resources to help you when you get stuck.

If a language ticks both boxes, jump in. If you spend too much time worrying about what to learn in the first place, you risk never getting started. The more you know, the easier it will be to choose technologies in the future, and the faster you’ll pick them up.

2. Take It One Step at a Time

There are so many languages, frameworks, libraries and additional tools that just thinking about how much there is to learn can overwhelm you. Plus, the playing field is changing constantly: new technologies are being developed all the time, while others are falling out of favour.

My advice is to take each thing one step at a time. Try to learn new technology as and when you need it, and make sure you establish a solid foundation of understanding before moving on to the next thing. For example, just because a web application can depend on a hundred different tools and technologies, yours doesn’t have to. Learn CSS before you learn Sass; pick up Redux when you’ve got a solid understanding of React.

It’s also worth remembering that you don’t need to learn everything you read about. Early in my learning journey, I read a tutorial which suggested Grunt and Gulp where essential technologies, but the industry moves quickly and that information was already out of date: nowadays, you may be better off just learning Webpack.

So, don’t pick up technologies for the sake of it. Learn them because they’re relevant for your projects, or because a lot of employers seem to value the skill. But job listings, too, should be taken with a pinch of salt…

3. Job Listings Are (Often) Useless

While it’s good to think about what technologies might make you more appealing to employers, it’s worth not taking job listings too seriously.

Earlier in my learning journey, I remember searching for ‘front-end developer internships’: I wasn’t looking for work, but I wanted to try and understand the minimum level of knowledge necessary to get into the industry. These were jobs that often paid a lot less than the market rate for a developer, and yet many of them had ridiculous requirements.

In particular, I remember one job entry looking for a “full-stack intern” with knowledge of React and Angular on the front-end, as well as both Node.js and Django on the back-end — plus a host of related technologies. In essence, they wanted the skillset of an experienced developer at the price-point of an intern.

In this case and several others, it was likely an HR executive who posted the job and who went overboard with programming buzzwords. The lesson: don’t pay too much attention to job postings like this. And if you have a full-stack skillset, you probably shouldn’t be working as an intern.

4. Use Multiple Learning Methods

There is a lot of fluffy material out there about different types of learners. I remember being taught at school that auditory learners learn best by listening, visual learners learn by reading or looking at images, and tactile learners learn by doing.

I find this system pretty reductive. Even if you have a great ability to memorise visuals, using one learning method simply isn’t as effective as mixing it up. Besides, you’re limited to what’s available. If you have an obscure bug, you might be able to solve it by surfing YouTube, reading StackOverflow or consulting the docs. If you think you’re an auditory learner and therefore you only watch video tutorials, you’re likely to progress more slowly.

On the contrary, if you’re struggling to get your head around a difficult concept, you’ll probably learn fastest by doing a bit of everything: watching videos on the topic, consulting the docs and trying it out in your own test projects. You may be surprised to hear that, to help pick up JavaScript for the first time, I even read a few paperback books! If you find yourself struggling to understand something, mixing and matching your learning materials can be the best way to become unstuck.

In addition, don’t be afraid of paying for online courses. There are many great courses below the $20 range, and that’s a hell of a lot cheaper than a degree or even a bootcamp. Having said that, there is great free material out there.
For both paid and free courses, I can personally vouch for Wes Bos and Traversy Media.

5. Learn by Doing

Despite what I said above, for programming, one learning style is leaps and bounds more effective than the rest: learning by doing. In my experience, many programming concepts only clicked when I started a test project and tried them out. There are also core programming skills, like debugging, which can only be mastered by actually encountering errors in your code and trying to fix them.

When you’re at the earliest stages of learning a technology, you might not know enough to even set up a test project. In that situation, it can be helpful to learn more about the concept of the technology and code along to a step-by-step tutorial. As soon as you’re feeling more comfortable, though, I recommend trying whatever you’re learning in a project of your own.

In addition, I have learnt a lot by writing Medium articles: even though I choose topics I feel knowledgeable about, there’s almost always something new I learn over the course of writing an article and it solidifies my existing knowledge.

6. Get Used to Reading Docs

We’ve spoken about learning via reading tutorials, but consulting docs can be a skill of its own. Some documentation is great: I think that the MDN web docs are a fantastic resource for vanilla JavaScript; I also think React’s official tutorial and documentation is very good.

Other resources are less useful. For example, there are many node modules maintained for a free by an individual or small team, and they can’t be blamed for documentation that’s lacking in examples. Then there’s Google’s API documentation, which is extensive, but which can be a real headache for newer developers. Getting accustomed to using better documentation can help you when you have to deal with more difficult docs!

7. Find Other Ways to Stay Motivated

Finally, whatever got you interested in programming, there are going to be times when learning is a slog. Unlike school, university or a bootcamp, there’s no community around you to help motivate you when you’re going through a tough patch. Here are some ways that I’ve stayed motivated as a solo developer:

  • Listen to podcasts. Hearing people speak about coding in a more casual way can help keep you informed while also motivating you to keep learning. I’m a fan of Syntax, which is mostly about web development using JavaScript, but there are a lot of programming podcasts out there.
  • Watch non-tutorial videos about coding. It’s easy to spend watching videos about learning to code than actually coding. Having said that, watching non-tutorial videos can be another fun way to keep motivated and learn about other people’s opinions on the industry.
  • Read non-tutorial articles about coding. For the exact same reasons as above, I enjoy browsing sites like Medium and Quora for more opinion-based content about coding.
  • Create your own content. I mentioned above that writing on Medium has helped solidify my own learning. If you become comfortable with a topic and think you could do better than the material that’s out there, why not give back to the community with some content of your own? It’ll expand your own knowledge and could be a good addition to your resumé.
  • Make your own community. Communicating with other developers is one of the best ways to stay motivated. You may or may not be lucky enough to know other developers who are happy to talk to you about what you’re learning. If you do, try to get in touch with them. If you don’t, engage with other developers by commenting on their tutorials, asking and answering StackOverflow questions and even contributing to open source projects.

© 2024 Bret Cameron