

Stick with Microsoft WPF (et al.) or jump ship? - stardotstar
http://www.reddit.com/r/cscareerquestions/comments/p1r3s/stick_with_microsoft_wpf_et_al_or_jump_ship/

======
bwarp
Jump ship and do it soon!

Firstly some background: I'm a solution architect in the UK who deals with
.Net 90% of the time and has done for the last 10 years i.e. since day one. It
was a bad decision to go down this route for me. I'd have been better off with
Java/J2EE. Why?

Confidence. MS has pretty much no direction with respect to their development
tools roadmap and ideals. They seem to put feelers out in every direction,
then cut a few directions off randomly based on how people react. That's bad
if you've bet your business or career on it. They only do this because they
have the cash. Examples of their current creepy tentacles which are at risk:
PHP, Silverlight, Hadoop, even Java on Azure, Entity Framework, Metro.

Complexity. Everything is utterly overcomplicated. I am referring to the W
__products. WCF covers most of the "virtually impossibly overspecced" WS-*
specifications which are pretty much never used in the real world (most
companies use hack jobs for integration TBH). WPF and WWF are simply slow to
build software with, induce horrid levels of coupling and untestability and
have an extremely high learning curve for even simple tasks. I won't even
mention Win32 if you have to go that low - it's an utter minefield.

High rate of crap employees. Seriously, I have interviewed at least 200
already employed people over the last 10 years in this sector. I've hired
about 10. That's how low the bar is for getting in. It's damn hard to get rid
of people once you've hired them in the UK as well so you have to be careful.

Churn rate. Utterly obsolete and expensive training (some of which is just
completely wrong), no reliable roadmap, new platforms every 5 minutes to tie
you into their product ecosystem and proprietary and illogical ways of doing
things. Once you're in, it's hard to get out. People don't treat you with
respect if you want to switch out of that side of the industry as they know
about the "high rate of crap employees" as mentioned above. Also .Net software
houses are usually a monoculture so it's hard to prove experience in something
else, even if half your kit is Linux.

Lack of out of box solutions or free solutions. Everything is pay pay pay or
build build build. If you want to integrate with Word documents, pay. If you
want to integrate SVN with your IDE, pay. That is pay per server, per seat,
per user, per atom if they could. If you want to wire X up with Y then you'll
have to write your own shims. With the Java/Ruby/Python ecosystems, everything
you need is out there for nothing - it just needs assembling.

Patterns and practices team. They are a joke. Utter mess. Nothing coherent,
cohesive or useful come out of them. They don't even compare to the J2EE
blueprints layed out back in 2002 which are pretty darn obsolete. Most of
their own products ignore the P&P team's advice as it's shit.

Now this may sound like bitterness or diatribe but this is how it really is.

I carefully avoid mentioning the language above which is irrelevant - it's the
ecosystem that's fucked.

------
bruce511
I wonder if this obsession with languages happens in rotor her spheres? Do
Russian novelists think about switching to Spanish? Do English authors miss
the subtletys of French?

I've noticed hat some programmers become so obsessed with not being left
behind, that they spend every year learning some new flavor of the month. Of
course MS promotes it, that's their job.

But great software takes time to do right. Programs that matter, programs that
will last will take longer than the hype-cycle for any one language. MS Office
is still written in C++, the Linux kernel is still in C, Google uses Python,
Facebook favors Php. I bet there are great Java apps, and countless other
worthwhile projects in more languages than you care to guess.

