---
title: 'Unpopular Developer 4: Separation Anxiety, Part The First'
teaser:
tags: web,rails
author: Floyd Wright
published_on: 2007-08-20
---

## REST & DDD

That, however, brings me to some remaining gripes, which are increasingly
oriented toward the repercussions of implementing design driven development
(don't get me wrong, DDD itself is not merely a practical, but arguably the best
way to approach software design, at least on the web-but I'm don't want to get
into that here).  I think it is telling that DHH's keynote at RailsConf was not
quite as tumultuous this year, as compared to the announcement of Rail's
commitment to <abbr title="Representational State Transfer">REST</abbr>; he even
took the time to reflect on that fact and defend it as a natural consequence of
the growing maturity of the framework.  But I think it also indicates that <abbr
title="Representational State Transfer">REST</abbr> may be Rails' best
achievement to date-the ultimate convention of simplicity.  As a developer, the
immediate benefits of <abbr title="Representational State Transfer">REST</abbr>
in terms of 'for free' setup it offers (I was giddy for hours after my first
scaffold_resource) have given may to an almost mystical devotion to the purity
of my controllers.

After pathetic attempts to get them to fit in as 9-5ers, it has become achingly
obvious that they just aren't cut out for
[business](https://en.wikipedia.org/wiki/Business_logic).  They just can't take
the pressure.  They need a day off, maybe even a relocation to
[France](https://en.wikipedia.org/wiki/35-hour_workweek).  The most they can
handle and still maintain a friendly demeanor when they come home to their model
spouses is a few quick GET/PUT operations.  Why are they so overworked?
_Because they are enslaved by capitalist pig-dogs_, also somewhat more commonly
known as views.  And nobody seems to notice, or care, not even the <acronym
title="Association for the Freedom and Laziness of Carriers of Information
Objects">AFLCIO</acronym>, because these views were spec'd by clients, mocked
out by professionals, and look pretty damn fine.  Pretty people catch all the
breaks.

## Conflict & Divorce

I am consistently having to implement unconventional logic, aka **glaring
hacks** in my controllers to get them to display views correctly, and it makes
me cry, if only a little, on the inside, at night when [I've had a bit too
much](http://images.thoughtbot.com/ui/2007-7-13-floyd_1.jpg).  What sort of
hacks?  Well...hacks like
[this](https://thoughtbot.com/blog/its-the-wiz-and-nooobody-beats-it) (with the
apologies to the code coach).  New actions that fetch 3-4 objects.  Update
actions which create objects and redirect to arbitrary locations.  Show actions
which render editing forms.  Is this my fault?  Am I the cause of all this
tension in my family of apps?  NO! my RESTful therapy assures me  What is this a
violation of? Separation! What do we want? Dumber controllers!  When do we want
it? ASAP! YEÅH? OH YËAH!

By now, you've finally actually realized that I'm complaining about the lack of
separation between <abbr title="HyperText Markup Language">HTML</abbr> requests
and controller responses.  As ludicrous as it sounds, I believe that one of the
most pressing issues in practical Rails development right now is disassociating
views from controllers, so no matter what your page layout is, your controllers
are free to be who they want to be: lazy, dumb and thin.  Bizarrely, this will
make them more popular with the ladies _and_ the gents.  Right now I'm seeing
90% of bugs generated by unconventional controller logic, rather than relatively
stable view implementations, or well-tested model classes.  But even in
principle, if a view specification calls for a form with particular objects and
and buttons and links which go to other views, the view logic should take care
of making that happen.  Don't ask the controllers to do it, they're already
bringing home the data-bacon, what more do you want ?!1

In conclusion, do I have a practical solution for this?  No.  Well, there's
[this](https://thoughtbot.com/blog/and-then-there-was).  And for now, that's
all there is, a flashy graphic to tattoo on your face to cover your shame.  But,
also yes....if you're willing to take the plunge....next week.

_To be continued!_
