Skip to content

Instantly share code, notes, and snippets.

@jamesarosen
Last active June 6, 2018 10:02
Show Gist options
  • Save jamesarosen/3f48f612f16297a3b7b0 to your computer and use it in GitHub Desktop.
Save jamesarosen/3f48f612f16297a3b7b0 to your computer and use it in GitHub Desktop.
UX Engineer Skill List

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.

Prerequisites

  • Writing and rhetoric, including constructing a thesis, providing supporting evidence, and tailoring your delivery to your audience

Intro

Enough to poke at things and learn more

  • Visual page construction
    • HTML
    • Basic CSS
  • Tooling
    • Browser dev tools

Beginner

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

Intermediate

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

Advanced

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

Elite

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
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment