Off the top of my head, a UX team needs to collectively have the following talents. No one person will know all of these, nor would I expect someone who is learning something in the Advanced category to have fully mastered everything above. Paths vary.
- Writing and rhetoric, including constructing a thesis, providing supporting evidence, and tailoring your delivery to your audience
Enough to poke at things and learn more
- Visual page construction
- HTML
- Basic CSS
- Tooling
- Browser dev tools
Enough to fix bugs, make small tweaks, and contribute to bigger features
- Visual page construction
- CSS, SCSS, incl. specificity, responsive layouts
- Browser Programming
- JS
- imperative programming
- jQuery
- DOM manipulation
- Network
- HTTP status codes
Enough to lead major feature work and fix thorny bugs
- Visual page construction
- SVG
- CSS animation
- BEM, OOCSS, or other frameworks
- Network
- URLs
- Browser Programming
- JS oddities
- Regular expressions
- OO design (read POODR)
- Asynchronous programming, Promises
- event handling, bubbling
- Network
- HTTP headers, esp. Accept, Vary, Content-Type, Encoding, Cache-Control
- Tools
- Dev tools, including Make, Bash, npm, Bower, Broccoli
- asset minification
- Spriting
- browser release cycles and support trends
- Design & Product
- Experimentation & play, because we're often the first team to code on a project and play a major role in shaping it
- Empathy for the user, because we're often closest to their experience
Enough to lead whole technical projects and optimize whole systems
- Visual page construction
- Accessibility, WAI-ARIA
- Cutting-edge specs like web components, HTTP 2.0
- Browser Programming
- Data structures and algorithms
- State machines
- Network
- Push connections: server-sent events or web sockets
- Content Delivery Networks
- DNS
- TCP, esp. slow-start (read Grigorik's HPBN)
- Design & Product
- Color theory, architecture, painting, or other visual arts
- Some ability in a second language
- UX research
- Internationalization, including why interpolation is better than concatenation and how I18n affects layout and design
- Tools
- Ruby, Python, Go, or another server-side language -- enough to work on small web apps
- SQL -- enough to write simple queries and understand what sorts of operations might be expensive
- Semantic versioning, dependency management -- useful for coordinating subsystems, especially cross-team
- Apache, nginx, Varnish, or another web server or proxy
Enough to push the state of front-end engineering forward
- Memory allocation, stack, heap, tail recursion
- Compiler theory, including parsers and lexers -- useful for asset compilation and optimization
- Lua, Go, or C -- enough to write add-ons for Apache, nginx, or another web server
- BGP, Multicast, Anycast
- Cell-tower routing
- Cell phone power management, including the RRC cycle