Confession: I'm not fond of greenfield projects. The blank canvas is not my friend. There are too many options. Too many decisions to make.
In many ways, this is what attracted me to Ruby on Rails.
Rails removed a shit load of decisions that, honestly, had long bored the fuck out of me. Which database abstraction library would we regret using? What HTML templating engine would we hate on this project? What testing framework would we argue with?
Ruby on Rails made the first stages of a greenfield project better for developers. I'm glad these conventions made it into the mainstream. We're all better off now.
Despite that, I don't find the pleasure in running
rails new_app_name that other developers appear to.
Why? I aspire to be the quasi-Werner Herzog...of code storytelling.
Please, pass me an older code base and challenge me to mend it. A Ruby on Rails code base is like any other, right? As I descend into the great unknown, I browse through controller code.
On February 17th, 2008, two developers set out on a mission to build a web application. What compelled them to choose Ruby on Rails? What do these unfamiliar patterns reveal about their previous programming experience? Was this a former Perl developer? What happened to Perl? Is Bricolage still a thing? I wouldn't have thought to use Ruby this way.
We spot other patterns. They're vastly different. Was this a different developer or had one of the original developers learn a new way of doing things? git blame holds the answer. I continue to connect the dots of what I've been challenged to repair.
How do these parts piece together?
The tests are all passing. I write a new test case in an attempt to reproduce the problem.
Is this their pulse or ours?
Will we ever be able to understand the vision of the developers across such an abyss of git commits?
Dwarfed by the total LOC and test to code ratio, sometimes I am overcome by a strange irrational sensation...as if I am disturbing the original developers in their work. Their eyes fixated on me.
I apply a modern approach to the problem while honoring the beautiful decisions of yesterday.
My changes appear to resolve the broken test case.
I commit and deploy my changes. Client notified.
We may never meet. Yet, I join an exclusive club with the past developers. Might they wonder what became of their code?
One step closer, the code becomes mine.
(Disclaimer: writing heavily inspired & lifted from Werner Herzog's "Cave of Forgotten Dreams" narration)