views:

189

answers:

4

Lately, Microsoft keeps coming out with new technologies Linq, WF, WPF, etc... Seems to me that they are presented like technology inovations that completely change the way your applications are designed and coded.

Yet,they are based on the same underlying framework (2.0) If I look at Java, there are a lot of libraries that provide critical functionality (Hibernate, Spring for example), yet they are considered to be still just libraries.

So my question is, Do people think that these technologies are really changing the way we write windows code? Is it worth learning every development methodology that Microsoft is putting out with Visual Studio releases.

Or is this just hype. As libraries, they are important, however, not critical to get job done. Will they make as big of an impact and ss I learn it, it will considerably effect my future as a developer?

EDIT: The same goes for some of the language futures that are implemented. Some are changing the way we program (Generics) Others, are much less critical (Partial Classes) That makes learning Generics a critical part of learning .NET, unlike learning to use Partial Classes

+2  A: 

To me, technology innovations change the way users feel about and interact with computers. Google search and phone based applications are good examples of this that everyone experiences. Of the latest Microsoft tech stack, I think only WPF is at all innovative. It actually allows developers to create new stunning UIs which before were too expensive or impossible to build. This then changes how the users interface with our software. All the rest are just a bunch more tools(libraries) for a developer to put in his tool bag to pull out when/if he needs them. You certainly can code great applications without them.

I am actually starting to find that the continual stream of new MS development "improvements" are starting to make worse developers. Now instead of having time to focus on learning the business, creating great interfaces, talking with users, testing, and designing maintainable applications; we barely have time to keep up on buzzwords and new libraries.

Don't get me wrong. Linq is great (especially over xml), but it doesn't allow me to accomplish anything I couldn't before with ADO.net (or ADO or DAO or OLEDB before that).

DancesWithBamboo
From my observations number of improvements in software that really matter to user is much lesser than number of new technologies. For example WPF is a really cool, but what noticable bonuses it gives to the user that were impossible before WPF ? It is using principles from SW of 80s years :)
aku
for me WPF is a backward step - Windows apps looked the same, and everyone was familar with them and that drove uptake of windows. Now we're heading back to the days when every app had its own unique UI. Think of WMP's skins for an example of how overall usability can suffer.
gbjbaanb
WPF looks like the standard Windows controls by default, it's up to you whether you change that or not. Owner-drawn controls were possible before, just not as easy. The true power of WPF is imho in the declarative way you specify the UI, data binding and templates. Seeing all this work together sometimes seems like magic (and for development it is truly a great stepforward from WinForms and Java's Swing). And as for LINQ, it's a great gateway drug for functional programming, you don't _have_ to use it to replace ADO, you can do many interesting things even apart from databases with it.
Joey
A: 

New libraries and technologies come out all the time. Taking GUI development as an example there are literally dozens of ways you could develop a GUI application. Some cross platform some not. Some more "designer friendly" some not. These things are constantly shifting though and I think, at least for a while more, they will continue to shift. You can call these different approaches whatever you want but that is really marketing. Is it an API? A new methodology? Does it matter? It's a different way to do things that may be convenient for some people in some situations.

Ultimately these APIs or methodologies or whatever you want to call them are just tools. You learn a new tool and you apply it to your craft, and when a better too becomes available you learn to use it or you let your skills fade. So do new tools change the way we write code? Sure. But do they change our craft? Absolutely not.

John Conrad
+1  A: 

Given a number of new technologies I think it is much more difficult to select "winning" set of technologies rather than learn something new ('cause everything was invented long time ago already :) ) For example I was very interesting in WF - I was looking at this technology as a really great shift in software development, but when I digged it deeper it turned out that I should wait until vNext to take advantage of advertised bonuses. Another technologies like LINQ/WPF really improved my productivity. Developer should be scrupulous when choosing technology. I teach myself to not jump to each bandwagon crossing my street, but it is still very tempting to learn some new "solve all you problem" technology :)

aku
A: 

Does it matter which version of the CLR it targets? Every piece of software on your PC targets the x86 architecture, does that mean it's all the same technology?

Further, does it matter if they are libraries or technologies? Does it make a difference?

In any case, the products you mention don't have much to do with each others (other than being made by Microsoft).

LINQ is a language feature, it is built into the C# or VB (or other .NET languages) compilers, and the language syntax has been extended to accommodate LINQ. That means it's certainly not just a library.

WPF, on the other hand, is not part of the language. You could call it a library, or a framework, or any other term you like.

And does either of these change the way you program? Perhaps. LINQ certainly offered something that wasn't previously available, and for me, at least, it has radically changed the way I code C#. It has also made me quite a bit more productive.

WPF is a bit more subtle, because of course plenty of GUI libraries already existed. But WPF still offers a lot of convenience, and the ability to do some really nice-looking graphical stuff much more easily than any other Windows-compatible library I'm aware of. Letting you use GPU shaders in a 2d GUI app wasn't easily done before WPF, so again, for some things at least, WPF has the potential to change the way you program.

And yes, so did Spring for Java.

jalf
The rason for my question, is that with so many new things out of MS, It is extremely hard, almost impossible to keep up with all of them. Libraries come and go, and have alternatives with the same functionality. Technology changes lead to creation of libraries that implement them.
Timur Fanshteyn
Depends on your definition of "keeping up". It's not hard to get an overview of what each one does. Then you can evaluate if it's something that's relevant to your work, if it promises to do a better job than the alternatives, and whether or not it's worth learning it.
jalf