<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet href="/stylesheets/rss.css" type="text/css"?>
<rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:trackback="http://madskills.com/public/xml/rss/module/trackback/">
  <channel>
    <title>Robby on Rails: Tag refactoring</title>
    <link>http://www.robbyonrails.com/articles/tag/refactoring</link>
    <language>en-us</language>
    <ttl>40</ttl>
    <description>thoughts.sort_by{|t| t[:topic]}.collect </description>
    <item>
      <title>Put Your Controllers on a Diet already!</title>
      <description>&lt;p&gt;If you&amp;#8217;re working with Ruby on Rails and are looking for ways to improve your existing code base, I would encourage you all to read the following blog posts.&lt;/p&gt;


	&lt;ul&gt;
	&lt;li&gt;&lt;a href="http://weblog.jamisbuck.org/2006/10/18/skinny-controller-fat-model"&gt;Skinny Controller, Fat Model&lt;/a&gt;, Jamis Buck&lt;/li&gt;
		&lt;li&gt;&lt;a href="http://blog.imperialdune.com/2007/4/19/find-methods-in-controllers"&gt;Find methods in controllers&lt;/a&gt;, by Graeme Nelson&lt;/li&gt;
		&lt;li&gt;&lt;a href="http://www.therailsway.com/2007/6/1/railsconf-recap-skinny-controllers"&gt;RailsConf Recap: Skinny Controllers&lt;/a&gt;, The Rails Way&lt;/li&gt;
		&lt;li&gt;&lt;a href="http://blog.caboo.se/articles/2007/6/19/rspec-notes-from-the-trenches-2"&gt;Rspec notes from the trenches 2&lt;/a&gt;, by Courtenay&lt;/li&gt;
	&lt;/ul&gt;


	&lt;p&gt;Hopefully&amp;#8230; you&amp;#8217;ve already read each of them and as a result&amp;#8230; &lt;strong&gt;put your controllers on a diet&lt;/strong&gt;.&lt;/p&gt;
