How do you start a career as a programmer? 

Like with most questions, your first instinct might be to look for help in a search engine. The internet is full of people selling courses, books, and other resources, promising a fast way to get spectacular results. 

I'm sorry to disappoint you; there is no easy, speedy path. 

In this article, I'll share my story and what worries and misconceptions I had before I started my software development journey to support you on your bumpy ride. Let my experience work as your buffer.

My formal education ended after high school. I tried attending university but was not too fond of it and felt it wasn't for me. I didn't know what I wanted to do with my career for a long time. 

Eventually, in February 2021, I decided I wanted to try coding. The reason was quite simple — the market has shifted to remote work. I live in a small town, and moving out wasn't an option, so being able to work from home was a requirement. 

I didn't know anything about coding. I only knew some buzzwords, but I didn't truly understand them. For example, I thought scrum was something related to pigs. In Polish, the onomatopoeic word for the sound pigs make is "chrum," which looks similar to "scrum." Hence I imagined a scrum master to be a guy with a lasso chasing pigs and leading them back to their enclosure. I thought Java and JavaScript were the same things. So as you see, I was utterly clueless.

Many say there's no point in entering the IT industry without a computer science degree. Still, I was determined to do so anyway. 

I was interested in web development because I read that it's the most in-demand programming career path. I asked my friend, who works as a web developer, to give me a roadmap of what I need to learn to become one. The roadmap looked roughly like this:

  1. Learn JavaScript. Learn HTML and the most important CSS concepts. Start slowly adding TypeScript.

  2. Learn Git basics.

  3. Learn how to make a REST API in Node.js and connect it to a MongoDB database.

  4. Learn React.

My first question was, "What if the market changes and all the stuff I learned is no longer in demand?" 

My friend answered, "It doesn't matter; once you learn a programming language and web development concepts, you'll be able to apply them in other languages using different tools." 

At first, I didn't believe it, and I spent way too much time worrying about which tech stack to pick.

Having made up my mind, I started studying. I used primarily free materials I could find on the internet and bought some cheap courses — Udemy is excellent for this, but make sure to always purchase on sale. The only course I fully finished was a JavaScript one. Why? I'd drop a course as soon as I learned the basics and simply start coding. 

That brings me to the best advice I can give a rookie — code a lot. 

Try not to use too many libraries in your projects; code as much as you can on your own. 

Reinventing the wheel isn't usually a good idea. However, you're still learning, and figuring things out yourself is a perfect way to learn.

My best learning experience wasn't actually a web dev project, although related, but a Discord — chat application — bot. The bot fetches data from a fanpage about a game I used to play and displays it in the chat.

Initially, I scrapped all the data, but it got pretty tedious, and any small change would break my code. I contacted the fansite admin and asked whether there was any API I could use. It turned out that there was an API, but it wasn't documented. The admin was very kind and listed all the endpoints for me, and as the project grew, I asked him to add more endpoints. I even found some bugs and logical errors and helped fix them. 

This experience has taught me a lot about communication with other devs.

I didn't know whether recruiters checked your GitHub, but I had to put something on my CV, so listing my personal projects seemed like a good idea. I chose frontend-oriented projects for the rest of my projects because it's easier to show off your work this way. 

Then, I spent some time solving challenges on HackerRank to prepare for technical interviews. 

For a long time, I was worried that my code wasn't "real code," which made me anxious about applying for jobs. Eventually, after a conversation with my friend, I decided to start applying to prove to her that I wasn't ready and good enough yet. And then I got a job. 

Another misconception I had was that you constantly create new concepts and develop innovations as a programmer. When I started working, I realized that you mainly apply existing concepts to the requirements. If you ever need to come up with something new, you have your team to back you up, and you won't be alone in it.

By now, you might think it's an easy path after all, but keep in mind that I still had to spend over a thousand hours studying. It wasn't always fun; I was often frustrated when I couldn't figure something out and couldn't find helpful answers on Google. So I took breaks, and usually, after resting for a bit, solutions would pop up in my head. 

So, how do you start an IT career without formal education? 

In a nutshell:

  • Code a lot.

  • Be curious.

  • Don't worry about choosing "the right" technology.

  • Remember that you don't need to be a genius to work as a programmer.

  • Don't give up!