The design approach to programming it teaches you will serve you for the rest of your career.
FROM THE HN SHELF
How to Design Programs
Matthias Felleisen, Robert Bruce Findler, Matthew Flatt, Shriram Krishnamurthi
Computing · A BOOKTypographic jacket · original cover not fetched
FROM THE SHARED SHELF · 2006–2026 SAMPLE
How to Design Programs
Matthias Felleisen, Robert Bruce Findler, Matthew Flatt, Shriram Krishnamurthi
5 readers recommend it across 2 discussions
Topics are model-inferred labels.
Keep it on your reading list
THE WORD OF MOUTH
What made it worth passing on?
Original Hacker News comments, in the readers’ own words.
The OP mentioned SICP more because it's famous, but the core of their desire is to improve as a self-taught programmer, and I've heard from even experienced developers that the design recipe and systematic techniques taught in HTDP have benefited them, and they're more directly related to the problems OP described as wanting to solve. Worst case, they find it too elementary and wasted a few weeks or months.
HtDP is a great book, but probably too elementary for the average HN reader looking to begin with SICP.
HtDP isn't really mind-blowing the same way SICP can be. It basically just tries to give you a mental framework and tools for breaking problems down into simple, composable, testable pieces - in terms of the work you're doing it's CS 101, but it's a particularly good implementation of CS 101. There's "senior" engineers at my company that I think would benefit from reading and absorbing HtDP. But, if I'm being honest, yes, an experienced developer would likely find it tedious. SICP's big mind-expanding thing is that it teaches CS 101 through the process of building, from within a computational system, an entirely new computational system - various kinds of programming languages and later even a machine and compiler. In this sense it kind of peels away a lot of the magic of how computers and programming languages work. For lots of CS students - and even professionals - who've never really thought about what makes their Python interpreter tick, that's a big discovery. It's also a real pedagogical feat.
Also recommended in this reply
HTDPv2 https://htdp.org/ - it's about learning to program rather than teaching a specific language. I thought the little projects you build along the way struck a good balance of interest, e.g. you're building a snake game by section 2 (but crucially you've already been exposed to how to think about data so you're not just dropped into the deep end with some boilerplate to fiddle with). Anyway, i could write tons of praise for this book but it's convinced me to ditch python for teaching newbies and i LOVED python for getting newbies started real quick with projects for years.