28

I have some 5+ years' background in C++/Unix development. I have been trying my hand at C#/.Net/WPF based software development for some time now. I am at a stage where I can write functioning applications fluently, but am not sure how to take my skills to the next level.

So, my question(s) to you all, especially to those who are experienced in C#/.Net/WPF:

  • What are the component skills and knowledge that an expert developer on this platform should have?

  • What technology-specific books would you expect a would-be expert to have read?

  • What other deliberate steps can I take to become really good at application development using C#/.Net/WPF?

Many thanks in advance! I would be especially grateful for comprehensive answers - I'm pretty sure many other developers have similar questions.

ARV
  • 6,287
  • 11
  • 31
  • 41

8 Answers8

14

Learn how the C# language and .NET runtime work by reading CLR via C#.

Kredns
  • 36,461
  • 52
  • 152
  • 203
11

Scott Hanselman's article, "What Great .NET Developers Ought To Know", is a great resource on the subject.

KingNestor
  • 65,976
  • 51
  • 121
  • 152
11

My team has worked in C# for the past 5 years. Typically, experienced C++ programmers take a week or two to become fully functional in C#. I've even seen some do it almost instantly, after sitting with them one morning, showing them our code, and explaning the basics of the language that differ from C++. But that's not how I recommend you do it.

I recommend you do this:

Read a C# book: My pick would be Programming C# by Jesse Liberty. Important chapters are the language itself and the basics of the .NET framework libraries. The .NET Framework is huge, so you don't have to know everything in detail. You can skip through (or skim) the Windows Forms chapters. Windows Forms is so different from WPF that it won't be useful to you if you are planning on only doing WPF.

alt text
(source: amazon.com)

Read a WPF book: The best book I read so far is Windows Presentation Foundation Unleashed by Adam Nathan. WPF has a steep learning curve compared to Windows Forms, even for experienced C#/WinForms programmers. It has a lot of complex elements to understand like XAML, dependency properties, bindings, templates, animation, resources, etc. This book teaches you the basics gradually and is easy to read and understand. And it's in full color!

alt text

Read about the Model-View-ViewModel pattern: I haven't found a good book on that yet, but it's been very important for me to make my WPF applications more simple and manageable. My favorite material to learn about MVVM is this one hour presentation by Jason Dolinger. He builds a WPF application from scratch using no particular pattern, and step by step, migrates it to the MVVM pattern.

Glorfindel
  • 21,988
  • 13
  • 81
  • 109
Anthony Brien
  • 6,106
  • 7
  • 43
  • 56
4

Also have a look at this past Stackoverflow question: Questions every .NET developer should be able to answer.

Community
  • 1
  • 1
driis
  • 161,458
  • 45
  • 265
  • 341
2

For WPF specifically (and the power of WPF binding) I like M-V-VM: http://karlshifflett.wordpress.com/

Aaron Hoffman
  • 6,604
  • 8
  • 56
  • 61
2

Make sure you learn how to use and leverage Dependency Injection / Inversion of Control in your applications. Other very important pieces of software to learn to include with your development is Microsoft Enterprise Library and Windows Communication Foundation. Those 2 tools offer an amazing amount of leverage to avoid having to recreate the wheel to solve problems.

Other really good packages to become familiar with are NHibernate and Fluent NHibernate.

Windows Workflow Foundation is a very powerful piece of software however the complexity level is high this would be another great addition to your knowledge base time permitting.

Chris Marisic
  • 32,487
  • 24
  • 164
  • 258
1

I would add unit testing, TDD, and mocking frameworks to your list of things to know.

I have "The Art of Unit Testing" and found it helpful.

ihatemash
  • 1,474
  • 3
  • 21
  • 42
0

I really like WPF in Action and Programming .NET Components is essential reading for any .NET developer.

kenny
  • 21,522
  • 8
  • 49
  • 87