</description>
      <pubDate>Tue, 19 Jun 2007 08:16:00 -0500</pubDate>
      <guid isPermaLink="false">urn:uuid:6e2fb984-1fd2-413e-ae3b-7c3a12a2889a</guid>
      <author>Robby Russell</author>
      <link>http://www.robbyonrails.com/articles/2007/06/19/put-your-controllers-on-a-diet-already</link>
      <category>Ruby on Rails</category>
      <category>Programming</category>
      <category>models</category>
      <category>controllers</category>
      <category>rubyonrails</category>
      <category>rails</category>
      <category>refactoring</category>
    </item>
    <item>
      <title>Those that Tend the Store need Dialogue</title>
      <description>&lt;p&gt;I&amp;#8217;ve been keeping my eye on a series of blog posts by Chad Fowler, which he calls &lt;a href="http://chadfowler.com/2006/12/27/the-big-rewrite"&gt;The Big Rewrite&lt;/a&gt;.&lt;/p&gt;


	&lt;p&gt;Today, Chad posted an entry titled, &lt;a href="http://www.chadfowler.com/2007/1/4/who-s-tending-the-store"&gt;Who&amp;#8217;s Tending the Store?&lt;/a&gt; He writes&amp;#8230;&lt;/p&gt;


	&lt;blockquote&gt;
		&lt;p&gt;&lt;em&gt;&amp;#8220;the experts keep the old system running while the new system is being built. So, who builds the new system? Not the experts, that&amp;#8217;s who. Usually, it’s people like me: technology experts. And while we&amp;#8217;re banging away at the existing system&amp;#8217;s UI, trying to figure out what needs to be coded, the domain experts are doing their jobs. Unfortunately, this means the domain experts aren&amp;#8217;t watching the Big Rewrite very closely. Regardless of how good the team, if communication is impaired between the domain experts and the technology experts, things are going to move slowly, and wrong software is going to be created.&amp;#8221;&lt;/em&gt;&lt;/p&gt;
	&lt;/blockquote&gt;


	&lt;p&gt;I wanted to follow up on this issue as it&amp;#8217;s an area of great interest to me.&lt;/p&gt;


	&lt;p&gt;I feel like this issue runs deeper and while it&amp;#8217;s important to be mindful of the communication between domain and technology experts, it&amp;#8217;s a good idea for each of us to take a break every few days (or everyday) to assess our perceptions in all areas of the project. More specifically, I&amp;#8217;m suggesting that in order for us to be effective in our communication, we must make time to &lt;strong&gt;refactor our perceptions&lt;/strong&gt; about the state of a project. From the design, to the development, to team communication, to the schedule, and all the way to customer satisfaction&amp;#8230; or what Martin Fowler calls, &lt;a href="http://martinfowler.com/bliki/CustomerAffinity.html"&gt;Customer Affinity&lt;/a&gt;. These things are not static and we must see them as extremely dynamic variables&amp;#8230; much more dynamic than our &lt;a href="http://www.ruby-lang.org"&gt;wonderful language of choice&lt;/a&gt;.&lt;/p&gt;


	&lt;p&gt;When &lt;a href="http://blog.brightredglow.com/"&gt;Brian Ford&lt;/a&gt; and I started discussing &lt;a href="http://www.dialogue-driven.org/"&gt;Dialogue-Driven Development&lt;/a&gt; (d3), we were initially focused on an area that always seems to come up in projects. Client communication. From managing expectations to &lt;em&gt;delivering the right product&lt;/em&gt;, d3 has become an essential tool in our team&amp;#8217;s tool belt. We refactored our entire &lt;a href="http://www.planetargon.com/development.html"&gt;Design and Development&lt;/a&gt; process (and it&amp;#8217;s always evolving) to focus on &lt;a href="http://www.robbyonrails.com/articles/2006/09/27/project-enlightenment-with-d3"&gt;the things that we felt were the most important&lt;/a&gt; to a successful project. Clients come to us in search of expertise and guidance so that we can build them innovative solutions. When it comes to this process, &lt;a href="http://www.robbyonrails.com/articles/2006/08/06/clients-deserve-simplicity"&gt;clients deserve simplicity&lt;/a&gt;.&lt;/p&gt;


	&lt;h3&gt;For starters, we&amp;#8217;re misguided&lt;/h3&gt;


	&lt;p&gt;If there is one thing that I have learned, it is that our &lt;em&gt;initial perceptions are often misguided&lt;/em&gt;. We have to work really hard to think critically, not only of the problem we&amp;#8217;re trying to build a solution for, but also of how we, ourselves, are actually looking at the problem. It&amp;#8217;s easy to fall victim to tunnel vision. I often find myself having to take a step back from problems on a very regular basis. While I have no scientific proof to back this, it seems to feels natural for us to &lt;a href="http://blog.brightredglow.com/2006/8/29/tracer-bullets-are-about-aiming-not-firing"&gt;keep firing once we pull the trigger&lt;/a&gt;. It&amp;#8217;s important to re-aim.&lt;/p&gt;


	&lt;p&gt;Chad raises a very important topic and leaves readers to think about the problem. After thinking about this, it&amp;#8217;s my opinion that in order for the domain and technology experts to be effective, they &lt;a href="http://www.robbyonrails.com/articles/2006/10/18/teams-need-healthy-collaboration"&gt;need healthy collaboration&lt;/a&gt;. But, I feel like this applies to many other areas of our process as well.&lt;/p&gt;


	&lt;h3&gt;Is there even a problem?&lt;/h3&gt;


	&lt;p&gt;So, what is the solution? Better yet, what is the problem? Is there even a problem?&lt;/p&gt;


	&lt;p&gt;How can we avoid situations where communication becomes impaired? We&amp;#8217;ve all been there. We know how to spot impaired communication, but how can we spot it&amp;#8230; before we perceive it as &lt;em&gt;too late&lt;/em&gt;? How can we recover from it? What causes the communication to break down? What if&amp;#8230; it were possible to repair the situation?&lt;/p&gt;


	&lt;p&gt;These questions &lt;em&gt;don&amp;#8217;t&lt;/em&gt; have easy answers. These are complicated problems that reach &lt;em&gt;far beyond&lt;/em&gt; the development community. These are the same problems that all members of organizations, communities, countries, and &lt;a href="http://www.planetargon.com/about.html"&gt;planets&lt;/a&gt; all face, each and every day.&lt;/p&gt;


	&lt;h3&gt;Take action!&lt;/h3&gt;


	&lt;p&gt;While it&amp;#8217;s important to make sure we&amp;#8217;re engaging in healthy dialogue through a project, bad things will happen. They are inevitable. As Agilists, we&amp;#8217;re accepting this as a fact of (project) life and should be prepared to take action. If you see communication being impaired, it&amp;#8217;s time to step up and help the team out. Otherwise, you&amp;#8217;re only hurting yourself&amp;#8230; and your colleagues.&lt;/p&gt;


	&lt;blockquote&gt;
		&lt;p&gt;&lt;em&gt;&amp;#8220;Be the change you wish to see in the world.&amp;#8221;&lt;/em&gt;&amp;#8212;Mahatma Gandhi&lt;/p&gt;
	&lt;/blockquote&gt;


	&lt;p&gt;If these sorts of topics are of interest to you, I encourage you to join the &lt;a href="http://dialogue-driven.org/community"&gt;Dialogue-Driven community&lt;/a&gt; and help us figure this stuff out!&lt;/p&gt;
