183

What should every WPF developer know?

Entry Level

  • Strong .NET 2.0 Background & willing to learn!
  • Explain dependency properties?
  • What's a style?
  • What's a template?
  • Binding
  • Differences between base classes: Visual, UIElement, FrameworkElement, Control
  • Visual vs Logical tree?
  • Property Change Notification (INotifyPropertyChange and ObservableCollection)
  • ResourceDictionary - Added by a7an
  • UserControls - Added by a7an
  • difference between bubble and tunnel routing strategies - added by Carlo
  • Why did Microsoft introduce yet another markup language?
  • XAML

Mid-level

  • Routed Events & Commands
  • Converters - Added by Artur Carvalho
  • Explain WPF's 2-pass layout engine?
  • How to implement a panel?
  • Interoperability (WPF/WinForms)
  • Blend/Cider - Added by a7an
  • Animations and Storyboarding
  • ClickOnce Deployment
  • Skinning/Themeing
  • Custom Controls
  • How can worker threads update the UI?
  • DataTemplate vs HierarchicalDataTemplate
  • ItemsControl vs ItemsPresenter vs ContentControl vs ContentPresenter
  • Different types of Triggers

Senior

  • Example of attached behavior?
  • What is PRISM,CAL & CAG?
  • How can worker threads update the UI?
  • WPF 3D - Added by a7an
  • Differences between Silverlight 2 and WPF
  • MVVM/MVP - Added by a7an
  • WPF Performance tuning
  • Pixel Shaders
  • Purpose of Freezables

Any other "trick" questions to ask?

Do you expect your WPF developer to know blend?

Eamon Nerbonne
  • 47,023
  • 20
  • 101
  • 166
rudigrobler
  • 17,045
  • 12
  • 60
  • 74
  • 13
    I disagree on the "Strong .NET 2.0 Background".. Actually WPF does a lot of things different than .NET 2.0, and knowing less actually lets you master WPF faster... – Arcturus Oct 07 '08 at 14:31
  • 28
    How about some links pointing to each of these topics as well! – Binoj Antony Mar 16 '09 at 15:39
  • 16
    I think this is a pretty high bar for "entry level". I would bet that if the job position is described as "entry level", you will not get many (any) people that can meet your standard. Good things to know, certainly, but not what most people would call "entry level." – Beska Mar 16 '09 at 15:43
  • 1
    I wouldn't call "purpose of freezables" something senior - and if you're going to talk about threading in mid-level, that's where freezables belong. MVVM/MVP is also not particularly complex nor arcane. – Eamon Nerbonne Jan 29 '11 at 11:01
  • 4
    I think these lists should be split in two, one for the graphic/UI design side and one for the technical design side. The UI designer should probably know how to use expression blend but does not need to know much about the backing technical detail like the coding behind a designable user control. The programmer needs to know how to create a designable control but does not need to use expression blend (the xaml designer in VS should be sufficient until the UI designer can make it pretty). – Brian Reichle Jan 29 '11 at 11:33
  • @Arcturus: I was sure that .net 3.0, 3.5 and 4.0 are all just ADDICTION to 2.0, and don't remove anythig. The .net 2.0 is still the preliminary exam for all microsoft certification until 3.5. (I don't know, but I suppose for 4.0 also) – BertuPG Feb 09 '11 at 12:11
  • "How can worker threads update the UI?" appears both in mid-level and senior... – Maria Ines Parnisari Jun 20 '14 at 04:21
  • @Brian Every developer should be exposed to Blend. That's where WPF shines. – Scott Nimrod Dec 21 '14 at 13:37

20 Answers20

41

I'm surprised no one has mentioned basic knowledge of XAML yet. Knowing what XAML is, and the ability to do some basic editing using XAML rather than a graphical design tool. Mid-level developers should be able to knock up form / graphic prototypes using a tool like XAMLPad.

Mark Heath
  • 48,273
  • 29
  • 137
  • 194
34

Personally I would sit them down in front of a standard developer build machine and ask them to complete some task. No questions, just see what their code is like after a couple of hours (or more if the task is longer).

