For a while now, I've been hearing about people who have "left" .NET. For whatever reasons, some folks have decided to leave the CLR for what they perceive as greener pastures. Some have left because they're frustrated with the .NET community. Others have left because they can't stand Microsoft. Maybe it's a mix of these reasons, or none of them, but at the end of the day, it was looking like a mass exodus was in place. Sort of.
I completely understand. I've been there before myself. When I started as a "professional" developer (i.e. getting paid to code, more or less) back in 1995, I started with VB3. I had a love/hate relationship with it over 4 versions, and overall I liked it more than I disliked it. However, the more I learned about software development, the more frustrated I became with VB. It was too limiting for me, and to push it beyond its limitations was very painful (remember Curland's great "Advanced VB" book? Powerful stuff, but definitely not simple). Around that time (1998), Java started to take off like a rocket, and everyone was jumping on the Java bandwagon, at least it felt like that. I was eager to "leave" VB for a while and start working on Java applications.
Unfortunately ... it never really turned out that way. While I made a concerted effort for about a year and a half to dive into Java, I couldn't get on projects where I could stretch my fledgling skills. One project I got roped into doing a VB app because the client needed one and I was the only guy there that knew VB. Another project was a Java/CORBA-based application than I hated for many, many reasons. In the end, I decided to "leave" Java and come back to the MS world as .NET made its presence known. I really liked the Java language, but the tooling was immature, and I just couldn't find a project to get traction on.
I never "left" any language, or tool. I still know VB pre-.NET - in fact, about 5 years ago I went to a client for 1 day to help them out with a program written in VB to figure out some component issues they were having. I was still able to move around in the tool and figure out what they needed. A while back I was writing some modules for an ASP.NET application to make automatic authentication occur with a Java backend that issued encrypted tokens. At some point I realized I couldn't decrypt their tickets, and once I got a hold of the Java code I was able to find out exactly where the problem was (it was actually a bug in the Java code with interpretation of the bytes within a text file). Even though I don't code in Java on a day-to-day basis, I could still pick it up and decipher what it did. Same with VB.
Now, I'm not suggesting those that are "leaving" .NET are abandoning their skill sets. A lot of what I've seen and read seems to hint that it's from developers who feel they've hit a wall with their knowledge and want to keep growing. My personal feeling is one can learn whenever they want, but I do understand the need to focus on a particular technology or language full-time to truly appreciate its intriciacies. For a while I fell in love with Eiffel, but I really can't remember a lot from it at this point because I never was able to use it on a project. Anyway, I have to admit .. for the last couple of months, I was getting concerned with where things were going in the .NET world.
In the last week or so, though, there have been two rays of hope: NuPack and the release of IronPython and IronRuby to the masses (i.e. out of Microsoft's control). NuPack is (more or less) RubyGems in .NET, but it's OSS - if you want, you can contribute to the source code. Think about that. Even though it's only one project, can you imagine even entertaining such a thought about Microsoft 10 years ago, or even 5? People would laugh hysterically at you. But finally, there's a project where you can do that, and it's not like NuPack is a small endeavour; NuPack has the potential to really make .NET developers rethink how they use assemblies in a lot of different ways.
On the languages side of things, I really liked seeing MS ramp up their language efforts for the last 2-4 years by getting the DLR out there and having two dynamic languages target it, Python and Ruby. But ... at the same time, I had to wonder, when was it going to end? If neither language ever got "in the box" - i.e. in Visual Studio, I really didn't see them surviving for very long. Rumors and tales abound about how close it was for the Iron languages to get there, but it didn't happen. Then the teams started to fall apart within MS, and speculation was wild that MS was giving up on dynamic languages.
Well, they did. They gave it up to the world. There's no excuse now for not making Python and Ruby work well in the .NET universe. Anybody can contribute to the projects. Anybody can improve the implementations. Nobody has to wait for MS to create new versions of the "products". And this can work, if the community wants it to. Look at JRuby - that's a fantastic implementation of Ruby on top of the JVM. There is absolutely no reason that IronRuby and IronPython can't have the same success story. But it really depends on how much interest there is to have a vibrant dynamic language community for the .NET world.
At the end of the day, though, here's what I'm getting at through all the ramblings. If you want to "leave" .NET, that's fine. Make your blog posts, write your tweets, and state your case. I mean it. I'm not being sarcastic. Go for it. Learn. Broaden your horizons. In fact, don't stop at one language. Learn F#, or Ruby, or Clojure, or ... something different. Or pick up a book on algorithms. Find a book on type theory in programming languages. Read up on concurrency. Or write a game. How about functional languages? Take a deep dive there. The truth is, no one ever "leaves" a technology. The good developers build on what they know and retain that knowledge to be successful at whatever they do.
I have no idea where I'll be or what I'm going to do in 2 years, let alone 20. I have goals in mind, but being able to adapt to unexpected changes is a good thing. Maybe I'll still be doing MS stuff in the future. Or not. I have no idea what the future holds, but I do think it's going to be quite interesting, and exciting.
* Posted at 10.25.2010 08:01:32 PM CST | Link *