Software Engineering

Core Concepts

Software Lifecycle

Design/Spec

Implementation

Tests

Code review and CI

Security review

Accessibility review

PM review

Public and private docs

Monitoring, Logging, Telemetry, automation -> scale, recover, restart

Deployment, stations

Troubleshooting, Postmortems

Versioning, Backward compatibility

Deprecation

Technical

Computer architecture/ cpu, gpu, ram, L1, L2 caches, assembly, fetch-decode-execute, stack, registers

Assembly, C, bootloader, kernel, shell,

virtual memory, memory protection

context switching, scheduling

file system

program, code, data, stack, heap, program counter

static vars and func inputs and returns on the stack, dynamically allocated data on the heap

pointer, call by value/reference

Garbage collection

critical section, sync mechanisms, locks(mutex, semaphore), immutable vars, read/write locks, condition vars, message passing, futures/promises

data storage, memory vs file vs DB

OOP, SOLID, functional/event-driven/declarative programming

Relational DBs, SQL, NoSQL

Networking, ethernet, TCP/IP, packet switching, UDP, HTTP

HTTP vs HTTPS, public key cryptography

websocket, webhooks

API design, HTTP codes, paging, versioning, security

🎰