TPP Topic 6: Your Knowledge Portfolio

See the first post in The Pragmatic Programmer 20th Anniversary Edition series for an introduction.

Challenge 1

Start learning a new language this week. Always programmed in the same old language? Try Clojure, Elixir, Elm, F#, Go, Haskell, Python, R, ReasonML, Ruby, Rust, Scala, Swift, TypeScript, or anything else that appeals and/or looks as if you might like it.

Not long after reading this chapter for the first time, I started learning Clojure using Daniel Higginbothams excellent book Clojure for the Brave and True. I have some past experience with functional Lisps (Scheme and Racket) and have dabbled with Haskell however Clojure caught my attention due to bringing the power of the JVM to a well designed, functional Lisp as well as its first class support for Concurrency. Feel free to take a look at my progress through Clojure for the Brave and True on GitHub!

Challenge 2

Start reading a new book (but finish this one first!). If you are doing very detailed implementation and coding, read a book on design and architecture. If you are doing high-level design, read a book on coding techniques.

Recently at work I have been part of several new projects, all of which have been complex, distributed systems which must fit in to (or at least communicate with) an existing system. In an attempt to keep complexity of these systems to a minimum, I read through A Philosophy of Software Design by John Ousterhout. A short, but excellent and well written book that addresses:

The fundamental problem in software design, which is managing complexity.

I may do a more detailed book review, but I was able to utilise much of the learning in these new systems. To highlight a few:

  • Modules should be deep
  • Define errors out of existence
  • Design it twice
    • Emphasis due to how useful this is
  • Consistency

Challenge 3

Get out and talk technology with people who aren’t involved in your current project, or who don’t work for the same company. Network in your company cafeteria, or maybe seek out fellow enthusiasts at a local meetup.

Tying in nicely with Challenge 1, I recently attended London Clojurians Clojure Dojo meetup in London. The meetup is extremely welcoming to anyone of any ability (I had done all of about two hours of Clojure) and was a great way to get stuck in and learn from others.


Feedback

Contact me at ben@steadbytes.com or via Twitter @SteadBytes for feedback, questions, etc.