I have had a zero failure rate on making a hiring descision based on the results of an actual real life programming test.

The task doesn't have to be too difficult. I've used a simple message of the day application in the past with the messages being held in a database or XML file and a simple user interface. Ensure you ask them to structure it well (as the task is sufficiently small that it could all be done in one class if they felt inclinded).

Of the questions above I'd say you cannot get a good idea of whether they are really any good or not. A potential candicate could actually just read these and create canned answers that sound great. All this shows is that the candidate can talk-the-talk, but what matters in the job itself is if they can walk-the-walk.

Colin Mackay
  • 18,736
  • 7
  • 61
  • 88
  • 4
    I totally agree, make people do stuff, not just talking about it. @Colin, after your help on spelling (the self diagnostic app questions) I just had to upvote you to the 4 digits realm.... By the way, there is a type there: doen instead of done. :) – raoulsson Jul 20 '09 at 01:52
  • argh, typo, i meant, funny :) – raoulsson Jul 20 '09 at 01:53
  • I partially agree with you, but its time consume process, even oral questioner taking more time. Of course, this way leads to pick the right candidate. – Mohanavel Jan 13 '11 at 06:49
  • 1
    So, what part do you disagree with? – Colin Mackay Jan 18 '11 at 17:42
  • 1
    I also think it's unrealistic to assume "every WPF developer should know" the above questions. They're more like general talking points; not hard prerequisites. – Eamon Nerbonne Jan 29 '11 at 11:08
  • This idea is neat but I think it takes too much time. I think that most people using this method would end up testing how well someone knows how to drag a text box on a form and not more difficult concepts like multi-threading. – i8abug Feb 19 '12 at 19:21
  • I'm not sure - I'm not a WPF developer, but in ASP.NET it can be quite obvious they are a drag-and-drop kind of person without a real understanding of what is going on. In some cases I can tell before I've finished explaining everything as I walk them through the test spec' and have them open up VS and SQL Server - You can tell a lot from the way they generally interact with Windows. – Colin Mackay Feb 20 '12 at 16:00
  • -1 for real time testing. a lot of factors are in there, what if they get stressed out? so they don't know anything? – jim Mar 31 '13 at 16:42
  • Where does it say anything about "real time testing"? What am I missing? – Colin Mackay Mar 31 '13 at 22:30
23

I'd put binding and converters at entry level, since that is how you spend a lot of time in WPF.

Robert Jeppesen
  • 7,837
  • 3
  • 35
  • 50
20

Pretty good list in my opinion.
However I wouldn't ask tricky questions on interview. Interview gives enough stress itself, trick question can confuse even highly skilled person.

aku
  • 122,288
  • 32
  • 173
  • 203
  • 9
    I agree ... the point of an interview is to assess ... not to trip the fellow up. – cplotts Oct 04 '08 at 16:17
  • I disagree with this one, IMO a programmer must handle tough stuff, much worser than interviews. So a tricky question is good to see how the programmer solves a problem under stress. A simple "I don't know" goes a long way. – Artur Carvalho Oct 05 '08 at 10:51
15

Personally, I'd put 'How can worker threads update the UI' right under entry-level. Mid-level, if you really need to. If an entry-level programmer can understand the difference between the logical tree and the visual tree, they should understand how to update the UI from a background thread.

At my organization, we do a lot of WPF development without Blend. I don't particularly like Blend, so I'm a bit biased, but Blend skills should be a nice-to-have, I think.

Rob
  • 25,984
  • 32
  • 109
  • 155
9

A WPF developer should have a firm grasp of separating the XAML from the code-behind, and be able to discuss at length where that line is to be drawn.

Being able to set up a model in the language of her choice, and then using XAML to display views on that model through data binding, data templates, control templates, styles, triggers, value converters and UserControls is a fairly basic task for the mid-level programmer. (Though a small amount of leeway should be granted if asking someone to create something like a control template "from heart.")

Really, there is a lot in WPF, and if it weren't for the MSDN forums and in-depth books on the subject, it'd be quite the task to "just pick it up." For that reason, I would rate perseverance and the ability to learn from others as a top requirement for any level.

