Should frontend learn CS?
# FrontendThis topic has been debated for quite some time, so I’d like to briefly share my thoughts.
Back in the days when only HTML and CSS existed, and maybe jQuery at most, simply deploying a static webpage to FTP could earn you the title of an expert.
As browsers have evolved and can now do much more, the scope of front-end development has expanded significantly. Just the term “front-end” could encompass multiple branches:
- UI: Focused on user experience, this includes API state handling, data processing, user experience design, accessibility (a11y), and appropriate animation interactions.
- Multimedia: Services that emphasize audio, video, and live streaming require not only a good grasp of UI but also some understanding of the decoding and transmission behind multimedia.
- Data Flow / Front-End Engineering: Mastery of tool frameworks, along with a solid understanding of business requirements and domain knowledge.
- Data Visualization / Storytelling: This area demands familiarity with chart libraries or D3, as well as an awareness of browser limitations for displaying charts—knowing when to use Canvas, SVG, or WebGL. Additionally, some storytelling skills are necessary to avoid creating flashy charts that fail to engage users.
- Architecture: This includes front-end deployment, logging, underlying frameworks, standards, API management, and state management. This area requires experience and a solid background in computer science to support it.
- Gaming: Telling stories through games or simply entertaining, this involves game theory and differs significantly from standard development approaches.
- Conceptual Flow: Frameworks like Vue, React, and Svelte fundamentally change how developers perceive front-end development, focusing directly on concepts like components and the Virtual DOM.
A UI created by a developer with a computer science background may not necessarily be better than one made by a front-end engineer without that background. Instead of focusing solely on algorithms, it may be more beneficial to delve into a11y and UI, which can have a greater positive impact on society.
Few can specialize in all these areas; if someone mastered them all, they wouldn’t just identify as a front-end developer—they’d be considered a Software Engineer. Such individuals are rare and there’s no need for everyone to become a jack-of-all-trades.
From this perspective, emphasizing algorithms and computer science backgrounds without considering a company’s conditions and needs is just nonsense; often, it reflects a lazy hiring mindset.
To echo a well-known saying, the key is still your goals and the person you aspire to become.
Related Posts
- CSS field-sizing — Auto-Resize Form Elements with One Line of CSSMaking a textarea auto-resize used to require JavaScript to watch scrollHeight. CSS field-sizing: content replaces all of that in one line, supporting textarea, input, and select.
- Make Your Hyperlink Underlines Look Better: text-underline-offsetBy default, underlines sit very close to the text, and some designers dislike this style. Personally, I don’t think it looks very good either.
- Why Web Design Shouldn’t Chase Pixel PerfectOnly pay attention to Pixel Perfect when it really matters; otherwise, it often leads to a lose-lose situation.
- Let’s Write Colors with CSS HSL! (And a Better Way)In web development, the traditional HEX and RGB color notations are widely used, but they are not very readable or intuitive, and their capabilities are limited in wider color spaces such as P3. HSL (Hue, Saturation, Lightness) provides a more intuitive way to define colors, making it easier for developers to understand and adjust them. By describing colors through the three dimensions of hue, saturation, and lightness, HSL makes color adjustment more human-friendly. In design systems in particular, HSL can better represent lightness variations in a color palette.