From ALT.NET to NOT.NET

For a long time now I’ve been known as “joeyDotNet”. Of course I’ll never make the mistake tying my name to a
particular technology like that again. Especially given some of the recent changes I’ve made in my career. For the
past 10 years I’ve been primarily a web developer using Microsoft-based technologies. In the latter years I started
to grow pretty frustrated with both the Microsoft development stacks as well as their operating systems. The ALT.NET
“movement” helped a little, but for me, the bloat of the development tools and ceremony required in the languages
overshadowed the well-intentioned ALT.NET efforts. Of course this is merely my own personal opinion.

A couple months ago I made a pretty big change by leaving .NET completely to start focusing on learning and building
software using tools and frameworks that I enjoy and involve less friction. But instead of hearing me whine about my
specific issues with .NET development, I thought maybe I would give a glimpse into my experience so far as I’ve become
part of the NOT.NET crowd.

Perhaps I’m a glutton for punishment, but I find that in order to really learn something, I have to throw myself into
the lake and basically sink or swim. That’s pretty much what I’ve done by leaving .NET into the world of Ruby.
Today marks exactly 2 months that I’ve been working exclusively with Ruby/Rails and I have to say it has been a very
enjoyable experience so far (and frustrating at a few times). I’ve dabbled with the Ruby language and with Rails a bit
over the past couple years, so I had an idea of what I was getting into. Doing it 100% day in/out is a completely
different story though. But at this point, I’m not looking back a bit.

Good

Operating systems are cool again

One of things I’ve very much enjoyed is being able to completely ditch Windows as an operating system in favor of using
my MacBook Pro with OSX for everything. It’s no secret that I’m a pretty big Apple fan, and I think, for good reason.
The simplicity of the OS and the top notch software that is available for OSX makes the actual usage of the various
design and development tools fun and productive again.

Simple tools, less friction

Since I’m a huge fan of Vim, I’m naturally using MacVim as my main editor, along with a few Terminal windows and a browser.
That’s it. No fancy IDEs or designers to get in my way. Just code. I am using a couple Vim plugins to allow better
navigation around the code. NERDTree and
Command-T which I would highly recommend. I’ve also jumped head
first into Git as my primary source control and I continue to be very happy with that decision. All those years wasted
on Subversion, which incidentally performs subversive acts on the instituion of actually getting things done!

Doing more with less

One of the common themes I’ve found so far in working with Ruby in general and Rails in particular is how much work you
can actually get done with so little code/effort. In 2 months time I’ve been able to build a fairly sizable greenfield
Rails app from the ground up and almost ready for the first production deployment next week. All while I do a TON of
learning in the process. I have no clue how long
this would’ve taken me in .NET, but I’m certain it would have been significantly longer. Once you don’t have to deal
with IDEs, solutions, project files, unnecessarily complex build scripts, high-ceremony languages or even compilation,
you really start to realize how much overhead all of that stuff adds, preventing you from getting real work done, fast!

Buh-bye IoC containers

In my experience with C# over the years, it became apparent to me that in order to be productive in building flexible
software in .NET that the use of an IoC container to handle dependency resolution was pretty much required. And I
totally bought into it, using them heavily for many years. And for the most part, I think it was a good idea. However
I will freely admit that a lot of my usage of them was to enable mocking and easier testing. I think if a lot of
developers were honest about it, they’d say the same thing. That’s not to say that’s the only reason of course. IoC
has its place in doing some crazy stuff with decorators/proxies and all kinds of other useful jazz.
Contrast that with Ruby and I can honestly say I have not missed IoC containers one bit. Being able to work in a much
more open language has been a joy. Composition over Inheritance is the real deal in Ruby and it’s being demonstrated
more and more in frameworks like Rails 3 and Mongoid. Being able to open up and extend any class in Ruby is also
extremely powerful (and dangerous!).

Feeling the love

Perhaps one of the more feel-good things about working with open technologies like Ruby is the community. I honestly
have never experienced a community who is more willing to help out with anything like I’ve seen in the Ruby community
so far. I’ve made a great many friends so far and hope that I can start contributing back to the community once I get
my head above water. Open source in the .NET world has grown a bit over the years, but it still seems light years away
from the Ruby and related communities. And I’m not sure why, but I can’t help but think it has something to do with a certain corporate
entity behind .NET.

Making dreams come true

For quite a few years now I’ve had an increasing urge to go “out on my own” and be “independent”. More specifically
I’ve dreamed for a long time now about making a living by building my own software. A
Microprenuer, if you will.
But the whole time I pretty much knew there is absolutely NO way I would build my own software products using Microsoft
technology. In my opinion technologies like Rails, Node.js and MongoDB are much better suited to building next generation
web applications than anything on the Microsoft stack right now. I’m sure many will differ with that opinion, but
that’s just how I see it. So in order to move closer to my dreams and goals, I knew I would have to move away from the
Microsoft world at some point. I’ll always wish I had done it sooner, but with Rails 3 getting ready to “ship” it seems
like a great time to be focusing my efforts there.

