Welcome to Shaun Luttin's public notebook. It contains rough, practical notes. The guiding idea is that, despite what marketing tells us, there are no experts at anything. Sharing our half-baked ideas helps everyone. We're all just muddling thru. Find out more about our work at bigfont.ca.

MVP Poll Results - Learning, Languages, and Development

Tags: c#, f#, .NET, mvp

I've had the privilege recently of communicating with Microsoft MVPs on Yammer. I've been asking some questions about learning resources, languages, and software development. Here are some of the top results:

Q: What books / resources do you recommend for learning advanced C#?

I would like to take my skills from intermediate to expert. I have developed in this language for 5 years and am considering the following resources.

The top answers:

  1. C# in Depth by Jon Skeet.
  2. CLR via C# by Jeffrey Richter
  3. Simply reading MSDN on C#
  4. Real-World Functional Programming: With Examples in F# and C# by Tomas Petricek

Q: What business problems can F# solve that C# cannot and visa versa?

The answers:

...use the tool that you know best

I don't know that F# can solve anything that C# cannot. The benefits of each are in getting out of your way and allowing you to write less yet more readable software and/or providing better tools to allow you to deliver software. In the end, language is less important than domain knowledge, and you should use whatever tools work best for you. For me, that's F#. It stays out of my way and lets me write code that matches how I think about problem solving.

...you don't have to choose for a given project

Shaun Luttin One thing to consider, though - learning F# tends to make C# developers much better C# developers. It also integrates nicely, and solves many problems in a much simpler manner, but can be used side by side in the same solution with C#, so its not like you must "choose" between the two languages for a given project.

...quick prototyping

You might consider it for quick prototyping, build automation, testing, scripting, etc. I used it for several years as my prototyping tool. If nothing else, it helped me get out of my project and try stuff independently I could then port to C# and add in free of unnecessary project baggage. :)

...read these articles and books to learn more

I will start by reading two articles on MSDN Magazine: "An Introduction to Functional Programming for .NET Developers" (https://msdn.microsoft.com/en-us/magazine/ee336127.aspx) by Chris Marinos and "F# Fundamentals" (https://msdn.microsoft.com/en-us/magazine/ff714588.aspx) by Luke Hoban.

a web site (http://www.tryfsharp.org/) that can be used for "live studying and playing" and a book (https://www.microsoftpressstore.com/store/f-for-c-sharp-deveā€¦) that I've purchased at the Microsoft Company Store during the last MVP Global Summit.

I'm starting to learn more about design patterns (e.g. Factory...) I like to learn from books, and I thought you might be able to suggest a few. In the past, I've very much enjoyed C# in Depth...

The top answers:

  1. Head First Design Patterns
  2. Martin Fowler's Book
  3. DoFactory
  4. Design Patterns: Elements of Reusable Object-Oriented Software (Book)