With this article I am taking up the challenge in Pat Eyler’s blog On Ruby, which is: Write a blog about how Ruby on Rails has made you a better programmer.
I saw the light in January 2006. Yes, it was that late. Up until then, I’d been a Microsoft-programmer all the way. ASP taught me to do server-generated homepages. C# taught me to do object-oriented programming. But Ruby on Rails taught me that programming was an art, and not just a craft.
A friend I met in college introduced me to the open source world back in 2003. He tried to convince me that Linux and Perl was much better than my beloved Microsoft equivalents, and while I didn’t buy into that back then, it did widen my horizon quite a bit. Another good friend told me about Ruby on Rails when it was first made public. “I haven’t tried it myself, but it’s supposed to be really cool, and the guy who created it lives in your neighborhood.” I wasn’t convinced, but the notion of this cool, new way of developing web applications stuck with me, nevertheless.
I saw the light in January 2006. And by light, I’m not just talking about Ruby on Rails, but that whole new paradigm Rails is part of. Some like to call that paradigm web 2.0. For me, web 2.0 is more than just technology; it’s more than Rails and Django, blogs and podcasts. It’s about being open, giving and sharing stuff. It’s about really smart people not just trying to earn a lot of money, but also having a genuine desire to help other people getting better.
Ruby on Rails has made me a better programmer by showing me how easy, friendly, open and helpful things should be. Compare the Rails community to the ASP.NET community. The ASP.NET community is certainly not without people willing to share and help out, just look at Codeproject, but I have to say that I think the average Rails-programmer’s IQ is higher than that of the average C#-programmer’s. This is probably because the Rails community is smaller and attracts certain kinds of people, but I wonder if it will be watered down as it grows, or if we can continue to be nice and helpful to each other.
I had several fantastic experiences with Rails during the past year. RailsConf was awesome, not only because it had so many great speakers, but especially because everyone was so damn nice! Also Copenhagen Ruby Brigade was formed, and we were lucky enough to get the company of David Heinemeier Hansson and David Black to one of our sessions hosted at my workplace, Kraftvaerk.
So how has Rails made me a better programmer, technically speaking? Well, I can’t say the stuff about DRY and testing and DSL’s and so on was new to me when I started doing Rails – I mean; I’ve had The Pragmatic Programmer in my book shelf for years – but there are things about Rails that make it easier to do things right, and harder to do them wrong. I’m quite interested in some of the more … academic sides of Rails, like how it utilizes patterns, and an important example of that is the whole RESTful notion, which is “new” in Rails 1.2, but has been used by me and many others since it was in EDGE sometime last summer.
For me, it boils to this: More models with fewer actions. Preferably only the CRUD actions, index, create, update and delete. Why is this good? Because it’s convention. Example: Instead of /users/login you have /sessions/new/. It makes sense to me, and like many other things in Rails, it tells me do more of these conventions, also in my ASP.NET applications.
Has Rails made me a more productive programmer? Well … yes and no. I mean, the Rails framework is much more efficient and intuitive to work with than, say, the .NET framework, and Ruby does have a lot of clever ways of doing things in one line that requires 5 or 10 ten lines of C#. But … I also spend a lot of time browsing and searching the Rails API because I can’t remember the order of the arguments to call select. If I had intellisense like I have in Visual Studio 2005, I’d just start typing. I also find my Rails applications much harder to debug and install (deployment through Capistrano is a dream, but Apache, Lighttpd or even IIS to run the code is different!) than my ASP.NET applications. Okay, things are getting better and easier, but my point is; it’s not all good.
Nevertheless, Ruby on Rails has widened my horizon and opened my eyes, and that’s worth more than any productivity boost.
Simple question: Am I running Mac OS X or Windows XP in the screenshot above? (Click to enlarge).
Simple answer: I’m running both.
Complicated answer
I’m really running Parallels with the coherence feature enabled. Parallels is an application that utilizes the Intel processors in newer Macs, allowing Windows XP to run in a virtual machine, but without the whole hassle of emulation. Without emulation, speed is greatly increased.
Coherence means that the Parallels makes the Windows desktop transparent while running the virtual machine full screen. This allows Mac and Windows applications to run side by side, without the hassle of having to switch to the virtual machine, and then selecting the Windows application you want to use. This way; Windows application really feel like any other applications on Mac.
This is cool, but it’s old news. Now, I’m using boot camp to dual-boot on my Macbook Pro. I use Windows for .NET development at work and for gaming. I use Mac OS X for everyting else. The great thing about this new beta of Parallels I’m running, is that I don’t have to create a new virtual machine and install Windows, Office, Visual Studio and so on. I can just boot my existing Windows partition directly in Parallels. How cool is that?
If you are dual-booting between OS X and Windows, I can only recommend that you try out the free 30 day trial of Parallels. It is unbelievably easy to get up and running; you just go through a wizard, select Boot Camp, and – BAM! – you have your well known Windows desktop right there next to your Dock, Mail, Safari, and so on. If you try this setup, I have one tip for you: Don’t attempt to click on anything when you boot in Parallels and Windows detects new hardware. Parallels will take care of everything, so just sit back and wait until the virtual machine is not working anymore.
And by the way: Running your Windows partition in Parallels doesn’t in any way change or harm the partition. You can always boot into Windows as usual, which is still necessary if you want to play a 3D game.
Agilists believe that good practices and processes can improve consistency but that repeatability – in the statistically controlled feedback loop sense of the term – is a fantasy. Unfortunately, it is a fantazy that many corporate executives believe in, and that belief exacerbates the dysfunctionality between product development and management. Executive management has been told that they can have it all, and they want to believe it. They are then disappointed when plans don’t work out. Their solution: more processes and more standards. Are traditionalists willing to commit to this view of repeatability as a problem rather than a solution? Agilists believe that change must be adapted to, that it can’t be planned away. You can have flexibility, or consistency, or some blend of both. But expecting a process or methodology to provide ultimate flexibility and complete predictability at the same stretches the limits of credulity.
Happy new year!
Hello, I'm Casper Fabricius. I have developed for the web for 10 years, and have been enjoying Ruby on Rails for the past 5.
My experience covers communities, shopping solutions, multi-language sites, heavy back-end lifting and a wide selection of more traditional websites. I like to integrate Ruby with Java and .NET through JRuby and IronRuby when it makes sense. I am passionate about test- and behavior-driven development, but at the same time I am pragmatic and believe in getting things done.
I live in Copenhagen, Denmark, where I work for a fantastic company: Podio. I do not currently take on freelance assignments.