<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>DEV Community: Frontend Masters</title>
    <description>The latest articles on DEV Community by Frontend Masters (@frontendmasters).</description>
    <link>https://dev.to/frontendmasters</link>
    <image>
      <url>https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https:%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Forganization%2Fprofile_image%2F674%2Fb6682f24-d650-453d-bd07-9d0e752ceecf.jpg</url>
      <title>DEV Community: Frontend Masters</title>
      <link>https://dev.to/frontendmasters</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/frontendmasters"/>
    <language>en</language>
    <item>
      <title>What Skills Should You Focus on as Junior Web Developer headed into 2025?</title>
      <dc:creator>Marc Grabanski 🏙💻</dc:creator>
      <pubDate>Mon, 07 Oct 2024 14:30:42 +0000</pubDate>
      <link>https://dev.to/frontendmasters/what-skills-should-you-focus-on-as-junior-web-developer-headed-into-2025-5h44</link>
      <guid>https://dev.to/frontendmasters/what-skills-should-you-focus-on-as-junior-web-developer-headed-into-2025-5h44</guid>
      <description>&lt;p&gt;Let’s say &lt;em&gt;Junior Web Developer&lt;/em&gt; means you’re either just starting out learning, you’ve got a job but are early in your career, or somewhere between those. Our goal with this guide is to give you things to learn that we believe will serve you well. That is, they will &lt;strong&gt;make you a better developer and ideally a more employable and promotable employee&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fi0.wp.com%2Ffrontendmasters.com%2Fblog%2Fwp-content%2Fuploads%2F2024%2F08%2Fjuniors.png%3Fresize%3D1024" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fi0.wp.com%2Ffrontendmasters.com%2Fblog%2Fwp-content%2Fuploads%2F2024%2F08%2Fjuniors.png%3Fresize%3D1024" alt="junior developer guide"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Fundamentals are always smart.
&lt;/h2&gt;

&lt;p&gt;Let’s not be &lt;code&gt;old-man-shakes-fist-at-kids.gif&lt;/code&gt; about this, but learning the fundamentals of tech is demonstrateably useful. It’s true in basketball, it’s true for the piano, and it’s true in making websites. If you’re aiming at a long career in websites, the fundamentals are what powers it.&lt;/p&gt;

&lt;p&gt;For a web developer, those are HTML, CSS, JavaScript, accessibility, image formats (e.g. PNG, SVG, JPG, etc.), data storage, API design and usage, HTTP, servers and backend languages, and lets throw version control in there. Do you need to have complete mastery over all of them? Nope. But you need a working knowledge of them.&lt;/p&gt;

&lt;p&gt;The point of the fundamentals is how long-lasting and transferrable the knowledge is. It will serve you well no matter what &lt;em&gt;other&lt;/em&gt; technologies a job might have you using, or when the abstractions over them change, as they are want to do.&lt;/p&gt;

&lt;h1&gt;
  
  
  Here’s an example regarding images on the web
&lt;/h1&gt;

&lt;p&gt;All frameworks will handle images differently. They’ll all have their reasons for that.&lt;/p&gt;

&lt;p&gt;For instance, Rails has &lt;a href="https://api.rubyonrails.org/v7.1.3.4/classes/ActionView/Helpers/AssetTagHelper.html" rel="noopener noreferrer"&gt;a helper method like this: &lt;code&gt;image_tag()&lt;/code&gt;&lt;/a&gt;. This helps you generate an &lt;code&gt;&amp;lt;img /&amp;gt;&lt;/code&gt; with a &lt;code&gt;src&lt;/code&gt; that points to the image correctly, and helpfully generates browser-cache busting URL parameters. You’re on your own for optimization. If you want to try to use the responsive images syntax, only recently do they have &lt;a href="https://eagerworks.com/blog/rails-picture-tag-responsive-image-support" rel="noopener noreferrer"&gt;rudimentary support&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://nextjs.org/docs/app/api-reference/components/image" rel="noopener noreferrer"&gt;The Next.js &lt;code&gt;&amp;lt;Image /&amp;gt;&lt;/code&gt; component&lt;/a&gt; is quite different in that it wants to &lt;em&gt;optimize&lt;/em&gt; the image for you and output the image with the &lt;code&gt;srcset&lt;/code&gt; syntax in order to serve right-size images to different devices, as well as provide a blur-up loading style. This is much fancier and helpful, but if you are trying to do something custom, like any &lt;code&gt;&amp;lt;picture&amp;gt;&lt;/code&gt; element usage, you’ve gotta keep going down &lt;a href="https://nextjs.org/docs/app/api-reference/components/image#getimageprops" rel="noopener noreferrer"&gt;a proprietary rabbit hole&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://www.11ty.dev/docs/plugins/image/" rel="noopener noreferrer"&gt;The Eleventy Image utility&lt;/a&gt; helps provide optimized image output for you to use however you want to construct your image HTML. It’s quite powerful in how many options it offers and features and formats it supports. But it’s intentionally unopinionated leaving much of a final implementation on your shoulders.&lt;/p&gt;

&lt;p&gt;Those are all &lt;em&gt;very&lt;/em&gt; different approaches.&lt;/p&gt;

&lt;p&gt;A developer skilled in the fundamentals will understand how the &lt;code&gt;&amp;lt;img&amp;gt;&lt;/code&gt; tag (and related elements and attributes) works in HTML and then layers on tools to help get there. That knowledge will translate from approach to approach and framework to framework. If you just use whatever a framework gives you and don’t dig into the fundamentals, you not only aren’t doing as good of a job as you could, but you lose knowledge between projects.&lt;/p&gt;

&lt;h3&gt;
  
  
  Understand the Browser
&lt;/h3&gt;

&lt;p&gt;This is literally what the term “front end” means. It means &lt;strong&gt;the browser.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;“Back end” work revolves around servers. Servers that are &lt;em&gt;exactly known&lt;/em&gt; and produce identical and reliable results each time they are used.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F52jr4w0c8fqtvrq0ji97.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F52jr4w0c8fqtvrq0ji97.png" alt="browsers complex"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Browsers are much less &lt;em&gt;known&lt;/em&gt; — that is — &lt;em&gt;one&lt;/em&gt; browser will produce identical and reliable results when used, but users visit your website from thousands of different permutations of browsers, versions of those browsers, devices they run on, screen sizes they are looking at, with different features enabled, and more. The browser space is &lt;a href="https://daverupert.com/2024/02/ui-states/" rel="noopener noreferrer"&gt;pretty complex and unpredictable&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;Learning what the browser is doing and how to work with it is immensely useful. Your main tool in this endeavor is that browsers DevTools. &lt;a href="https://frontendmasters.com/courses/dev-tools/?utm_source=boost&amp;amp;utm_medium=blog&amp;amp;utm_campaign=boost" rel="noopener noreferrer"&gt;DevTools are very worth learning.&lt;/a&gt; DevTools allow you to do all sorts of inspection and analysis on a website like:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Understand all the network requests that were made to produce the website you’re looking at&lt;/li&gt;
&lt;li&gt;Inspect any particular element on the page, see where it sits in the DOM tree, and see all associated styling information on it.&lt;/li&gt;
&lt;li&gt;See the original HTML that came down in the initial request for the page (e.g. “View Source”)&lt;/li&gt;
&lt;li&gt;Dig into the animations present on the page, slowing them down, reversing them, and generally controlling them to understand what is happening. &lt;/li&gt;
&lt;li&gt;Look at the storage (e.g. cookies, sessionStorage, etc) that apply to the current page&lt;/li&gt;
&lt;li&gt;And… no joke… easily hundreds more things, &lt;em&gt;most&lt;/em&gt; of which will be useful at some point to you. (Try pressing &lt;code&gt;Command-Shift-P&lt;/code&gt; within DevTools to see a menu of some of the things it can do.)&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fpzc0pflaiftcdqr7v983.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fpzc0pflaiftcdqr7v983.png"&gt;&lt;/a&gt;&lt;br&gt;
&lt;em&gt;Seeing and being able to manipulate the DOM, as well as the active styles on any element, is incredibly useful alone.&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;Again, anything you learn on top of what browsers are natively doing is a purposeful abstraction. Learning what browsers are doing means that as higher-level technology changes (e.g. &lt;em&gt;a new framework!&lt;/em&gt;) you’ll still have the underlying knowledge of how it all works.&lt;/p&gt;
&lt;h3&gt;
  
  
  The Basics of HTML
