Surface area of being a standard engineer.

The in's and out's of a language may be the least important things to have competence in. The surface area of a professional level body of knowledge for a competent engineer is fairly wide. Here's a mind dump.

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