What languages, frameworks and libraries should I learn in order to start front-end development?

Hello there,

I want to start front-end development. So, my question is what is the list of languages, frameworks and libraries I should be familiar with?

Mev-Rael's photo
  • Vanilla JavaScript (ES6) itself with all latest Web standards and Web APIs, optimized DOM manipulation
  • Repeat 1st until you won't master it
  • Node, npm, some build tools like rollup.js with at least babel plugin
  • Learn how to write custom node scripts and automate your front-end. Don't use gulp/grunt/bower/whatever
  • Don't learn any frameworks, learn software architecture and engineering principles, paradigms, design patterns, best practices, algorithms. Take a look onto MVC.
  • For styling start from SASS but keep learning all the latest CSS standards and features. Take a look into ITCSS and BEM. Browse the source code of Bootstrap 4, try to configure BS4 with SASS and write custom code on top of it.
  • For HTML - HTML5, HTML5.1, Web components, Web accessibility, start using semantics as much as possible, custom tags and attributes are ok.
  • Try to build your own simple tempalting engine to understand how it works
  • Try to build own small framework/library, you can take a look into source of Monkberry, Vue.js, React
  • Try to build own simple routing, you can also play with latest browser History API and pushState
  • Try to build custom vanilla JS simple app like TodoMVC from scratch

Now you can waste time learning any of thousands of frameworks around but I believe you won't finish my starter list until you will find a job as a jr. front-end engineer where you will have to learn some tools, frameworks which company is using anyway.

This YouTube channel and this Medium blog is good to start from

Show +2 replies
Ben Briggs's photo

I agree with most of this, but it's important to remember that we all start somewhere with respect to build automation. Grunt got me into build tools in the first place, then I migrated to gulp and finally now I'm piping CLI commands together. That progression is important; gulp & grunt exist because they are aimed at simplifying common tasks. I was definitely new to the command line before using build tools, so it was more intuitive to me to use JavaScript tooling. In short; use what you're comfortable with, but always be on the lookout for better ways to do what you want to do.

Marcus's photo

@mevrael ah I see. I guess it is true that most source code is not written to be read over with complete understanding. Docs definitely do help. I do want to create my own CLI for some projects but I think I still haven't rooted my knowledge yet. I guess your list is more like an overall than just getting started. I do wish to still meet some of these goals myself.

Marco Alka's photo

While the others wrote great answers, I really want to encourage you to use the Hashnode search before asking a question, because we already have some stuff to read over here, for example:

Let me make a tl;dr for you:

  • Front-end web development, also known as client-side development is the practice of producing HTML, CSS and JavaScript
  • There are only three things to learn, which are standardized: HTML, CSS and JS.
  • Forget about frameworks and libraries for now. You will not learn the essence with them and you will never become good if you only rely on tools without knowing the basics. Libraries will come and go, but the basics will always be the same. You should only learn a library or framework to abstract away tedious stuff you already know and understand and only if it solves a particular problem! Look, learning tools at your stage is like trying to take a shortcut in a race. You will see results faster, but you will never be the best runner and there will be some point where you will not be able to use a shortcut any more; that might be the most crucial situation and you are going to fail then. For example when you learned Angular, but the company really needs some React. There are millions of libraries. Learning one will get you nowhere, when another one is a better fit for the job. Choose the tool for the job.
  • Do not learn stuff you do not need. For front end, you will not need any knowledge about HTTP, server-side programming, like Node.JS, or databases. Learning stuff like that will just keep you away from things you really should learn. Also forget about some fancy programming patterns. Only learn a pattern when you need it in a particular situation. Learning for the sake of learning will only result in you forgetting the stuff quickly so you will have to re-learn things.

There are many ways how to go about learning the ropes, but there is only thing which you always have to do: Stay at it and practice practice practice.

Show +1 replies
Marco Alka's photo

@LoneWolf38 There are a lot of useful links for tutorials, docs and learning sites in the Full Stack Developer 101 article :)