&lt;/h3&gt;

&lt;p&gt;Literally every website is HTML. It’s absolutely unavoidable, not that you’d want to avoid it, because it’s powerful and useful. Here are the basics to know first:&lt;/p&gt;

&lt;p&gt;Use the semantic (meaning &lt;em&gt;appropriate&lt;/em&gt; and &lt;em&gt;meaningful&lt;/em&gt;) block tags of HTML. Using a &lt;code&gt;&amp;lt;div&amp;gt;&lt;/code&gt; or &lt;code&gt;&amp;lt;span&amp;gt;&lt;/code&gt; is a perfectly fine choice for a block or line of content (respectively) that you need to apply a class to to style, but use a &lt;code&gt;&amp;lt;section&amp;gt;&lt;/code&gt;, &lt;code&gt;&amp;lt;article&amp;gt;&lt;/code&gt;, &lt;code&gt;&amp;lt;header&amp;gt;&lt;/code&gt;, &lt;code&gt;&amp;lt;footer&amp;gt;&lt;/code&gt;, &lt;code&gt;&amp;lt;search&amp;gt;&lt;/code&gt;, or &lt;code&gt;&amp;lt;aside&amp;gt;&lt;/code&gt; if that is what the element contains.&lt;/p&gt;

&lt;p&gt;Use &lt;code&gt;&amp;lt;a href=""&amp;gt;&lt;/code&gt; for links to pages and &lt;code&gt;&amp;lt;button&amp;gt;&lt;/code&gt; for actions that aren’t navigating to pages.&lt;/p&gt;

&lt;p&gt;Use &lt;code&gt;&amp;lt;h1&amp;gt;&lt;/code&gt; … &lt;code&gt;&amp;lt;h6&amp;gt;&lt;/code&gt; for headings, knowing that each level down is like marking a subsection, so an &lt;code&gt;&amp;lt;h3&amp;gt;&lt;/code&gt; is like a header under a subsection of the nearest above &lt;code&gt;&amp;lt;h2&amp;gt;&lt;/code&gt;.&lt;/p&gt;

&lt;p&gt;Use semantic and &lt;em&gt;functional&lt;/em&gt; forms that properly pair labels with inputs, like this:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight html"&gt;&lt;code&gt;&lt;span class="nt"&gt;&amp;lt;form&lt;/span&gt; &lt;span class="na"&gt;action=&lt;/span&gt;&lt;span class="s"&gt;"/login"&lt;/span&gt; &lt;span class="na"&gt;method=&lt;/span&gt;&lt;span class="s"&gt;"post"&lt;/span&gt;&lt;span class="nt"&gt;&amp;gt;&lt;/span&gt;
  &lt;span class="nt"&gt;&amp;lt;label&amp;gt;&lt;/span&gt;
    Email
    &lt;span class="nt"&gt;&amp;lt;input&lt;/span&gt; &lt;span class="na"&gt;type=&lt;/span&gt;&lt;span class="s"&gt;"email"&lt;/span&gt; &lt;span class="na"&gt;name=&lt;/span&gt;&lt;span class="s"&gt;"email"&lt;/span&gt; &lt;span class="na"&gt;required&lt;/span&gt;&lt;span class="nt"&gt;&amp;gt;&lt;/span&gt;
  &lt;span class="nt"&gt;&amp;lt;/label&amp;gt;&lt;/span&gt;
  &lt;span class="nt"&gt;&amp;lt;label&amp;gt;&lt;/span&gt;
    Password
    &lt;span class="nt"&gt;&amp;lt;input&lt;/span&gt; &lt;span class="na"&gt;type=&lt;/span&gt;&lt;span class="s"&gt;"password"&lt;/span&gt; &lt;span class="na"&gt;name=&lt;/span&gt;&lt;span class="s"&gt;"password"&lt;/span&gt; &lt;span class="na"&gt;required&lt;/span&gt;&lt;span class="nt"&gt;&amp;gt;&lt;/span&gt;
  &lt;span class="nt"&gt;&amp;lt;/label&amp;gt;&lt;/span&gt;
  &lt;span class="nt"&gt;&amp;lt;button&amp;gt;&lt;/span&gt;Log In&lt;span class="nt"&gt;&amp;lt;/button&amp;gt;&lt;/span&gt;
&lt;span class="nt"&gt;&amp;lt;/form&amp;gt;&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Use the &lt;code&gt;id&lt;/code&gt; attribute on elements in order to more easily select it in JavaScript, for accessibility associations, or to allow links to jump down to that element, and generally not for styling. Use the &lt;code&gt;class&lt;/code&gt; attribute for CSS to select and style things. Use &lt;code&gt;data-*&lt;/code&gt; attributes for arbitrary information from your own app you need to access via JavaScript later or select in CSS against, rather than making up your own attributes.&lt;/p&gt;

&lt;p&gt;There is actually quite a lot to know about HTML, but this will bring you far. Do not push HTML away as some kind of toy language. It is absolutely fundamental to to the web and powerful in it’s own right. &lt;em&gt;Every&lt;/em&gt; website uses and needs it.&lt;/p&gt;

&lt;h1&gt;
  
  
  Here’s a semantic HTML document
&lt;/h1&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight html"&gt;&lt;code&gt;&lt;span class="cp"&gt;&amp;lt;!DOCTYPE html&amp;gt;&lt;/span&gt;
&lt;span class="nt"&gt;&amp;lt;html&lt;/span&gt; &lt;span class="na"&gt;lang=&lt;/span&gt;&lt;span class="s"&gt;"en"&lt;/span&gt;&lt;span class="nt"&gt;&amp;gt;&lt;/span&gt;

&lt;span class="nt"&gt;&amp;lt;head&amp;gt;&lt;/span&gt;
  &lt;span class="nt"&gt;&amp;lt;meta&lt;/span&gt; &lt;span class="na"&gt;charset=&lt;/span&gt;&lt;span class="s"&gt;"UTF-8"&lt;/span&gt;&lt;span class="nt"&gt;&amp;gt;&lt;/span&gt;
  &lt;span class="nt"&gt;&amp;lt;meta&lt;/span&gt; &lt;span class="na"&gt;name=&lt;/span&gt;&lt;span class="s"&gt;"viewport"&lt;/span&gt; &lt;span class="na"&gt;content=&lt;/span&gt;&lt;span class="s"&gt;"width=device-width, initial-scale=1.0"&lt;/span&gt;&lt;span class="nt"&gt;&amp;gt;&lt;/span&gt;
  &lt;span class="nt"&gt;&amp;lt;title&amp;gt;&lt;/span&gt;Sample Semantic Page&lt;span class="nt"&gt;&amp;lt;/title&amp;gt;&lt;/span&gt;
&lt;span class="nt"&gt;&amp;lt;/head&amp;gt;&lt;/span&gt;

&lt;span class="nt"&gt;&amp;lt;body&amp;gt;&lt;/span&gt;
  &lt;span class="nt"&gt;&amp;lt;header&amp;gt;&lt;/span&gt;
    &lt;span class="nt"&gt;&amp;lt;h1&amp;gt;&lt;/span&gt;Website&lt;span class="nt"&gt;&amp;lt;/h1&amp;gt;&lt;/span&gt;
    &lt;span class="nt"&gt;&amp;lt;nav&amp;gt;&lt;/span&gt;
      &lt;span class="nt"&gt;&amp;lt;ul&amp;gt;&lt;/span&gt;
        &lt;span class="nt"&gt;&amp;lt;li&amp;gt;&amp;lt;a&lt;/span&gt; &lt;span class="na"&gt;href=&lt;/span&gt;&lt;span class="s"&gt;"/"&lt;/span&gt;&lt;span class="nt"&gt;&amp;gt;&lt;/span&gt;Home&lt;span class="nt"&gt;&amp;lt;/a&amp;gt;&amp;lt;/li&amp;gt;&lt;/span&gt;
        &lt;span class="nt"&gt;&amp;lt;li&amp;gt;&amp;lt;a&lt;/span&gt; &lt;span class="na"&gt;href=&lt;/span&gt;&lt;span class="s"&gt;"/about"&lt;/span&gt;&lt;span class="nt"&gt;&amp;gt;&lt;/span&gt;About&lt;span class="nt"&gt;&amp;lt;/a&amp;gt;&amp;lt;/li&amp;gt;&lt;/span&gt;
        &lt;span class="nt"&gt;&amp;lt;li&amp;gt;&amp;lt;a&lt;/span&gt; &lt;span class="na"&gt;href=&lt;/span&gt;&lt;span class="s"&gt;"#contact"&lt;/span&gt;&lt;span class="nt"&gt;&amp;gt;&lt;/span&gt;Contact&lt;span class="nt"&gt;&amp;lt;/a&amp;gt;&amp;lt;/li&amp;gt;&lt;/span&gt;
      &lt;span class="nt"&gt;&amp;lt;/ul&amp;gt;&lt;/span&gt;
    &lt;span class="nt"&gt;&amp;lt;/nav&amp;gt;&lt;/span&gt;
    &lt;span class="nt"&gt;&amp;lt;search&amp;gt;&lt;/span&gt;
      &lt;span class="nt"&gt;&amp;lt;form&lt;/span&gt; &lt;span class="na"&gt;action=&lt;/span&gt;&lt;span class="s"&gt;"#"&lt;/span&gt; &lt;span class="na"&gt;method=&lt;/span&gt;&lt;span class="s"&gt;"get"&lt;/span&gt;&lt;span class="nt"&gt;&amp;gt;&lt;/span&gt;
        &lt;span class="nt"&gt;&amp;lt;label&amp;gt;&lt;/span&gt;
          Search
          &lt;span class="nt"&gt;&amp;lt;input&lt;/span&gt; &lt;span class="na"&gt;type=&lt;/span&gt;&lt;span class="s"&gt;"search"&lt;/span&gt;&lt;span class="nt"&gt;&amp;gt;&lt;/span&gt;
        &lt;span class="nt"&gt;&amp;lt;/label&amp;gt;&lt;/span&gt;
      &lt;span class="nt"&gt;&amp;lt;/form&amp;gt;&lt;/span&gt;
    &lt;span class="nt"&gt;&amp;lt;/search&amp;gt;&lt;/span&gt;
  &lt;span class="nt"&gt;&amp;lt;/header&amp;gt;&lt;/span&gt;

  &lt;span class="nt"&gt;&amp;lt;main&amp;gt;&lt;/span&gt;
    &lt;span class="nt"&gt;&amp;lt;article&amp;gt;&lt;/span&gt;
      &lt;span class="nt"&gt;&amp;lt;h2&amp;gt;&lt;/span&gt;Welcome to Our Website&lt;span class="nt"&gt;&amp;lt;/h2&amp;gt;&lt;/span&gt;
      &lt;span class="nt"&gt;&amp;lt;p&amp;gt;&lt;/span&gt;This is an example of an article within a main element. Here you can include any content relevant to your main topic.&lt;span class="nt"&gt;&amp;lt;/p&amp;gt;&lt;/span&gt;
    &lt;span class="nt"&gt;&amp;lt;/article&amp;gt;&lt;/span&gt;
  &lt;span class="nt"&gt;&amp;lt;/main&amp;gt;&lt;/span&gt;

  &lt;span class="nt"&gt;&amp;lt;aside&amp;gt;&lt;/span&gt;
    &lt;span class="nt"&gt;&amp;lt;h2&amp;gt;&lt;/span&gt;News&lt;span class="nt"&gt;&amp;lt;/h2&amp;gt;&lt;/span&gt;
    &lt;span class="nt"&gt;&amp;lt;p&amp;gt;&lt;/span&gt;Latest updates and news can be found here.&lt;span class="nt"&gt;&amp;lt;/p&amp;gt;&lt;/span&gt;
  &lt;span class="nt"&gt;&amp;lt;/aside&amp;gt;&lt;/span&gt;

  &lt;span class="nt"&gt;&amp;lt;footer&lt;/span&gt; &lt;span class="na"&gt;id=&lt;/span&gt;&lt;span class="s"&gt;"contact"&lt;/span&gt;&lt;span class="nt"&gt;&amp;gt;&lt;/span&gt;
    &lt;span class="nt"&gt;&amp;lt;p&amp;gt;&lt;/span&gt;Contact us at &lt;span class="nt"&gt;&amp;lt;a&lt;/span&gt; &lt;span class="na"&gt;href=&lt;/span&gt;&lt;span class="s"&gt;"mailto:info@example.com"&lt;/span&gt;&lt;span class="nt"&gt;&amp;gt;&lt;/span&gt;info@example.com&lt;span class="nt"&gt;&amp;lt;/a&amp;gt;&lt;/span&gt;.&lt;span class="nt"&gt;&amp;lt;/p&amp;gt;&lt;/span&gt;
    &lt;span class="nt"&gt;&amp;lt;form&lt;/span&gt; &lt;span class="na"&gt;action=&lt;/span&gt;&lt;span class="s"&gt;"#"&lt;/span&gt; &lt;span class="na"&gt;method=&lt;/span&gt;&lt;span class="s"&gt;"post"&lt;/span&gt;&lt;span class="nt"&gt;&amp;gt;&lt;/span&gt;
      &lt;span class="nt"&gt;&amp;lt;label&lt;/span&gt; &lt;span class="na"&gt;for=&lt;/span&gt;&lt;span class="s"&gt;"name"&lt;/span&gt;&lt;span class="nt"&gt;&amp;gt;&lt;/span&gt;Name:&lt;span class="nt"&gt;&amp;lt;/label&amp;gt;&lt;/span&gt;
      &lt;span class="nt"&gt;&amp;lt;input&lt;/span&gt; &lt;span class="na"&gt;type=&lt;/span&gt;&lt;span class="s"&gt;"text"&lt;/span&gt; &lt;span class="na"&gt;id=&lt;/span&gt;&lt;span class="s"&gt;"name"&lt;/span&gt; &lt;span class="na"&gt;name=&lt;/span&gt;&lt;span class="s"&gt;"name"&lt;/span&gt; &lt;span class="na"&gt;required&lt;/span&gt;&lt;span class="nt"&gt;&amp;gt;&lt;/span&gt;

      &lt;span class="nt"&gt;&amp;lt;label&lt;/span&gt; &lt;span class="na"&gt;for=&lt;/span&gt;&lt;span class="s"&gt;"email"&lt;/span&gt;&lt;span class="nt"&gt;&amp;gt;&lt;/span&gt;Email:&lt;span class="nt"&gt;&amp;lt;/label&amp;gt;&lt;/span&gt;
      &lt;span class="nt"&gt;&amp;lt;input&lt;/span&gt; &lt;span class="na"&gt;type=&lt;/span&gt;&lt;span class="s"&gt;"email"&lt;/span&gt; &lt;span class="na"&gt;id=&lt;/span&gt;&lt;span class="s"&gt;"email"&lt;/span&gt; &lt;span class="na"&gt;name=&lt;/span&gt;&lt;span class="s"&gt;"email"&lt;/span&gt; &lt;span class="na"&gt;required&lt;/span&gt;&lt;span class="nt"&gt;&amp;gt;&lt;/span&gt;

      &lt;span class="nt"&gt;&amp;lt;label&lt;/span&gt; &lt;span class="na"&gt;for=&lt;/span&gt;&lt;span class="s"&gt;"message"&lt;/span&gt;&lt;span class="nt"&gt;&amp;gt;&lt;/span&gt;Message:&lt;span class="nt"&gt;&amp;lt;/label&amp;gt;&lt;/span&gt;
      &lt;span class="nt"&gt;&amp;lt;textarea&lt;/span&gt; &lt;span class="na"&gt;id=&lt;/span&gt;&lt;span class="s"&gt;"message"&lt;/span&gt; &lt;span class="na"&gt;name=&lt;/span&gt;&lt;span class="s"&gt;"message"&lt;/span&gt; &lt;span class="na"&gt;required&lt;/span&gt;&lt;span class="nt"&gt;&amp;gt;&amp;lt;/textarea&amp;gt;&lt;/span&gt;

      &lt;span class="nt"&gt;&amp;lt;button&lt;/span&gt; &lt;span class="na"&gt;type=&lt;/span&gt;&lt;span class="s"&gt;"submit"&lt;/span&gt;&lt;span class="nt"&gt;&amp;gt;&lt;/span&gt;Send&lt;span class="nt"&gt;&amp;lt;/button&amp;gt;&lt;/span&gt;
    &lt;span class="nt"&gt;&amp;lt;/form&amp;gt;&lt;/span&gt;
  &lt;span class="nt"&gt;&amp;lt;/footer&amp;gt;&lt;/span&gt;

