As a freelance software developer, I am regularly asked in interviews if I am familiar with a certain technology or product like e.g. TFS, ASP.NET 2.0, WPF or Oracle 10g or whatever. This is of course only natural, since potential customers already have their company-internal development technology stacks set up or it goes about a pre-existing software project where all these decisions are made long before anyway. But as a freelancer, I must say that keeping up with all the latest technologies and related news is not just hard, it's simply impossible, and (at least as of yet) I refuse to even try participating in that rat race.
I saw more than one job description that asked for "deep knowledge in xyz" when xyz was released only a few weeks ago. .NET 3.5 would be an example for that, and I expect it to be no different with .NET 4.0. Frankly, everyone who claimed to have this expertise at that time must be either a genius or a liar. And what do these companies expect to get for their - mostly considerable amount of - money?
Sure, I quickly can achieve a "somehow-good-enough-to-work-with" knowledge in a certain area - before the next release is published, or the current job is over and the next customer demands a different set of skills. But working with a technology that you have "just-good-enough" expertise on is quite unsatisfactory on the personal side, and it certainly doesn't make for high quality and sustainability on the business side.
Generally, I don't see much use in putting a lot of effort into learning some API and framework details that will be out of date tomorrow. Instead it makes much more sense to me focusing on fundamental design and coding principles along the lines of 'design pattern usage', 'implications of using an IoC container', 'fundamentals of Aspect Oriented Programming' or the like. - Don't get me wrong, it's of course necessary to be an expert in some of the technologies around like for example some specific DBMS or an UI technology like WPF. But even that is quite hard if things are evolving that fast.
We have the .NET framework, which is quite powerful and sufficiently sophisticated by now, and we can build great software on top of that using the products from commercial vendors in combination with a more and more mature Open Source Software stack. I don't know of a problem that couldn't be solved with the tools that we have.
Of course, there's always room for improvement, and I'm also well aware of the fact that our economy (and thus, our entire society in the end) can only function if there's a continuous flow of innovation and new products. What I'm talking about here is essentially a conflict that cannot be 'resolved' in any way. Rather it's a trade-off, where everyone confronted with it has to find his own individual balance, with which he can live comfortably.
So how about you? How do you cope with that problem (if it's a problem for you at all)? I'd be really interested to hear some opinions and/or strategies...