The permanent generalist flits from language to language, going with the flow,
but misses the satisfaction of building something special. Something that took
10 years to perfect, and then 10 more to make even better. They happily guess
that an iPhone app takes 200 hours (when it's more like 2000) - they cannot
imagine the sheer boredom of working on one project for 10 years. They don't
even know programs last 10 years.

Today I worked on on of my projects, which started in 1996. It is more
satisfying today than before because we're solving a complicated problem,
which makes an enormous difference to our customers. We measure our users in
thousands, not millions, but for those thousands, we make lives better.

I write with a language you've probably never heard of. We use the WIN32 API
as our main OS framework. If we abandoned the job tomorrow I'd pick up a book
and learn something else. I trained in C, and have so far skipped over Java,
and C#. When we needed web stuff I learned JavaScript et al. It's not so hard.

My advice, worry less about the language, less about whether your skills are
in the latest fashionable language or framework, and a lot more about what
significant problem you intent to solve over the next 10 years. Language and
frameworks will always be changing, but end-users don't give a toss what
language you use. They only care about the problems you solve.

~~~
bmj
I think your writer analogy is a bit flawed...it may be more of a question of
a poet trying to write creative non-fiction, or a novelist writing sonnets.
The language is the same, but the framework is different, and in some cases,
you may never grok the new framework as well as the one you know. Yes, people
do it, and do it well, but I suspect most don't.

That said, I agree with your basic premise, but you need to keep your skills
sharp. If you work with a single language and a couple of frameworks for
several years, you may lose the ability to quickly learn a new language if the
need arises, especially if it requires a change in the way you approach the
problem.

~~~
bruce511
I've been doing this 20 years, and so far (apparently) I haven't lost the
ability to learn. Many of my clients are in their 60's and are way brighter
than me. They seem to learn just fine. I'm not worried that missing some
framework, or flavor-of-the-month will inhibit my ability to adapt when
needed. It's not like you turn 40 and magically give up learning anything new.
Indeed the experience along the way allows you to see that very little is
genuinely new.

~~~
bmj
I'm not suggesting you need to learn the flavor-of-the-month, merely that you
don't become so comfortable in your current toolset that you perhaps can't
quickly learn something new. For me, it's a matter of assessing whether, in
certain instances, language/framework A offers some benefits for the given
problem over language/framework B. Too many developers just say "well, I've
got this here hammer, and that screw kinda looks like a nail."

------
redstripe
I'm puzzled when people critize MS for churning out new stuff. Are they
supposed to stick with silverlight for another 5 years even though it's not a
success?

I think complaints like this reveal what some people really want: to learn the
"one true tech", stick with it and squeeze 10 or 15 years use out of it.
That's a recipe for stagnancy be it from MS or an open source stack. People in
tech just need to get used to abandoning their hard learned skills to stay
relevant.

I realize there are real world employability fears that influence these
choices, but for people like that being a generalist is probably a better
choice.

To answer the question more directly however, WPF or any desktop stack is only
a stop gap till web apps are more capable. It's definately on a downword
trend.

~~~
drivebyacct2
I've seen almost the opposite; to me, it seems there is a fascination in the
.NET community, when presented with choices, to automatically choose the
latest Microsoft option available, simply for the sake of it being produced by
Microsoft. Almost every .NET developer I know uses (or tries to use) ASP.NET
MVC and EntityFramework, and almost all of them complain enough that I wind up
hearing about it. The problems they complain about boggle my mind, partly
because they're problems that I experienced when I last worked with that stack
and partly because they're problems that are solved in non-.NET stacks as well
as .NET stacks that aren't official Microsoft projects.

NHibernate is (again, imo) arguably as good as or better than EntityFramework,
yet (again, in my experience) no one tends to even be aware it exists.

I've seen this as a small part of the larger disappointment I have with "the"
.NET community. Despite my love for .NET/C#, I have no love for IIS,
web.config files or the broken Debug/Release configuration management in
Visual Studio (1). Since I've worked with the .NET web stack, I've gone back
to python, ruby and now golang and I missed them and the community (IRC,
mailing lists, IRC, forums [that weren't written in 1995], IRC, etc) so, so
much.

(1) (for a regular MVC project it's not awful, but for an Azure project it's
very inconsistent, hard to control, and easy to screw up which is annoying
with 45 minute deploy times, using something other than MVC or EF helps a bit
as you can do more in the configuration either in code or XML rather than
having to flex opaque VS options)

~~~
smhinsey
I've used nHibernate for ~7 years at this point and I push it whenever I can.
One of the big issues it faces is that there's no documentation equivalent to
MSDN. Even if the MSDN documentation is useless (which it frequently is, with
things like "The IsClosed property indicates if the object is closed.") it
still "looks professional."

I think you can do amazing things with the .NET platform, but it mostly
requires a certain amount of, for lack of a better term, fearlessness when it
comes to what you build your system on. Using anything that isn't blessed is
often an uphill battle where you are met with suspicion and derision.

------
runjake
Whatever Microsoft calls these various frameworks, it's still usually C#,
XAML, and the same/very similar frameworks underneath.

Silverlight, WPF, Windows Phone, Windows 8 Metro -- a programmer can
comfortably move between these with a lot of code reuse.

This has come up numerous times on HN in the past year alone. I would hope the
facts I stated above are stupidly apparent to Microsoft developers, so I'm
left wondering if this is FUD from another camp or the situational awareness
is really that poor.

------
SODaniel
I for one am a VERY happy owner of a Nokia Lumia 800 (WP 7.5) and after the
news that Nokia shipped 1.3 million Windows phones in ONE week after the
launch of the new line I doubt it's going anywhere but very well.

~~~
icebraining
_Nokia shipped 1.3 million Windows phones in ONE week_

They can ship whatever they want, but how many were _bought_?

~~~
robocat
GP does sound a little bit over-enthusiastic... do the comments for that
account look like they ever respond to comments in threads they start?

------
powertower
.NET and WPF are pretty much the way Windows applications are built these
days.

Metro just allows some other ways of also building the UI component (with
HTML5 and JS).

His fears are baseless...

~~~
teyc
From a developer's point of view there is nothing to do but just move on. From
an organisational point, Microsoft has made it very expensive for people who
wish to stay on the same stack.

The reason is MS needs to kill technologies in order for their new ones to
gain critical mass. This has been done multiple times since VFP, VB6. The
problem is no one has the money to redevelop the same app multiple times.
Sometimes, developers are just fodder in the scheme of things.

Of course people will argue that the stacks themselves are still going to be
around, but the ecosystem dies. No one produces new components for VB6
anymore. It used to be a thriving one. Another is the absence of performance
fixes for WPF (search for Scott Barnes' (ex-MS Silverlight PM) rants on WPF).
I've hit one with a Silverlight Grid which freezes with 1000 rows on MSIE due
to assistive technology kicking in. These are never going to be addressed when
a stack is put on ice.

~~~
josephcooney
There are a bunch of new things for WPF in the .NET 4.5 release, including
performance fixes.

~~~
teyc
Yeah, I saw that. I was pleasantly surprised.

------
josephcooney
Use what works for your situation. Evaluate each thing on its merits.

------
j_s
I think this is the same question many LOB devs asked when VB6 went into
retirement... Microsoft does provide other non-exact replacements/technologies
to transition into. Most people just made the switch.

------
GiraffeNecktie
Why is this posted here and why is it getting upvoted? It's just a question on
Reddit with no especially insightful answers.

~~~
reidmain
Because it is an interesting question worth talking about. Assuming the OP
found this on Reddit giving a tip-of-the-hat to where he found the question is
just good etiquette and it also provides insight from another community that
is usually quite different from Hacker News.