Bad

Becoming one with the *nix

I admit it. Early on, it has been tough to get up to speed on the nix tools and setting up Linux servers, etc. I’ve
always been a pretty big command line junkie. But I’ve learned that being a *Windows
command line dude is a whole lot
different than sitting down at a Bash shell for the Linux slice you just bought and now need to get setup with a full
Rails stack. Nevertheless, I’ve forced my way through it thanks to the interwebs and honestly in great part due to the
great articles over on Slicehost. I still have a lot more to learn, but I’m starting
to realize that those crazy bearded Linux heads are onto something. :)

Living on the edge

In accordance with my sink or swim style, I decided to jump on the edge of quite a few things including Rails 3 beta
and all of the associated “pre” gems for testing, persistence and others. That has been painful at times. Sometimes it
takes you a little bit to troubleshoot a huge stack trace of errors to find an issue with an incompatible gem. Lots of
times it was fixed by just updating the gem or actually applying specific patches. All in all, it hasn’t been too bad
though and it has forced me to dig into the actual code of the frameworks I’m using which has only increased my learning
of the Ruby language and certain patterns used in the language.

Ugly

Well about the only thing ugly so far is probably some of my Ruby code. I’ve hit a few roadblocks here and there
because of my lack of some of the advanced capabilities of Ruby as a language. And sometimes I’ve had to just get it
working and move on until I get more proficient with Ruby. Often times I just “know” that there is a better way to do a
particular thing, even if I don’t know exactly what that way is. Like anything else, I’m sure I’ll come back a month
later, a year later and throw up a little in my mouth when I see some of the Ruby I’m writing. But I’m down with the
continuous improvement lifestyle, so I’ll just keeping moving forward. :)

Well this was basically a stream of consciousness post, but perhaps it will give some insight into the life of a fellow
geek that is striving to reinvent his career.

Related Articles:

Post Footer automatically generated by Add Post Footer Plugin for wordpress.

This entry was posted in alt.net, community, microprenuer, rails, ruby. Bookmark the permalink. Follow any comments here with the RSS feed for this post.

