A JavaScript full stack curriculum

My top priority for the past half-year has been to master the JavaScript full stack. It’s a bit of a career change - my training and experience are in electrical engineering, modeling, simulation and control - but I’m inspired by the reach of web technologies. By mastering this area, I feel I can have more fun, freedom and autonomy while still being able to make a big impact.

For several months I’ve been taking notes on the journey-to-fullstack repository. As I mentioned a while back, keeping notes in this repository is good both for learning and visibility.

I thought I’d use this week’s post to spend some time thinking about the skills and topics important in this pursuit:

  • JavaScript basics: data types, syntax, algorithms and data structures, asynchronous code execution with promises and async/await, functional programming, object oriented programming, JavaScript engines, execution and performance.

  • JavaScript architecture and patterns: patterns for solving common problems and needs. For example, what are the typical/recommended ways of solving authentication, state management, data persistence, server rendering, etc. Learning how to architect an application from scratch.

  • Design: theory of design, use of color and creating color palettes, typography, UI/UX design and refactoring, etc.

  • Frontend technologies: HTML elements and attributes, Web APIs, CSS layout and positioning, animations, typography, basics of authoring and using SVG in webpages, CSS-in-JS frameworks (Emotion and Styled Components), all there is to know about React.

  • Backend technologies: Node.js, web protocols (HTTP…), linked data and semantic web, REST APIs, GraphQL, database technologies.

  • Tools and development workflows: version control with git, command line (git commands, fish shell, tmux, nnn…) code editors (VS Code, Emacs, Vim), browser developer tools, debugging, graphics and design tools (Inkscape, Figma…), testing, deployment and continuous integration (Jest, CircleCI, Webpack and Parcel, Now, Neflify…)

That’s a bunch of stuff, and just off the top of my head. If I’ve missed something big, be sure to let me know.

Never ending

Every week I discover a new thing I want to learn and master. I won’t be able to get to everything, but keeping in mind a rough picture of the area I want to master in mind can be quite helpful in choosing what learning project to go for next.