&lt;span class="nt"&gt;&amp;lt;/body&amp;gt;&lt;/span&gt;

&lt;span class="nt"&gt;&amp;lt;/html&amp;gt;&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;a href="https://frontendmasters.com/courses/web-development-v3/" rel="noopener noreferrer"&gt;Complete Intro to Web Development&lt;/a&gt; is free and covers all of this in one course.&lt;/p&gt;

&lt;h3&gt;
  
  
  The Basics of CSS
&lt;/h3&gt;

&lt;p&gt;CSS is what styles the web. Some web developers end up embracing or even focusing on CSS, and some do not. That’s OK, but you have to respect it. Like HTML, &lt;em&gt;all&lt;/em&gt; websites use it. CSS is so solid and powerful these days you can learn enough to be effective pretty quickly.&lt;/p&gt;

&lt;p&gt;Layout might be the most important single thing you can learn in CSS, and thanks to grid layout, you’ve got a great tool for it at your fingertips. As &lt;a href="https://frontendmasters.com/blog/wp-admin/post.php?post=3235&amp;amp;action=edit" rel="noopener noreferrer"&gt;Miriam Suzanne says&lt;/a&gt;, more advanced CSS features can wait, &lt;em&gt;&lt;a href="https://frontendmasters.com/courses/css-grid/?utm_source=boost&amp;amp;utm_medium=blog&amp;amp;utm_campaign=boost" rel="noopener noreferrer"&gt;learn grid now&lt;/a&gt;&lt;/em&gt;. Setting up a basic page layout is honestly quite satisfying:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight html"&gt;&lt;code&gt;&lt;span class="nt"&gt;&amp;lt;div&lt;/span&gt; &lt;span class="na"&gt;class=&lt;/span&gt;&lt;span class="s"&gt;"page"&lt;/span&gt;&lt;span class="nt"&gt;&amp;gt;&lt;/span&gt;
  &lt;span class="nt"&gt;&amp;lt;main&amp;gt;&lt;/span&gt;
  &lt;span class="nt"&gt;&amp;lt;/main&amp;gt;&lt;/span&gt;

  &lt;span class="nt"&gt;&amp;lt;aside&amp;gt;&lt;/span&gt;
  &lt;span class="nt"&gt;&amp;lt;/aside&amp;gt;&lt;/span&gt;
&lt;span class="nt"&gt;&amp;lt;/div&amp;gt;&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;





&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight css"&gt;&lt;code&gt;&lt;span class="nc"&gt;.page&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
  &lt;span class="nl"&gt;display&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="n"&gt;grid&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
  &lt;span class="py"&gt;gap&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="m"&gt;1rem&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
  &lt;span class="py"&gt;grid-template-columns&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="m"&gt;1&lt;/span&gt;&lt;span class="n"&gt;fr&lt;/span&gt; &lt;span class="m"&gt;150px&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;

  &lt;span class="err"&gt;@media&lt;/span&gt; &lt;span class="err"&gt;(width&lt;/span&gt; &lt;span class="err"&gt;&amp;lt;&lt;/span&gt; &lt;span class="err"&gt;400px)&lt;/span&gt; &lt;span class="err"&gt;{&lt;/span&gt;
    &lt;span class="py"&gt;grid-template-columns&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="m"&gt;1&lt;/span&gt;&lt;span class="n"&gt;fr&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
  &lt;span class="p"&gt;}&lt;/span&gt;
&lt;span class="err"&gt;}&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fe3e3eszhrimsk96be1mo.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fe3e3eszhrimsk96be1mo.png" alt="side by side"&gt;&lt;/a&gt;&lt;br&gt;
&lt;em&gt;Putting elements side by side is no small part of the job.&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;Setting up &lt;a href="https://developer.mozilla.org/en-US/docs/Web/CSS/Using_CSS_custom_properties" rel="noopener noreferrer"&gt;custom properties&lt;/a&gt; (variables) is also a good practice, and colors is the perfect use. Giving yourself a set of colors to pick from will help keep your design consistent and easier to work with:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight css"&gt;&lt;code&gt;&lt;span class="nt"&gt;html&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
  &lt;span class="py"&gt;--brand&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="no"&gt;red&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
  &lt;span class="py"&gt;--accent&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="no"&gt;yellow&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;

  &lt;span class="py"&gt;--gray-extra-light&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="m"&gt;#f8f9fa&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
  &lt;span class="py"&gt;--gray-light&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="m"&gt;#dee2e6&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
  &lt;span class="py"&gt;--gray&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="m"&gt;#adb5bd&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
  &lt;span class="py"&gt;--gray-dark&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="m"&gt;#495057&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
  &lt;span class="py"&gt;--gray-extra-dark&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="m"&gt;#212529&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;

&lt;span class="nc"&gt;.box&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
  &lt;span class="nl"&gt;background&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="n"&gt;var&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;--gray&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
  &lt;span class="nl"&gt;border&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="m"&gt;2px&lt;/span&gt; &lt;span class="nb"&gt;solid&lt;/span&gt; &lt;span class="n"&gt;var&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;--gray-extra-dark&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;

  &lt;span class="err"&gt;&amp;amp;.accent&lt;/span&gt; &lt;span class="err"&gt;{&lt;/span&gt;
    &lt;span class="nl"&gt;border-color&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="n"&gt;var&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;--accent&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
  &lt;span class="p"&gt;}&lt;/span&gt;

  &lt;span class="nt"&gt;h2&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
    &lt;span class="nl"&gt;color&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="n"&gt;var&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;--brand&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
  &lt;span class="p"&gt;}&lt;/span&gt;
&lt;span class="err"&gt;}&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Oliver Reichenstein once famously wrote that &lt;a href="https://ia.net/topics/the-web-is-all-about-typography-period" rel="noopener noreferrer"&gt;Web Design is 95% Typography&lt;/a&gt;. He’s not wrong. There is awful lot of words on the web trying to communicate with us, and they can be objectively well presented… or not.&lt;/p&gt;

&lt;p&gt;Even if you learn and use a framework that abstracts aways CSS into HTML like &lt;a href="https://tailwindcss.com/" rel="noopener noreferrer"&gt;Tailwind&lt;/a&gt; (which is probably a smart choice particularly if you’re job hunting — &lt;a href="https://frontendmasters.com/courses/tailwind-css/?utm_source=boost&amp;amp;utm_medium=blog&amp;amp;utm_campaign=boost" rel="noopener noreferrer"&gt;here’s a course&lt;/a&gt;), the styles are ultimately applied with CSS and so knowing it behooves you.&lt;/p&gt;

&lt;p&gt;There is a lot to know about CSS alone, but between a good foundation of layout, colors, and typography, you’ll be in good shape.&lt;/p&gt;

&lt;h3&gt;
  
  
  The Basics of JavaScript
&lt;/h3&gt;

&lt;p&gt;JavaScript is arguably the biggest and most important language in web development. It is all-powerful in the browser, dealing with interactivity, events, network requests, manipulating the DOM, and more. If you end up having a long career in web development, you’ll end up reading and writing a &lt;em&gt;lot&lt;/em&gt; of JavaScript.&lt;/p&gt;