Tommy Hodgins's photo

IMO you need to focus on learning 3 technologies: HTML, CSS, and JavaScript.

All of the tools, frameworks, libraries, and best practices built on top of them will be much easier to pick up and use, or create for yourself if you have a thorough understanding of the 3 languages the web uses.

I would recommend not getting distracted by learning frameworks or plugins right now. If you have knowledge about the foundation of how the web works, then you will be able to pick up new tools and frameworks with as much difficulty as you would putting on a shirt in the morning. And you may change your tools nearly just as often as you change your shirt, but HTML, CSS, and JS will always be constant ;)

Ryan Collins's photo

While I am wholeheartedly on board with React, Redux and GraphQL, I think the most important thing to learn is JavaScript, which is no easy task, especially with ES2015 being such an enormous update. Once you know the language inside and out, learning nearly any framework or library is very easy.

Beyond that, like I said, React, Redux and GraphQL are all amazing cutting edge technologies that are a blast to work with.

Marcus's photo

Well I am no expert but I can suggest what to do since I do full stack javascript. Here is a list of what I would learn in order of importance.


  • HTML
    • you can't get anywhere without this.
  • CSS
    • again this important to understand core mechanics of front end dev.
  • Javascript
    • The most important one. I see everyone saying to learn ES6 here but in reality not all browsers support that. You should learn ES5 so most tutorials or classes you find go over this. Once you have this ES6 is a easy.


You should strive to get a taste of it all if or at least most popular items because most jobs offer these.

  • Ember JS

    • Now when I started I learned this second but its strict styling gives you a better build without making so many mistakes at first and starts you off with some structure. Use the CLI.
  • Angular JS 1

    • Now I know angular 2 is out. But many and I mean many jobs ask for this and it is I think a good thing to learn this before learning Angular 2. You will love Angular 2 after learning Angular JS. I suggest not spending too much time here. Just get the basics and move on.
  • Angular JS 2

    • Now this is were new magic comes into play. Typescript 2.0 really bring this framework into the new age of front end. Now As you can see there is a new thing here so look below.
  • Typescript

    • This is a superset to javascript but it will give you a better understanding of OOP and javascript programming overall. Since all the Typescript code you right compiles down to Js you can take a look at what these things you made in Typescript really look like in JS. Some can be made smaller but it is a good learning curve point.
  • React JS

    • Most people will argue you should learn this before the other languages. Really it is a personal preference for me to learn it here. Reacts JSX files to me seem backwards to the days that HTML and JS were in the same files. And well they are again. However I would recommend React with Typescript. Since after all React is JS you can use Typescript.

The Sugar

I mentioned learning CSS before and this is where this comes in.

  • Bootstrap

    • Is actually a framework but you can just use the CSS like many devs and if you use Angular there is Angular UI which pairs well with bootstrap to have a more complete feel. Angular 2 however will have a good point in using bootstrap with its component based approach.
  • Google's Material

    • To me this has surpassed bootstrap in many ways but it is a little difficult to take in after learning bootstrap. It's very much a completely new approach.

Try to learn

This is something you should take a look at. It always your best interest to learn more than just your job.

  • Node JS

    • It's javascript on the server. Sooo hey you could you know start your own side projects. Not completely hard at all to learn. After you know the above you can pick up creating a node server in a day.
  • Express JS

    • This also is something that is very different in different projects. But it is easy to learn its basic structuring. This is sits on top of Node JS and well you can think of it as connecting your server to your front end.
honorable mentions

because every project has them, maybe just read over the docs if not dive in and use them in your personal projects, highly recommend making your own projects. If you want to see some example work check out my github. me.

  • Gulp
    • I prefer
  • Grunt
  • WebPack
    • Angular 2 uses
  • SystemJS
    • I think was used on Angular 2 Release Candidates but havent checked out A2 full release yet.
  • NPM
    • Just a very usefull package manager. You can use others though. This is just specific for NodeJS.
  • GIT
    • This is actually really important and most people don't stress this. There are other similar things out there but if you really want to get involved in the community of devs this is the place to be.

