Books about abstractions and programming in general

Adding my two cents!

The Pragmatic Programmer was the first good book i read about programming in general that really clicked. It presents a principle, expands on it and provides examples. A few years have passed since I read it the first time, and I still get plenty out of it.

I would also like to point to the Clojure ecosystem in general. There are just so many thoughtful resources. The ClojureTV YouTube channel has a good collection. A few personal favorites:

  • Figwheel shows how tight a feedback loop you could build yourself. I’ve totally changed the process by which I develop Python as a result – I make myself a reloading script, then reload my code in-place on file changes. I can also cache results using an equivalent of defonce. Many other languages allow for a Clojure-inspired development flow, and once you know the idioms, replicating key parts may be less hard than you expect.
  • The Clojure tools.cli example program shows how you can build really tight code that handles all errors gracefully without resorting to advanced error systems or some option/failure monad. If you manage to expose the core part of your application as pure data (see the cli-options), you can build a really simple, really flexible API.
  • The tools.deps.alpha source code shows using multimethods for an extensible system. The clojure.tools.deps.alpha ns imports all the extensions. Each included extension has its own namespace, and a defmethod after some local convenience functions. Functionality can be added simply by creating new extensions.
4 Likes