How do you design your RoR web applications?

Jose Pepe wrote:

Here is my question: how do you design your RoR web application?

The best way to design is concurrent with delivering features. We
start by asking our customers (in our specific case the marketing
department) what the most important features are. We implement these
quickly, using unit tests to avoid debugging.

That's a big step towards a good design, because making code testable
invariably decouples it and improves its design.

- Do you use an OOAD approach? data model/ class diagram, use cases?

No, because we can go from simple to complex incrementally, in between
delivering features.

- Do you desing your web pages first?

No, because if we start with business user stories, we must implement
a little of a web page, implement a little code, and deploy, in small
cycles. So the web pages grow features incrementally.

- Do you start coding without desinging first?

Abso-freakin-lutely.

- Do you use other tools such as Dreamweaver to create your pages, and
from there convert them in rhtml code?

Our graphics department does that. The important part, for
programmers, is the interactive features, and there are only so many
of those.

- Do you use any quality assurance and quality control process?

We use the unit tests to gate every commit, and we commit every 10 or
15 minutes or so to Subversion. If the tests don't pass, we don't
commit.

- Which other practical tips would you share that facilitate working
with RoR?

We also use pair programming, including dual keyboards and such. We
are "allowed" to solo, but the more important the feature, the more
likely we are to pair.

The less important the feature, the less likely we are to do it!