&lt;p&gt;If you’re into web &lt;em&gt;design&lt;/em&gt;, we’d recommend still being somewhat familiar with JavaScript, and &lt;a href="https://dev.to/1marc/five-basic-things-about-javascript-that-will-help-non-javascript-focused-web-designers-7dj-temp-slug-7444388"&gt;here’s our recommendations&lt;/a&gt; on what to learn that will serve you sell.&lt;/p&gt;

&lt;p&gt;If you find yourself clicking with JavaScript, focusing on it isn’t a bad idea. We have lots of great courses on JavaScript, like a free course on &lt;a href="https://frontendmasters.com/courses/getting-started-javascript-v2/?utm_source=boost&amp;amp;utm_medium=blog&amp;amp;utm_campaign=boost" rel="noopener noreferrer"&gt;getting started with JavaScript&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;We have a fantastic learning path covering all the &lt;a href="https://frontendmasters.com/learn/beginner/?utm_source=boost&amp;amp;utm_medium=blog&amp;amp;utm_campaign=boost" rel="noopener noreferrer"&gt;essentials of web development&lt;/a&gt; or even a full path to &lt;a href="https://frontendmasters.com/learn/javascript/?utm_source=boost&amp;amp;utm_medium=blog&amp;amp;utm_campaign=boost" rel="noopener noreferrer"&gt;become a JavaScript master&lt;/a&gt; if video courses are your thing!&lt;/p&gt;

&lt;h2&gt;
  
  
  But… only fundamentals isn’t enough.
&lt;/h2&gt;

&lt;p&gt;It’s a tough job market out there. Employers are often looking for skills in a specific technology, especially in lieu of a lot of experience. If you find yourself clicking with some aspect of web design and development, you’d do well do go deep on it, as it will likely feel fulfilling to you while being easier to stick with. Plus, that helps turn you into someone &lt;a href="https://en.wikipedia.org/wiki/T-shaped_skills" rel="noopener noreferrer"&gt;T-shaped&lt;/a&gt; (deep experience in one area, wide experience with other areas) which is a common and desirable thing for web developers.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;If working with data clicks with you, lean into that.&lt;/li&gt;
&lt;li&gt;If you’re attracted to building systems, design systems are a big thing these days with companies have dedicated design system teams. &lt;/li&gt;
&lt;li&gt;If you enjoy illustration or animation, the web is a great place for that.&lt;/li&gt;
&lt;li&gt;If managing servers and processes sounds like something you’d be interested in, DevOps is a whole career path. &lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;In back-end web development land, it’s not uncommon at all to find job postings for specific languages and technologies. Companies hire for things like a “Go Developer” or a “Python Developer”.&lt;/p&gt;

&lt;p&gt;It’s a bit less common to hire for specific languages on the front-end, but it’s &lt;em&gt;very&lt;/em&gt; common for companies to use the title &lt;strong&gt;“Full-Stack Developer”&lt;/strong&gt; to describe what is likely mostly a front-end job. If you need to put &lt;strong&gt;full-stack&lt;/strong&gt; on your resume to get you past the robot resume checkers, you should go for it (to get on the road, here’s our &lt;a href="https://frontendmasters.com/learn/fullstack/?utm_source=boost&amp;amp;utm_medium=blog&amp;amp;utm_campaign=boost" rel="noopener noreferrer"&gt;full-stack learning path&lt;/a&gt;). Aspects of full-stack development that touch the back end are likely rooted in data fetching and API development, and commonly in Node JavaScript, which nicely pairs with front-end knowledge.&lt;/p&gt;

&lt;p&gt;If you’re more comfortable with saying “Front-End Developer”, in some poking around job boards and general job postings, that’s still a pretty common term used for hiring.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fi0.wp.com%2Ffrontendmasters.com%2Fblog%2Fwp-content%2Fuploads%2F2024%2F08%2Ffull-stack.jpg%3Fresize%3D1024" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fi0.wp.com%2Ffrontendmasters.com%2Fblog%2Fwp-content%2Fuploads%2F2024%2F08%2Ffull-stack.jpg%3Fresize%3D1024" alt="full stack"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  The job can be a more than half learning conventions
&lt;/h3&gt;

&lt;p&gt;Say you’re a new web developer on the job, and you’re given a ticket to have a button open an informational popup for users to read for extra information. You have a solid grasp of the fundamentals, so you make a Pull Request where you implement this &lt;a href="https://dev.to/1marc/popover-api-is-here-2gjk-temp-slug-9646167"&gt;as a popover&lt;/a&gt; (e.g. &lt;code&gt;&amp;lt;div id="extra-information" popover&amp;gt;Extra information.&amp;lt;/div&amp;gt;&lt;/code&gt;).&lt;/p&gt;

&lt;p&gt;Then the feedback arrives: &lt;em&gt;… but that’s not how it’s done &lt;strong&gt;here&lt;/strong&gt; …&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;At this job, with this current code base, you:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Use the existing &lt;code&gt;&amp;lt;Popup /&amp;gt;&lt;/code&gt; element from the Design System.&lt;/li&gt;
&lt;li&gt;Keep the content in the &lt;code&gt;Copy&lt;/code&gt; package as HTML strings, so it can be translated. &lt;/li&gt;
&lt;li&gt;Make an enum for it (e.g. &lt;code&gt;export const POPOVER_EXTRA_INFORMATION = "POPOVER_EXTRA_INFORMATION"&lt;/code&gt;) so that anywhere that refers to this component or copy has a consistent name. &lt;/li&gt;
&lt;li&gt;Has a component test ensuring it functions correctly.&lt;/li&gt;
&lt;li&gt;Use special classes from the design system in order to create variations, rather than it’s own bespoke styles.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;None of those things are really “fundamentals”, they are &lt;em&gt;conventions&lt;/em&gt; that this particular code base has grown into over time to make it manageable. You might even bristle against them at first because they seem overzealous, overcomplicated, or antiquated. But give it time. Typically conventions like this are put in place to solve previous problems, and you may not have been around to feel those problems.&lt;/p&gt;

&lt;p&gt;As the title of this section said, the actual work of a job might be more than half learning, using, and evolving these conventions.&lt;/p&gt;

&lt;h2&gt;
  
  
  Learn a framework
&lt;/h2&gt;

&lt;p&gt;Pick one!&lt;/p&gt;

&lt;p&gt;It’s actually probably better to pick &lt;em&gt;one&lt;/em&gt; (and a relatively popular one at that) and build something real/significant on it. Right now, the big front-end frameworks are:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;a href="https://nextjs.org/" rel="noopener noreferrer"&gt;Next.js&lt;/a&gt; (React) — &lt;a href="https://frontendmasters.com/learn/react/?utm_source=boost&amp;amp;utm_medium=blog&amp;amp;utm_campaign=boost" rel="noopener noreferrer"&gt;React Learning Path&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://nuxt.com/" rel="noopener noreferrer"&gt;Nuxt&lt;/a&gt; (Vue) — &lt;a href="https://frontendmasters.com/learn/vue/?utm_source=boost&amp;amp;utm_medium=blog&amp;amp;utm_campaign=boost" rel="noopener noreferrer"&gt;Vue Learning Path&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://astro.build/" rel="noopener noreferrer"&gt;Astro&lt;/a&gt; (Multi-framework capable) — &lt;a href="https://frontendmasters.com/courses/astro/?utm_source=boost&amp;amp;utm_medium=blog&amp;amp;utm_campaign=boost" rel="noopener noreferrer"&gt;Astro Course&lt;/a&gt;
&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;And if you’re intentionally &lt;em&gt;not&lt;/em&gt; wanting to use a site where you’re writing JavaScript to build it:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;a href="https://gohugo.io/" rel="noopener noreferrer"&gt;Hugo&lt;/a&gt; (Go)&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://jekyllrb.com/" rel="noopener noreferrer"&gt;Jekyll&lt;/a&gt; (Ruby)&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://www.11ty.dev/" rel="noopener noreferrer"&gt;Eleventy&lt;/a&gt; (Node)&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;If what you’re building is a pure content site a classic Content Management System (CMS) is good choice, and here are some of the big ones:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;a href="https://wordpress.org/" rel="noopener noreferrer"&gt;WordPress&lt;/a&gt; (PHP)&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://craftcms.com/" rel="noopener noreferrer"&gt;CraftCMS&lt;/a&gt; (PHP)&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://strapi.io/" rel="noopener noreferrer"&gt;Strapi&lt;/a&gt; (Node)&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;If you’re interested in more of a full stack framework that helps with back-end needs as well:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;a href="https://rubyonrails.org/" rel="noopener noreferrer"&gt;Ruby on Rails&lt;/a&gt; (Ruby)&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://www.djangoproject.com/" rel="noopener noreferrer"&gt;Django&lt;/a&gt; (Python)&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://laravel.com/" rel="noopener noreferrer"&gt;Laravel&lt;/a&gt; (PHP)&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;You may hear advice that you should learn fundamentals and understand what a framework is doing before you leap into using the framework. That’s an understandable opinion, but frameworks are so common and come up in job descriptions enough that learning them early is not going to hurt you. Many people learn and framework and the underlaying technology together and over time.&lt;/p&gt;

