Advice For Becoming a Front End Developer
Someone recently asked me for advice for switching careers to be a front end developer. I knew very little about the person other than their college degree was unrelated to the field, they were trying out Free Code Camp, and that they wanted to be a front end developer. As a result, the advice I gave was generic enough that I’m going to post it in case it helps anyone else:
First off, I never tried to get into programming without a college degree, so take my advice with a grain of salt.
I think there are 2 topics here. The first is technology and how to become a better developer. I would actually recommend playing around with server side technologies. The reason for this is even though you want to be front end, you need to understand how the whole system works. Everything can theoretically be solved all on the client or all on the server, but understanding both ends will help you work with your team to figure out which is actually optimal. Also, I know very few front end positions that don’t require some basic server programming. To get started here I would find some tutorials on some basic data stores: MySQL and MongoDB are pretty popular. I think the Tour of Go is also great for learning back end development: https://tour.golang.org/welcome/1 Even though you’re unlikely to work with a Go backend, Go forces good software design patterns and the tour of go is pretty good at introducing you to some essential programming concepts. From there I would actually go through some of Codecademy’s lessons. I would never build a system using Ruby on Rails, but learning Rails will introduce you to some major concepts of software design, such as splitting out your data layer (the code that talks to databases) from your business logic. This separation of concerns can also apply to the front end (e.g. the Flux pattern with ReactJS).
Even though there are lots of resources on the internet that will tell you how you should be building software, I actually recommend doing whatever you think is best. It will most likely be wrong at first, but digging yourself into a hole is a great learning experience. Don’t ever write software a certain way because someone else said it is the right way. You need to understand the reasoning. For example, I built an app using just ReactJS without Flux because I wanted to see why Flux was important and what it is trying to save me from.
Lastly, the only way to get better is experience. Write a lot of code. Even when you think you’re starting to understand something really well, think of a project that’s WAY more ambitious than the ones you’ve tried and write code for that. You won’t believe how many programmers out there stop learning so even though they have 10-30 years of experience, I would take an intern over a lot of them.
The second major topic is how to get a job. The main issue is that any company large enough to have an HR department is probably not going to give you a shot because HR acts as a filter and they won’t have an engineering background to come up with the best filters. Not having a college degree in programming is an easy filter. Startups are filled with people like me who don’t care about credentials. We care about skill sets. So your best bet is probably to start looking for small startups.
I think you should also focus on getting internships, NOT full time positions. That’s not because I think internships are easy to get. Internships let you switch companies 2 or 3 times in a short time period without getting flagged as a job hopper. Just because the job market favors engineers over employers doesn’t mean employers don’t talk about a job hopping resume. We all want to hire people that will stay after all. It takes an engineer 6-12 months to really ramp up at a new job so someone who’s leaving after less than a year isn’t providing their maximum value to a company.
You want to work for different companies though because:
1 - you will want to meet lots of engineers. Networking is a cliche thing to say, but it’s important because you want to know people who will hire you, but also know people YOU can hire when you get a full time job.
2- you will want to experience lots of different types of technology in production environments. A single company tends to use only a subset of what’s out there because they need to focus. You want a large toolbelt though, and that means seeing as much of what’s out there as possible. Playing with technology at home (e.g. mysql) is no substitute to seeing it in play in a system with millions of users.
3 - you will want to see what kinds of companies are out there and what matters to you: technology you work with, people you work with, company culture, what kind of a difference your product makes in the world, etc. You will not get everything and you will change your mind after getting one thing but not the other.
Try to find 2-3 internships, each lasting 3-4 months, before you take on a full time job.
Anyways, I hope that helps. Let me know if you have any other questions.