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.
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.
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.
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
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.
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
Alvin Alexander 2013
Great book of focused guides on achieving specific things in Scala
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.
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.