&lt;p&gt;The point of picking a framework is partially because they help you build websites faster by helping with a whole variety of things, including things that aren’t really a part of the web platform itself. For instance, websites are often built from &lt;strong&gt;data&lt;/strong&gt;. Sure, a blog post is ultimately served as HTML, but the content, the title, the author, the tags, etc. are not &lt;em&gt;stored&lt;/em&gt; as a big chunk of HTML, it is stored as data, and later templated into HTML. This gives you a practical level of control over what you’re building. A framework can help you retrieve that data and do the templating, and potentially even store and edit that data. That’s just to name one thing a framework can do that is awfully important.&lt;/p&gt;

&lt;p&gt;A framework will likely also help you with URLs, otherwise known as &lt;em&gt;routing.&lt;/em&gt; A framework like Next.js has “folder-based” routing, meaning you’re building the URLs your site will use based on the names of folders and files in the project itself. A framework like WordPress gives you control over the URLs through settings and the way you structure content, and much less so through files and folders. Learning these different conventions is interesting, as they are full of trade-offs. Evaluating trade-offs are a big part of leveling up as a developer.&lt;/p&gt;

&lt;p&gt;Frameworks will also likely provide a way to build a site by combining together smaller pieces. JavaScript frameworks typically call them “components”, but any framework will have some abstraction for this idea. “Partials” and “includes” are similar ideas. Building websites from smaller parts is now well-established as the way that digital products are best-built. They can evolve into a design system, a way to systematize and bring consistency to otherwise large and unwieldily products. Components can be opinionated, in a good way, about what data they require. They can encapsulate logic, styles, and behavior. They can sometimes be loaded as needed to help with performance.&lt;/p&gt;

&lt;h2&gt;
  
  
  General Tooling
&lt;/h2&gt;

&lt;p&gt;It’s useful to understand how some tools help you with the fundamental languages. For, consider these tools that we’d generically refer to as processors:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;a href="https://frontendmasters.com/learn/typescript/" rel="noopener noreferrer"&gt;TypeScript&lt;/a&gt; augments &lt;a href="https://frontendmasters.com/learn/javascript/" rel="noopener noreferrer"&gt;JavaScript&lt;/a&gt; — &lt;a href="https://frontendmasters.com/learn/typescript/?utm_source=boost&amp;amp;utm_medium=blog&amp;amp;utm_campaign=boost" rel="noopener noreferrer"&gt;TypeScript Learning Path&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://sass-lang.com/documentation/js-api/interfaces/options/" rel="noopener noreferrer"&gt;SCSS&lt;/a&gt; augments CSS&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://react.dev/learn/writing-markup-with-jsx" rel="noopener noreferrer"&gt;JSX&lt;/a&gt; augments HTML&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;You don’t always need them, but it’s good to know when laying them on is a good idea. Most code bases, particularly at a job where you have a team and are working on a long-term project, are going to use a bunch of tools.&lt;/p&gt;

&lt;p&gt;There are tools that… help run tools! If you’re using a framework, it’s common that a variety of tooling is already built in. For example Nuxt and Astro run &lt;a href="https://vitejs.dev/" rel="noopener noreferrer"&gt;Vite&lt;/a&gt; under the hood, which does all sorts of things like running a server, processing TypeScript, and bundling. Vite is great and &lt;a href="https://frontendmasters.com/courses/vite/?utm_source=boost&amp;amp;utm_medium=blog&amp;amp;utm_campaign=boost" rel="noopener noreferrer"&gt;worth learning&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;There is great benefit to tools in the formatting and linting world as well. A formatting like &lt;a href="https://prettier.io/" rel="noopener noreferrer"&gt;Prettier&lt;/a&gt; automatically formats your code in your code editor. Linting tools like &lt;a href="https://eslint.org/" rel="noopener noreferrer"&gt;ESLint&lt;/a&gt; for JavaScript and &lt;a href="https://stylelint.io/" rel="noopener noreferrer"&gt;Stylelint&lt;/a&gt; for CSS are helpful in warning you about problems in your code. These types of tools you typically make dependencies of your project, but express themselves mostly in your code editor. And let’s face it, &lt;a href="https://code.visualstudio.com/" rel="noopener noreferrer"&gt;VS Code&lt;/a&gt; is the dominant code editor right now.&lt;/p&gt;

&lt;h2&gt;
  
  
  Making a Complete Website
&lt;/h2&gt;

&lt;p&gt;There is one thing you can do that might just light a spark inside you about this whole &lt;em&gt;building websites&lt;/em&gt; thing. It’s build a website. For real though:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Buy a domain for something real&lt;/li&gt;
&lt;li&gt;Figure out web hosting&lt;/li&gt;
&lt;li&gt;Build the real website&lt;/li&gt;
&lt;li&gt;Deploy it to the world&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;For example, buy your own name as a domain name. There are so many TLDs these days, you’ll find something that works. Now you’ve got real skin in the game. This is &lt;em&gt;your&lt;/em&gt; website. It represents &lt;em&gt;you.&lt;/em&gt; You’ll probably send people here on purpose, maybe for the rest of your life. You own this bit of digital real estate, and paid money to have it.&lt;/p&gt;

&lt;p&gt;Getting a project like this done can be truly exhilarating, knowing that anyone in the world can see and interact with it. Now do it again!&lt;/p&gt;

&lt;p&gt;You could build &lt;a href="https://frontendmasters.com/courses/portfolio-website/?utm_source=boost&amp;amp;utm_medium=blog&amp;amp;utm_campaign=boost" rel="noopener noreferrer"&gt;a personal portfolio website&lt;/a&gt; for this. Hosting doesn’t have to be hard or expensive, &lt;a href="https://dev.to/1marc/exactly-how-to-deploy-local-files-to-make-a-live-website-3ho1-temp-slug-4063504"&gt;we have a simple guide&lt;/a&gt;. Leveling up, Jem’s course can walk you through &lt;a href="https://frontendmasters.com/courses/fullstack-v3/?utm_source=boost&amp;amp;utm_medium=blog&amp;amp;utm_campaign=boost" rel="noopener noreferrer"&gt;setting up your own server from scratch&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fcoab3djnogvqb5zp96of.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fcoab3djnogvqb5zp96of.png" alt="build portfolio"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  The Most Important of All: Being Someone People Want to Work With
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;Be friendly.&lt;/strong&gt; Nobody wants to work with a jerk.&lt;/p&gt;

&lt;p&gt;I understand that you can’t snap your fingers and change your personality, but you can work on it. And just in case you have an idea that this industry prefers the &lt;em&gt;lone genius&lt;/em&gt; type that you have to tiptoe around or get snapped at, please wipe that out of your mind because it isn’t true and it’s going to hurt you more than help. People hire other people. People give other people promotions. People are going to do that for people they like.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Be interesting.&lt;/strong&gt; It’s a big world out there.&lt;/p&gt;

