There are many lists filled with largely interchangable guides to language syntax, OOP-style code organization, and using existing libraries. These lists are sufficient to write software, but they are not sufficient to write good software. This list contains things programmers should be aware of, but are unlikely to encounter on their own.
- Why I find it hard to learn with AI: How using AI tools such as ChatGPT and GitHub Copilot can stunt the processes of learning.
- The Law of Leaky Abstractions: Explains how while abstractions greater levels of productivity, it is still necessary to understand what they are abstracting over.
- Mike Acton - Data-oriented design and C++ (CppCon 2014): Classic talk explaining how popular software development methodologies result in bad software.
- Andrew Kelley - Practical DOD: How to implement some of the insights from Mike Acton's talk.
- Files are fraught with peril: Explains how even "basic" file I/O is nearly impossible to get correct. A good lesson in how seemingly simple things in CS often turn out to be very difficult.
- Reading citations is easier than most people think: Popular "science-based" memes are often not actually backed by science: perceived skill correlates with actual skill and money buys happiness.