This article expands on my previous essay, "When front-end means full-stack," originally featured in Stripe's Increment magazine. It builds upon themes explored in "The Great Divide" and "Ooops, I guess we’re full-stack developers now."
My front-end journey began with WordPress's style.css
. The power to transform a website with a few lines of code was (and still is!) captivating. Through HTML and CSS, I could—and can—influence user experience, encouraging purchases or social sharing.
Even before professional front-end work, I experienced the unique blend of art and logic the role offers. It's an expressive art form, yet constrained by communication and business goals.
Front-end development is a fascinating intersection:
- Art and Logic: A fusion of creative expression and technical precision.
- Business and Expression: Balancing business objectives with artistic design.
- Left and Right Brain: Engaging both analytical and creative thinking.
- Design and Nerdery: Combining aesthetic sensibilities with technical expertise.
My educational background reflects this duality—a blend of computer science and art courses.
The term "Front-End Developer" is widely understood, serving as a job title. However, roles vary greatly across companies, making job titles insufficient descriptors. Demonstrating practical skills is key.
Chris Coyier Front-End Developer
While titles may differ, the core focus remains consistent: building websites for browsers.
- Front-end = browsers
- Back-end = servers
This fundamental distinction persists despite evolving job roles.
"Browser-centric" development presents unique challenges. Browser inconsistencies remain, despite standardization efforts. A recent encounter highlighted this—a date string parsed correctly in Chrome but causing an error in Firefox. This is the reality of front-end development.
Beyond browser differences, user behavior adds another layer of complexity. Screen size, dark mode, color gamut, pixel density, bandwidth, and input methods (keyboard, mouse, touch) all impact the user experience. These considerations apply equally to desktop and mobile, and become even more pronounced with HTML emails.
This multitude of unknowns necessitates a comprehensive approach from front-end developers.
The most crucial aspect? The users. They are the reason for our work. They are the audience for our CSS artistry, the potential buyers of our widgets, the individuals whose reactions influence our work. These users, rightfully placed on a pedestal, represent a diverse landscape beyond browsers: different languages, needs, abilities, and levels of urgency. Front-end developers bridge the gap between code and user.
Front-end development places us at the forefront, connecting our creations directly with users—a position many find rewarding. And this is before even considering React.
The emphasis on user-centricity might seem self-evident; ideally, every member of a company, from CEO to intern, should prioritize the user. However, the front-end developer's role is unique. When we code a <button></button>
, we're directly placing an interactive element into the user's browser window. Adjusting a color directly impacts the user's visual experience.
This is akin to a ceramic artist shaping a coffee cup. It's applying craftsmanship to a digital experience. While back-end developers may care deeply about users, as Monica Dinculescu aptly noted, they often "outsource that responsibility."
Front-end developers are browser specialists. Mastery of HTML, CSS, and JavaScript is fundamental. This isn't outdated dogma; decades of experience confirm its importance. Even when working with preprocessors or frameworks, the browser ultimately receives HTML, CSS, and JavaScript. Debugging and browser optimization are key responsibilities.
While CSS remains my personal favorite, and HTML requires constant attention, JavaScript deserves special examination. Its evolution from a tool for simple effects to the dominant language across the web stack is remarkable. Entire websites can now be built using only JavaScript.
JavaScript's power in the browser surpasses that of HTML and CSS. It can manipulate the DOM (Document Object Model), created by parsing HTML, and the CSSOM (CSS Object Model), which applies styles.
However, this isn't entirely accurate. HTML is parsed first, a crucial aspect of website speed. A site's basic information and functionality should ideally be delivered with HTML alone.
This philosophy is known as Progressive Enhancement. While I strive for it, perfect adherence isn't always feasible. A <button></button>
can function without JavaScript, but adding AJAX submission via JavaScript enhances the user experience. Similarly, elements entirely dependent on JavaScript might not be rendered until JavaScript execution. Sometimes, practicality trumps strict adherence: “Just put the button in, Sam. Nobody is gonna die.”
JavaScript's dominance makes it a prime focus for web developers, especially with its improved ergonomics and powerful frameworks. Matt Mullenweg's 2015 advice, "Learn JavaScript Deeply," remains highly relevant. JavaScript's growth in front-end development, particularly in job requirements, is undeniable.
While website statistics might show a smaller percentage of top sites using React compared to jQuery, job postings tell a different story—a near reversal of those numbers.
The practical day-to-day tasks of a front-end developer include:
- Translating designs into code.
- Implementing responsive design across devices.
- Building reusable components and patterns.
- Applying semantic HTML.
- Ensuring accessibility.
- Optimizing website performance.
Even the first point feels like a college course in itself.
Let's apply this to a hypothetical website:
Our minds race!
- CSS Grid for layout.
- Font optimization: subsetting or full loading, and handling font-shifting.
- Creating reusable card components.
- Defining and managing color schemes with CSS variables or a preprocessor like Sass.
- Prioritizing source order for screen readers.
- Optimizing image formats (PNGs, JPGs, next-gen formats) and alt text.
- Using inline SVGs for icons.
- Deciding on a front-end framework (React, Vue, Svelte) and build system.
- Considering CMS integration (headless or otherwise).
- Planning interactivity: focus states, transitions, etc.
This illustrates the thought processes of a front-end developer. Many tasks are recurring, but the specific challenges vary with each project.
This brings us to the article's title.
While many tasks have been part of the job for years, new responsibilities are emerging, especially with modern JavaScript frameworks. The concept of components is central to these frameworks. Components allow for building reusable abstractions tailored to the project.
This component-based architecture elevates the front-end developer to a site-level architect. A page might consist of nested components (Card, Button, Icon, Grid, Header, Sidebar, etc.), each with its own logic and styling. This often involves handling URLs and routing, effectively making the front-end developer responsible for the site's overall architecture.
Components rarely contain hard-coded data; they act as templates, fetching data via JavaScript. This often involves APIs (e.g., GraphQL with Apollo Client) and managing data fetching and updates within the components themselves. This is another expanding responsibility.
Beyond API data, websites manage internal state: active tabs, modal dialogs, accordion states, error messages, pagination, scroll position, etc. Managing this state effectively is crucial. The shift from using the DOM as the source of truth to more sophisticated state management solutions (built into frameworks or via third-party libraries) is a significant change. Front-end developers are now responsible for architecting and implementing this state management.
The need for robust state management and reusable components has led to the rise of design systems. Building components systemically is a natural progression.
Returning to our design example:
New considerations emerge:
- Choosing a JavaScript framework and its implications (static vs. server-side rendering).
- Designing data fetching (GraphQL APIs).
- Selecting a CMS (headless or otherwise).
- Defining necessary components and their interactions.
- Managing client-side state.
- Implementing authentication.
- Leveraging third-party components (e.g., image loaders).
These responsibilities are added to the existing tasks of design implementation, semantics, accessibility, and performance optimization. The skillset required for front-end development is constantly expanding.
This growth is driven by the web's expansion: increased usage, broader internet access, a growing web economy, and increasingly capable browsers.
Specialization is becoming increasingly common. Some developers focus on design and HTML/CSS, while others specialize in systems or data management. While all may hold the title "Front-End Developer," their roles and responsibilities can differ significantly.
The way we discuss website development has also changed. The LAMP stack (Linux, Apache, MySQL, PHP) is entirely back-end focused. MEAN (Mongo, Express, Angular, Node) introduces front-end technologies (Angular, Node). Node.js's emergence allows JavaScript developers to work on both front-end and back-end, blurring the lines between roles. "Serverless" architectures, often using Node.js, further expand the front-end developer's reach. STAR (Design System, TypeScript, Apollo, React) represents a stack built entirely on front-end technologies.
The expanding responsibilities can be daunting. Feeling overwhelmed is common. Specialization is not only acceptable but recommended. Focus on areas of interest and build expertise.
The only constant is change. Embrace it.
¹ I am a white male, which provides significant advantages. ↩️ ² Browsers support many other languages (HTTP, SVG, PNG, etc.). Broader knowledge enhances capabilities. ↩️ ³ Ironically, many WordPress sites are not built with client-side JavaScript components. ↩️
The above is the detailed content of The Widening Responsibility for Front-End Developers. For more information, please follow other related articles on the PHP Chinese website!

