In 2016 I wrote "Programming Beyond Practices" for O'Reilly.

It deliberately includes *no code samples* -- only discussions, design decisions, analysis, etc in story form.

Many of its ideas are still relevant. You can find the PDF here (free, no signup needed):

https://notes.skillstopractice.com/pbp.pdf

@skillstopractice This is brilliant! Thanks for writing and sharing it!

@simeon A decade later my focus is now on trying to teach code reading to a level of proficiency that people can hold a very clear mental model in their head of how systems work.

Two (very different) sides of the same coin, and it was fun to go deep on the opposite end back then.

@skillstopractice I’m almost finished with your book and I love it because it shows that developing software is much, much more than producing code. It’s a shining light amidst all the “genAI will replace you pesky developer” doom and gloom.

As for the other side of the coin: I feel we’ll be needing these skills a lot in the not too distant future.

@simeon If you haven't read the last chapter yet I don't want to spoil it for you but I had a spot-on prediction of the development trends a decade ago but I can tell you my reaction has been... "No! No! Not like that!"

Because what has happened, has only similarities at the surface level to what I was trying to express. And fundamental incompatibilities with what I think will make things genuinely human-centric.

(That said, I still believe we can get there)

@skillstopractice Done, read it! Now I’m curious to hear your misgivings with the trajectory we’ve taken. I can imagine it’s still too tech/efficiency-focused i.e. the time savings unlocked by genAI are going towards faster delivery instead of deeper problem understanding and/or higher quality?

@simeon Will attempt to collect my thoughts in a more complete way and send a link when I do, but the short story is I thought the only probabilistic element of that kind of workflow would have been matching natural language to corresponding APIs, and I had hoped we would have built high level enough tools in all other ways that stacked like Lego bricks all the way up to the surface.

By contrast, GenAI drags us deep down into the Turing tarpit, especially for those who don't know how to code.

@simeon As a side note, there is a tiny but complete programming language embedded in the puzzles I put in the book to hammer that point home in the most obscure way.

Proper writeup on the rest soon enough!

@skillstopractice I saw the puzzles but am yet to (try to) solve them. I was so stoked to read a book about software development without any code snippets that I eagerly skipped to the next chapter.

@simeon I am not sure anyone ever solved those!

They're very cryptic and were meant as a sort of hidden subtheme to contrast the rest of the book and my editor hated the idea but I insisted upon it.

I may eventually post solutions to those as well because they're easy once you know how it works but quite challenging to solve by hand (the last one, at least)