views:

945

answers:

14

In some downtime at work that's coming up, I plan to sharpen and round out my development skills a bit. I've been pretty heavily into web development for the past few years, right out of college, and I've learned a lot.

I was going to focus on WinForms WPF for a bit, but I've been reconsidering it.

Given the current trend toward 'cloud' computing and the web as a host for applications, does the desktop matter any longer?

If not, what should I focus on to help build my development skills?

If so, what particular areas of WinForms WPF should I work on (i.e. where does WinForms development differ significantly from web-based)?

Edit - Okay, this is already helping! Replaced WinForms with WPF where appropriate, based on an answer.

Edit #2 - There is a similar question here that I missed.

+39  A: 

When you stop using desktop applications, you let us know.

TheTXI
Ok. Then can you give me some advice as to what aspects of desktop development I should focus on?
Jeff
@Jeff: Things that web applications are not really good at. Like uploading/downloading a large number of files concurrently, cpu-heavy client side operations, accessing the local file system easily, etc.
DrJokepu
... and anything that requires a rich UI. You aren't going to find a web-based photoshop any time soon.
Bryan Oakley
Apparently photoshop does have an online version. Granted, I haven't tried it. https://www.photoshop.com/express/landing.html
Kibbee
With technologies such as Flash and Silverlight it is more possible than ever to create very rich online applications, but still it will not be the resources and capabilities of programming desktop applications.
TheTXI
It's not quite Photoshop yet, but Phoenix is pretty amazing:http://aviary.com/tools/phoenix
Tim Lesher
Bryan: Pixlr Editor is probably the best Flash based online "photoshop" http://pixlr.com/editor/
JohnB
+3  A: 

Given that its no longer possible to be an expert in everything, (its hard enough to stay expert on a handful of things), I pretty much gave up any hope of keeping up my desktop/winforms skills once I started concentrating on asp.net and sql server development.

Except for the occasional service or batch/background processing sub-system, that has little to no user-interface, I do no desktop development anymore.

If I had to pick one horse in this race, it would be web skills over desktop development skills - the need for one is getting bigger, and the need for the other is becoming less - not to say you can't make a good living in either one, but like I said it too hard to keep up with everything these days.

EJB
A: 

Desktop development is tougher than Web Development because your code is out in the wild where a user can have any imaginable configuration and can do any imaginable thing to break your code.

When the code is on the server, you have control over how things work.

theycallmemorty
not to mention the ease of deploying a new release...
EJB
What you say is also true for web 2.0 AJAX apps, which heavily rely on JavaScript etcetera. I find that desktop development is much easier, especially with frameworks like .NET, and that web development is still a pain in the ass.
Thomas
I would say that web development is harder in this respect because you're at the mercy of a variety of browsers that may or may not interpret HTML/CSS specifications in the same way. At least if your desktop app has a problem on a particular configuration you have 100% control over fixing it.
17 of 26
Desktop dev is a lot easier. With web, you have zero control over how things work.
Stephan Eggermont
+16  A: 

I agree with @TheTXI -- the desktop is by no means irrelevant. If anything, it's hotter than ever.

That said, I would recommend you skip WinForms and go straight to WPF. It's a cleaner model that I think you'll find easier to adopt coming from ASP.NET. WinForms is very powerful, but Microsoft is slowly going away from GDI+ as its main display API, and WinForms is pretty tightly coupled to that paradigm.

Edit: The great thing about WPF is that once you understand the basics, you can leverage that against Silverlight, which uses a subset of WPF to merge the desktop and the web. Think Flash, but in C# and much much easier to program against.

Randolpho
Ok. I've replaced 'WinForms' with 'WPF', since it looks like that's where everything is moving toward.
Jeff
Without a tool like Expression Blend, doing some of the more complex things that are possible with WPF can be quite challenging.
Scott A. Lawrence
Very true. But for basic "Enterprise" applications, WPF is -- once you get used to it -- easier than WinForms, IMO.
Randolpho
+11  A: 

There is a sweet spot in the middle of thin and thick client software - Desktop apps that interact with data in the cloud.

EDIT:

Think about your favorite mail client, for example. Shared calendar apps. Task management software that syncs to a cloud database.

The network and the desktop are both mature enough now to leverage the strengths of both - user experience on the desktop, control and availability on the server.

guns
A: 

Desktop still matters for an end user. But when you are looking for a job web does and will matter more.

