This is an evolving list. I add to it each day as part of my personal curriculum of study I engage in before I start work.
I’m not talking about a rockstar engineer level, I’m talking about being a standard engineer. The one who shows up and gets it done. They may not always be the fastest, but they are predictable. They may not come up with the most intellectually wonderful solutions, but they never deploy garbage. A good old, standard engineer that deploys web stuff.
I got to thinking, what would the surface area of their knowledge look like?
The list
Skills
- ability to express ideas in words
- typing - a suitable speed and 97%+ accuracy
- terminal and use of a computer beyond point and click
Version control
- git, mercurial, subversion, jujitsu
- workflows - gitflow, trunk based
Computer Science
- bits, bytes
- processors parallel and async
Language
- syntax
- standard library
- idiomatic patterns
- modules
- packaging & packages
- testing
- compiling
- debugging
JavaScript / TypeScript
Listed because it’s unavoidable as an engineer
- modules
- compiling
- npm, pnpm
- different runtimes bun
Frameworks
- web - rails, phoenix, django
- database ORMS - ecto, ActiveRecord
Encryption
- SSL
- Private public key
- GPG
- AES
- HMAC
- JWE
Networking
- HTTP
- TCP / UDP
Databases / Stores
- PostgreSQL
- MySQL
- Redis
CI / CD
- Jenkins
- Github actions
- secret management
Configuration formats
- YAML
- TOML
- config