Should Front-End Developers Learn CS?
This debate has been going on for a long time, so I’d like to briefly jot down my thoughts here.
Way back in the days when there were only HTML and CSS—maybe with some jQuery at most—you could be considered an expert just by building static web pages and uploading them via FTP.
As browsers become capable of doing more and more, the scope of front-end development has grown increasingly broad. The term “front-end” alone can encompass several different branches:
- UI: A strong focus on user experience, encompassing API state handling, data processing, UX, accessibility (a11y), and tasteful animation interactions.
- Multimedia: Services heavily centered around audio, video, or live streaming. Besides a solid understanding of UI, this requires a grasp of the codecs, encoding/decoding, and streaming protocols behind multimedia.
- Data Flow / Front-End Engineering: Mastery of tooling and frameworks, paired with a solid understanding of business requirements and domain knowledge.
- Data Visualization / Storytelling: Beyond familiarity with chart libraries or D3, this requires knowing the browser’s rendering limits—when to use Canvas, SVG, or WebGL. On top of that, it often takes storytelling skills so you don’t end up building flashy charts that no one actually finds useful.
- Architecture: Front-end deployment, logging, underlying frameworks, coding standards, API management, state management, etc. This requires not just experience, but also a solid CS background to back it up.
- Gaming: Storytelling through games or pure entertainment. This involves game theory and differs significantly from standard development practices.
- Conceptual Pioneers: Frameworks like Vue, React, and Svelte that start from fundamental concepts (Components, Virtual DOM) and completely redefine how developers think about front-end.
A developer with a CS background might actually build a worse UI than a front-end engineer without one. Honestly, diving deeper into a11y and UI might do more good for the world than grinding more algorithms.
Very few people can master all of these areas. If someone genuinely excelled at all of them, they probably wouldn’t call themselves a front-end developer anymore—they’d have evolved into a Software Engineer. Such people are rare and hard to come by, and not everyone needs to max out every branch of the skill tree to be considered great.
From this perspective, blindly emphasizing algorithms and CS backgrounds without considering the company’s actual conditions and needs is absurd—often, it’s just hiring laziness.
At the end of the day, it all comes down to the old saying: what matters most is your goal and the kind of person you want to become.
Related Posts
- Recreating My Room with Three.js Using React Three Fiber, I brought my real room into the browser—turning physical objects into an interactive table of contents, and using spatial memory to tell the story of my life and work over the past few years.
- Things to Keep in Mind When Using Images in Frontend Development Expanding on Jake Archibald's article, this post organizes how modern responsive images should be written: why width/height are still necessary, when to use CSS aspect-ratio, how to choose between AVIF and WebP, and using picture/source/srcset for art direction on mobile devices.
- CSS field-sizing — Auto-resize Form Elements with a Single Line of CSS Previously, auto-resizing a textarea required listening to scrollHeight in JavaScript. With CSS field-sizing: content, a single line replaces it all, supporting textarea, input, and select. This article covers the pain points of older approaches and how to use field-sizing.
- Make Your Link Underlines Look Better: text-underline-offset By default, underlines sit very close to the text. Some designers dislike this look, and personally, I don't think it looks great either.