</description>
      <pubDate>Thu, 04 Jan 2007 17:18:00 -0600</pubDate>
      <guid isPermaLink="false">urn:uuid:4a80dd67-6ada-4bcf-8c98-08625306346f</guid>
      <author>Robby Russell</author>
      <link>http://www.robbyonrails.com/articles/2007/01/04/those-that-tend-the-store-need-dialogue</link>
      <category>Business</category>
      <category>Programming</category>
      <category>d3</category>
      <category>PLANET ARGON</category>
      <category>dialogue</category>
      <category>clients</category>
      <category>communication</category>
      <category>chadfowler</category>
      <category>perceptions</category>
      <category>refactoring</category>
      <category>agile</category>
      <category>solutions</category>
      <category>problems</category>
    </item>
    <item>
      <title>Ruby on Rails, Refactoring Databases, and the Legacy System</title>
      <description>&lt;p&gt;To avoid feeling like I have neglected my blog lately&amp;#8230; I wanted to point out a few things.&lt;/p&gt;


	&lt;p&gt;First of all&amp;#8230; there is a nice new book that was sitting at &lt;a href="http://www.powells.com/"&gt;Powells&lt;/a&gt; technical bookstore just a few hours ago&amp;#8230; and is now sitting on my desk. I read a few pages on the bus ride home today of &lt;a href="http://www.powells.com/biblio/71-0321293533-0"&gt;Refactoring Database: Evolutionary Database Design&lt;/a&gt;. It&amp;#8217;s a &lt;a href="http://www.martinfowler.com/"&gt;Martin Fowler&lt;/a&gt; signature book and you can read more by Scott W. Ambler (one of the authors) at &lt;a href="http://www.agiledata.org"&gt;Agile Data&lt;/a&gt;. So far it seems like a good book if you&amp;#8217;re into database schemas and if your a fan of the &lt;a href="http://www.refactoring.com/"&gt;Refactoring&lt;/a&gt; scene. :-)&lt;/p&gt;


	&lt;p&gt;In other news&amp;#8230; &lt;a href="http://jvoorhis.com"&gt;Jeremy&lt;/a&gt; and I are preparing for our journey up to Vancouver, B.C. this week. Jeremy will be presenting his talk about i18n and Ruby on Rails&amp;#8230; and I&amp;#8217;ll be presenting my talk about using Ruby on Rails with Legacy databases. I look forward to meeting those of you who are making the trip to &lt;a href="http://www.canadaonrails.org"&gt;Canada on Rails&lt;/a&gt; (which is &lt;strong&gt;sold-out&lt;/strong&gt;!) and if you don&amp;#8217;t catch us there&amp;#8230; we will also be presenting at &lt;a href="http://railsconf.org"&gt;RailsConf 2006&lt;/a&gt;!&lt;/p&gt;


	&lt;p&gt;If you&amp;#8217;re going to be in Vancouver this week and would like to meet us for some drinks, hacking, or whatever&amp;#8230; stop by on &lt;strong&gt;#canadaonrails&lt;/strong&gt; (irc.freenode.net) and let us know. :-)&lt;/p&gt;


	&lt;h3&gt;Related Post(s)&lt;/h3&gt;


	&lt;ul&gt;
	&lt;li&gt;&lt;a href="http://www.robbyonrails.com/articles/2005/07/25/the-legacy-of-databases-with-rails"&gt;The legacy of databases with Rails&lt;/a&gt;&lt;/li&gt;
		&lt;li&gt;&lt;a href="http://robbyonrails.com/articles/2005/09/27/the-bitter-sweet-taste-of-agnostic-database-schemas"&gt;The bitter-sweat taste of agnostic database schemas&lt;/a&gt;&lt;/li&gt;
	&lt;/ul&gt;