&lt;p&gt;People want to work with people they like, respect, and think are worth getting to know. Are you super into building model ships? Did you recently become a more dedicated runner? Can you play the sitar? Are you a bit of a foodie? You don’t have to constantly prattle on about it, but you can bring all of yourself to professional situations. Intrigue people and remember that interesting solutions come from diverse places.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Be valuable.&lt;/strong&gt; People don’t forget it when you help them.&lt;/p&gt;

&lt;p&gt;Make sure you do your own work, but help other people with theirs, too. The most valuable people on any team are typically the &lt;em&gt;force multipliers&lt;/em&gt;. A 10× developer isn’t a developer that is ten times better than an average developer, it’s a developer that multiplies the whole teams output by being helpful. That’s what will make you senior someday.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Be smart.&lt;/strong&gt; You can &lt;em&gt;become&lt;/em&gt; smart, particularly in niche areas, by putting in the time and learning them deeply. That’s what Frontend Masters is here for! Being smart is part of being valuable. Your expertise makes you that way, when you use it to solve problems and help people.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Build a network.&lt;/strong&gt; You’re going to need to ask questions. A lot. Like, everyday. A network is just a way of saying you’ve got places to ask questions. Here are some Discords we like:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;a href="https://discord.gg/CUuYVH7Qa9" rel="noopener noreferrer"&gt;The Spicy Web Discord&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://discord.com/invite/buildWithLit" rel="noopener noreferrer"&gt;Lit Framework Discord&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://discord.com/invite/bUG2bvbtHy" rel="noopener noreferrer"&gt;Next.js Discord&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://discord.com/invite/astrodotbuild" rel="noopener noreferrer"&gt;Astro Discord&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://v1.tailwindcss.com/discord" rel="noopener noreferrer"&gt;Tailwind CSS Discord&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://discord.com/invite/AuEWpFkfD4" rel="noopener noreferrer"&gt;JavaScript.info Discord&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;And if you have a Frontend Masters membership, we have a Discord (look under the &lt;a href="https://frontendmasters.com/my-account/apps/" rel="noopener noreferrer"&gt;Apps&lt;/a&gt; section of your account for access)&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fkapa8u9y5kzi03hd9g0y.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fkapa8u9y5kzi03hd9g0y.png" alt="people"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  A Practical Step
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;Do something every day.&lt;/strong&gt; Couple months of that and you’ve got yourself a awfully productive habit. For those of you with a job, you’re already doing this, so good job. This is more for the people who are trying to level up and get that job. An hour a day of learning and practicing is better than seven hours in one day.&lt;/p&gt;

&lt;h2&gt;
  
  
  Know this:
&lt;/h2&gt;

&lt;p&gt;It’s always going to be &lt;a href="https://dev.to/rachsmith/comfortable-with-the-struggle-156g-temp-slug-6526183"&gt;a little uncomfortable&lt;/a&gt;. And by “always” we mean pretty much every day. You’ll sit down, have something you need to do, and not really understand how you’re going to do it. It can be frustrating and demoralizing. But computers are logical machines. Check out Julia Evan’s &lt;a href="https://store.wizardzines.com/products/poster-debugging-manifesto" rel="noopener noreferrer"&gt;Debugging Manifesto poster&lt;/a&gt;, it has a great line on it: “computers are always logical, even when it doesn’t feel that way.” There is a way through, and you’ll be able to find it. Take a walk, sleep it off, come back and try it again. This daily struggle is part of this career path.&lt;/p&gt;

&lt;h2&gt;
  
  
  Things *not* to learn
&lt;/h2&gt;

&lt;p&gt;We’d be hesitant to &lt;em&gt;stop&lt;/em&gt; you from learning anything, particularly if your natural course of working and creating anything leads you there. If you’re trying to learn something that feels a bit like pulling teeth and you’re just learning it for the sake of learning it, that might be a good time to change course, just because there are no shortage of &lt;em&gt;other&lt;/em&gt; things to learn that might click with you better.&lt;/p&gt;

&lt;h2&gt;
  
  
  Good luck!
&lt;/h2&gt;

&lt;p&gt;Feel free to comment below if you have your own thoughts on what a junior web developer these days should be focusing on, or to share your own journey.&lt;/p&gt;

&lt;p&gt;We’ve been pointing to Frontend Masters courses here a lot, but can you blame us? It’s part of the journey. Our &lt;a href="https://frontendmasters.com/learn/beginner/?utm_source=boost&amp;amp;utm_medium=blog&amp;amp;utm_campaign=boost" rel="noopener noreferrer"&gt;Beginner Learning Path&lt;/a&gt; is nearly 40 hours, so that’ll keep you busy. It’s literally designed to make you career-ready. And beyond technical skills, we also have a completely free course on &lt;a href="https://frontendmasters.com/courses/getting-a-job-v3/" rel="noopener noreferrer"&gt;Getting a Developer Job, v3&lt;/a&gt; when you feel like it’s time to hunt for a job!&lt;/p&gt;

</description>
      <category>beginners</category>
      <category>career</category>
      <category>webdev</category>
    </item>
    <item>
      <title>What Front-End Developer Skills Should You Focus on Leading Into 2020?</title>
      <dc:creator>Marc Grabanski 🏙💻</dc:creator>
      <pubDate>Mon, 19 Aug 2019 16:45:12 +0000</pubDate>
      <link>https://dev.to/frontendmasters/what-front-end-developer-skills-should-you-focus-on-learning-for-the-rest-of-2019-10c5</link>
      <guid>https://dev.to/frontendmasters/what-front-end-developer-skills-should-you-focus-on-learning-for-the-rest-of-2019-10c5</guid>
      <description>&lt;p&gt;Hey there, Marc here. CEO of &lt;a href="https://frontendmasters.com"&gt;Frontend Masters&lt;/a&gt;, and we're super happy to be &lt;a href="https://dev.to/devteam/introducing-our-may-2019-sponsors-3dcp"&gt;sponsoring&lt;/a&gt; the dev.to community! 😀&lt;/p&gt;

&lt;h2&gt;
  
  
  JavaScript and Front-End Engineering
&lt;/h2&gt;

&lt;p&gt;We are in one of the fastest changing, evolving, most lively communities on earth.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://frontendmasters.com/courses/js-recent-parts/"&gt;JavaScript has evolved&lt;/a&gt; a lot starting from ES6, to new editions happening every year. And since the creation of Node.js, many companies have adopted JavaScript running their servers and APIs. And front-end web development changes and evolves as the tools, build processes, and frameworks evolve – some of the newest things being Web Assembly and React Hooks – it's a blast to see what we can all build!&lt;/p&gt;

&lt;p&gt;...so, what skills should we be focused on learning now in 2019?&lt;/p&gt;

&lt;p&gt;I'll break this into three categories:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Begin Coding Now&lt;/li&gt;
&lt;li&gt;Becoming a Professional Front-End Developer&lt;/li&gt;
&lt;li&gt;Becoming a Well-Rounded Engineer&lt;/li&gt;
&lt;/ol&gt;

&lt;h2&gt;
  
  
  1. Begin Coding Now
&lt;/h2&gt;

&lt;p&gt;I'll keep this short, because in the early days of your journey, the most important thing is to get a positive feedback loop going – changing something and seeing the effects of your changes as soon as possible!&lt;/p&gt;

&lt;h3&gt;
  
  
  Get Started: Scratch, HTML/CSS/JS or Python
&lt;/h3&gt;

&lt;p&gt;I'm a believer that it doesn't matter what language or tool gets you started! ... whether it's &lt;a href="https://www.youtube.com/watch?v=5azaK2cBKGw"&gt;Scratch&lt;/a&gt;, &lt;a href="https://frontendmasters.com/courses/web-development-v2/"&gt;HTML, CSS &amp;amp; JavaScript&lt;/a&gt;, &lt;a href="https://frontendmasters.com/courses/python/"&gt;Python&lt;/a&gt;, or even a framework that gets you into programming...the main thing is to get that feedback loop going and start building your ideas to get excited about programming!&lt;/p&gt;

&lt;p&gt;If you know someone starting programming, we have a &lt;a href="https://frontendmasters.com/bootcamp/"&gt;completely free, self-paced bootcamp&lt;/a&gt; where you build projects like websites and games.&lt;/p&gt;