I never had anyone lay out a list of things and reasons of why I should learn certain things. I hope this gives you a good outline of how I learned to be a developer. I have been programming for 4 years now. I know some 15? .. 16? languages. Not fluent but I can dabble in many.

I hope this helps :D

K's photo

I started teaching myself this about 18 months ago, here is what I found:

HTML, CSS and Vanilla JS is first. Only do this for 6 months.

After that I started drawing circles, the inner circle is point one: HTML, CSS and JS.

When I was researching and learning this, I frequently came in touch with words I didn't know. When I was researching css, I saw the words "Sass" and "Less" so added those to my next outer circle. When researching JS I saw words like Babel, TypeScript, so I added those to the circle too.

Then when I reseached "Sass" and "Less" and saw words like "Gulp" and "Grunt", I didn't know what those were, so added them to my next outer circle. When diving deeper into HMTL I saw the word "Jade" (now called Pug) and added it to the next circle.

Then I saw "React", "Angular" etc. etc.

This meant that I kept circling between the three components that make up the web, HTML, CSS and JS, not loosing touch with any of them just spreading my wings further into the technologies that are built upon those three.

Of course I also hit (and am still hitting) absolutely devastating "brick-wall-moments" where I just thought "I won't go any further I can not learn this", but keep at it, water cuts stone because of it's perseverance, not because of it's power.

Sergio's photo

I think the more popular frameworks nowadays for frontend is React, and Angular 2, you can try too if you want with Vue.

Another interesting thing is GraphQL and Apollo stack.

It's interesting to, to take a look at Redux.

Deactivated User's photo

It depends on what kind of work you're looking to do. React/Vue/Anguler may be an overkill if you're just trying to learn HTML/CSS stuff.

Marko Stijak's photo

There are many different frameworks and libraries and learning everything is practically impossible. If you want to become productive quickly, I would recommend narrowing down the list and picking the best candidate. Other answers provide some very good pointers. I would like to add my own framework to that list - Cx.

Ben Buchanan (200ok)'s photo

Start with HTML, add CSS, then move on to vanilla JavaScript (including ES6). Don't start with frameworks and libraries before you know the trinity. I'd actually say that HTML and CSS are more important as fundamental skills - if you don't know what HTML tags are for, you'll waste a lot of time recreating functionality in JS. If you don't know how CSS works, you'll spend a lot of time debugging simple problems... and so on.

If you skimp on the basics you'll never really master the advanced stuff. I'd even go as far as saying you shouldn't go beyond HTML/CSS/JS until you are actually frustrated enough to know why people made frameworks and libraries in the first place.

After the trinity I still wouldn't jump into frameworks - first learn a task runner. Learn git and bash if you haven't already.

I'd suggest going with the NodeJS stack; so you're looking at NodeJS, NPM and Grunt or Gulp. Learn how to use those to do common website tasks like minifying and concatenating CSS and JS.

Learn a good templating language for HTML. Learn a preprocessor for CSS. Still stick to vanilla JS. By this stage you will have the skills to efficiently create and maintain a simple, static website. Learn how to deploy it with SFTP, then automated deployment processes. Learn to hack on your .htaccess file.

Sooner or later you'll get tired of static content and want to pull data from some endpoint... and after that, frameworks and libraries will come pretty easily.

Above all: make stuff. Have fun.

Rangaraj Shanmugam's photo

To start Front end development, you just need some basic knowledge in HTML(HTML5), css(css3), javascript, jQuery. but to master it, you need to practice a lot in the above technologies. nowadays, you can see a new framework every day. so pick a framework/library in javascript like angularjs, react js. and master in it. so if you have very good knowledge in one framework, i think it won't be difficult to learn another one. also it is useful to understand some css frameworks like bootstrap or foundation. it is good to have some knowledge in css preprocessors like SASS,Stylus,LESS.

Try to do as much as hobby projects as you can. All the best.