For an entry-level WPF programmer, I wouldn't expect any knowledge of WPF per se, but I would demand knowledge of object-oriented principles, separation of UI from business logic, and comfort with a similar event model. Experience laying out UI elements in a style similar to WPF (with DockPanel containers, etc.) is a plus.

Edit: Also, what Colin Mackay said.

exclsr
  • 3,329
  • 23
  • 27
8

What about GUI programming/graphics experience in general and cs knowledge? If it's for a full time jobs, it does not matter IMHO if the guy has to spend the first few months some time with learning WPF, if he (or she) has a strong background.

Nils
  • 13,319
  • 19
  • 86
  • 108
7

Entry Level

  • Property Change NOtification (INotifyPropertyChange and ObservableCollection)
  • ResourceDictionary
  • UserControls

Mid Level

  • Blend/Cider
  • animations and storyboarding
  • ClickOnce Deployment

Senior

  • WPF 3D
  • Differences between Silverlight 2 and WPF
  • MVVM/MVP
  • WPF Performance tuning
  • Pixel Shaders
Alan Le
  • 8,683
  • 7
  • 36
  • 31
7
  • What is the relationship between threads and Dispatchers?
  • What is the purpose of Freezables?
  • What is the difference between properties and Dependency Properties? Why use one or another?
Ruben Steins
  • 2,782
  • 4
  • 27
  • 48
rcabr
  • 1,298
  • 10
  • 20
5
  • Converters(simple and multi).
  • Interoperability.

I think I would prefer a dev that would know Blend. He/She could communicate easily with the designer and also do some basic designer stuff faster than just writing in xaml.

The list is interesting, maybe links to the topics would help.

Cheers

Artur Carvalho
  • 6,901
  • 10
  • 76
  • 105
4

Another really basic thing would be the difference between bubble and tunnel routing strategies.

Carlo
  • 25,602
  • 32
  • 128
  • 176
3

Entry Level

  • Knowledge in UX Design
  • Knowledge in Declarative Binding for business objects
  • Command usage

Senior

  • Resource optimization & Performance tuning
  • Modularity & Scalability
  • Asynchronize Programming Model
Guru
  • 181
  • 1
  • 6
2

Mid or maybe Senior

  • Skinning/Themeing
  • Custom Controls
cplotts
  • 13,941
  • 9
  • 55
  • 66
2

Mid or maybe Senior: WinForms and WPF InterOp.

Nidonocu
  • 12,476
  • 7
  • 42
  • 43
2
  • DataTemplate vs HierarchicalDataTemplate
  • ItemsControl vs ItemsPresenter vs ContentControl vs ContentPresenter
  • Different types of Triggers
  • How to do Animations through StoryBoards
kenwarner
  • 28,650
  • 28
  • 130
  • 173
1

I think lifecycle of WPF application - from creation to runtime should be included in the Beginner level of questions. Without knowing it, its hard to believe one is a real WPF dev.

krishna
  • 174
  • 1
  • 3
1

I'd extend the ClickOnce deployment with WPF Deployment in general, since it's good to know the limitations and peculiarities of each model (ClickOnce, XBAP, browser only). Placing it at mid-level seems fair though.

Ruben Steins
  • 2,782
  • 4
  • 27
  • 48
1

styles provide a mechanism for you to apply a theme across an application and to override that theme in those specific instances where you want to. Styles are defined like resources; in fact, they are defined within the same section of your XAML file in which resources are defined.

Ashwini
  • 1
  • 1
1

Put in data template selector : http://www.switchonthecode.com/tutorials/wpf-tutorial-how-to-use-a-datatemplateselector Great help with MVVM to swap out templates based on value.

basarat
  • 261,912
  • 58
  • 460
  • 511
1

Knowing about unit testing and the effect it has on how you use WPF is a basic skill that I would put at Entry Level. People can learn the details, but if they have not thought about the basics of software design then you have a problem.

Ian Ringrose
  • 51,220
  • 55
  • 213
  • 317