No-Nonsense Frontend Engineering Roadmap

Video Statistics and Information

Video
Captions Word Cloud
Reddit Comments
Captions
Frontend engineering: It's the creative side of  coding that brings websites and apps to life,   focusing on user experience, interface  design, and making things visually appealing. It’s a lot more than just centering divs and  creating buttons though. That’s why in this video,   I’m going to walk you through this  clear-cut guide to everything you   ACTUALLY need to learn to get  hired as a frontend engineer. Feel free to skip over sections you already know  by clicking the timestamps in the description! Also if you’re more interested  in backend engineering,   check out last week’s backend engineering roadmap! ### 1. What is Frontend Engineering? Frontend engineering builds the interface  that users interact with for any software.   Let’s use YouTube as a simple example. When  you open YouTube, the frontend engineering   work is everything you can see. The layout  of the page, the rendering of graphics,   and the animation of the subscribe button are  all things that frontend engineers design. Frontend engineering is incredibly  complex - a common misconception is that   frontend engineering is easier than backend  engineering. This is definitely NOT true,   and frontend engineering has many  interesting and complicated challenges. One challenge is responsive design. YouTube  can be run on so many different devices,   from phones to computers to TVs -  frontend engineers need to ensure   that the software is responsive  to the device it is being used on. Another challenge is state management.  When you pause a video on YouTube,   you can come back to it later and it will pick up  right where you left off. Managing one video for   one user may seem trivial - but managing multiple  videos for billions of users is very complex. Ultimately, if you’re someone who  is more visually-driven and enjoys   creating the things users interact with, then  frontend engineering is definitely for you. ### 2. HTML, CSS, JavaScript If you’ve never coded before, or have no  frontend coding experience, you’ll need to   start by learning the fundamentals. Unlike backend  engineering, where there are tons of choices,   frontend engineering has 3 specific coding  languages you need to know, which are HTML,   CSS, and JavaScript. And before anyone comments  it, yes I know that *technically* HTML and CSS   aren’t coding languages, but come on -  everyone calls them coding languages. 1. **HTML (HyperText Markup Language):** The first language is HTML. HTML forms the   structure of web pages by defining elements  such as headings, paragraphs, lists, images,   and links. Understanding HTML semantics, tags,  and document structure is fundamental for creating   accessible and well-structured content. 2. **CSS (Cascading Style Sheets):**  The second language you need to know is  CSS. CSS is used for styling and layout,   transforming HTML elements into visually  appealing components. Knowing how to work in   CSS is critical for creating responsive designs  and consistent user interfaces across devices.-  3. **JavaScript (JS):** Last, but definitely not least,   is JavaScript. JavaScript adds interactivity  and dynamic behavior to web pages. This   is where common coding concepts such as  variables, data types, functions, loops,   and more are used to create interactive user  interfaces and responsive web applications. The three languages work together to make up the  frontend. Using a house analogy makes this easy   to understand. HTML is like the structure  of the house, CSS is the interior design,   and JavaScript is like the smart home  devices that control temperature, lighting,   etc. Mastering HTML for structure, CSS for  styling, and JavaScript for interactivity   allows frontend engineers to bring designs  to life and engage users effectively. All this may feel overwhelming and like a lot  is being thrown at you all at once. Fortunately,   CourseCareers, the sponsor of this video,  offers a 100% FREE coding fundamentals   course you can take to learn the basics of  coding, and a complete frontend engineering   course that teaches you absolutely everything  you need to know about frontend engineering.   No matter your skill-level, you  can use these courses - in fact,   they had a carpenter become a full time engineer  in just 4 months by following their courses. Start   the coding fundamentals course today  fro free, and by using my link in the   description you can purchase the frontend  engineering course with a discount of $50! Now that we’ve touched on the coding fundamentals,   let’s start diving in to some of the  challenges frontend engineers solve daily. ### 3. Responsive Design and CSS Frameworks Responsive design is a common frontend  engineering task, and is the art of creating   web pages that adapt and respond gracefully  to different screen sizes and devices. What makes design responsive though? One tactic is to use percentage-based  widths and flexible grid systems to   create a structure that adapts to  various screen sizes. For example,   if we want a title to take up half the screen,  rather than hardcoding a width value like 700   pixels, we will set it to 50%, meaning it  will take up 50% of any screen it is on. Another tactic is using media queries,  which apply specific styles based on   device characteristics such as screen  width, resolution, and orientation. Man, writing all this CSS sure  sounds tedious, doesn’t it? Luckily, we have something called CSS frameworks! CSS frameworks are pre-written CSS stylesheets  that provide a collection of reusable components,   grids, and styles to streamline the development of  responsive web interfaces. Popular CSS frameworks   include Bootstrap, Foundation, and Tailwind  CSS. These frameworks offer things like: - Grid Systems: Ready-made grid systems (e.g.,  12-column grid in Bootstrap) for creating   responsive layouts with ease. - Responsive   Utilities: Classes and utilities (e.g.,  Bootstrap's responsive classes like col-sm-6   for small screens) for controlling visibility,  spacing, and responsiveness of elements.  - Component Libraries: Pre-styled components  (e.g., buttons, navigation bars, cards) that   can be customized and used to build  consistent and responsive UI elements. By incorporating responsive design principles  and leveraging CSS frameworks, frontend   developers can create visually appealing,  user-friendly, and adaptive web interfaces   that deliver a consistent experience across a  wide range of devices and screen resolutions. ### 4. JavaScript Frameworks Not to be confused with CSS frameworks, javascript  frameworks are JavaScript-based collections of   components, modules, and utilities that focus  on specific tasks or functionalities within   web development. These libraries simplify  common tasks, improve code organization,   and promote code reusability. The most  popular frontend frameworks are React,   Vue, and Angular, but there are so  many that it can be hard to keep track. Just like how CSS frameworks provide reusable UI,   JavaScript frameworks provide  reusable functionality for things. Think of the subscribe button on YouTube. While CSS frameworks may allow you to  create the design of the subscribe button,   it doesn’t actually do anything until it  is hooked up to JavaScript. In a JavaScript   framework like React for example, you could create  a SubscribeButton as a working component that you   can reuse anywhere on the website, rather than  having to recreate the functionality every time. JavaScript frameworks handle far more than  just reusable components though. They handle   complex things like routing and navigation,  state management, form validation, and more. Each JavaScript framework could  have hundreds of hours of tutorials,   so it’s hard to dive in-depth to any of  them in this video. My recommendation is   that if you’re at this stage of learning, you  should pick one of the main three frameworks,   and become very familiar with it. My personal pick  is React, because it’s the most used, which means   you will have the largest bank of online resources  if you get stuck or need questions answered. This is definitely the largest learning block  for a frontend engineer, so if you’re here,   don’t worry - learning the ever-changing  JavaScript frameworks is a lifelong journey   that all frontend engineers  constantly have to deal with. ### 5. API Integration Now that we feel confident about building  and adding functionality to software pages,   we need to allow them to interact with the  primary resource on the internet - data! Before you watch this, I recommend going  to the backend engineering roadmap from   last week and going to the 3 minute mark to  watch the API section. It’s only 1 minute   long and will provide you a LOT of context  for working with APIs on the frontend. Anyways, on the frontend, we display stuff  to users. More specifically, we display data   to users. When you click on my YouTube channel,  you see data like my subscriber count, my videos,   and more - the data is handled by the backend,  and is provided to the frontend through an API,   where frontend engineers decide how  it should be displayed to users. Let’s say you’re not subscribed yet - hit  subscribe right now. This isn’t just me   shamelessly trying to get you to subscribe -  it’s actually a way for you to see frontend   API integration in action. When you hit  subscribe, the frontend detects a user input,   and makes a call to the backend subscribe  API. This API likely includes logic that   does things like increase my subscriber  count by 1, and add Codebagel to your   list of subscribed YouTubers. Your page then  automatically updates to show this new change. Now as you saw, all these updates happened  pretty quickly. It may not look like it,   but in reality, there are probably  hundreds of functions running behind   the scene here - so how do  updates happen so quickly? ### 6. Asynchronous JavaScript Writing JavaScript asyncronously is what allows  API integration to work quickly and smoothly. JavaScript, as a language, is  what we call single-threaded,   meaning it executes one piece of code  at a time in a sequential manner. Most of your development experience up  until now is with synchronous programming,   which is where code executes sequentially and  each operation blocks this thread until it   completes. Asynchronous programming  allows JavaScript to perform tasks   concurrently without blocking other operations. ***DISCLAIMER:** Technically speaking, JavaScript  asynchronous programming isn’t exactly concurrent,   but for simplicity’s sake we’re going  to treat it as such for this video* Here’s a simple example. Let’s say we have  10 functions, each taking 1 second to run.   If we run these synchronously, the total  runtime is 10 seconds, as each has to finish   before the next one can begin. If we run these  asynchronously, the total runtime is 1 second,   because they all execute concurrently. Asynchronous JavaScript will level your frontend  coding up, and becomes especially useful when you   start working with APIs that run hundreds  or even thousands of functions at a time. ### 7. Testing & Debugging Once you’ve built a page structure, styled  it, added functionality with JavaScript,   and integrated with a backend API, you now  have a working frontend. But what happens if   you go to make changes, and everything  suddenly breaks? How do you fix this? This is where debugging comes into the  picture. Now similar to backend engineering,   you can debug by using log and print  statements, but one additional feature of   frontend engineering is that you can debug  in the browser by using developer tools. One of the major features of develop tools is the  ability to edit the DOM. This is a fundamental   frontend engineering concept I waited until  now to mention because I feel it is easier to   comprehend once you have a grasp of the frontend  engineering concepts we have already covered. The DOM, or, Document Object Model, is a  programming interface that represents the   structure and content of a web page as a  hierarchical tree of objects. It allows   JavaScript to access, manipulate, and interact  with HTML elements on the web page dynamically,   enabling dynamic content updates and  interactivity in web applications. The DOM is incredibly useful for debugging, as  it provides developers a more understandable   representation of their web applications.  Using developer tools, developers can view   the DOM and edit HTML, CSS, and JavaScript code  directly in the browser's inspector, enabling   real-time changes and experimentation with the  layout, styling, and behavior of web elements. Developer tools also allow you to monitor the  network to track network requests, responses,   headers, payloads, and performance  metrics. This helps developers   analyze API calls, asset loading times, caching  behavior, and identify any network related bugs. Getting familiar with developer tools will  allow you to debug much more effectively,   so even if it’s boring, this is a must-do. After you’ve debugged, you need to  write reusable tests for your code.   For the frontend, there are three kinds of tests. - **Unit Testing:** Unit testing focuses on  testing individual components or functions in   isolation. For YouTube, a unit test example could  be testing the functionality of a video playback   component. Jest, React Testing Library, and  Enzyme are examples of unit testing frameworks.  - **Integration Testing:** Integration testing  verifies the interaction and integration between   different components/modules within the YouTube  application, ensuring seamless functionality   across interconnected parts. An integration test  could focus on testing the interaction between   the video player component and the comments  section component in the YouTube interface.   React Testing Library, Cypress, and Selenium  are examples of integration testing frameworks.  - **End-to-End (E2E) Testing:** E2E testing  evaluates the entire flow and functionality   of the YouTube application from the user's  perspective, simulating real user interactions   and scenarios. An E2E test scenario could involve  testing the user journey of searching for a video,   playing it, interacting with related videos,  subscribing to a channel, and leaving a   comment. Cypress, Selenium WebDriver, and  Puppeteer are examples of E2E testing frameworks. Writing tests can be boring because it feels  like you’re not actually building anything,   but it’s essential for making sure  your code is maintained long-term,   and that random changes won’t  break the entire application. ### 8. TypeScript and Beyond! Truthfully, this roadmap just barely  scratches the surface of frontend engineering. Frontend engineering has so many different things   to learn that most people spend an  entire career picking up new things. So, after you’ve covered  this roadmap, what’s next? I’d definitely recommend learning TypeScript  once you’ve mastered JavaScript. TypeScript is   JavaScript, but with static typing,  which makes it a useful upgrade. After this, you have more JavaScript  frameworks and libraries to learn,   you can explore progressive web app development,  learn more about modern CSS techniques, the list   goes on and on. This is where learning gets fun  - you get to choose your own adventure! As long   as you follow this roadmap and learn the basics,  the world of frontend engineering is your oyster. Thanks so much for watching this  video! If you liked this video,   and want to see more content like  it, make sure you subscribe and hit   the notification bell! And if you’ve  decided frontend engineering isn’t   for you, check out this video on backend  engineering. See you all in the next video!
Info
Channel: Codebagel
Views: 80,740
Rating: undefined out of 5
Keywords: coding, programming, codebagel, compsci, computer science, comp sci, swe, software, engineer, engineering
Id: s2B5Qj2gplI
Channel Id: undefined
Length: 15min 8sec (908 seconds)
Published: Mon May 06 2024
Related Videos
Note
Please note that this website is currently a work in progress! Lots of interesting data and statistics to come.