Hacker News new | past | comments | ask | show | jobs | submit login

Rails (really Ruby) has only one thing going for it, as far as I'm concerned:

The norm in the community is to actively refactor.

That's it. When the Rails folks redesign the routes system, not only does my app get cleaner, but I learn stuff about how to write a good DSL. When Blake Mizerany wrote Sinatra, not only did we all get a super simple new tool for prototyping web apps in, like, zero seconds.... but we all learned something about how far you can take the "hello world" simplification trend.

We're all trying to get better at programming. We're all trying to advance the state of the art in software design. And we're all learning from each other, and it's awesome.

In many ways it's just a microcosm of what's happening in the Open Source world at large. Node.js is teaching Ruby devs important stuff, just as the Node authors seem like they probably took a cue or two from Sinatra. It's why I left the Microsoft world years ago.

Loose federations of heterogenous interests with high incentives to integrate are so much more interesting than centralized organizations.

IMNSHO, the norm in the ruby community as of late as not been refactor, but rewrite.

When the rails folk redesign the route system it's not a refactoring cause a refactoring keeps functionalities unchanged, it does not add/remove/change corner cases. Which has happened in all major rails releases and some point ones.

It wasn't a rewrite. The point of TDD-assisted refactoring isn't to not change anything ever, it's to change things in a controlled way and prevent regressions. It was actually pretty interesting to watch carlhuda and the rails team take rails from 2.3 to 3.0.

That simply isn't true. I'd urge you to pick up a copy of Fowler's "Refactoring: Improving the Design of Existing Code."

"Refactoring" as a term was defined in that book. It has very much been diluted into "I changed some code because I think this is better," which is a shame because it has a very clear definition.

I should also note that having a test suite allows you to refactor with more confidence, but it's neither a requirement nor changes the definition at all. So a "TDD-assisted refactoring" isn't different from a "refactoring."

Guidelines | FAQ | Lists | API | Security | Legal | Apply to YC | Contact