People can “learn to code” on so many websites, in little in-browser environments. Sites instruct on the basics of ‘for’ loops and ‘if’ statements. In advanced courses, learn algorithms and data structures.
Writing toy programs is eminently teachable. Writing useful programs is something else. And writing them well is a mysterious art.
The outcomes are: writing really useful programs, and understanding hundreds of the concepts that a professional programmer needs.
I love that it starts out with files, and defines “filesystem” and “directory” and “operating system.” People who didn’t grow up messing around in DOS need these words!
Here is a small randomly-selected sample of covered concepts: immutability, glob,
tail, extensibility with polymorphism, AST, dependencies, API, asynchronous promise execution, cryptographic hash, LSP, shell variables, LRU cache.
Software Design by Example is the book I’ll recommend to every new dev, with or without a college degree. It is nice to you. It wants you to succeed. It doesn’t cover the same starting material that every “Learn to program” book covers. It’s a bridge from “learn to program” to working programmer. Thank you Greg!