Sunday, May 9, 2010

Here we go again; where is my mind?

Something is itching at my mind and I haven't given it a name or a face yet. Whether I use Ruby, Java, C#, Scala or Javascript, it doesn't matter. They're details. When you go to Facebook do you think "Wow, this really feels like PHP." or when you hit Twitter do you sense the presence of Ruby and Erlang? Not so much. Then what counts here? What is it that matters?

Software is just a means to an end. I'm not in the business of writing code, I'm in the business of creating tools. Software just happens to be the vehicle in which I deliver them. You need a tool that will remind you to call your mother on her birthday? I'll write software that generates email reminders for important dates. Alternatively, I could have created a phone service that would call your home or cell phone as a reminder. Maybe I could create a network of carrier pigeons that did the same. Unfortunate for the pigeon trade and call centers, writing software is a lot cheaper and maintainable. Do you see what I'm getting at though?

It's more about what I'm delivering than it is how I deliver it. And, for me, the "how" is no longer so narrow. I'm not just a .NET developer and I'm more than comfortable stepping outside of the MS world. I've learned a fair number of engineering practices and principles that are language agnostic like DRY, YAGNI and some of SOLID. I can pick things up quickly no matter which language I choose to use. It's satisfying to know that within 2 weeks of reading and practicing, I have a fairly good idea of how I'd do modular development in Ruby and I even grok some of the deeper concepts like Ruby's compositional nature and metaprogramming.

One benefit of this line of thinking is that I'm no longer narrowing my vision to how I build what the customer wants. I have a much broader perspective of the business I'm in. Ultimately, I'm sure 98% of what I make will be a software product but someday there's going to be something that I think of that can be better serviced with a non-software solution. If I'm lucky, nobody else will be doing it and I can make my fortune from it.

What drove me to this whole post is that I'm trying to figure out what I'd like to create with my new found Ruby skillz. It dawned on me that, while Ruby is a blast to use, it's just the details. The hard work is figuring out what the hell I want to bring to the world. What's my product? What's my vision? What do people want? That's the new mental hurdle for me now.

Sunday, May 2, 2010

Ruby is cool, Time for Rails

I've spent the last couple weeks reading about the fine details of Ruby. My first impressions are good. I dig the language. I haven't put it to good use yet though. Mostly just dicking around in IRB and putting some small classes and modules together. I've been using RubyMine and NetBeans but I haven't had any clear winner on a Ruby IDE. Again, I think once I get into actually writing an application I'll have something more to substantial to share in that regard. Or maybe I'll shed my dependencies to a GUI and go all command line...well, let's not go overboard here. One thing at a time.

Now the next thing to check out is Rails. On first blush, I can see where ASP.NET MVC gets its influence. They share a similar DSL and even class/method names are echoed between the two. But, once again, I'm starved for details. I don't have any books on Rails so I may have to shop for one. I'm mostly just putzing around with what I know from ASP.NET MVC. Did I mention that they're close relatives?