Keeping Things Interesting (Or: Avoiding .NET At Home)

22 commentsWritten on June 26th, 2011 by
Categories: Opinions

When other developers ask me what kind of stuff i'm working on or playing with outside of work hours, they're often quite surprised to hear that i actually try to avoid doing .NET stuff at home. I generally only use it at home if i have to: if i have to prepare for my NHibernate course, or if i'm merging patches that i've received for Agatha. Other than that, i'd rather not spend time on it. It's not that i don't like .NET, but i just don't find it a very interesting space to be in anymore. There's very little innovation going on and the new things that the community and Microsoft are working on most often seem like either new libraries or frameworks to keep doing the same things we've been doing for years, or building things that other development communities already have for a while now. It also doesn't help that a lot of the people who used to be in the ALT.NET community seem to be spending a lot of their spare time learning new languages and platforms instead of pushing for improvement in the .NET community like they used to do. That's not a criticism of them because i can't blame them at all. Hell, i'm doing the same thing.

I still do .NET professionally, and i expect to keep working with it for a few more years because there's just not that much work around here (Belgium) with alternative technologies. And the work that is there most often pays a lot less than your typical .NET job. It shouldn't only be about money, but it does start to matter increasingly once you're no longer in your middle-twenties. So what do you do if you're passionate about development, but aren't quite as passionate anymore about the technical environment you use most often? I started learning Ruby last year and it was an eye-opening experience for me on multiple levels. I love it as a language, and i like a lot of the stuff that is happening in and coming out of the Ruby community. Is it all perfect on that side of the fence? Of course not, nothing is. But it's worth learning, if only because it will expand your mind and your views on software development.

For the past 6 months, i've become increasingly fond of JavaScript and while i don't like it nearly as much as Ruby (still my favorite language), i am very intrigued by the fact that is becoming increasingly relevant on both the client and the server. I want to dive deeply in the world of Node.JS, but i also want to learn more about Backbone.JS and Knockout.JS. I want to explore the world of automated testing for both client-side and server-side JavaScript. I probably should look into CoffeeScript as well, but i'd like to become proficient in JavaScript first before i switch to something that compiles to JavaScript, if only because you're likely going to be reading a lot of JavaScript code anyway for the next couple of years.