</description>
      <pubDate>Mon, 10 Apr 2006 20:11:00 -0500</pubDate>
      <guid isPermaLink="false">urn:uuid:4a46ea3d-3451-44bf-af61-8e3cb7ed9da6</guid>
      <author>Robby Russell</author>
      <link>http://www.robbyonrails.com/articles/2006/04/10/ruby-on-rails-refactoring-databases-and-the-legacy-system</link>
      <category>Ruby on Rails</category>
      <category>Ruby</category>
      <category>Programming</category>
      <category>PostgreSQL</category>
      <category>rails</category>
      <category>refactoring</category>
      <category>databases</category>
      <category>legacy</category>
      <category>canada</category>
    </item>
    <item>
      <title>Refactoring and the Pacific Ocean</title>
      <description>&lt;p&gt;I am currently sitting in a hotel about 40 miles north of San Francisco. One more day on-site and then I fly home to Portland, so I can drive to Seattle for a day of rest. I might be back down here in a week or so.&lt;/p&gt;


	&lt;p&gt;I took a photo of the luggage of &lt;a href="http://jvoorhis.com"&gt;Jeremy&lt;/a&gt;... it was too funny to pass up.&lt;/p&gt;


	&lt;p&gt;&lt;a href="http://www.flickr.com/photos/planetargon/65860873/" title="Photo Sharing"&gt;&lt;img src="http://static.flickr.com/30/65860873_6dd74ca985_m.jpg" width="240" height="180" alt="Jeremy Refactors Luggage" /&gt;&lt;/a&gt;&lt;/p&gt;


	&lt;p&gt;He takes great pride in his packing&amp;#8230; just like he does with the code that he designs. It was great that we fit in a few minutes for him to take his first real look at the Pacific Ocean.&lt;/p&gt;


	&lt;p&gt;&lt;a href="http://www.flickr.com/photos/planetargon/65865149/" title="Photo Sharing"&gt;&lt;img src="http://static.flickr.com/30/65865149_d10225ef6b_m.jpg" width="180" height="240" alt="jvoorhis sees the Pacific" /&gt;&lt;/a&gt;&lt;/p&gt;


	&lt;p&gt;I&amp;#8217;ve been meaning to post those&amp;#8230; so there you have them. :-)&lt;/p&gt;
</description>
      <pubDate>Tue, 22 Nov 2005 06:59:00 -0600</pubDate>
      <guid isPermaLink="false">urn:uuid:9a665f7bdaf270a7114d27e9610bd6eb</guid>
      <author>Robby Russell</author>
      <link>http://www.robbyonrails.com/articles/2005/11/22/refactoring-and-the-pacific-ocean</link>
      <category>Ruby on Rails</category>
      <category>Programming</category>
      <category>jvoorhis</category>
      <category>refactoring</category>
      <category>travel</category>
    </item>
    <item>
      <title>Refactoring Rails... coming soon</title>
      <description>&lt;p&gt;As you may have heard earlier, &lt;a href="http://www.jvoorhis.com/"&gt;Jeremy Voorhis&lt;/a&gt; and I are working on a &lt;a href="http://www.jvoorhis.com/articles/2005/10/27/introducing-refactoring-rails"&gt;top-secret project&lt;/a&gt; together. We&amp;#8217;re going to keep things quiet for just a bit longer while we get an initial site together. In the meantime, sign up on our mailing list to be notified when we launch it.&lt;/p&gt;


	&lt;p&gt;We present to you&amp;#8230;. &lt;a href="http://www.refactoringrails.com"&gt;Refactoring Rails&lt;/a&gt;.&lt;/p&gt;


	&lt;p&gt;&lt;a href="http://www.refactoringrails.com"&gt;&lt;img src="http://www.refactoringrails.com/refactoringrailssmall.jpg" alt="" /&gt;&lt;/a&gt;&lt;/p&gt;


	&lt;p&gt;&lt;a href="http://www.jvoorhis.com/"&gt;Jeremy&lt;/a&gt; posted a short teaser on his blog and we&amp;#8217;ll just keep you in suspense&amp;#8230; but keep an eye out in the coming week(s). :-)&lt;/p&gt;


	&lt;p&gt;For more information, bookmark: &lt;a href="http://www.refactoringrails.com"&gt;http://www.refactoringrails.com&lt;/a&gt;&lt;/p&gt;


	&lt;p&gt;&lt;em&gt;&amp;#8220;Remove ambiguities and convert to specifics&amp;#8221;&lt;/em&gt; &amp;#8211; &lt;strong&gt;Brian Eno&lt;/strong&gt;, Oblique Strategies&lt;/p&gt;
