Resources for self-taught developers
ideas
Books I recommend
- A Philosophy of Software Design, John Ousterhout
- The Pragmatic Programmer, David Thomas and Andrew Hunt
Stuff you should self-study
- Von Neumann architecture
- Latency numbers every programmer should know
- OSI network layers
- Application: HTTP, SSL/TLS, DNS, FTP
- Presentation
- Session
- Transport: TCP, UDP
- Network: IP
- Link: MAC
- Physical
- Math and CS theory
- Boolean algebra, set theory
- Binary numbers, bitwise operations, base-2, base-10, base-n number systems
- Church-Turing thesis
- Lossy vs. lossless compression
- A general sense of the orders of magnitude and SI units.
- Cryptography
- What is a hash? What is a hash collision?
- How are passwords stored? What is a brute force attack? What is a rainbow table attack? What is a salted hash?
- Symmetric vs. asymmetric encryption
- Operating system principles
- Bootloaders, BIOS, UEFI
- What is a kernel? What is a shell?
- What are processes and threads?
- Creating applications
- Programs vs. markup
- Interpreted vs. compiled languages
- Synchronous and asynchronous programming
- APIs as a broad concept
- HTTP and REST
- Methods, headers, Content-Type
- Securing API endpoints
- Tokens vs. API keys
- CORS, CSRF/XSRF