Thoughts on WPF development


For the last month or so I’ve been doing some intense development using Windows Presentation Foundation (WPF).

As a C++ developer, this has been both a big and a small step. My impression so far? I like it.

Let me set a bit of reference first. I’m more of a product developer than let’s say a database/web developer or in house app person. That’s just my nature. I’m always thinking in terms of products that lots of people might use.

Along these lines, I’ve found C++ to be a terrific match for product development. It gives me the low-level features I need to get the performance needed to author competitive apps as well as the high-level features needed to make large-scale development manageable.

Some people say developing in C++ is too slow. Actually, I’ve found that over the years I’ve built up so many C++ tools that programming in C++ versus let’s say C# or whatever really isn’t that different. Maybe to do a quick and dirty app on something I don’t know very well, C# is probably quicker to get something going. But to write a commercial app, there’s always tons to do no matter which platform/language you pick.

There are some caveats to this rule, however. Sometimes you don’t want to build a tool and picking a platform that has the right tool already available, can save a lot of time. And here’s a truth: There are more and more tools being written for the UI features I want in languages other than C++. This used to not be the case, but it is increasingly becoming so. I could write everything I need in C++ or call the right sequence of primitives, but this can eat up a lot of development time. There are some C++ tools out there that mimic what I need too, however, most of these tools have a flaw for how I want to use them: They sacrifice to provide backwards compatibility–often back to Windows 98, which is something that as a Tablet developer I don’t care about. Further, the bar for the type of features required in a commercial product continues to raise and this requires more and more tools to be made. At some point, it just makes sense to buy rather than build.

Second, some of the newer technologies are being packaged around platforms other than C++. Some of this has to do with the growth of the web developers. They don’t typically deploy in C++. Some of this is due to the success of Java and similar languages, such as VB and C#. Tablet development is one example. Online samples and code snippets for C# Tablet development far outstri