25 Responses to From ALT.NET to NOT.NET

  1. Ryan Smith says:

    I’ve been very Rails-Curious for awhile…but to be honest I was stung early by the process of getting my Mac ready for development.

    This scenario seemed to happen a lot:

    Install XYZGem – “XYZGem Requires ABCGem”
    ok
    Install ABCGem – “ABCGem requires version 1.2.4 of FooExtension”
    ok
    Check Version of FooExtenstion – verision 1.1.2
    ok
    Update FooExtension – Updating FooExtension require native MacExtensionMabobby
    Lather, rinse, repeat….

    Ok what the heck was I installing again? I now realize how consultants make a living on setting up dev environments.

    This obviously would become old hat as I did it more frequently…but holy crap that initial peek into that world was painful. And I know the M$ stack has some of the same issues, but somehow it *seems* more concrete and predictable.

    My $.02, which is quickly being devaluated.

    Ryan

  2. I applaud you for voting with your feet and taking yourself out of the comfort zone. I, too, and doing mostly rails right now for my web stuff and I’m finding similar things: simpler tools, better language, more productivity.

    There are still a few things I miss from .NET, and my Ruby at times still looks like C# :) , I’m happy with my choices.

    I have to agree with Rob Conery’s statement in his NDC talk: I am waiting for Microsoft to blow my mind again. They’ve done it before and I believe they can do it again. But the current state of things has me looking towards Rails.

  3. For the web, absolutely I take your stance. MS, even though I learned n00bisms in ASP.NET MVC is really being left behind. Anything can be web based these days and the cost of getting a Linux server up is next to nothing. As a former IT admin, I found that burden too much personally and thankfully I’ve moved to a strict MS shop. There are some distros that do this well and as a server technology, Linux almost can’t be beat in terms of price to setup. Maintainability when something obscure breaks? I’d rather have a root canal than read some man pages but thankfully Google came to my rescue.

    Regarding Apple, I’ve never liked their hardware tax and the smug attitude that they will tell me how to use their products but some people are just fine with that. Windows is just different to me but there do seem to be more hurdles in the software camp so I’ll bite there. If you are an avid Mac user, .NET isn’t going to appeal to you in the slightest I don’t think unless you use something like MonoDevelop and even then you probably won’t like it.

    I recently jumped from IT with a small amount of dev to developer with almost no IT (where I accel actually) and I echo your experience. Yes I’m doing .NET but it’s primarily WPF and like you I had to jump in, sink or swim. As far as the desktop space goes, especially in this office, getting away from .NET or Win32 would be a very very hard sell. Are we looking at redoing what I now call legacy ASP.NET sites? You bet. They mentioned Django which is python based but I was really hoping for a Ruby push myself because in my limited time just installing it I was amazed. From a desktop perspective, Linux is still failing to capture my mom’s level of expertise. Luckily Apple came in and built a usable UI on top of it ;) .

    The one part of this post I’ll virtually spit in someone’s face over is git. Dear Lord git may be better than subversion but that’s really just the concept of DVCS. As an implementation of a DVCS it is piss poor and while I primarily come from a Tortoise* approach, I’ve heard nothing but headache from even the command line purists. Mercurial, on the other hand, I’m completely in love with. Everything from compiling the source to running actual client commands is golden. My only headache was getting SVN in a state that hgsubversion could allow a clone from my existing repositories but I blame SVN there. If you have an opportunity just to try it (i.e. don’t have to convince a team to switch), I would suggest it but if you have had no problems so far then don’t bother. When the frustration starts to set in then you can look at switching. Hopefully you’ll never have any of the problems I’ve seen but the conspiracy theorist in me thinks it’ll be only a matter of time until you do.

  4. James Avery says:

    Just had to leave this hear, it’s very interesting reading the comments too:

    http://averyblog.com/net/how-long-before-alt-net-becomes-not-net (2007)

  5. Eyston says:

    @Ryan

    That sounds weird. I thought gem install downloaded dependencies for you? I know when I download gems I usually get 2-3 more gems tagging along.

    RubyGems is pretty cool. I think people wish it existed for .NET, but it seems unneeded since there are like a few dozen OSS .NET libraries out there and none would dare depend on another (getting someone to use a single 3rd party lib is hard enough!).

  6. Ryan says:

    @Eyston

    I think you’re right, if it’s a straight dependency it will install it for you…but I think there can still be version collisions. I seem to recall having to update at least one Gem before proceeding. I could been wrong though or at least confused by the scary green lettering of the terminal window. :)

  7. Len Smith says:

    wow, looks like we’re on the same timeline.

    i’ve been doing rails in all my free time for the last year and the last two months i’ve been working with ruby in my day job too. i really don’t think i can go back to .NET now.

  8. Len Smith says:

    also, there’s a video on youtube of me discovering ruby last year

    http://www.youtube.com/watch?v=WQ9XacFIfjc

  9. Len Smith says:

    also, there’s a video on youtube of me discovering ruby last year:

    http://www.youtube.com/watch?v=WQ9XacFIfjc

  10. Eyston says:

    @Ryan

    I’m not sure how much of this is rubygems or rails, but there are problems in if a gem requires a previous version of another gem, but the higher version gem is already installed, it can fail due to not meeting dependencies (if that at all made sense).

    Bundler addresses this in having smarter dependency management which looks at the whole list of dependencies instead of 1 by 1. It also goes a bit further by letting you isolate each applications environment. This helps avoid having a dependency only being met implicitly which is then missed on production (aka ‘it works in dev!’). I guess it might suck in the initial setting up of a new application though in that you have to list all dependencies explicitly which you are used to taking for granted. But explicit is good.

    The cool thing to me is that you can pull an application from source control and get everything you need to run it.

  11. Eyston says:

    I do .NET because my clients like the safety of being able to plug in another .NET developer (aka developers are expendable or plug-n-play). I feel guilty though in that it is a lie. If you are using the OSS toolchain on .NET (NHibernate, Structuremap, MassTransit, etc in my case) then you can’t plug in any other .NET developer. Most won’t know how to use these tools. This means you have to stick to the MS toolchain in order to remain expendable the way the client wants you to be, but that is a terrible thing for many other reasons. Most importantly I wouldn’t want to do the work.

    So instead I write .NET applications that only a small minority of .NET developers could step into. So I’m totally missing the biggest (only?) benefit of .NET — ubiquity.

    If I am giving that up by using OSS tools then why stick with .NET at all? This is what I keep asking myself.

    I think FubuMVC is interesting. But if I’m going that far away from mainstream .NET, it seems so easy to just keep going and land in Rails.

  12. Robert says:

    What about Pay rate? I mean, typically, especially at a high level, MS devs get paid so much more. That’s what is really keeping me the loop.

    Has it been worth it even then?

  13. @Robert,
    Historically, .NET has paid more than Rails work for the most part in my findings. But I see that changing quite a bit now. Regardless, at some point, you have to ask yourself if money is really worth it. I mean, I could make a ton of money as a road warrior .NET consultant, for sure. Or by taking some cushy corporate job with great benefits. Now that I’ve experienced both of those worlds first hand, I now know that’s just not the type of work or career I want to have. But that’s just me of course.

    I’ve always dreamed of building software that I’m passionate about and ideally making a living doing it. And for me, I just haven’t had that feeling by building stuff for other people/companies. Of course I’m still going to have to do some consulting for the foreseeable future, but my long term goal is to build products I’m passionate about and that will support me and my family. Having done the consulting thing in .NET for quite a few years, I know I do NOT want be a consultant getting paid by the hour for the rest of my career. It just doesn’t scale.

    My goal is to build my own one man software company that will eventually allow me to get enough recurring passive income to quit consulting altogether. Hopefully a little later this year, I can start cutting back a little bit on the consulting side of things to start focusing on my own stuff. But until that time, I’m enjoying the Rails consulting I’m doing now and it’s paying the bills.

    Anywho, that was a little long-winded, sorry. But bottom line is that for me, money just wasn’t enough to keep me in the .NET world.

  14. jdn says:

    It’s a bold step to take. I myself have not felt the need to leave .NET (maybe a bad initial experience a few years back with Ruby/Rails is why I don’t feel the Ruby love), but your experience is not unique.

    ” my long term goal is to build products I’m passionate about and that will support me and my family”

    It’s a worthy goal. I hope it works out for you.

  15. I have been using .NET to build enterprise apps and sites since the beginning but since I have started to use Ruby and various web app frameworks I find things like ASP.NET, WCF and newer .NET stacks increasing overbearing and heavy.
    I am optimistic that I will increasingly be able to displace C# with IronRuby in some scenarios as things progress.
    Also a quick note to readers who have experienced challenges in the past with Rails: there are other healthy options in terms of Ruby frameworks such as Sinatra, Padrino and Camping, which you can mix and match with many Ruby gems.
    Camping (http://bit.ly/campingwiki) especially has an MVC structure but a very light weight approach compared to Rails for example.

  16. Brad Mead says:

    I’m starting down the same road – mostly as an after-hours, continuing education thing. Could you elaborate a little on your favorite community hang outs? Lists, sites etc. Thanks

  17. @jdn,
    Yeah, my first experience with Ruby/Rails a few years ago was OK right up until I got to deployment/hosting with Mongrel, etc. That was a big turnoff for me back then. But these days things like Phusion Passenger or even Heroku make that waaay easier.

    @Philippe,
    Thanks for the tips. I have played with Sinatra quite a bit and love it. Hoping to use it more in some future work. And Jason keeps trying to get me to try out Padrino which I still need to check out. I’ve heard about Camping for years now too, but never sat down to try it. All of it sounds great.

    @Brad,
    Started to leave you a comment, but got too big and am turning it into a blog post instead. Stay tuned… :)

  18. A 'braham Barakhyahu says:

    I have been experimenting with less cermonius-web centric technologies myself. JavaScript and the server-side JavaScript have my attention now. In my area, I don’t come across many passionate asp.net devs, just ones who are beaten down by the politics or ones who are waiting for MS to solve all thier problems in light of using OSS. I like the fact that Ruby, NodeJS and the like are getting back to the roots of web dev. There’s some cool things out for .NET, but to resolve .NET issues. Ruby/Python/JavaScript don’t have to have an IOC solution. Sorry, it’s late and I’m rambling, but good for you. All the best.

  19. DaRage says:

    I did a site with rails and I’m not impressed at all. what’s good about building data centric active records CRUD apps that becomes monolithic for any serious application?

    Ruby as a language might offer neat tricks and short cuts but not a game changer for sure. A language like F# offers much more innovation. To me it’s more hype.

  20. @DaRage,
    Same as my comment to Brad above, I started typing it out and it got long. Look for a post reply soon… :)

  21. DaRage says:

    @joey

    My comment is not related to Brad’s. I don’t see the advantage of ruby/rails over .net. I think .net is a better platform and much of ruby’s attraction is a hype.

  22. @DaRage,
    >> ” I think .net is a better platform and much of ruby’s attraction is a hype.”

    That’s a pretty broad sweeping statement there. Have you ever tried building anything in Ruby? A statement like that must come with some sort of explanation as to why you think that and exactly what scenarios in which you think .NET is a “better platform” than Ruby.

    Please elaborate. :)

  23. DaRage says:

    @joey

    Please read my first post again.

  24. @DaRage,
    I apologize, lost track of who’s comments went with whom. I’m not really trying to convince anybody to switch, so of course you’re free to not like or use Ruby. However to call the attraction to Ruby “hype” would kind of go against the many successful projects and very bright (and pragmatic) folks that are using Ruby day in/out. The point of this post was to simply share my experience so far and the reasons I made the switch. Minus all the technical mumbo jumbo, for me, Ruby has made programming fun and productive again, while still being able to delivery products quickly. So that’s a huge plus in my book.

  25. Artan says:

    I couldn’t have written it better myself. I agree with you 100%, and I hope I’ll have the courage soon to leave .net for Ruby/Rails.