Will i still like JavaScript as much 6 months or a year from now, or will i be trying to learn something else by then? Who knows, and really, who cares? What matters to me is that i keep learning new things this way, which keeps things interesting for me. Some of the stuff i'll learn won't be usable to me at all in my daytime .NET coding, but some stuff will. You can never quite tell in advance, just like you can't really know in advance whether it's a good investment to jump into the latest and greatest thing in the .NET world. The only thing that really matters is that you keep enjoying the journey, no matter which technology or language or platforms you get that enjoyment from.

  • Anonymous

    You just wrote down the story of my spare time for the last 1,5 year ;-) . Isn’t it inherently wrong to continue spending entire workdays in a technological space that I’m no longer passionate about? I’m asking myself this question every single day. There are bills that need to be paid, and certainly when having kids, but it still keeps bugging me …

    • http://davybrion.com Davy Brion

      i wouldn’t say it’s wrong… it’s just a reality that we have to deal with.  But hey, things change and people change so who knows what the future will bring? :)

      • Anonymous

        I know … damn reality. Why can’t I just be happy in my own world? ;-)

  • http://twitter.com/colin_jack Colin Jack

    I agree with all this, there just isn’t much going on in the .NET space and definitely not much of interest (other than from a few of the open source superstars). As you say that then leads to people outside, but the technologies we’re looking at aren’t necessarily ones the average .NET company will be looing to use (especially as .NET these days mainly seems to mean enterprise).

  • http://bramdemoor.tumblr.com/ Bram De Moor

    Knockout.JS FTW! We recently used that library in one of our projects, and I look forward to using it again. Saved us many lines of boilerplate code…

    I agree with the post in general. It’s often a real eye-opener to work with other technologies. But I still play around with .NET at home sometimes. I’m still young and naive ;)

  • Slo

    Great post, as always! I came exactly to the same conclusion recently as you did. .NET seems to me more like a day-job I have to do, like some musician working in a factory and playing session in a Jazz bar at night. I recently started learning RoR and so far I only scratched a surface and saw that there is a big thing underneath. I guess .NET is becoming boring as everybody is just waiting what is the next thing coming out of Microsoft, and there is not a vivid open source community as on other platforms, that keeps it rolling. But besides the technical aspect I guess whatever one learns will have its use some day.

  • Gdfg

    You sound like just another passenger on the .NET is lame/I love Ruby bandwagon. It’s really getting old.

    Technologies come and go. What’s interesting in this field is creating software and solving problems. Yeah Ruby is cool, but I find myself writing cool stuff that runs on .NET everyday.

    • http://twitter.com/colin_jack Colin Jack

      Thats not what this sounds like at all:

      “I started learning Ruby last year and it was an eye-opening experience for me on multiple levels. I love it as a language, and i like a lot of the stuff that is happening in and coming out of the Ruby community. Is it all perfect on that side of the fence? Of course not, nothing is. But it’s worth learning, if only because it will expand your mind and your views on software development.”

      I agree with ”technologies come and go” but not sure it adds much and Davy isn’t saying that creating software/solving problems isn’t important/interesting. Also I think most of us agree that because technologies evolve its worth keeping up to date, otherwise some of us would still be solving problems and creating software in VB6.

      Personally I also agree with Davy, the .NET space is pretty stale when compare to whats going on elsewhere.

      • Gdfg

        I work with some old school c++ guys that churn out some pretty crazy stuff. Not as sexy as Ruby I guess….Latest is not always greatest. I’m not saying you shouldn’t always look ahead and learn – that is crucial to longevity in our industry. My point is that this whole “drop .NET for Ruby” wave is really getting old. So many of the bloggers are just copy cats (I’m not referring to Davy). Besides the web space, what else does Ruby really excel at?

        • http://davybrion.com Davy Brion

          MacRuby makes Ruby excel for desktop applications on OS X imo, and once it’s officially supported on iOS it could definitely excel in the mobile apps space as well. 

          but this post isn’t really about Ruby, or where it excels or not. Nor is it about dropping .NET.  It’s about stuff i personally find interesting right now from a technical point of view.  Nothing more, nothing less.  If you in any way got a “drop .NET for Ruby” message out of it, i think you might want to read it again.

        • http://twitter.com/colin_jack Colin Jack

          Not disagreeing, would always say the same. Latest isn’t greatest definitely, but I do think its worth learning things like Ruby/node/Erlang etc. Plus languages like Ruby have been along for a while anyway, its just they’re new to us.
           
          Not sure I see the problem with the drop .NET for Ruby thing, people are just looking at other languages/communities and some of them decide to move in that area. 

        • http://twitter.com/colin_jack Colin Jack

          Sorry just thinking more, even on C++ I bet those guys have one eye on things like Go. Doesn’t mean that in the next 5 years they’ll necessarily switch, but why not have one eye on whats going on elsewhere.

  • http://twitter.com/ewhauser ewhauser

    If you like Ruby and are writing node.js apps, you should really switch to Coffeescript.  The non-syntactical things you need to understand with Javascript are prototype based inheritance and scoping.  Once you have those understood, you are pretty much set.

    I don’t particularly care for Javascript’s verboseness, and Coffeescript solves that problem.  It’s Javascript with all the niceties of Ruby and Python.  Highly recommend it — especially if you are trying to have fun.

  • http://twitter.com/Jer0enH Jer0enH

    I fail to see why, of all languages, one should use ‘javascript’ over C#. The unique selling proposition is that it’s available everywhere, and you sure can do some nifty things with it, but calling it ‘fun’? Really?? You have a weird idea of ‘fun’ :-)
     
    Of course, every good developer should ‘look at the other side of the fence’ on a regular basis. But at the end of the day, we will also always need some general purpose environments. Personally, I find .Net, and especially C# to be one of the more innovative environments to be in (LINQ, dynamic, async). Of course some of these aspects are present in other programming environments. Still, I find it amazing how .Net manages to make these things available also to ‘the masses’. And also in the .Net space I think there is room to learn new things every day.
     
     

    • http://davybrion.com Davy Brion

      people have different ideas on what’s fun and what isn’t.  Obviously, there are plenty of people who don’t think C# is fun for a variety of reasons.

      btw, the 3 innovations you mention aren’t really that innovative at all.  It’s innovation within the .NET space, but it’s stuff that other environments have had for a while now (a point i also mentioned in the post)

      • http://twitter.com/Jer0enH Jer0enH

        If you compare .Net with the smaller, more agile, typically more ‘targeted’ and less ‘general purpose’ communities, then yes, most of this stuff has been available. As I said, the strength of .Net is that it’s such a broad platform and still manages to bring some ‘innovative’ stuff to the table, more so than e.g. Java, IMHO (I guess I’ll get flamed for this, but anyway :-) . Java does not have LINQ nor lambda expressions nor dynamic capabilities.

        Also, I never said C# is necessarily ‘fun’, but I do find JS programming (and I DO my share of programming in JS) generally a lot less fun than C# (when making abstraction of the problem domain). jQuery goes a long way I must admit, but still JS itself feels ‘quirky’ to me.

        I guess your core point, which I completely agree with, is that it’s useful and necessary to explore other platforms and tools, to widen your horizon and become a better professional.

    • http://twitter.com/colin_jack Colin Jack

      I definitely find CoffeeScript fun, not played with it a massive amount but so far I’ve found it to be a thing of beauty and easy to get going with. 

  • Andres G. Aragoneses

    (Re: Lack of innovation in .NET)

    Really? The latest announcements of opensourcing F# completely and C#v5 are not innovation?

    And outside the MSFT world, there’s innovation too: new garbage collector in the new version of Mono, a lot of opensource microORMs getting released lately, etc.

    (Re: Node.js and JavaScript)

    If you like the concept, you can still use .NET with Node.cs.
    If you like the language, you can still use IronJS with .NET.

    (Re: Ruby)

    You can use IronRuby to still be able to reuse all your .NET code while learning a new language.

    (Re: The only thing that really matters is that you keep enjoying the
    journey, no matter which technology or language or platforms you get
    that enjoyment from.)

    Completely agreed with this though.

    • http://davybrion.com Davy Brion

      i know i can run Ruby on .NET, and have in fact done quite a bit with that last year
      and i know i can run JavaScript on IronJS

      but i won’t learn nearly as much from it as opposed to actually experiencing development with the platforms those languages are typically used in.  That’s the whole point… it’s not just about learning a new language and its syntax… it’s about ideas, concepts and approaches which can vary wildly and that is what you can learn most from.

  • http://twitter.com/henebb Henrik Ebbeskog

    I think it’s just a matter of being blasé, like everything else.
    Being in this business means that you’re probably curious by nature. Curious of other methods and technologies. For me, starting in the javascript world, I was very interested in C# and .NET (still is), but has become a little bit blasé about javascript (and those libraries). That’s how it is. Sure, a lot of things still happens with javascript and it sure will in the near future when html5 is coming.

  • http://muddypa.ws nportelli

    No matter your language of choice, everyone should delve into some other language to learn new concepts.  Even the Ruby people.  I honestly don’t know what is so great about ALT.NET, when I first heard of it I thought it was just a bunch of pretentious jerks saying “You are doing it wrong”.  Fine tell me why and why your way is better.

    I’m curious on what innovation in other languages you find compelling that is not happening in the .NET space.  I’ve most definitely have not reached my saturation point for .NET yet.  There is so much more I want to learn.  But I think what I want to learn applies across any language.  I really want to learn Python too, not sure why I want to learn it over Ruby.  Just do.

  • http://twitter.com/developerluke Luke Bennett

    I could have written this blog post! I’m still doing .NET for the day job as that’s what pays the bills, but when it comes to play time it’s very much other platforms and technologies, not because I am a .NET hater but simply because I enjoy them more, get more out of them, and would like to become more proficient in them.

    I’ve leaned towards Node more than Ruby as JavaScript is my favourite language, and there’s obviously plenty of ways to apply concepts and ideas gleaned from that to my .NET projects given they’re mostly web-based.