&lt;h2&gt;
  
  
  2. Becoming a Professional Front-End Developer
&lt;/h2&gt;

&lt;h3&gt;
  
  
  Mastering the Fundamentals of JavaScript
&lt;/h3&gt;

&lt;p&gt;At Frontend Masters, we believe the deep, core fundamentals of &lt;a href="https://frontendmasters.com/learn/javascript/"&gt;JavaScript&lt;/a&gt; and programming paradigms are timeless. Putting effort into learning how the core mechanics of scope and closure, the prototype system, and type system pay off over and over again throughout your career.&lt;/p&gt;

&lt;h3&gt;
  
  
  Know Your Paradigm: Functional and Object Oriented Programming
&lt;/h3&gt;

&lt;p&gt;JavaScript is a "multi-paradigm" programming language, so learning Object Oriented and Functional Programming paradigms will pay off in getting you to the next level. &lt;a href="https://frontendmasters.com/courses/object-oriented-js/"&gt;Object Oriented programming&lt;/a&gt; is a popular way to structure larger applications. Then add skills to your toolbox from &lt;a href="https://frontendmasters.com/courses/functional-javascript-v3/"&gt;functional programming&lt;/a&gt; such as using map, reduce, filter, pure functions and composition. &lt;/p&gt;

&lt;p&gt;Ultimately, you'll want to learn when to use concepts from both Functional and Object Oriented paradigms.&lt;/p&gt;

&lt;h3&gt;
  
  
  React or Vue?
&lt;/h3&gt;

&lt;p&gt;If you'd like to get going writing professional code quickly, the most straight-forward way is to dive into a framework like &lt;a href="https://frontendmasters.com/learn/react/"&gt;React&lt;/a&gt; or &lt;a href="https://frontendmasters.com/learn/vue/"&gt;Vue&lt;/a&gt;, since most jobs require knowing one of these top frameworks deeply.&lt;/p&gt;

&lt;p&gt;Many people will be upset if I didn't mention &lt;a href="https://frontendmasters.com/learn/angular/"&gt;Angular&lt;/a&gt;, but I don't think it's the best framework to start on. You'll know when you have a big enough project to leverage its "battery's included" philosophy.&lt;/p&gt;

&lt;h3&gt;
  
  
  Developer Tools
&lt;/h3&gt;

&lt;p&gt;It's also important to &lt;a href="https://frontendmasters.com/courses/chrome-dev-tools-v2/"&gt;master your development tools&lt;/a&gt; to learn to debug your code and the performance of your application.&lt;/p&gt;

&lt;h3&gt;
  
  
  TypeScript
&lt;/h3&gt;

&lt;p&gt;More and more companies are adopting &lt;a href="https://frontendmasters.com/courses/typescript-v2/"&gt;TypeScript&lt;/a&gt; for better developer experience as well.&lt;/p&gt;

&lt;h3&gt;
  
  
  CSS Grid and Flexbox
&lt;/h3&gt;

&lt;p&gt;Both &lt;a href="https://frontendmasters.com/courses/css-grids-flexbox/"&gt;CSS Grids &amp;amp; Flexbox&lt;/a&gt; are essential to layout modern, responsive websites that work on any device.&lt;/p&gt;

&lt;h3&gt;
  
  
  Webpack
&lt;/h3&gt;

&lt;p&gt;Tools like Create React App and Parcel are making getting started easier and easier, but if you want to go deeper, learn &lt;a href="https://frontendmasters.com/learn/webpack/"&gt;Webpack&lt;/a&gt; to create a custom build pipelines to ship your code in an optimized way.&lt;/p&gt;

&lt;h2&gt;
  
  
  3. Becoming More Well-Rounded
&lt;/h2&gt;

&lt;h3&gt;
  
  
  Design Skills
&lt;/h3&gt;

&lt;p&gt;Having basic &lt;a href="https://frontendmasters.com/courses/design-for-developers/"&gt;design skills&lt;/a&gt; can make you a more desirable and well-rounded engineer.&lt;/p&gt;

&lt;h3&gt;
  
  
  Node.js &amp;amp; Full-Stack Deployment.
&lt;/h3&gt;

&lt;p&gt;Learning &lt;a href="https://frontendmasters.com/learn/node-js/"&gt;Node.js&lt;/a&gt; and how to build &lt;a href="https://frontendmasters.com/courses/api-design-nodejs-v3/"&gt;APIs in Node&lt;/a&gt; can make you more of a &lt;a href="https://frontendmasters.com/learn/fullstack/"&gt;full stack engineer&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;Better yet, being able to set up and &lt;a href="https://frontendmasters.com/learn/fullstack/"&gt;deploy your own apps&lt;/a&gt; makes you even more self-sufficient.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://frontendmasters.com/courses/aws-frontend-react/"&gt;AWS&lt;/a&gt; is currently the most popular platform to deploy apps at scale, but Azure is gaining steam.&lt;/p&gt;

&lt;h3&gt;
  
  
  SVG
&lt;/h3&gt;

&lt;p&gt;One of the most flexible and underused graphics formats is &lt;a href="https://frontendmasters.com/courses/svg-essentials-animation/"&gt;SVG&lt;/a&gt;. It's incredible since it scales infinitely, from a mobile device to a billboard.&lt;/p&gt;

&lt;h3&gt;
  
  
  Testing
&lt;/h3&gt;

&lt;p&gt;Want to make sure you're not shipping broken code? Leveraging &lt;a href="https://frontendmasters.com/courses/testing-practices-principles/"&gt;testing&lt;/a&gt; with a popular test runner like Jest can go a long way in preventing broken deploys.&lt;/p&gt;

&lt;h3&gt;
  
  
  Git
&lt;/h3&gt;

&lt;p&gt;Who hasn't lost code? Well, if you're a &lt;a href="https://frontendmasters.com/courses/git-in-depth/"&gt;git master&lt;/a&gt;, you'll never lose your code and will be able to recover from when there are issues merging code. Everyone loves someone who really knows git on their team.&lt;/p&gt;

&lt;h3&gt;
  
  
  Computer Science
&lt;/h3&gt;

&lt;p&gt;Knowing how to measure time complexity and use the correct &lt;a href="https://frontendmasters.com/learn/computer-science/"&gt;algorithms and data structures&lt;/a&gt; can lead towards more efficient solutions and better engineering-thinking in general. &lt;/p&gt;

&lt;h3&gt;
  
  
  Accessibility
&lt;/h3&gt;

&lt;p&gt;Making sure to understand &lt;a href="https://frontendmasters.com/courses/web-accessibility/"&gt;accessibility&lt;/a&gt; is important to making sure your websites and web applications are open to everyone, plus you also help power users who prefer to navigate using the keyboard.&lt;/p&gt;

&lt;h2&gt;
  
  
  Newer Skills
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;&lt;a href="https://frontendmasters.com/courses/gatsby/"&gt;Gatsby&lt;/a&gt; has been gaining a lot of steam for building performant websites.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;a href="https://frontendmasters.com/courses/canvas-webgl/"&gt;Creative Coding&lt;/a&gt; is now possible in the browser with widespread Canvas and WebGL support for 3D in the browser!&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;GraphQL makes your APIs more flexible since you can grab exactly the data you need on the client, instead of breaking it up into multiple REST endpoints. We have  courses for both &lt;a href="https://frontendmasters.com/courses/server-graphql-nodejs/"&gt;Server GraphQL in Node.js&lt;/a&gt; and &lt;a href="https://frontendmasters.com/courses/client-graphql-react/"&gt;Client GraphQL in React&lt;/a&gt;.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;a href="https://frontendmasters.com/courses/service-workers/"&gt;Service Workers&lt;/a&gt;, the new API behind Progressive Web Apps, enables your websites and web apps to work offline in the plane or train!&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Which skills do you think developers should be learning in 2019 – what have I missed?&lt;/p&gt;

</description>
      <category>javascript</category>
      <category>react</category>
      <category>css</category>
      <category>webdev</category>
    </item>
  </channel>
</rss>
