This is the beginning of a journey. I have been developing in ColdFusion for almost exactly a decade now. I have begun the transition to developing in Ruby on Rails. This won’t be a comprehensive comparative analysis. This will be a personal (public) diary of the journey in the hopes that it will provide guidance to anyone in the same or a similar situation. Maybe it’ll be a little entertaining to everyone else.
A friend recently started her journey to learning more about server-side development, and I asked that she write about it as she learns. I hope she does, and I hope you check out her art and writing even before she starts. I was fascinated to read in a short Facebook post explaining how she views a journey I took some 15 years ago. So I had to admit that while my own similar journey feels boring enough to make Fight Club a six-minute film about curing insomnia, perhaps others would get a kick out of watching me struggle to bend servers to my will. If nothing else, I know schadenfreude is strong on the Internet because I visited reddit once.
So about the narrator: I make web applications. For business, for personal use, for fun, for profit and non-profit. I am employed as a “Web Developer” but really am a Senior Software Engineer, System Administrator (Linux), and Database Administrator. The projects I work on are small enough that a single person can reasonably perform those duties. I don’t manage a team of people, I manage the multiple facets of a team of applications.
I like ColdFusion. I like its tag-based syntax. The language does what I need to the point that any language can reasonably be expected to. The server installs on Linux and isn’t terribly difficult to set up. But it’s being neglected in my opinion. And where it isn’t being neglected, it’s got a skeleton crew. I know others don’t like the ColdFusion Server. I know others don’t like CFML. I know others disagree with what I’ve stated. It’s cool, guys and gals. I hear ya and often agree, and I like your panache. Looks like our mileage has varied, so whose round is it?
I’m not jumping off the ColdFusion boat because I think it’s sinking. This isn’t alarmist rhetoric. So why switch?
I want to develop faster at the current quality I can produce. I want to produce better quality, too(eventually). I want to adjust my paradigm to a more modern web architecture. And I want to keep coding fun. After examining as many web application frameworks as I could find, Ruby on Rails is my uninitiated favorite of all the frameworks that promise to do all the things I want.
I like the look of Ruby. With Ruby, I learn a way to do something. Then I attempt something parallel. I guess at a syntax and it works. That, for me, is an indication that I have rapport with a language. The same would be true of Python, but for whatever reason I simply like Ruby better.
In many ways, the selection of a programming language is like the selection of a romantic partner. There are practical considerations: are we compatible emotionally, intellectually, socially? But there are also the non-practical or subjective considerations. One might call them the “indefensible” considerations. Are they attractive to me? Do they hate mayonnaise as much as I do? When they laugh at my jokes, do I feel like their laughter means more than anyone else’s?
So I admittedly have some indefensible affection for Ruby. In the end, those are the real reasons I selected it. I think that may be true for many of us. We pretend that we picked Python or Go or Node.js or Angular/React/Ember for reasons that we can objectively lay out so that everyone knows we’re Good At Computer Talking™. I do have objective reasons, but really I just thought Ruby was the prettiest girl in the room at that party to which my friend made me go. And yes, I edited that sentence to avoid the ending preposition.
Here’s how I might be different than most people learning a new web framework: I don’t want to jump in and start coding right away. While I believe that some of the best education in programming is gained by failing to build things and breaking existing things and learning to succeed and fix, I’ve done that all before. I know it will happen no matter how much I prepare. But I still want to prepare.
So I’m reading. A lot. Online tutorials, published material, and videos. That’s where Part II will begin: the resources.