Generally speaking, front-end can be divided into six categories, depending on what’s the core problem that you are trying to solve:
- UI & UX
Working on understanding, creating and optimizing the user experience, working with things such as HTML, CSS, animation, 2d and 3d effects, accessibility, following the latest trends,…
- drawing & visualization
Concerned with high-performance drawing and interactivity, involving knowledge of capabilities and trade-offs of technologies like SVG, canvas and WebGL (WebGPU), and different libraries that exist around them (ThreeJS, Pixi, d3.js, p5.js,…).
Understanding and optimizing CRP, things like preloading and prefetching, caching and Service Workers, usage of HTTP2, enjoying staring at “Performance” and “Networking” tabs in devtools, visiting Lighthouse often, fiddling with bundlers' settings, doing dynamic imports, code splitting and tree shaking for scripts and styles files, server-side rendering, optimizing static files' encodings and compression, SEO,…
Focused on runtime performance and optimization, with knowledge of low-level concepts and inner implementation details and workings of JS and JS engines, event loop, browser threads and web workers, JIT compilation, optimization strategies via memory caching and data-oriented programming or different acceleration structures, time-slicing, event delegation; also things like Emscripten, asm.js and WebAssembly.
Working on optimizing data structures and business logic, proposing reusable, scalable solutions with good interfaces. Probably using some type-safe JS flavor (Typescript e.g.). Thinking about things like OOP and design principles, creating libraries, frameworks and components, and custom solutions. Very SOLID people.
- security & networking
Where diabetes is not so common as you’d expect based on how often they mention cookies. Trying to stop the bad guys from stealing all of users’ data, taking care of encryption, different attacks such as XSS and CSRF, knowing the difference between authorization and authentication,…
This division isn’t strict and of course, there are overlaps, but they are a good guide at understanding where does one stands, and what his or her specialization and interests are.
Here’s a small (unofficial) guide on how to recognize people from each group:
- ui/ux: they have Figma or Adobe software on their machine
- web gfx: they're the only one using sentences that have the word “GPU” in them
- loading: their eye twitches on mentions of a “megabyte”
- perf: they're using browser's canary version
- arch: they like functional programming
- security: they know how to exit vim