If you've ever had to display an interactive animation during a live talk or a class, then you may know that it's not always easy to interact with your slides

With Astro, we can generate most of our site during our build, but have a small bit of server-side code that can handle search functionality using something like Fuse.js. In this demo, we’ll use Fuse to search through a set of personal “bookmarks” th

I wanted to implement a notification message in one of my projects, similar to what you’d see in Google Docs while a document is saving. In other words, a

Some months ago I was on Hacker News (as one does) and I ran across a (now deleted) article about not using if statements. If you’re new to this idea (like I

Since the early days of science fiction, we have fantasized about machines that talk to us. Today it is commonplace. Even so, the technology for making

I remember when Gutenberg was released into core, because I was at WordCamp US that day. A number of months have gone by now, so I imagine more and more of us

The idea behind most of web applications is to fetch data from the database and present it to the user in the best possible way. When we deal with data there

Let's do a little step-by-step of a situation where you can't quite do what seems to make sense, but you can still get it done with CSS trickery. In this


Hot AI Tools

Undresser.AI Undress
AI-powered app for creating realistic nude photos

AI Clothes Remover
Online AI tool for removing clothes from photos.

Undress AI Tool
Undress images for free

Clothoff.io
AI clothes remover

Video Face Swap
Swap faces in any video effortlessly with our completely free AI face swap tool!

Hot Article

Hot Tools

Atom editor mac version download
The most popular open source editor

SublimeText3 Linux new version
SublimeText3 Linux latest version

mPDF
mPDF is a PHP library that can generate PDF files from UTF-8 encoded HTML. The original author, Ian Back, wrote mPDF to output PDF files "on the fly" from his website and handle different languages. It is slower than original scripts like HTML2FPDF and produces larger files when using Unicode fonts, but supports CSS styles etc. and has a lot of enhancements. Supports almost all languages, including RTL (Arabic and Hebrew) and CJK (Chinese, Japanese and Korean). Supports nested block-level elements (such as P, DIV),

Zend Studio 13.0.1
Powerful PHP integrated development environment

SecLists
SecLists is the ultimate security tester's companion. It is a collection of various types of lists that are frequently used during security assessments, all in one place. SecLists helps make security testing more efficient and productive by conveniently providing all the lists a security tester might need. List types include usernames, passwords, URLs, fuzzing payloads, sensitive data patterns, web shells, and more. The tester can simply pull this repository onto a new test machine and he will have access to every type of list he needs.