My roadmap to getting hired as a frontend dev
Resources for learning before you get that first developer job, while you have a day-job, a family and a life
Let me tell you, it's been a journey, a long journey. When I finished highschool I thought I would go into law, and I started law school, but it didn't suit me. I ended up working in a hi-fi / record store for 14 years. And it has been a good job, enjoyable, lot of music. But I wanted to do something else for the rest of my life... something that I've been around for whole my life and that's computers.
Problem is noone ever told me coding isn't all about math. Now don't get me wrong, I was pretty solid at math, when I would be bothered to sit down and do it. It just wasn't interesting. It has become interesting though in recent years, but that's some other blog material. So, like I said, I didn't want to learn high level math to work with computers, that was my idea. Well, if someone told me math required for front-end was like 4th grade math, and not just front-end. As far as I see it, unless you're in machine learning and ai, most other coding avenues are "is a > b?".
I started my coding journey some 3 years ago. My idea was, do some research, see how I could do it, and just do it. I didn't want to put pressure on me timewise, and I was glad my better half didn't do it either. I would start with no / low cost resources because I didn't have money saved up to burn, nor the time to do a dedicated bootcamp. In the end I didn't even know if I would like it. And let me tell you, I love it. It took me a while because life and life with kids, and a job takes a lot of your time and energy, sometimes you just have to recuperate, so I would go on streaks of not learning / coding lasting up to a month
So, where to start. Well, I googled what to learn. What's the best for beginners, self-taught future developers. I soon discovered stack overflow survey. Here you can find what people are using, what people need to get hired. All the research suggested start with HTML and CSS and then go to JavaScript (JS). JS is maybe the best option, since it's not too hard, it's very employable, and you can do it front-end and back-end. Other big option is Python instead of JS. And then just dive in. There is this thing called "analysis - paralysis", where you don't know what to do because there are just too many options. Don't let it get to you.
I started learning on 2 sites, freeCodeCamp and Udemy.
freeCodeCamp has a really good concept where you read something about the issue at hand, then you code the solution and go to next challenge. It is extremely beginner friendly, and it has great structure, you can just start with Responsive Web Design Certification and do the challenges. It will lead you through all that you need to know. It is really structured, so it's easy to just go through the path and you'll learn what you need to know. They also have a really good blogs, and news that you can read through and learn a lot. There is one thing that's missing for me though, and that's video.
That's why I also did courses on Udemy. They are not free, but pretty cheap, they always have some kind of sales, and courses are around 15€ then. One of the most famous courses there is Web Developer Bootcamp by Colt Steele. It has a great structure, same as freeCodeCamp, and you work on a really big and fun project in the course. You have to force yourself to code along though, and it's much easier if you have 2 screens hooked up. What is really nice for me here is that you have videos guiding you through the whole course, and I do prefer that just a bit over text only. I have also finished Git & Github Bootcamp by Colt Steele. Git (or something similar) is something that you will use heavily in any company that you work for. I did 2 more courses here, Complete Developers Guide To MongoDB by Stephen Grider, which is a database program, and this course is more in-depth than what you get in that Colt's bootcamp. And the last one is Modern JavaScript Bootcamp Course by Colt Steele and Stephen Grider. You can always go to another famous online video course platform Coursera if you prefer it.
Last big learning resource I found is Scrimba. I'm kind of sorry I haven't found this resource sooner, as it is like freeCodeCamp and Udemy in one. You have a video guide by the teacher, and then you write some code in that same window. This was the best concept of learning for me, it forces you to get your hands on the keyboard. There are payed courses and free courses, and there is also Frontend career path you can take. I did a free React course by Bob Ziroll, and I can't recommend it highly enough. It's interesting, engaging and you will do couple of projects on your own by the end of it. And you will know what you need to know in React.
In all that time I was also listening to a lot of coding podcasts. The knowledge you can pick up there is really great. I would say that 50% of my tech interview answers came from podcasts, because you hear the concepts, the lingo... During my commutes to and from work I would listen to podcasts, that's like 10 hours worth a week. Most of those are beginners friendly, so let's dive in. Scrimba podcast is a project from Scrimba of course, and they have an episode from a coding newbie that just got hired, then an episode from some senior dev, all working to make juniors get jobs easier. Together with Code Newbie it's most beginner friendly. Code Newbie also has seniors from many fields talking about how they got into tech, what they're doing and have all these great tips for beginners. Syntax podcast and HTML All The Things are most fun podcasts. Both are done by small business owners / developers who like to talk about new tech, problems they encounter and rant about all the things possible. Another fun and a bit different podcast I love is Whiskey, Web and Whatnot. They review a whisk(e)y, talk about tech and then rant about whatever. A bit more advanced podcast is Hanselminutes. It's more advanced in topics, but the way Scott Hanselman presents them, and the comparisons he uses, is like a great professor passes you all the knowledge and more. Last 2 I've been listening to are JS Party and PodRocket. All the new tech, new projects, interesting people come to these 2, if there's something new coming out, you'll learn here.
Next learning resource are books. Same as podcasts, I'm not looking for learning syntax from books, but learning concepts and basics... how to think.
- Code Simplicity by Max Kanat-Alexander
- Don't Make Me Think (Revisited) by Steve Krug
- Eloquent Javascript by Marijn Haverbeke
- Computer Science Distilled by Wladston Ferreira Filho
- Javascript Enlightenment by Cody Lindley
In the midst of learning I found a great resource that actually get you some money while learning to code StackUp. It's a cool concept, you have challenges that when you do pay a couple of dollars. It won't make you rich, but what's the biggest advantage here is you get the sense that you are getting payed for your coding. Challenges are mostly straightforward where you can just answer couple of questions after reading some text or copy paste code and change a couple of things. Best paying campaigns are web3 content.
A lot of my learning was also done on youtube of course. You can learn all on youtube, but it's sometimes hard to find a structure there. I can share some of my subscriptions there, like The Net Ninja, Web Dev Simplified, James Q Quick and Codevolution. Codevolution has a couple of video series for beginners, that I can really highly recommend. That's where I learned a lot of NextJS, which is a framework on top of React, and in which I did my projects, but more on that later.
Documentation is also a great place to learn things. I started learning React and NextJS on their docs. Some concepts I read there actually stuck better than from the videos later. I have also read part of CSS docs, never really finished it. But many things were clearer after I read the docs. Some people claim after you've gotten basic knowledge about coding, docs are best and fastest way to learn a new technology.
In the end we arrive at the projects I did. I must admit I haven't finished many of them, not even pushed them to MVP (minimum viable product). For a long time I didn't even know which projects to do, I only knew I didn't want to do a simple to-do app like so many other people. Of course the main thing you need to work on is your portfolio. I had a lot of ideas and a couple of iterations and finally finished it. Here you can see the end result. It was done in NextJS, and it is pretty simple, with not many content, since without working yet as a developer, there is just so much you can put there. I bought a really cheap (like 4€/year) domain name, and deployed the app through vercel. They own NextJS so deploying through them is really easy. I also learned how to make google crawler go to your site, how to do (basic) SEO, and what to do to make the page as fast and as accessible as possible.
Second project was an app that helped us at the record store. A lot of times we get albums that we have never had before, and entering all that data by hand is really time-consuming. I wrote an app with a form that received barcodes and would then fetch data from discogs (one of, if not the biggest music databases / marketplaces). Fetched data would then be populated in a table that had to have almost 100 columns in a specific sequence, so that it could be transfered through csv file to our POS software. It was also in NextJS, but I didn't bother with SEO, or really with looks of it, since it is a utility used only by couple of us.
Third and final project was an online menu for a local bar. The initial problem was that it had to live in a day or two, so I decided just to hard-code the data initially. After that was done I could finish the site at a slower rate. It's a friend's bar, so I wasn't really stressed about it, or really pushed, so it all worked fine. I used MongoDB and NextJS. Now the owner (and me ) has the ability to add, change and delete articles (CRUD).
Besides the projects there are a couple of things you should do. You should do a CV. There are plenty of sites that offer professional-looking CVs for a small amount of money or for free. You should also work on your linkedIn profile. That's also a skill you need to learn. You should find and join a community, many of these learning resources have a discord channel or something like it. You should also write blogs. They say you learn best when teaching others, so you can always write about that one problem that got you stuck that day. And you can do some open source. It's one of the ways to network with other people. Good place to start.
I have to say here that there is a caveat to what I wrote in the last paragraph, and that is all of that is based on my research, not maybe what happened. First of all, I really put a lot of effort in making a CV and spent a decent amount of time working on my linkedIn profile, but not really networking. I also joined a couple of discord channels but haven't been really active on them. I've written only 2 blogposts prior to this, and not really done any open source. It's always a matter of time and priorities, and some of them just didn't make the cut yet. I'm glad it didn't bite me in the a**. I can tell you that I got extremely lucky with getting a job, because the company that hired me has been sent a link to my portfolio by my friend. That's why you need networking, because not every company will filter through hundreds or thousands of linkedIn profiles.
And in the end I can tell you just apply for jobs. You'll probably never feel ready, or will feel ready but long after you actually could be getting a job. I've heard this from sooo many people, and didn't believe it myself. I can tell you that guys that hired me said that they really liked my portfolio site, and in the tech interview I knew more than they really expected from someone applying for a junior position. That can only mean I could've tried applying for jobs already.