DISCLAIMER – I want to clarify the title that I will be using for this series of posts. I know what Ruby on Rails is, but I am taking a different approach. I am learning Ruby, the language, while also working with Rails, the framework. So I am digging through the famous Pickaxe book to learn about the language of Ruby and I am also working through Rails3 in Action. This is the story of my journey.
I can sit here and write to you about the “beauty” of the Ruby language, but there are many posts across the web that already do just that to the nth degree. What I am intrigued by is the “culture” surrounding the Ruby and Rails ecosystem. Everything, and I mean EVERYTHING, seems to be based on an agile culture that is surrounded by testing.
When I write “testing” I am not referring to unit tests, but rather test driven development, behavior driven development, 100% coverage; not 85% coverage. The mind set is, if you are going to use this technology you better be prepared to commit your soul to testing. While this may sound extreme it is rapidly becoming apparent to me that we should not be merely programmers, but craftsmen! So far I have found this attitude to be less about the “goodness” of the technology, but the process of developing high quality software.
Ruby is a cool language, in my opinion, but it doesn’t make me want to curse all other languages and use only Ruby. After all, that would deviate from the overarching theme that I have picked up on in posts, books, examples, and communications with “Rubyists”. There is no “silver bullet,” or a one tool fixes all problems attitude. (At least from the vibe I am getting from the “true” practitioners)
To tell the truth I wish that the Flex and ActionScript communities stressed testing, specifically TDD and BDD, instead of treating it as a distant afterthought. I am not singling out the ActionScript community on purpose, as I have noticed this same scenario in a lot of language based communities, just using it as an example.
To summarize part 1 – I can simply say that I am becoming very aware of practicing techniques that will make me a craftsman, not a developer/programmer. Cucumber and RSpec are awesome (testing frameworks), and my goals for the next week are to continue forcing myself to follow TDD and BDD principles. But, the bigger goal is to figure out how to apply TDD and BDD to my ActionScript and Flex world. How can I never write another line of code I might need, and only write what I do need, in any language? This is a very powerful statement as to the benefits of considering the “approach” versus the technology.
This is what I have learned in my first week of Ruby and Rails development. Until next time…