</description>
      <pubDate>Thu, 27 Oct 2005 14:30:00 -0500</pubDate>
      <guid isPermaLink="false">urn:uuid:35ca2fcb44f472a9b46f97d81fe65596</guid>
      <author>Robby Russell</author>
      <link>http://www.robbyonrails.com/articles/2005/10/27/refactoring-rails-coming-soon</link>
      <category>Ruby on Rails</category>
      <category>Ruby</category>
      <category>Programming</category>
      <category>refactoring</category>
      <category>rails</category>
      <category>ruby</category>
      <category>programming</category>
    </item>
    <item>
      <title>The Zen of Ruby on Rails</title>
      <description>&lt;p&gt;It&amp;#8217;s 1:30PM &lt;span class="caps"&gt;&lt;span class="caps"&gt;PST&lt;/span&gt;&lt;/span&gt;, and I am about to devote the next several hours to programming with &lt;a href="http://www.rubyonrails.com/"&gt;Ruby on Rails&lt;/a&gt;. I haven&amp;#8217;t been able to spend much time the last several days as I have been wrapping up a project that was started in &lt;span class="caps"&gt;&lt;span class="caps"&gt;PHP&lt;/span&gt;&lt;/span&gt;. I ended up spending about 7 hours the other day &lt;a href="http://www.refactoring.com/"&gt;Refactoring&lt;/a&gt; a good chunk of the code base, using many of the examples outlined in &lt;a href="http://rubyurl.com/JhrDD"&gt;Fowler&amp;#8217;s book&lt;/a&gt; (&lt;a href="http://www.refactoring.com/catalog/"&gt;catalog&lt;/a&gt;). &lt;a href="http://www.oreillynet.com/pub/au/1841"&gt;Derek Sivers&lt;/a&gt; suggested this book last winter when I had the privilege of meeting him and discussing programming a bit. The book has been on my desk more than any other book since I purchased it at Powells in December.&lt;/p&gt;

    &lt;p&gt;Part of me wished that there was a good implementation of Active Record in &lt;span class="caps"&gt;&lt;span class="caps"&gt;PHP&lt;/span&gt;&lt;/span&gt;, so I debated writing it, but came across &lt;a href="http://sneer.org/archives/2005/01/02/active_record_in_php_5_part_1/"&gt;this&lt;/a&gt; from January. The author seems to use &lt;a href="http://www.rubyonrails.com/"&gt;Ruby on Rails&lt;/a&gt;. I might get around to playing with it soon and see if it&amp;#8217;ll make my &lt;span class="caps"&gt;&lt;span class="caps"&gt;PHP&lt;/span&gt;&lt;/span&gt; work a little less gruesome. :-)&lt;/p&gt;

    &lt;p&gt;In other news, my clients Rails-based application is coming along nicely. &lt;strong&gt;grins more&lt;/strong&gt;&lt;/p&gt;

    &lt;p&gt;I am probably going to order a few books this week to promote some more best practice approaches to OO. If anyone has some good suggestions, feel free to comment and share the titles.&lt;/p&gt;

    &lt;p&gt;Cheers&lt;/p&gt;
</description>
      <pubDate>Sun, 10 Apr 2005 20:46:00 -0500</pubDate>
      <guid isPermaLink="false">urn:uuid:efe9b204f07de748d840d1b22f7310fc</guid>
      <author>Robby Russell</author>
      <link>http://www.robbyonrails.com/articles/2005/04/10/the-zen-of-ruby-on-rails</link>
      <category>Ruby on Rails</category>
      <category>refactoring</category>
      <category>cdbaby</category>
      <category>ruby</category>
      <category>rails</category>
    </item>
  </channel>
</rss>
