Part two of a two part recording with Mark Seemann on dependency rejection.
No mocking needed for unit testing, command query separation. Do you still use some DI in impure functions; partial applications, Mark is not a fan of DI containers and doesn't know of any for F#. Are partial functions functional, Haskell keeps its impure functions at the edge, "impure-pure-impure sandwich" sandwich - the origin of the word "sandwich", an example of a translator application, don't lose sight of the other tenets of programming, upcoming conferences.
His background, started with VB and C++, now programs in C# only for money; what functional programming is; isolating side effects to boundaries of the program; is functional programming only suitable for certain types of application; isolation, great for testing; all of .net is available; composing functions; interfaces, strategy pattern, dependency injection; differences in architecture when developing in F#, quoting Alan Kay; deploying and devops; roslyn and f#; the book that started it for Mark by Tomas Petricek, wrap up.
I sometimes ask people to recommend a few books that are relevant to the topic and a few that have been influential to them, Mark was kind enough to write the following about his choices.
Programming Clean Code, by Robert C. Martin. This isn’t the book that changed my approach to programming the most, but it’s the book that I recommend that all programmers should read. While examples are in Java, and thus seem to apply to OOD, I think many of the points apply equally well to FP.
Design Patterns, by Eric Gamma et al. This book changed the way I programmed. The reason I don’t list it as number one today is that it’s not interesting to Functional Programmers, but anyone doing OOD should read it.
Refactoring, by Martin Fowler et al. Another OOD-specific book, this one is a gem because of the list of code smells it contains.
Blindsight, by Peter Watts. This book changed the way I think about consciousness, cognition, and a host of other things. To say anything more would be a spoiler.
Atlas Shrugged, by Ayn Rand. This one is embarrassing, but I grew up in the 1970s and 80s Denmark, which was as leftish it could be and still be a NATO member. Being good at something was more of a burden than a blessing. When I read Atlas Shrugged in my early thirties, it was a revelation to discover that there even exists a philosophy that views being good at something as a moral superior position. There’s a lot of Randism that I don’t buy into, but this book taught me that it was OK to be proud of being good at something, and for that, I’m grateful.
The Lord of the Rings, by J.R.R. Tolkien. There’s really nothing profound about this, and it isn’t a book I think much about on a normal day. It still holds the singular record of being the only book I’ve read and enjoyed in more than one life stage (twice when I was an adolescent, and a third time around 30). All other books I enjoyed when I was young, I’ve later found basic and disappointing.
Mark also keeps a list of must read books for .Net developers.