User
Unless the employer is primarily a desktop application production house.
TheTXI
In which case I'll take a strategic decision not to apply there.
User
+1  A: 

It really depends on what you are persuing as a career.

There's a place for everything still. Even mainframe and COBOL knowledge.

Do what you enjoy, and what you think you can get hired to do.

Frakkle
+6  A: 

Yes, the desktop matters. No, you do not want to be locked into developing for a single platform.

For many purposes, the data set we are working with does not really require a Beowulf cluster, much less a cloud, to process; so, on the one hand, a comparatively puny dual-core CPU (or even a non-comparatively puny Atom) can easily handle the tasks we throw at it.

On the other hand, for a typical user, the Internet is still a lot less reliable, still costs more for storage, and (most importantly for me, a non-US user) is still limited by the speed of light, so the responsiveness of any Internet server that is not local is less than any of my favourite well-designed desktop apps.

However, I think that for non-business-internal apps (organizations and their internal apps conform to The IT Platform, which currently means Windows for the majority), the era of single-platform code is coming to an end. Windows is already at 90% and trending lower, with advanced tecnhologies [WPF, Air, etc.] even less popular; Mac and others are trending up. Non-PC devices use (everyone with a smartphone please raise a hand) is exploding.

Therefore, what I am doing, and suggesting you do, is studying cross-platform development. GUIs (WxWidgets, GTK, QT... - at least one), how to achieve code compatibility between platforms, how to be compatible across architectures, UI design and differences between different platforms, etc.

MaxVT
+1 didn't know desktops weren't limited by the speed of light ;)Cross-Platform is a good target, I think. Might have to go ahead and build a linux box for that :)
Jeff
You probably already have a spare box lying around, and from what I've heard installing Linux did get a lot easier :)
MaxVT
A: 

Seeing as how the two are converging, it would probably help you to know both.

Sarah Mei
A: 

This current trend of thin client computing is really just another iteration of the old dumb terminal + mainframe computer setup. The only difference is that the clients have a lot more processing power this time around and as a result, the line between thin and thick clients is becoming a lot more blurry.

With that said, different applications have different requirements and I don't think desktop apps disappearing any time soon.

As Randolpho mentioned, WPF/Silverlight is a good thing to learn since you'd be gaining knowledge that applies to both web based and desktop based applications.

17 of 26
A: 

See the related question: http://stackoverflow.com/questions/52520/are-off-the-cloud-desktop-applications-dead

And my answer there.

Richard Morgan
+5  A: 

In my business we build and sell both Windows and Web apps that do roughly the same thing. Four years ago I would have told you that we'd be 80-20 in favor of web apps by now. However, in terms of the numbers shipped, we are now (in 2009) about 50-50 but with the recent momentum definitely in the direction of the web. This might be skewed a bit as we now advertise more in the Web space but, still, the number of people looking for Windows apps is higher than I would have guessed.

While I once thought that the real barrier to the acceptance of software as a service was simply a desire for a better, richer user interface (which Silverlight, Air, etc. would solve), I'm now inclined to think that there are a lot of people who simply prefer a one-time purchase and local control over a web connected subscription model. Because this preference is rooted in personal perceptions of value for the money, I don't think that technology will change anything as quickly as we technologists think it will. Thus, I'd wager that Windows apps are with us for longer than we developers will ever expect.

With all of that being said, I do think it benefits you to learn Windows development but I also agree with other recommendations that you focus on WPF. This is a very modern client-side development skill and it gives you the opportunity to move to Silverlight in the future!

Note: this question is similar to one that was asked earlier.

Mark Brittingham
A: 

Google has introduced Google Chrome OS as a bet that the desktop applications will no longer be essential.

But they are essential now and I don't expect them to be fully extinct never, but I hope they will be partially replaced by it's web versions (let's say 90%, including 3d games, text editors, IDEs, compilers, etc).

If your concern it's about concentrating your studying efforts in something that will last longer, don't worry. The current development technologies for both Desktop and Web applications will be replaced in a near future. And I'm talking about Microsoft stack, .NET has so short release cycles, and so many ground-breaking features, that at each release is as I was new to programming: I have to forget what I did in the past and learn the newest way to do it.

Jader Dias
A: 

AIR comes to mind as an example of using the desktop but not necessarily in the way you'd think. An example of this would be twhirl that ties into Twitter using AIR. There will be desktop applications around for a long long time, though some web applications are getting closer to desktop-like functionality.

JB King