I had this question on the back of my mind when I got started out with coding.

I couldn't picture myself being a professional because I didn't have any kind of formal education in software engineering and my own project experience wasn't what I would consider professional level.

But the reality is that everyone starts from nothing. Every professional engineer started out with:

  • No exposure to code
  • No classes under their belt
  • No degrees or certifications

But somehow, they moved forward anyways.

They were able to get to a place of competency.  They were able to land a job. They learned how to contribute meaningfully to a professional software team.

While there is a prescribed path to get to competency in the form of an undergraduate degree in computer science, it's hardly the only way, nor is it really the most appropriate path for most people.

People often overlook these things about traditional institutions:

  • Back when programming was still a new field, there were no education programs at all. The entire concept of a computer science curriculum is still relatively new.
  • Not all higher education programs are created equal. There's a high degree of variance in quality between different institutions and degrees.
  • You pay for a lot of stuff other than the coding skills you acquire, like a network that you build, community at the school, and all the extra amenities that is bundled into the price of a traditional university.

For these reasons, if you analyze the cost-performance ratio of a university degree, I think it's debatable and only appropriate in some situations.

Moreover, I've met many people who work in industry that don't have computer science backgrounds at all.

Then where do software engineers come from?

Having a university degree in computer science ensures certain foundational knowledge as long as you're studious enough to keep up with the course work.

That said, if you're able to acquire the same foundational knowledge and have the engineering chops to create products, you'll have no issues working in industry.

Software engineers come from all kinds of backgrounds, they just happened to have either stumbled into code while trying to solve their own problems with technology, or they took a slightly more unorthodox educational path like self-teaching, coding bootcamps, mentorships, and real work experience to get to a place of competency.

The good news about technology is that there is a meritocratic ethos in industry.

The interview process is largely merit-based at a lot of companies and as long as you can get your foot in the door, you have a reasonable shot at showing off your chops and impressing the interviewer.

This meritocracy is a bit of a double edged sword though. It means you're on the hook for your own success, but that should excite you as a driven individual.

So how do you actually become the type of person that succeeds in industry?

First and foremost, you should first pursue coding for the right reasons. I've detailed the lessons I've learned in my career so far, and being sure that you actually enjoy coding is the first point I make.

Beyond that, it helps to be:

  • Super solid on at least one programming language.
  • Technically sound and be able to engineer products.
  • Be a good communicator, especially with the written word.

The only real way to acquire these technical chops is to practice learning. The cycle of learning generally looks something like this:

  • Acquire knowledge
  • Practice (in the form of toy problems, tutorials, projects)
  • Cement your mental models about the new knowlege you acquired

And repeat indefinitely. It's kind of like grade-school math. You learn about a topic, you put in some practice with homework, and you assess how far you've come with a test (except this would be more like a project in the software engineering context, not a test.)

With enough practice and enough project work, you'll eventually have enough technical chops to do okay in an interview.

The second half of the battle at this point then becomes getting your foot in the door at companies, but that'll be a post for another day.

That's it for today's post!

What's coming next...

For those of you who are interested, I'll be writing more on the topic of learning JavaScript in the coming weeks.

On that note: I'm actually opening up a Discord community to just chat with friends who are interested in learning JavaScript. If this sounds like you, fill out this form and I'll reach out to you directly!

Can You Really Become a Software Engineer With No Formal Education?