Thursday, April 23, 2009

From Java to .NET and back again

I was fortunate enough in college during summers to have worked for a company doing data entry that had room to grow in, from an IT perspective. Since I was going to school for a Management Computer Systems degree, I obviously had programming somewhat on the brain. After making some cheesy VB app to do some mortgage calculations, I was recruited to do an internship during my final semester of school for one of the company's smaller startup branches. Being a small startup company around the year 2000, Java was a very hot technology, and I was lucky enough to be able to jump into that, instead of having to wade through old legacy applications that were written in COBOL.

After about 6 months of struggling through the gig, the lights upstairs finally clicked on, and object-oriented development finally made perfect sense to me, and I started to enjoy my job immensely. At the time, the .com bubble hadn't burst yet, so I was bouncing through companies that would pay an inexperienced developer like myself pretty decent money if you could even spell Java. Unfortunately, all that fun came to an end when the bubble burst. I had gotten laid off from two jobs within 5 months time. While I was able to ratchet up my salary in a short amount of time, I had priced myself out of the positions companies were offering for people with my experience (1-2 years).

The bright side of this is that I was able to focus my time and keep my Java "nails sharp" by working on a small website I started, Brewerfan.net. The idea was that I could use Brewerfan to work with technologies that I didn't get to work with while I was unemployed. Revolutions were starting to take place in the Java space with open source frameworks like Struts 1, NHibernate, and then the Spring Framework. It was at this point that I had the opportunity to go the .NET route, hopefully widening my employ-ability, or stick with Java and the frameworks that I've come to rely on (which at the time weren't available in the Microsoft stack).

Fast-forwarding to 2006, I had come to a crossroads in my career. I was serving as a technical lead for some decent enterprise-size projects, and found myself being pushed more into management than I really wanted to be. As much as I liked coaching others and managing a successful team of developers, I wanted to get out of the somewhat political atmosphere that goes along with those things, and accepted an offer from my current employer. It was a change, going from a "techincal lead" to just a "consultant", but I just didn't think at that point in my life, I wanted to remove myself from programming the majority of my day.

The real only downside to my new gig was that they're completely technologically agnostic. While I despised Microsoft programming technologies at the time, there was going to be a good chance that I would have to jockey back and forth between technologies, depending on what the client ultimately chose. Until recently, ALL of my projects have been in the .NET stack, so I drank the kool-aid. At first, I was pretty much kicking and screaming, as all of the technologies I had relied on (Aspect-Oriented programming, Object-relational mapping) didn't exist in the Microsoft space. After trying to "play nice" with some of the rapid application development tools that MS provided, I ultimately pushed for our company to explore some of the "alt.net" technologies (Spring.NET, NHibernate). While I thoroughly enjoyed working with ASP.NET and the ease of which I could create a small website and deploy it, the whole thing still felt like one big hack to me. I could develop a superior product with C#/ASP.NET/alt.net than I could with Struts/Spring/Hibernate, but the lack of using 100% supported Microsoft tools is sometimes met with hesitancy with developers I work with. It's also a bit cumbersome to use Microsoft development tools with non-sanctioned products.

Regardless of this unease, I made the decision to go ahead and re-write Brewerfan.net with an ASP.NET/alt.net architecture, as it was something that I was pretty comfortable with. All of that changed, when a co-worker of mine recommended I check out a video called "Building Twitter with Grails in 40 Minutes". I had a brief fascination with Ruby on Rails a couple of years earlier, but it got left by the wayside as I already had to learn .NET for my new gig, and I didn't really envision a scenario where I would get to use Ruby in a production setting anywhere. As soon as I got done watching that video, I completely abandoned my newly formed Brewerfan.net .NET codebase, and started writing it in Grails.

Much as I had grown to despise Microsoft technologies during my "Java phase", I had grown tired of Java's bulk during my ".NET phase". Grails, being built on top of Java, is a much easier pill for companies to swallow, since Java runs on pretty much anything with a chip in it. And for me, it removed the rest of the complexity and the hurdles I had to jump through in the .NET space to build a quality project in a fast amount of time.

So, as it stands, I'm back in the Java camp... although, I suppose if you want to be specific, I'm in the SpringSource camp. I finally feel confident in a technology for my Brewerfan.net re-write, and confident in a technology that I can use in the workplace and hopefully make a real difference.

That's all for now,
Brian

No comments:

Post a Comment