Front-end Engineer in 2021
Tags: frontend, guide, technology, 2021
Published: 2021-03-07 16:47:01

## Technical requirements for a front-end engineer in 2021.


> **Disclaimer**: This article is based on my observation, opinion, and personal
> preference.

#### Table of content

- [Programming Language](#programming-language)
- [Frontend Framework](#frontend-framework)
- [CSS Frameworks](#css-frameworks)
- [Git and Git workflow](#git-and-git-workflow)
- [UI Libraries](#ui-libraries-react-and-vue)
  - [React](#react)
  - [Vue](#vuejs)
- [Design Tools](#design-tools)
- [Static Site Generators](#static-site-generators)
- [SEO and Accessibility](#seo-and-accessibility)
- [JAMstack](#jamstack)
- [Progressive Web Apps (PWA)](#pwa)
- [Testing](#testing)
- [Graphql](#graphql-)
- [Animations](#animations)
- [Other things you should know to level up your game](#other-things-you-should-know-to-level-up-your-game)

Back in the days, All you need to know as a front-end engineer is just HTML,
CSS, jQuery/Javascript, and probably, A tool like Adobe Illustrator to create
designs. However, Things have changed in the past few years and it's constantly
changing.

There're a lot of front-end frameworks React, Vue, Svelte, Redwood.js, just to
mention but a few, and also uncountable libraries that support us in building
standard applications and websites.


## Programming Language.

Speaking of programming languages, the first thing that comes to your mind is
Javascript, and that's correct because it's the language of the web, However,
You need to know Typescript in 2021 and only a few companies do not have
Typescript as a requirement. You might as well consider learning Web Assembly as
it's is becoming more and more popular.
[Read more about web assembly](https://platform.uno/blog/the-state-of-webassembly-2020-and-2021/).


## Frontend Framework

The three most common Front-end frameworks are [React](https://reactjs.org),
[Angular](https://angular.io), and [Vue](https://vuejs.org), and they're going
to be around for a long time. The fight right now is between Facebook's React
and Vue. Vue currently has over
[180k stars on Github](https://github.com/vuejs/vue) while
[React is at 165k stars](https://github.com/facebook/react), However, React has
over 10.4m weekly downloads while Vue is at 2.3m downloads per week. In
conclusion, React is more popular than Vue with about 80%.

> Everyday, We are nearing Death, and a new Javascript framework. _"Anonymous"_

![front-end frameworks in 2021](https://res.cloudinary.com/dnature/image/upload/c_scale,w_0.8/v1615019545/blog/front-end-20212/Screenshot_from_2021-03-06_09-31-37_lbckpt.png)

Survey from
[stateifjs.com](https://2020.stateofjs.com/en-US/technologies/front-end-frameworks/)

<br />

## CSS Frameworks

You're going to need a CSS framework most of the time because of speed,
flexibility, and a shorter time to build an application.

There's a lot of CSS frameworks out there that suits your specific need, and the
first, oldest, and most popular on my list is Bootstrap.

- [Tailwindcss](https://tailwindcss.com).
- [Bulma](https://bulma.io/).
- [Semantic UI](https://semantic-ui.com/).
- [Bootstrap](https://getbootstrap.com).


## Git and Git workflow.

I strongly recommend that you learn how git and git-flow commands as it is
widely used for version control and most importantly, It's going to save you
a\*s most of the time. Here are some basic git commands you need to know:

- `git init`
- `git clone`
- `git status`
- `git add`
- `git commit`
- `git push`
- `git pull`
- `git branch`

Check out this cheat sheet for a comprehensive guide on how to use
[git-flow](https://danielkummer.github.io/git-flow-cheatsheet/).


## UI Libraries (React and Vue).

> This section is targeted towards React/Vue developers as I have remarkable
> experience with these frameworks.

As a front-end engineer, You might want to rapidly build an application/website,
and writing CSS alone is time-consuming.

### React.

There're countless React UI libraries out there, Nevertheless, I would like to
mention a few that I've used and can comfortably use again and again.

- [Nature UI](https://nature-ui.com): This library is focused on tailwindcss lovers because most of its customizations are done with tailwindcss and it also offers you the ability to style components with emotions CSS prop. I am the creator of this library BDW so check it out :).
- [Material UI](https://material-ui.com): This is by far the most popular UI
  Library out there with a lot of components to handle nearly everything you need to build your application. You must also note that customization can be
  tedious.
- [Chakra UI](https://chakra-ui.com): Chakra UI is another goto library for building react applications with speed and flexibility if you prefer to style your components with props.
- [Ant Design](https://ant.design): This is more of a slick and minimal design-focused UI library with a lot of components to handle nearly everything you need to build your application.
- [Semantic UI](https://semantic-ui.com): I have used Semantic UI in the past and must say that it is quite flexible and easy to get started with.

### Vue.js

- [Vuetify](https://vuetifyjs.com): Vuetify is another Google's material design
  standard library, same as Material UI but for Vuejs.
- [Chakra UI Vue](https://vue.chakra-ui.com): This is just a Chakra UI library
  for building Vuejs applications.
- [Vue Tailwind](https://vue-tailwind.com): As a tailwindcss lover, I am not
  going to skip this library, although it doesn't have a lot of components like
  the rest, the developers are constantly adding more components.


## Design Tools

As a front-end engineer, Most people assume that you must be pretty good at
designing, Therefore, I would like to mention a few popular design tools I use
daily:

- [Figma](https://figma.com): This is the tool I use for almost all my designs.
  A few benefits of Figma is that it has a cross-platform desktop application for most operating systems and it is open source. The web version works the same as the desktop version.
- [Adobe XD](https://www.adobe.com/products/xd.html): Although I had the opportunity to try out Adobe XD, I couldn't continue to use it because of its compatibility with Linux Distros and I'm a Linux user. It is quite easy to use and I can say that It's no different from Figma.


## Static Site Generators

Static sites have been the standard output of websites in the past because most
websites comprised of HTML, CSS, and Javascript, which made them SEO-ready.
However, Things are no longer the case since the emerging of Front-end
frameworks like React, and Vue, therefore, the outputs are most likely to be
dynamic.

As a good front-end engineer, You should know how to use at least one of the
following Static Site generators.

- [Nextjs](https://nextjs.org) (React based)
- [Gatsbyjs](https://www.gatsbyjs.com/) (React based)
- [Nuxtjs](https://nuxtjs.org) (Vue based)
- [Gridsome](https://gridsome.org) (Vue based)

Learn more about
[Static Site Generator](https://www.cloudflare.com/en-gb/learning/performance/static-site-generator/)


## SEO and Accessibility.

Most companies usually have a designated team for handling Search engine-related
things, However, I suggest that you learn how to write accessible and search
engine optimized code as it's going to be a huge plus to you and your company in
the long run.


## JAMstack

The term JAMstack stands for JavaScript (running on the client - for example,
React, Vue, or VanillaJS), API (server-side processes are abstracted and
accessed over HTTPS via JavaScript), and markup (templated markup that's
prebuilt at deploy time). Find out more about JAMstack on
[jamstack.wtf](https://jamstack.wtf/).


## Client-side validation.

Most APIs are bundled with built-in validations, However, I recommend that you
add an extra validation on the client-side. This can reduce the number of
requests sent to the server, add an extra layer of security, and saves a
substantial amount of bandwidth when consuming an API with rate limiting.

Here are a few validation libraries I have used and I strongly recommend:

- [React-hook-form](https://react-hook-form.com/) (React-based): This is a
  Performant, flexible, and extensible form validation library.
- [Formik](https://formik.org) (React-based): Formik is one of the most popular
  forms validation libraries.
- [Yup](https://github.com/jquense/yup): This is a JavaScript schema builder for
  value parsing and validation.

> You might as well try JSON schema for rapid development of forms with
> validations.


## PWA

[Progressive Web Apps](https://web.dev/progressive-web-apps) are cross-platform,
performant, hybrid applications with access to native modules. Here are a few
benefits of PWAs:

- Build once, run everywhere: This implies that your single code can run on the
  Web, Android, iOS, and Desktop, as native applications.
- Boosts performance.
- Tiny app size.
- Push notifications.


## Testing

Building an application without tests is like solving a mathematical problem
without proof. You need to test for behaviors and states of components in your
application to determine that it is working as expected.

You should at least know how to use some of these testing libraries:

- [Jest](https://jestjs.io).
- [Testing Library](https://testing-library.com).
- [Enzyme](https://enzymejs.github.io/enzyme/).
- [Chai](https://www.chaijs.com/) and [Mocha](https://mochajs.org/).


## Graphql 🔥

[Graphql](https://graphql.org) has been dominating both in the server-side world
and the front-end world. It was first released in 2015 by Facebook to tackle
issues developers are facing.

Check out this comprehensive comparison between Graphql and Rest
[https://blog.api.rakuten.net/graphql-vs-rest/](https://blog.api.rakuten.net/graphql-vs-rest/).

> Will Graphql replace REST?. I'd like to know your take on this.

**Edit:** If you're already using Graphql to build APIs, then I recommend you checkout [Butter CMS](https://buttercms.com). Here's a more recent comparison between graphql and Rest, with detailed examples [https://buttercms.com/blog/graphql-vs-rest-api](https://buttercms.com/blog/graphql-vs-rest-api)


## Animations

Animation is one of the most effective tools that you have to use on your
website. The skillful use of animation on your website or blog can help to
increase your targeted traffic in ways that ordinary text-based content cannot
do for you.

Here are a few most popular animation libraries:

- [Framer Motion](https://www.framer.com/motion/) (React-based)
- [React Spring](https://react-spring.io)
- [React transition group](http://reactcommunity.org/react-transition-group/)
- [GSAP](https://greensock.com/gsap/)
- [Animate on scroll (AOS)](https://michalsnik.github.io/aos/)
- [Scroll magic](https://scrollmagic.io/)


## Other things you should know to level up your game.

- [Storybook js](https://storybook.js.org/): This is an open-source tool for developing UI components in isolation for React, Vue, and Angular. It makes building stunning UIs organized and efficient. An alternative to Storybookjs
  is [Bit](https://bit.dev).
- Add search functionality to your website or web app as it helps users to easily search and navigate through the contents of your app. Here are a few
  open-source search libraries I strongly recommend:
  - [Algolia Docsearch](https://docsearch.algolia.com)
  - [Match Sorter](https://github.com/kentcdodds/match-sorter)

#### What do you think is missing in this article? Let me know in the comments.

Happy Codding 💻 🤓