- Technology
- Technique
- Tools
- Teamwork
- Programming language - you will learn many before you're done
- Libraries - learning libraries is the biggest part of web development
- Network protocols - mostly HTTP/HTTPS
- Databases - Relational (SQL), non-SQL, GraphQL
- Constantly changing
- Researching libraries - need to learn how to read difficult material for detail
- Dealing with masses of text - again: reading for detail; watching delimiters
- Architecture - arranging files, components, and subsystems to make systems better
- Object-oriented programming - encapsulating all relevant data and behaviors into objects
- Functional programming - functions as first-class data types
- Asynchronous programming - simple code to handle complicated sequences
- Test-driven design - turning failure into an asset
- Refactoring - changing the implementation without changing the inputs & outputs
- Abstraction, encapsulation, separation of concerns, and other CS concepts
- Changes less quickly
- Editor/debugger
- Command line (several varieties and dialects)
- REPL (node cli, browser console, etc.)
- npm
- Postman
- dBeaver/pgsql
- Constantly changing
(From small to big)
- Pairing - Hardest to do, most immediately useful
- Development team - Learning from and influencing your peers
- Company - Understanding how engineering works with the rest of the business
- Profession/community - It has never been a better time to learn software
- Based on human nature