Wednesday, June 18, 2008

Change is Good (part 3)

The ever-growing (and changing) framework
As if .NET wasn't big enough already, I'm afraid to find out how many new classes were added between .NET 2.0 and .NET 3.5. With so many classes and types in the framework, can anyone really call themselves a .NET expert? I know I'm a long way away from knowing every class in the .NET 2.0 framework, and I seriously doubt there's anyone out there who's used all of them.

Let's face it... we're all specialists nowadays. As much as I like to consider myself a generalist, a multi-purpose programmer, a Rennaissance man of code, if you will, I'm as much a specialist as anybody. I've specialized in the APIs that I've had to use to get my work done. Right now that means I've specialized mainly in .NET. And a subset of .NET at that. I've had no need for Remoting yet, for example, but I'm sure others use it all the time. I've used the classes in the Reflection namespace fairly often, but I'm sure there are plenty of .NET programmers who've never needed them. And as much as I love Java, I haven't written a line of Java code for at least three years now, so yeah, I'm a specialist.

I just happen to be a "specialist" who specializes in learning technologies as needed. ;-)


Each time I'm faced with a new problem, one of my first thoughts is "has Microsoft already done this for me?" If I can't find a class for what I need in the humongous .NET framework, then I wonder "has someone else already done this for me?" And if they have, then I ask myself "can I convince my company to buy it?" (assuming it's not open source) It's the lazy programmer's approach to code, but it works fairly well. Of course, if I find out that Microsoft or someone else has written a class or API that might fit what I need, I then need to learn how to use that! But isn't that still much easier than writing it yourself?

Besides, once you've gone through that learning curve, you've added another tool to your programmer's toolkit and become just a wee bit less specialized.

I'm currently being "lazy" by trying to learn about NHibernate, but that's a story (or several) for another time.

What if I don't care about .NET?
Well, I'm not going to say that you should! I'm certainly not a Microsoft advocate -- anyone who's ever been on the receiving end of my rants about the latest idiosyncracy I've found in Visual Studio or the .NET framework can attest to that. But honestly, Java's not much different. Ten years ago, Java was a much smaller creature than it is today. And when you consider the various flavors of Java like J2SE, J2EE (especially J2EE!), and J2ME, your typical Java programmer has as much of a learning curve as your typical .NET programmer.

And hey, life's not any easier for you web programmers out there, you know. First, do you use ASP, ASP.NET, Perl, PHP, Python, Ruby on Rails, or some other language as the basis for your web apps (this decision probably isn't yours to make if you're not your own boss)? Add to that the fact that you'll probably need to get fairly good with JavaScript, HTML, DOM, etc. And what about AJAX? There's Atlas, Dojo, Google Web Toolkit (GWT), etc. And I haven't even mentiond Flash and AIR yet! (well, OK, I just did).

The point is, as each language grows and evolves, it becomes more complex. As each ecosystem (such as the world of web programming) grows, more languages spring up (sorry, Java folks, no pun intended) to fill the various ecological niches.

And I've just barely scratched the surface. Change is the name of the game for us programmers. We'd better enjoy the challenge, because like it or not, we're all along for the ride.

full window
full window