Recommendations

Websites

These are writers I read a lot who have a lot of knowledge on technology and are able to explain and analyse it well.

Joel on Software

Topics: Practice, Philosophy

Legendary programmer, CEO of Stack overflow and founder of various projects. Particularly noteworthy for coining “the law of leaky abstractions” which describes an important trade off between upfront complexity vs maintenance cost.

Enterprise Craftsmanship

Topics: Practice, Architecture, Project management, Testing

Great blog posting a lot about testing and architecture. Highlights a lot of pitfalls and anti-patterns in programming and software design.

Alvin Alexander

Topics: Software, Scala, Java

Blog by the author of the Scala Cookbook and Functional Programming Simplified. Filled with how to guides for Scala in particular of use

Books

These books have either given large amounts of specific domain knowledge (e.g Scala learning books) or have given wider technical and thinking knowledge about how to build a good codebase in any language.

Architecture/Best practice

The Pragmatic Programmer

Andrew Hunt: 1999

Very famous programming book giving a really good timeless guide to working as a programmer in an effective manner.

Refactoring: Improving the design of existing code

Martin Fowler: 1999

Title is somewhat self-explanatory. But this is an important topic in its own right that is often overlooked despite making up the majority of work in programming

Functional Programming

Functional Programming in Scala

Paul Chiusano, Rúnar Bjarnason: 2014

This is the pre-eminent book on Functional Programming for scala. It is also a really good book on FP generally and even if you never work in a FP only shop it will improve your skills generally.

Real world Haskell

Bryan O’Sullivan, Don Stewart, and John Goerzen 2008

Haskell is a bit of a cult thing. But Learning it will make you a better programmer. There are features currently implemented in cutting edge languages like Rust that have been present in Haskell for 15 odd years now. There is a bit of a stereotype of Haskell writing being very theoretical and dismissive of real world applications. This book filled in that gap for me.

Functional Programming Simplified

Alvin Alexander 2017

Functional Programming in Scala is quite a deep dive into functional programming. This book on the other hand acts as a much broader primer to the fundamental concepts and relates them back to more conventional programming (e.g breaking down a Monad or a Higher Kinded Type)

Scala

Scala Cookbook

Alvin Alexander 2013

Great book of focused guides on achieving specific things in Scala

Akka Cookbook

Héctor Veiga Ortiz, Piyush Mishra 2017

Overview into the Akka framework, which at this point is an integrated part of Scala. Actor based models and concurrent programming are incredible useful for processing large amounts of data.

Reactive Web Applications

Manuel Bernhardt 2016

Scala focused overview into reactive web applications. Which are a super interesting and powerful area of software design to do with breaking down software into streams of events that generate other events.

Videos

Dave Shuttleworth: SQL vs NoSQL: Why you’ll never dump your relations

Interesting talk from 2015 on the data platform at King Games (as it was at the time) and still relevant observations on why NoSQL solutions aren’t a magic bullet.