<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>AgileAndArt</title>
	<atom:link href="http://www.agileandart.com/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.agileandart.com</link>
	<description>The Art Improving Agile Software Development</description>
	<lastBuildDate>Sun, 21 Apr 2013 22:45:53 +0000</lastBuildDate>
	<language>en-US</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.5.1</generator>
		<item>
		<title>Migrating from RubyOnRails to Scala Play 2.0 (part 1)</title>
		<link>http://www.agileandart.com/2013/01/09/migrating-from-rubyonrails-to-scala-play-2-0-part-1/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=migrating-from-rubyonrails-to-scala-play-2-0-part-1</link>
		<comments>http://www.agileandart.com/2013/01/09/migrating-from-rubyonrails-to-scala-play-2-0-part-1/#comments</comments>
		<pubDate>Wed, 09 Jan 2013 00:19:54 +0000</pubDate>
		<dc:creator>Daniel Cukier</dc:creator>
				<category><![CDATA[Programming]]></category>
		<category><![CDATA[Technology]]></category>
		<category><![CDATA[cantora]]></category>
		<category><![CDATA[controller]]></category>
		<category><![CDATA[daniella alcarpe]]></category>
		<category><![CDATA[heroku]]></category>
		<category><![CDATA[migration]]></category>
		<category><![CDATA[mvc]]></category>
		<category><![CDATA[play]]></category>
		<category><![CDATA[play 2.0]]></category>
		<category><![CDATA[playframework]]></category>
		<category><![CDATA[rails]]></category>
		<category><![CDATA[rubyonrails]]></category>
		<category><![CDATA[scala]]></category>

		<guid isPermaLink="false">http://www.agileandart.com/?p=789</guid>
		<description><![CDATA[The last week I was on vacation and I used the time to study a new technology (things that nowadays I don&#8217;t have time to do in daily life). I decided to migrate my wife&#8217;s website (for those who don&#8217;t know, my wife is the very famous brazilian singer Daniella Alcarpe, known also as @cantora). The [...]]]></description>
				<content:encoded><![CDATA[<p><img class="alignleft" style="margin: 10px;" src="http://www.playframework.org/assets/images/logos/normal.png" alt="" width="344" height="115" />The last week I was on vacation and I used the time to study a new technology (things that nowadays I don&#8217;t have time to do in daily life).</p>
<p>I decided to migrate my <a href="http://www.cantora.mus.br">wife&#8217;s website</a> (for those who don&#8217;t know, my wife is the very famous brazilian singer Daniella Alcarpe, known also as <a href="http://www.cantora.mus.br">@cantora</a>).</p>
<p>The website is quite simple and easy to develop. Actually, there is no rocket science at all in everything I did. But I had a lot of fun and I learn a lot of things. This post cannot be used as a <strong>complete</strong> migration plan for those who want to migrate from Rails to Play, but it will give you an idea of the work you will have. Basically, you will have to re-write everything from scratch&#8230; <img src='http://www.agileandart.com/wp-includes/images/smilies/icon_smile.gif' alt=':-)' class='wp-smiley' />  or almost this&#8230;<br />
<span id="more-789"></span></p>
<h3>First steps</h3>
<p>The first thing I did was to visit the <a href="http://www.playframework.org/">Play 2.0 website</a> and follow the <a href="http://www.playframework.org/documentation/2.0.4/ScalaTodoList">First Application Tutorial</a>. I did both the Scala and the Java Tutorial. The tutorial is very easy to follow. It is well written, no big deal. One important thing to say is that I already studied Scala for six month last year, in my PhD class, so I was confortable with Scala. For those who never saw Scala, I suggest to read the book <a href="http://www.artima.com/shop/programming_in_scala_2ed">Programming in Scala 2nd Edition</a>. I decided than to create the @cantora&#8217;s website in Scala, because it is a language that I love. It is very fun to write code in Scala!</p>
<p>I also decided to <a href="http://github.com/danicuki/cantora">open the source of the @cantora&#8217;s website</a>, so people can follow my steps (and maybe help to improve the site, or use it for other artists website).</p>
<p>I created a play project using the command</p>

<div class="wp_syntax"><table><tr><td class="code"><pre class="bash" style="font-family:monospace;"><span style="color: #666666;">$ </span>play new cantora</pre></td></tr></table></div>

<p>Then, I started to migrate the file <strong>app/views/layouts/application.html.erb</strong> in the old Rails application to the <strong>app/views/main.scala.html </strong>in the newly created Play 2.0 one.</p>
<p>The website has a dynamic title, which is set up using <strong>content_for</strong> block.</p>
<p><span style="text-decoration: underline;"><em>Rails code:</em></span></p>
<p>[html]&lt;title&gt;&lt;%= t(&#8220;site.title&#8221;) %&gt; &#8211; &lt;%= yield(:title) %&gt;&lt;/title&gt;[/html]</p>
<p><span style="text-decoration: underline;"><em>Scala Code:</em></span></p>
<p>[html]&lt;title&gt;@Messages(&#8220;site.title&#8221;) &#8211; @title&lt;/title&gt;[/html]</p>
<p>Note that the title is now a variable that I will pass to the layout, so my main.scala.html first line is:</p>
<p>[scala]@(title: String)(content: Html)[/scala]</p>
<p>I also had to change every <strong>t(&#8220;key&#8221;)</strong> for <strong>@Messages(&#8220;key&#8221;)</strong>. Off course I used a regular expression replace to do it in all files.</p>
<p>Stylesheets and Javascripts, which usually are a one line of code in Rails required a more &#8220;hardcoded&#8221; solution in Scala.</p>
<p><span style="text-decoration: underline;"><em>Rails code:</em></span></p>
<p>[ruby]&lt;%= javascript_include_tag :all, :cache =&gt; true %&gt; &lt;%= stylesheet_link_tag :all, :cache =&gt; true %&gt;[/ruby]</p>
<p><span style="text-decoration: underline;"><em>Scala code:</em></span></p>
<p>[html]<br />
&lt;link rel=&#8221;stylesheet&#8221; media=&#8221;screen&#8221; href=&#8221;@routes.Assets.at(&#8220;stylesheets/grid.css&#8221;)&#8221;&gt;<br />
&lt;link rel=&#8221;stylesheet&#8221; media=&#8221;screen&#8221; href=&#8221;@routes.Assets.at(&#8220;stylesheets/style.css&#8221;)&#8221;&gt;<br />
&lt;link rel=&#8221;stylesheet&#8221; media=&#8221;screen&#8221; href=&#8221;@routes.Assets.at(&#8220;stylesheets/galleriffic.css&#8221;)&#8221;&gt;<br />
&lt;script src=&#8221;@routes.Assets.at(&#8220;javascripts/applicaton.js&#8221;)&#8221; type=&#8221;text/javascript&#8221;&gt;&lt;/script&gt;<br />
&lt;script src=&#8221;@routes.Assets.at(&#8220;javascripts/jquery-galletiffic.js&#8221;)&#8221; type=&#8221;text/javascript&#8221;&gt;&lt;/script&gt;<br />
&lt;script src=&#8221;@routes.Assets.at(&#8220;javascripts/jquery.js&#8221;)&#8221; type=&#8221;text/javascript&#8221;&gt;&lt;/script&gt;<br />
&lt;script src=&#8221;@routes.Assets.at(&#8220;javascripts/jquery.youtubeplaylist.js&#8221;)&#8221; type=&#8221;text/javascript&#8221;&gt;&lt;/script&gt;<br />
[/html]</p>
<p>Then I link in the main menu I had to replace for the Play 2.0 routes system:</p>
<p><em><span style="text-decoration: underline;">Rails Code<br />
</span></em></p>
<p>[html]&lt;li class=&#8221;menu&#8221;&gt;&lt;%= link_to &#8220;#{t(&#8216;site.singer&#8217;)}&#8221;, {:controller =&gt; &#8220;cantora&#8221;} %&gt;&lt;/li&gt;[/html]</p>
<p><em><span style="text-decoration: underline;">Scala Code</span></em></p>
<p>[html]&lt;li class=&#8221;menu&#8221;&gt;&lt;a href=&#8221;@routes.Application.cantora&#8221;&gt;@Messages(&#8220;site.singer&#8221;)&lt;/a&gt;&lt;/li&gt;[/html]</p>
<p>For this work, I had to add every route in the Play routes file. Different from Rails, that assumes your route based on controller and method name, you have to explicitly set the routes for every controller method. Actually I think this is not so bad. And if you want, you can easily create this &#8220;convention over configuration&#8221; scheme in Scala. So I added to the routes file:</p>
<pre>GET     /cantora                           controllers.Application.cantora
GET     /musicas                           controllers.Application.music
GET     /agenda                           controllers.Application.shows
GET     /novidades                           controllers.Application.news</pre>
<pre>...</pre>
<p>I have created every method in the default Application Controller:<br />
[scala]<br />
def cantora = Action { implicit request =&gt;; Ok(views.html.cantora()) }<br />
def music = Action { implicit request =&gt;; Ok(views.html.music()) }<br />
def shows = Action { implicit request =&gt; Ok(views.html.shows()) }<br />
def news = Action { implicit request =&gt; Ok(views.html.news()) }<br />
[/scala]</p>
<p>And also a view file for every action I had. Then, <strong>app/views/[controller_name]/index.erb.html</strong> became <strong>app/views/[method_name].scala.html</strong></p>
<p>Most of my controllers had just one default index action. Those who had more than the default index method, I choosed another action name for it and used the same pattern.</p>
<h3>Calling web services from a Play 2.0 application</h3>
<p>The @cantora&#8217;s website looks very simple, but there are some very interesting integrations in the back-end of it, which turns it into a very interesting website for the artist:</p>
<ol>
<li>All videos in the videos session are automatically imported from the artist channel</li>
<li>All photos in the photos session are automatically imported from the photos posted in the Facebook Artist Fan Page</li>
<li>The tweets in the social page are imported from the artist timeline</li>
<li>Shows are an embedded Google Agenda</li>
<li>News are from the artist Fan Page timeline</li>
<li>Every time someone register for music download, this record goes automatically to the artist email marketing database (integrated with Mailee API)</li>
</ol>
<p>Off course I needed to maintain all this features in the Play 2.0 version. The features 4 and 5 are trivial, since no back-end code is necessary, all code is HTML and javascript, the same in both Rails and Play version of the website</p>
<p>But for features 1, 2, 3 and 6, I had to re-write the code, which is pretty simple, except for the Mailee API integration, which gave me some extra effort.</p>
<p>For the videos (1)</p>
<p><span style="text-decoration: underline;"><em>Rails Controller Code:<br />
</em></span></p>
<pre>[ruby]
require 'restclient'

class VideosController &lt; ApplicationController
  caches_action :index

  def index
    uri = "http://gdata.youtube.com/feeds/api/users/daniellaalcarpe/uploads"
    video_feed = RestClient.get(uri)
    @videos = Hash.from_xml(video_feed)['feed']['entry']
  end
end
[/ruby]</pre>
<p><span style="text-decoration: underline;"><em>Scala Controller Code:</em></span></p>
<pre>[scala]
def videos = Cached("videos", 18000) {
    Action { implicit request =&gt;
      Async {
        val uri = "http://gdata.youtube.com/feeds/api/users/daniellaalcarpe/uploads"
        WS.url(uri).get().map { response =&gt;
          Ok(views.html.videos(response.xml \ "entry"))
        }
      }
    }
  }
[/scala]</pre>
<p>And the views are also a little bit different:</p>
<p><span style="text-decoration: underline;"><em>Rails View Code:</em></span></p>
<pre>[html]
  &lt;% @videos.each do |video| %&gt;
    &lt;li&gt;
       &lt;a href="&lt;%= video['group']['player']['url'] %&gt;"&gt;
           &lt;%= video['title'] %&gt;
       &lt;/a&gt;
    &lt;/li&gt;
  &lt;% end %&gt;
[/html]</pre>
<div>
<p><span style="text-decoration: underline;"><em>Scala View Code:</em></span></p>
<div>
<pre>[html]
@videos.map { video =&gt; 
  &lt;li&gt;
    &lt;a href="@{ ((video \\ "group") \\ "player")(0).attribute("url")}"&gt;
       @{(video \ "title")(0).text}
    &lt;/a&gt;
  &lt;/li&gt;
}
[/html]</pre>
<p>Notice that XML manipulation in Scala is a little bit more tricky, but nothing that can harm you so deep.<br />
The twitter feed XML for the social page is very similar to the video page code. The photos is a little bit different, because I need to make to Web Service requests: (1) to the the albuns and (2) to get the photos for each album:</p>
<p><span style="text-decoration: underline;"><em>Rails Controller Code:<br />
</em></span></p>
<pre>[ruby]require 'restclient'
class FotosController &lt; ApplicationController
  caches_action :index, :expires_in =&gt; 1.day

  def index
    @albuns_photos = {}
    @albuns = []
    albuns = JSON.parse(RestClient.get("https://graph.facebook.com/daniella.alcarpe/albums"))["data"]
    albuns.each do |album|
      if (album['description'] == "*")
        photos = JSON.parse(RestClient.get("https://graph.facebook.com/#{album['id']}/photos"))["data"]
        albuns_photos = photos.map {|p| p["images"][3]["source"]}
        album['photos'] = albuns_photos
        @albuns &lt;&lt; album
      end
    end
  end
end
[/ruby]</pre>
<p><span style="text-decoration: underline;"><em>Scala Controller Code:</em></span></p>
<div>
<div>
<pre>  [scala]def photos = Cached("photos", 18000) {
    Action { implicit request =&gt;
      Async {
        WS.url("https://graph.facebook.com/daniella.alcarpe/albums").get().map { response =&gt;
          val albuns = (response.json \ "data").
            as[List[JsObject]].filter(album =&gt;
              (album \ "description").toString.equals("\"*\""))

          val photos = albuns.map { album =&gt;
            WS.url("https://graph.facebook.com/" + (album \ "id").toString.replace("\"", "") + "/photos").get().map { response2 =&gt;
              (response2.json \ "data").as[List[JsObject]].map { photo =&gt;
                ((photo \ "images")(3) \ "source").toString.replace("\"", "")
              }
            }
          }

          Ok(views.html.photos(photos))
        }
      }
    }
  }[/scala]</pre>
</div>
</div>
<p>Again, manipulating JSON in Scala is more ugly, and I had to make a small hack to replace quotes in json for empty string. I don&#8217;t know why Play returns the strings with the quotes. Something to improve in the future.</p>
<p>As I said, the music download page is a little bit more tricky, so I&#8217;ll leave this code for a next post. I also created automated tests for the website, and I&#8217;ll show them in the next post also.</p>
<h3>Conclusions</h3>
<ul>
<li>It took me 3 days to migrate everything from Rails to Play 2.0</li>
<li>Scala is a very nice language and the Play 2.0 framework s very mature and stable. The advantage in using Play is that it is very fast and with incredible performance. It runs inside the JVM. It is a stateless web solution. It seems perfect to use it for REST APIs, since the code remais as elegant as a ruby code, with the advantages of static typing languages.</li>
<li>It is very easy to deploy Play 2.0 applications. It comes with <strong>sbt</strong>, which is a very modern built tool. With <strong>play dist</strong> command, you create a package with everything you need to deploy the stand-alone application</li>
<li>Testing is similar to ruby specs. It also has continuous testing</li>
<li>The Play 2.0 documentation is very complete. Sometimes, for more difficult things, you will need to go to stackoverflow or the Play API. I did not get in much trouble to find documentation about the challenges I had</li>
<li>The only problem I had was with i18n. It looks like version 2.0 is not completely prepared for multiple languages websites. I found a bug report and fix that is already applied for version 2.1, but I did not tested it yet.</li>
</ul>
</div>
</div>
]]></content:encoded>
			<wfw:commentRss>http://www.agileandart.com/2013/01/09/migrating-from-rubyonrails-to-scala-play-2-0-part-1/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Software Developers Retreat (dia 4)</title>
		<link>http://www.agileandart.com/2012/12/03/software-developers-retreat-dia-4/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=software-developers-retreat-dia-4</link>
		<comments>http://www.agileandart.com/2012/12/03/software-developers-retreat-dia-4/#comments</comments>
		<pubDate>Mon, 03 Dec 2012 10:24:55 +0000</pubDate>
		<dc:creator>Daniel Cukier</dc:creator>
				<category><![CDATA[Agile]]></category>
		<category><![CDATA[Programming]]></category>
		<category><![CDATA[Technology]]></category>
		<category><![CDATA[criatividade]]></category>
		<category><![CDATA[developers retreat]]></category>
		<category><![CDATA[dinâmica de grupo]]></category>
		<category><![CDATA[gestão ágil]]></category>
		<category><![CDATA[peopleware]]></category>
		<category><![CDATA[retiro]]></category>
		<category><![CDATA[retiro de desenvolvedores]]></category>
		<category><![CDATA[retreat]]></category>
		<category><![CDATA[software development]]></category>

		<guid isPermaLink="false">http://www.agileandart.com/?p=771</guid>
		<description><![CDATA[O quarto dia do nosso retiro de desenvolvedores acabou! Recebemos a visita do nosso CEO. Ele veio junto com um programador do time que não pôde participar do retiro por causa de compromissos pessoais. Esse programador era um especialista em churrasco, pois nasceu no sul do Brasil e morou muitos anos &#8220;no meio do mato&#8221;. [...]]]></description>
				<content:encoded><![CDATA[<p>O quarto dia do nosso retiro de desenvolvedores acabou!</p>
<div id="attachment_776" class="wp-caption alignright" style="width: 210px"><a href="http://www.agileandart.com/wp-content/uploads/2012/12/IMG_4952.jpg"><img class="size-medium wp-image-776" title="Mesão de trabalho" src="http://www.agileandart.com/wp-content/uploads/2012/12/IMG_4952-200x300.jpg" alt="Mesão de trabalho" width="200" height="300" /></a><p class="wp-caption-text">Mesão de trabalho</p></div>
<p>Recebemos a visita do nosso CEO. Ele veio junto com um programador do time que não pôde participar do retiro por causa de compromissos pessoais. Esse programador era um especialista em churrasco, pois nasceu no sul do Brasil e morou muitos anos &#8220;no meio do mato&#8221;. Logo que chegou, ele se prontificou a tomar conta do nosso almoço. Foi até a cidade, no mercado central, e explicou pro açougueiro a maneira certa de cortar a carne <img src='http://www.agileandart.com/wp-includes/images/smilies/icon_smile.gif' alt=':-)' class='wp-smiley' />  Depois voltou para a casa e comandou a churrasqueira, enquanto o resto do pessoal trabalhava. <span id="more-771"></span></p>
<p>Pouco antes da hora do almoço, fomos na sauna úmida, que desta vez estava perfeita. Intercalamos minutos de sauna com mergulhos de choque térmico na piscina. Foi realmente muito relaxante. Depois comemos e voltamos para o mesão de trabalho no andar de cima da casa.</p>
<p>Há algumas semanas estávamos com a nossa suite de testes de aceitação quebrada. Esse é um problema clássico! Todo projeto de software pelo qual eu passei enfrentou em algum momento problemas com os testes de aceitação (usando Selenium por exemplo). O que acabávamos fazendo era sempre rodar os testes de aceitação manualmente todas as vezes que fazíamos deploy. Caso algum teste quebrasse, arrumávamos os dados &#8220;na mão&#8221; e rodávamos o teste de novo até passar. Muito ruim.</p>
<div id="attachment_773" class="wp-caption alignleft" style="width: 310px"><a href="http://www.agileandart.com/wp-content/uploads/2012/12/IMG_4964.jpg"><img class="size-medium wp-image-773" title="Brinde" src="http://www.agileandart.com/wp-content/uploads/2012/12/IMG_4964-300x200.jpg" alt="Brinde" width="300" height="200" /></a><p class="wp-caption-text">Brinde</p></div>
<p>Nesse último dia de retiro, um dos nossos programadores aceitou o desafio de arrumar os testes e deixa-los mais estáveis (não depender tanto do banco de dados e outros recursos que possuem estado). Finalmente nossos testes voltaram a passar!</p>
<p>Além de arrumar os testes, foram feitos 14 commits de código e um deploy de código novo em produção nesse dia. Não foram mudanças muito grandes: algumas correções de pequenos bugs, melhorias nos logs, algumas mudanças na nossa API interna.</p>
<p>No final do dia, fizemos um brinde para comemorar a nossa estadia na casa. Depois do brinde, algumas partidas insanas de Open Arena. Dessa vez, todo mundo entrou na batalhas. Era tiro para tudo que era lado e eu, pra variar, só perdia.</p>
<h2>Pontos positivos do dia:</h2>
<ul>
<li>Visita do nosso CEO</li>
<li>Teste de aceitação voltaram a passar</li>
<li>Fizemos um novo deploy</li>
<li>Churrasco feito por um profissional do ramo</li>
<li>Sauna úmida funcionou e estava absolutamente incrível</li>
<li>Batalha final no Open Arena com o time completo foi demais</li>
</ul>
<h2>Pontos negativos do dia:</h2>
<ul>
<li>Eu só perdi no Open Arena. Descobri que fiquei muito velho para jogar essas coisas&#8230;</li>
<li>Foi o último dia &#8211; o retiro estava acabando <img src='http://www.agileandart.com/wp-includes/images/smilies/icon_sad.gif' alt=':-(' class='wp-smiley' /> </li>
</ul>
<h2>Considerações finais sobre o retiro</h2>
<p>Foram 4 dias de muita emoção! Com certeza a experiência foi marcante para todos, inclusive para mim. Fiquei muito emocionado em concretizar esse sonho. Aprendi muito com cada momento. Foi muito bom conviver com o time todo durante vários dias. Pude observar e conhecer melhor cada pessoa. Fiquei muito feliz com o resultado, com a sensação de dever cumprido.</p>
<p>Obviamente também tivemos problemas. O maior deles foi no segundo dia, quando bug bizarro entrou em produção e tivemos dificuldade de alinhar a comunicação com o escritório em São Paulo. Essa situação foi desgastante. Aprendemos muito e tentamos identificar pontos para melhorar da próxima vez (sempre dá pra melhorar!).</p>
<p>Ao longo dos 4 dias que estivemos no retiro, foram:</p>
<div id="attachment_780" class="wp-caption alignleft" style="width: 310px"><a href="http://www.agileandart.com/wp-content/uploads/2012/12/20121126_112000.jpg"><img class="size-medium wp-image-780" title="Comidas Antes" src="http://www.agileandart.com/wp-content/uploads/2012/12/20121126_112000-300x225.jpg" alt="Comidas Antes" width="300" height="225" /></a><p class="wp-caption-text">Comidas Antes</p></div>
<div id="attachment_781" class="wp-caption alignright" style="width: 310px"><a href="http://www.agileandart.com/wp-content/uploads/2012/12/sobra.jpg"><img class="size-medium wp-image-781" title="Comidas Depois" src="http://www.agileandart.com/wp-content/uploads/2012/12/sobra-300x200.jpg" alt="Comidas Depois" width="300" height="200" /></a><p class="wp-caption-text">Comidas Depois</p></div>
<ul>
<li>73 commits</li>
<li>5 deploys</li>
<li>6 novas funcionalidades (histórias) implementadas e colocas em produção</li>
<li>3 carrinhos de supermercado cheios de comida devorados (compare as fotos da comida antes e depois&#8230;)</li>
<li>Vários mergulhos e piscina</li>
<li>Alguns minutos de sauna</li>
<li>Algumas horas jogando Open Arena</li>
<li>Algumas horas tocando e cantando mais de 50 músicas diferentes</li>
</ul>
<h2></h2>
<h2>Próximos passos</h2>
<p>Ainda tenho algumas tarefas para realizar pós evento. Quero tentar extrair o máximo dessa experiência. Farei uma reunião de retrospectiva com o time, onde conversaremos sobre como foi a semana. Vamos levantar o que aconteceu de bom e de ruim e como podemos melhorar numa próxima oportunidade.</p>
<p>Também estou elaborando um questionário que será preenchido por todos que participaram. A ideia e coletar algumas informações sobre a experiência individual de cada um e também alguns dados quantitativos. Pretendo também escrever um artigo sobre o retiro, explorando um pouco mais algumas questões. A ideia é tentar responder perguntas como:</p>
<ul>
<li>O time foi mais produtivo nesse ambiente?</li>
<li>As pessoas ficaram mais felizes?</li>
<li>As pessoas foram mais criativas?</li>
<li>Qual foi o impacto dessa experiência para o negócio?</li>
<li>Qual o impacto na vida dos profissionais?</li>
</ul>
<p>Talvez, no futuro, vamos repetir o retiro com o time, ou talvez com outros times da empresa. Considero bastante importante que as pessoas que ficaram em São Paulo possam passar pela mesma dinâmica, a fim de entender o processo, sentindo na pele o que é passar essa semana num ambiente diferente do tradicional. Também acho relevante fazer a experiência com um time só de mulheres. Acredito que os resultados podem ser bastante diferentes, quando comparamos grupos só de homens com grupos só de mulheres.</p>
<p>Outra possibilidade é fazer um retiro com um foco um pouco mais claro. Dessa vez, não tínhamos um projeto específico para desenvolver. Estávamos simplesmente realizando as tarefas e histórias do dia-a-dia de um sprint normal. Talvez, se tivéssemos um objetivo claro para a semana, um projeto com começo, meio e fim, talvez fosse bem instigante e divertido para as pessoas encararem o desafio de terminar a semana com o projeto entregue.</p>
<p>Enfim, ideias não faltam. Espero que esse relato sirva de inspiração para outros times de desenvolvedores fazerem seus próprios retiros e dividirem suas experiências e aprendizado.</p>
<p>Também gostaria de ler comentários: por favor, dê sugestões! Critique. Exponha suas ideias. O que achou do relato? O que poderíamos melhorar? Já fez algo parecido?</p>
<p>Até mais!</p>
<div id="attachment_772" class="wp-caption aligncenter" style="width: 650px"><a href="http://www.agileandart.com/wp-content/uploads/2012/12/IMG_4975.jpg"><img class="size-full wp-image-772" title="Elo7 Tech Team" src="http://www.agileandart.com/wp-content/uploads/2012/12/IMG_4975.jpg" alt="Elo7 Tech Team" width="640" height="427" /></a><p class="wp-caption-text">Elo7 Tech Team</p></div>
]]></content:encoded>
			<wfw:commentRss>http://www.agileandart.com/2012/12/03/software-developers-retreat-dia-4/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Software Developers Retreat (dia 3)</title>
		<link>http://www.agileandart.com/2012/11/29/software-developers-retreat-dia-3/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=software-developers-retreat-dia-3</link>
		<comments>http://www.agileandart.com/2012/11/29/software-developers-retreat-dia-3/#comments</comments>
		<pubDate>Thu, 29 Nov 2012 19:05:51 +0000</pubDate>
		<dc:creator>Daniel Cukier</dc:creator>
				<category><![CDATA[Agile]]></category>
		<category><![CDATA[Patterns]]></category>
		<category><![CDATA[Programming]]></category>
		<category><![CDATA[Technology]]></category>
		<category><![CDATA[christopher alexander]]></category>
		<category><![CDATA[criatividade]]></category>
		<category><![CDATA[developers retreat]]></category>
		<category><![CDATA[dinâmica de grupo]]></category>
		<category><![CDATA[gestão ágil]]></category>
		<category><![CDATA[peopleware]]></category>
		<category><![CDATA[retiro]]></category>
		<category><![CDATA[retiro de desenvolvedores]]></category>
		<category><![CDATA[retreat]]></category>
		<category><![CDATA[software development]]></category>
		<category><![CDATA[tom de marco]]></category>

		<guid isPermaLink="false">http://www.agileandart.com/?p=753</guid>
		<description><![CDATA[O terceiro dia do nosso retiro de desenvolvedores acabou! O sol estava brilhando e bateu forte na nossa janela. Como o pessoal tinha ido dormir um pouco mais tarde, também acabamos acordando um pouco mais tarde. Como de costume, fizemos nosso standup meeting as 11h. A moça que contratamos para limpar a casa e cozinhar [...]]]></description>
				<content:encoded><![CDATA[<p>O terceiro dia do nosso retiro de desenvolvedores acabou!</p>
<div id="attachment_761" class="wp-caption alignright" style="width: 310px"><a href="http://www.agileandart.com/wp-content/uploads/2012/11/IMG_4927.jpg"><img class="size-medium wp-image-761" title="Standup Meeting" src="http://www.agileandart.com/wp-content/uploads/2012/11/IMG_4927-300x200.jpg" alt="Standup Meeting" width="300" height="200" /></a><p class="wp-caption-text">Standup Meeting</p></div>
<p>O sol estava brilhando e bateu forte na nossa janela. Como o pessoal tinha ido dormir um pouco mais tarde, também acabamos acordando um pouco mais tarde. Como de costume, fizemos nosso standup meeting as 11h. A moça que contratamos para limpar a casa e cozinhar não veio nesse dia. Acabamos tendo que dar um jeito com as tarefas da casa. <span id="more-753"></span></p>
<p>Durante quase o dia todo, uma das duplas ficou investigando o bug do dia anterior, tentando reproduzir o comportamento em ambiente de teste. Não conseguiram evoluir muito, o que nos deixou bastante frustrados.</p>
<p>Eu fiquei trabalhando com um outro desenvolvedor numa mudança importante e grande que tínhamos que fazer no site, que envolvia a arquitetura e o design das páginas. Passamos praticamente o dia todo em cima do código, testando a nova arquitetura, fazendo um protótipo. Não conseguimos terminar todos os testes, mas evoluímos bastante.</p>
<div id="attachment_760" class="wp-caption alignleft" style="width: 310px"><a href="http://www.agileandart.com/wp-content/uploads/2012/11/IMG_4916.jpg"><img class="size-medium wp-image-760" title="Programando da beira da piscina" src="http://www.agileandart.com/wp-content/uploads/2012/11/IMG_4916-300x200.jpg" alt="Programando da beira da piscina" width="300" height="200" /></a><p class="wp-caption-text">Programando da beira da piscina</p></div>
<p>Na hora do almoço, fomos para a piscina e churrasqueira. O sol estava bombando. Aproveitei para fazer uns exercícios do Kung Fu. Quase todos também foram na sauna (só funcionou a seca). Um outro pessoal aproveitou a piscina para nadar. Também levamos os computadores e ficamos trabalhando da beira da água. Um momento mágico!</p>
<p>Os que ficaram responsáveis pela churrasqueira salgaram a carne demais, não acenderam o fogo direito. Além de tudo, a picanha tava dura igual uma pedra! Também colocamos umas batatas, cebolas e alho embrulhados no alumínio, mas não fizeram muito sucesso. No fim, a única coisa que se salvou do churrasco foi a berinjela. Acabamos com o arroz, feijão e salada do dia anterior e esse foi nosso almoço.</p>
<p>De noite, um de nós lembrou que o dia era de lua cheia e propôs uma meditação em grupo. Dizem que nesse dia, a energia da lua faz com que a meditação seja mais poderosa. Alguns gostaram da ideia e fizeram essa meditação que durou cerca de uma hora.</p>
<p>Enquanto isso, do que sobrou da carne dura do almoço, um pessoal tentou moer no liquidificador e fazer uns croquetes. Disseram que o gosto até que estava bom, mas continuava dura. A solução foi fritar uns hambúrgueres e comer lanche. Fizemos um <a href="http://www.youtube.com/watch?v=HoBFqGwJt_w&amp;feature=youtu.be">vídeo da movimentação da cozinha</a> de noite.</p>
<div id="attachment_764" class="wp-caption alignright" style="width: 310px"><a href="http://www.agileandart.com/wp-content/uploads/2012/11/IMG_4949.jpg"><img class="size-medium wp-image-764" title="Meu quarto - espaço privado" src="http://www.agileandart.com/wp-content/uploads/2012/11/IMG_4949-300x200.jpg" alt="Meu quarto - espaço privado" width="300" height="200" /></a><p class="wp-caption-text">Meu quarto - espaço privado</p></div>
<p>Depois da janta, continuei trabalhando na história de arquitetura e fomos até meia noite nela. Nesse dia eu tive um insight muito interessante. Depois da piscina, resolvi dar uma passada no meu quarto para trocar de roupa. Quando eu estava sozinho no quarto, senti uma paz e um alívio muito grande de estar lá sozinho. Percebi a importância que era ter um espaço privado na casa. Notei que a distribuição de cômodos do lugar ajudava muito. Havia na casa uma parte de convívio compartilhada, mas também uma boa área íntima, permitindo que as pessoas se retirarem quando achassem conveniente.</p>
<p>Lembrei de ter lido algo a respeito de espaços público/privados no livro <a title="Peopleware" href="http://dev.co.ua/docs/Peopleware.pdf">Peopleware, do Tom De Marco</a>. Ele cita alguns <a href="http://www.patternlanguage.com/leveltwo/patterns.htm">padrões de arquitetura catalogados</a> pelo <a href="http://www.pps.org/reference/calexander/">Christopher Alexander</a>. Tom De Marco enfatiza a importância de se ter num ambiente de trabalho, num escritório, espaços públicos e individuais harmoniosamente distribuídos e equilibrados. Pouca gente sabe, mas os <a href="http://www.natureoforder.com/">padrões do Alexander</a> influenciaram toda indústria de software: padrões de projeto (os famosos Design Patterns), <a href="http://www.agileandart.com/2010/07/16/ddd-introducao-a-domain-driven-design/">Domain Driven Design</a>, o livro de  Refatorações, Métodos ágeis são alguns dos muitos exemplos de conceitos da área de software que surgiram na <a href="http://www.agileandart.com/2011/10/24/plop-a-conferencia-de-padroes/">comunidade de software que estuda padrões</a>.</p>
<h2>Pontos Positivos do Dia:</h2>
<ul>
<li>A piscina estava muito boa</li>
<li>Sol durante quase todo o dia</li>
<li>Meditação da Lua cheia</li>
<li>Stop Motion na cozinha na hora da preparação do jantar<br />
<iframe src="http://www.youtube.com/embed/HoBFqGwJt_w" frameborder="0" width="480" height="360"></iframe></li>
<li>Consegui trabalhar e avançar a arquitetura de uma história importante junto com outro desenvolvedor</li>
</ul>
<h2>Pontos Negativos do Dia:</h2>
<ul>
<li>As duas saunas não funcionam juntas</li>
<li>A carne do churrasco foi um fiasco</li>
<li>Uma dupla perdeu quase o dia todo investigando o bug do dia anterior e não encontraram a causa do bug</li>
</ul>
]]></content:encoded>
			<wfw:commentRss>http://www.agileandart.com/2012/11/29/software-developers-retreat-dia-3/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>Software Developers Retreat (dia 2)</title>
		<link>http://www.agileandart.com/2012/11/29/software-developers-retreat-dia-2/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=software-developers-retreat-dia-2</link>
		<comments>http://www.agileandart.com/2012/11/29/software-developers-retreat-dia-2/#comments</comments>
		<pubDate>Thu, 29 Nov 2012 01:07:41 +0000</pubDate>
		<dc:creator>Daniel Cukier</dc:creator>
				<category><![CDATA[Agile]]></category>
		<category><![CDATA[Programming]]></category>
		<category><![CDATA[Technology]]></category>
		<category><![CDATA[bug]]></category>
		<category><![CDATA[commit]]></category>
		<category><![CDATA[criatividade]]></category>
		<category><![CDATA[developers retreat]]></category>
		<category><![CDATA[dinâmica de grupo]]></category>
		<category><![CDATA[ec2]]></category>
		<category><![CDATA[experiência]]></category>
		<category><![CDATA[gestão ágil]]></category>
		<category><![CDATA[git]]></category>
		<category><![CDATA[pair programming]]></category>
		<category><![CDATA[rebase]]></category>
		<category><![CDATA[retiro]]></category>
		<category><![CDATA[retiro de desenvolvedores]]></category>
		<category><![CDATA[retreat]]></category>
		<category><![CDATA[software]]></category>

		<guid isPermaLink="false">http://www.agileandart.com/?p=732</guid>
		<description><![CDATA[O segundo dia do nosso retiro de desenvolvedores acabou! Acordamos lá pelas 8 e meia, 9 horas. Também teve gente que acordou mais cedo para fazer um cooper. Como de costume, fizemos nosso Standup Meeting as 11h da manhã. Recebemos a visita do nosso diretor de produtos. Ele veio de São Paulo para cá, passar o [...]]]></description>
				<content:encoded><![CDATA[<p>O segundo dia do nosso retiro de desenvolvedores acabou!</p>
<div id="attachment_745" class="wp-caption alignright" style="width: 310px"><a href="http://www.agileandart.com/wp-content/uploads/2012/11/IMGP8879.jpg"><img class="size-medium wp-image-745 " title="Trabalhando Juntos" src="http://www.agileandart.com/wp-content/uploads/2012/11/IMGP8879-300x200.jpg" alt="Trabalhando Juntos" width="300" height="200" /></a><p class="wp-caption-text">Trabalhando Juntos</p></div>
<p>Acordamos lá pelas 8 e meia, 9 horas. Também teve gente que acordou mais cedo para fazer um cooper. Como de costume, fizemos nosso Standup Meeting as 11h da manhã. Recebemos a visita do nosso diretor de produtos. Ele veio de São Paulo para cá, passar o dia com a gente. Foi muito importante sua vinda, pois pudemos conversar em mais detalhes sobre algumas histórias que estávamos implementando.<br />
<span id="more-732"></span><br />
Contratamos uma moça para cozinhar e fazer a limpeza da casa nesse dia. Foi muito bom, pois não tivemos que nos preocupar com o almoço. Ela preparou um belo arroz feijão com frango grelhado e outras opções para os vegetarianos.</p>
<div id="attachment_742" class="wp-caption alignleft" style="width: 310px"><a href="http://www.agileandart.com/wp-content/uploads/2012/11/IMG_4898.jpg"><img class="size-medium wp-image-742" title="Time reunido" src="http://www.agileandart.com/wp-content/uploads/2012/11/IMG_4898-300x200.jpg" alt="Time reunido" width="300" height="200" /></a><p class="wp-caption-text">Time reunido</p></div>
<p>O dia foi um pouco difícil, pois fizemos um deploy que causou alguns bugs esquisitos. Eu e mais outro desenvolvedor ficamos praticamente o dia todo tentando entender o bug. Descobrimos a história que causou o problema, mas olhando o código não conseguimos entender por que o comportamento estranho em produção (todos os testes em ambiente de desenvolvimento e integração estavam perfeitos). Desconfiamos que seria algum problema de concorrência e decidimos tentar simular o bug em nosso ambiente de testes.</p>
<p>Mais tarde, fizemos um novo deploy com todas as funcionalidades novas, exceto a que estava dando problemas. Para isso, usamos o rebase interativo do git (git rebase -i). Funciona perfeito! Muito fácil tirar uma história da árvore de commits. Ao todo, foram 22 commits de código feitos desde a semana passada que entraram em produção.</p>
<div id="attachment_739" class="wp-caption alignright" style="width: 310px"><a href="http://www.agileandart.com/wp-content/uploads/2012/11/IMG_4894.jpg"><img class="size-medium wp-image-739" title="Programming" src="http://www.agileandart.com/wp-content/uploads/2012/11/IMG_4894-300x200.jpg" alt="Programming" width="300" height="200" /></a><p class="wp-caption-text">Programming</p></div>
<p>No fim da tarde demos uma refrescada na cabeça com um mergulho na piscina. O tempo não estava muito quente, então não deu para ficar muito dentro daquela água gelada, mas foi bem gostoso o momento aquático para relaxar a tensão.</p>
<p>De noite, uma parte das pessoas continuou trabalhando, enquanto alguns outros foram jogar <a href="http://www.openarena.ws/">Open Arena</a>. Eu fui para a cozinha fazer uma pasta. Foram três pacotes de Barilla e 4 kilos de tomate para alimentar o povo!</p>
<div id="attachment_738" class="wp-caption alignleft" style="width: 310px"><a href="http://www.agileandart.com/wp-content/uploads/2012/11/IMG_4886.jpg"><img class="size-medium wp-image-738" style="margin: 10px;" title="Skype com São Paulo" src="http://www.agileandart.com/wp-content/uploads/2012/11/IMG_4886-300x200.jpg" alt="Skype com São Paulo" width="300" height="200" /></a><p class="wp-caption-text">Skype com São Paulo</p></div>
<p>Depois do jantar, alguns continuaram nos seus computadores trabalhando até quase meia noite. Aproveitamos o sorvete de pistache que estava dando sopa no freezer.</p>
<p>Enquanto isso, fizemos um som com o violão que eu tinha levado. Rolou de tudo, desde Paulinho da Viola, Roupa Nova, passando por U2, Bon Jovi até Britney Spears. O pessoal se empolgou mesmo com a cantoria. Não paramos de dar risada.<br />
Aproveitamos para fazer uma chamada por skype com um dos nossos devs que tinha ficado em São Paulo.</p>
<p>Fomos  dormir esgotados, ainda pensando no bug e nos problemas que ele causou para nossos clientes. Teríamos um dia seguinte desafiador pela frente&#8230;</p>
<div id="attachment_740" class="wp-caption alignright" style="width: 310px"><a href="http://www.agileandart.com/wp-content/uploads/2012/11/IMG_4895.jpg"><img class="size-medium wp-image-740" title="Trabalhando tomando sorvete" src="http://www.agileandart.com/wp-content/uploads/2012/11/IMG_4895-300x200.jpg" alt="Trabalhando tomando sorvete" width="300" height="200" /></a><p class="wp-caption-text">Trabalhando tomando sorvete</p></div>
<p>&nbsp;</p>
<h2></h2>
<h2></h2>
<h2><a href="http://www.agileandart.com/wp-content/uploads/2012/11/IMG_4888.jpg"><img class="aligncenter size-full wp-image-736" title="Violão Empolgado" src="http://www.agileandart.com/wp-content/uploads/2012/11/IMG_4888.jpg" alt="" width="640" height="427" /></a></h2>
<h2><a href="http://www.agileandart.com/wp-content/uploads/2012/11/IMG_4885.jpg"><br />
</a>Pontos Positivos do dia:</h2>
<ul>
<li>Cantoria de noite</li>
<li>Mergulho na piscina</li>
<li>Visita do diretor de produtos (nosso PO)</li>
<li>Almoço feito pela Suelma</li>
<li>Pasta ao pomodoro e a bolognesa</li>
<li>Open Arena</li>
<li>Sol no final da tarde</li>
</ul>
<h2>Pontos Negativos do dia:</h2>
<ul>
<li>BUG bizarro em produção</li>
<li>Chuva na maior parte do dia</li>
<li>Sauna a vapor não estava funcionando</li>
</ul>
]]></content:encoded>
			<wfw:commentRss>http://www.agileandart.com/2012/11/29/software-developers-retreat-dia-2/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Software Developers Retreat (dia 1)</title>
		<link>http://www.agileandart.com/2012/11/27/software-developers-retreat-dia-1/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=software-developers-retreat-dia-1</link>
		<comments>http://www.agileandart.com/2012/11/27/software-developers-retreat-dia-1/#comments</comments>
		<pubDate>Tue, 27 Nov 2012 19:25:23 +0000</pubDate>
		<dc:creator>Daniel Cukier</dc:creator>
				<category><![CDATA[Agile]]></category>
		<category><![CDATA[Programming]]></category>
		<category><![CDATA[Technology]]></category>
		<category><![CDATA[criatividade]]></category>
		<category><![CDATA[developers retreat]]></category>
		<category><![CDATA[dinâmica de grupo]]></category>
		<category><![CDATA[ec2]]></category>
		<category><![CDATA[experiência]]></category>
		<category><![CDATA[gestão ágil]]></category>
		<category><![CDATA[pair programming]]></category>
		<category><![CDATA[retiro]]></category>
		<category><![CDATA[retiro de desenvolvedores]]></category>
		<category><![CDATA[retreat]]></category>
		<category><![CDATA[software]]></category>
		<category><![CDATA[ubuntu]]></category>

		<guid isPermaLink="false">http://www.agileandart.com/?p=699</guid>
		<description><![CDATA[O primeiro dia do nosso retiro de desenvolvedores acabou! Pela manhã, parte do grupo ficou na casa e eu fui com mais outros dois devs fazer as compras da casa para a semana. Achei que seria rápido, mas no fim demoramos quase três horas nessa tarefa, que foi bem divertida, apesar de cansativa. Compramos de tudo: [...]]]></description>
				<content:encoded><![CDATA[<p style="text-align: left;"><a href="http://www.agileandart.com/wp-content/uploads/2012/11/Work-table.jpg"><img class="size-full wp-image-716 aligncenter" style="margin-top: 10px; margin-bottom: 10px;" title="Work table" src="http://www.agileandart.com/wp-content/uploads/2012/11/Work-table.jpg" alt="" width="640" height="427" /></a>O primeiro dia do nosso retiro de desenvolvedores acabou!</p>
<p>Pela manhã, parte do grupo ficou na casa e eu fui com mais outros dois devs fazer as compras da casa para a semana. Achei que seria rápido, mas no fim demoramos quase três horas nessa tarefa, que foi bem divertida, apesar de cansativa.</p>
<p><img class="size-full wp-image-712 alignleft" style="margin: 5px;" title="Lista de Compras" src="http://www.agileandart.com/wp-content/uploads/2012/11/Lista-de-Compras.jpg" alt="" width="320" height="215" /><br />
<span id="more-699"></span><br />
Compramos de tudo: comidas, bebidas, material de limpeza, itens para churrasco, etc. Eu já tinha preparado a lista de supermercado antes, o que facilitou muito. Mesmo assim, lembramos de muitas coisas que não estavam na lista enquanto fazíamos as compras.</p>
<p>Voltamos para a casa por volta do meio-dia e o resto do pessoal já estava acomodado na mesa da sala programando. A mesa era bastante grande e cabiam todos os nove membros do time.</p>
<p>O primeiro problema que tivemos foi conseguir fazer a programação em pares da mesma forma que fazemos no escritório. Lá nós temos um computador com dois monitores, dois teclados e dois mouses. Seria inviável levarmos para a casa de campo todos os computadores do escritório e todos os monitores. A solução que encontramos foi cada desenvolvedor levar seu notebook pessoal (por sorte, todos tinham um!) &#8211; eram 7 MacBooks e 2 notes rodando Ubuntu Linux. Para fazer o pair programming, usamos o esquema de compartilhamento de tela do Mac OS X, que funciona muitíssimo bem. Assim, quando fazíamos os pares, uma das pessoas acessava a máquina da outra, visualizando sua tela e com a possibilidade de interagir (teclar e controlar o mouse).</p>
<p><img class="alignleft size-medium wp-image-714" style="margin: 10px;" title="Pair Programming" src="http://www.agileandart.com/wp-content/uploads/2012/11/Pair-Programming-300x200.jpg" alt="" width="300" height="200" /></p>
<p>O delay é praticamente zero, então dava para trabalhar junto usando esse esquema sem problema. Existem outras formas de fazer isso, usando o Screen e o Vim, porém, como parte do nosso ambiente é Java e temos uma grande dependência do Eclipse, preferimos o compartilhamento da tela.<br />
Depois de comer, voltamos para a mesa e continuamos trabalhando até quase 22h.Por volta das 16h fizemos uma pausa para comer. Descemos para a área da churrasqueira. <a href="http://www.agileandart.com/wp-content/uploads/2012/11/Lunchtime-churrasco.jpg"><img class="alignright size-medium wp-image-713" style="margin: 10px;" title="Lunchtime - churrasco" src="http://www.agileandart.com/wp-content/uploads/2012/11/Lunchtime-churrasco-300x200.jpg" alt="" width="300" height="200" /></a>Alguns não comiam carne, então também fizemos opções vegetarianas (abobrinha, cebola, queijo coalho, saladas, etc). Todo mundo comeu bem e pôde descansar um pouco da viagem. Um dos programadores resolveu fazer uma sauna seca (que havia na casa também) e fizemos nossas tradicionais &#8220;flexões de braço antes do almoço&#8221;, para manter o time forte.</p>
<p>O segundo problema que tivemos durante o dia foi a lentidão da Internet. Em alguns momentos do dia, a rede baleiava. Pedimos para todos desligarem serviços em seus notes que eventualmente pudessem estar consumindo banda. Uma solução legal que fizemos foi na hora de rodar os testes de aceitação em ambiente de staging (integração). Em geral, esses testes rodavam usando Selenium e Firefox na máquina do desenvolvedor, acessando o site em nosso servidor de staging. Como a rede estava muito lenta, cada página demorava muito para carregar e os testes demoravam muito.</p>
<p style="text-align: left;">Tivemos a ideia de criar uma máquina no EC2 com Ubuntu e VNC. Assim, poderíamos rodar os testes de aceitação direto dessa máquina que, estando dentro da rede do EC2, rodariam bem mais rápido e não consumiriam nossa banda para rodar (apenas a banda do VNC, que poderíamos deixar a janela oculta. Para configurar essa máquina, usamos as <a href="http://www.serverwatch.com/server-tutorials/setting-up-vnc-on-ubuntu-in-the-amazon-ec2.html">instruções desse site</a>.</p>
<p><a style="text-align: center;" href="http://www.agileandart.com/wp-content/uploads/2012/11/Screen-Shot-2012-11-27-at-4.48.54-PM.png"><br />
<img class="aligncenter size-large wp-image-724" title="Selenium, Ubuntu in EC2" src="http://www.agileandart.com/wp-content/uploads/2012/11/Screen-Shot-2012-11-27-at-4.48.54-PM-1024x813.png" alt="" width="600" height="476" /></a></p>
<div>
<div style="text-align: center;"><span style="color: #0000ee;"><span style="text-decoration: underline;"><br />
</span></span></div>
<p>No final do dia, alguns resolveram jogar Starcraft 2, enquanto outros foram assistir Walking Dead na televisão.</p>
<h2>Pontos Positivos do dia</h2>
<ul>
<li>Comida boa (o arroz estava delicioso!)</li>
<li>Casa agradável, bem arejada, confortável</li>
<li>Mesa grande onde cabiam todos do time</li>
<li>Nova maneira de programar pareado usando <strong>compartilhamento de tela</strong> do Mac</li>
<li>Fizemos um pequeno vídeo em Stop Motion com a movimentação do pessoal</li>
<li><iframe src="http://www.youtube.com/embed/yo6g8ueIbWM" frameborder="0" width="640" height="360"></iframe></li>
</ul>
<h2>Pontos Negativos do dia</h2>
<div>
<ul>
<li>Internet lenta em alguns momentos</li>
<li>Cansaço da viagem</li>
<li>Demora para fazer as compras</li>
<li>O banho não tinha água quente. Depois descobrimos onde ligava o aquecedor</li>
<li>Não conseguimos fazer o WI-FI funcionar perto da piscina. A replicação de roteadores não rolou com o nosso Netgear <img src='http://www.agileandart.com/wp-includes/images/smilies/icon_sad.gif' alt=':-(' class='wp-smiley' /> </li>
<li>O banheiro da sala estava entupido</li>
<li>Fez frio e não pudemos usar a piscina</li>
</ul>
</div>
<p>&nbsp;</p>
</div>
]]></content:encoded>
			<wfw:commentRss>http://www.agileandart.com/2012/11/27/software-developers-retreat-dia-1/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Software Developers Retreat (dia 0)</title>
		<link>http://www.agileandart.com/2012/11/26/software-developers-retreat-dia-0/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=software-developers-retreat-dia-0</link>
		<comments>http://www.agileandart.com/2012/11/26/software-developers-retreat-dia-0/#comments</comments>
		<pubDate>Mon, 26 Nov 2012 03:25:53 +0000</pubDate>
		<dc:creator>Daniel Cukier</dc:creator>
				<category><![CDATA[Agile]]></category>
		<category><![CDATA[Programming]]></category>
		<category><![CDATA[Technology]]></category>
		<category><![CDATA[criatividade]]></category>
		<category><![CDATA[developers retreat]]></category>
		<category><![CDATA[dinâmica de grupo]]></category>
		<category><![CDATA[experiência]]></category>
		<category><![CDATA[gestão ágil]]></category>
		<category><![CDATA[retiro]]></category>
		<category><![CDATA[retiro de desenvolvedores]]></category>
		<category><![CDATA[retreat]]></category>
		<category><![CDATA[software]]></category>

		<guid isPermaLink="false">http://www.agileandart.com/?p=688</guid>
		<description><![CDATA[Já faz alguns meses que eu estou planejando esse evento, que finalmente tomou forma e terá início a partir de amanhã, dia 26/nov/2012. A ideia não é nova, embora eu tenha visto poucas organizações, empresas ou pessoas executando ela de fato. Tudo surgiu de uma conversa com meu grande amigo Alexandre Freire, que já tinha [...]]]></description>
				<content:encoded><![CDATA[<p>Já faz alguns meses que eu estou planejando esse evento, que finalmente tomou forma e terá início a partir de amanhã, dia 26/nov/2012.</p>
<p>A ideia não é nova, embora eu tenha visto poucas organizações, empresas ou pessoas executando ela <strong>de fato</strong>. Tudo surgiu de uma conversa com meu grande amigo <a href="https://twitter.com/freire_da_silva">Alexandre Freire</a>, que já tinha vivido a experiência de levar programadores para a sua casa no bonete na Ilhabela em São Paulo. A aventura dele está <a href="http://www.estudiolivre.org/tiki-view_blog.php?blogId=182">documentada no blog do estúdio livre</a>.<br />
<span id="more-688"></span></p>
<p>Reuni os nove desenvolvedores do Elo7 e propus de passarmos uma semana trabalhando em uma casa no campo, ao invés do tradicional escritório na Vila Olímpia. A casa que encontrei era ideal, tanto em termos de conforto quanto em opções de descontração:</p>
<p><a href="http://www.agileandart.com/wp-content/uploads/2012/11/Screen-Shot-2012-11-26-at-12.24.11-AM.png"><img class="aligncenter size-large wp-image-690" title="Condomínio com lazer" src="http://www.agileandart.com/wp-content/uploads/2012/11/Screen-Shot-2012-11-26-at-12.24.11-AM-1024x584.png" alt="" width="600" height="342" /></a></p>
<ul>
<li>Sete suítes com camas individuais</li>
<li>Piscina</li>
<li>Churrasqueira e forno de pizza</li>
<li>Sauna úmida e seca</li>
<li>Sala de jantar com lareira</li>
<li>Cozinha equipada</li>
</ul>
<p>Além disso, a casa ficava num condomínio fechado, com opções esportivas como: quadra de tênis, campo de futebol, piscina olímpica, academia, etc. Tudo isso num lugar cheio de verde. Parecia o cenário perfeito para favorecer o florescimento de toda a criatividade dos engenheiros da empresa.</p>
<p>Durante a semana anterior a viagem, conversei individualmente com cada pessoa. Expliquei como seria a experiência e pedi sugestões de como fazer com que os dias na casa fossem o mais agradáveis e produtivos possível. Perguntei sobre preferências alimentares e necessidades individuais de cada um. Também tentei saber qual seria a melhor distribuição das pessoas entre os quartos, mas todos se mostraram bem abertos a qualquer configuração.</p>
<p>Tive que tomar algumas providências logísticas para viabilizar o evento:</p>
<ul>
<li>Contratar um link de Internet para a casa (essa parte foi bem difícil, pois na cidade não havia muitas opções de banda larga, mas no fim deu tudo certo);</li>
<li>Encontrar uma faxineira para ajudar na limpeza ao longo da semana;</li>
<li>Todos ficaram responsáveis por configurar seus computadores pessoais com o ambiente de desenvolvimento da empresa e leva-los para a casa;</li>
<li>Trazer outros equipamentos: dois roteadores WI-FI, cabos de rede, cabos HDMI e VGA para eventualmente ligar os computadores;</li>
<li>Alguns itens de primeiros socorros, termômetro, anti-séptico, etc.</li>
<li>Outros brinquedinhos: <a href="http://www.getbuckyballs.com">Bucky Balls</a>, baralho, instrumentos musicais (violão, pandeiro, tamborim, etc), iPods, caixinhas de som, almofadas de meditação</li>
</ul>
<p>Algumas características do grupo facilitaram muito a organização da experiência. A maioria das pessoas não era casada e nenhum deles tinha filhos. Também não havia nenhuma mulher no grupo, o que evitou possíveis constrangimentos com namoradas.</p>
<p>Ao longo da semana vamos trabalhar intensamente nos desafios técnicos da empresa, implementar novas funcionalidades, definir arquiteturas, enfim, programar muito. Vamos também estudar, conversar bastante, compartilhar conhecimento e, acima de tudo, nos divertir muito, fazendo o que gostamos de fazer: escrever software!</p>
<p>Acompanhe aqui no blog um diário de bordo dessa experiência.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.agileandart.com/2012/11/26/software-developers-retreat-dia-0/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Curso de Lean Startup &#8211; Vídeos</title>
		<link>http://www.agileandart.com/2012/06/11/curso-de-lean-startup-videos/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=curso-de-lean-startup-videos</link>
		<comments>http://www.agileandart.com/2012/06/11/curso-de-lean-startup-videos/#comments</comments>
		<pubDate>Mon, 11 Jun 2012 13:27:49 +0000</pubDate>
		<dc:creator>Daniel Cukier</dc:creator>
				<category><![CDATA[Agile]]></category>
		<category><![CDATA[Technology]]></category>
		<category><![CDATA[Videos]]></category>
		<category><![CDATA[curso]]></category>
		<category><![CDATA[curso de verão]]></category>
		<category><![CDATA[customer development]]></category>
		<category><![CDATA[ime-usp]]></category>
		<category><![CDATA[lean]]></category>
		<category><![CDATA[lean startup]]></category>
		<category><![CDATA[mvp]]></category>

		<guid isPermaLink="false">http://www.agileandart.com/?p=675</guid>
		<description><![CDATA[Para aqueles que não puderam participar do curso de verão sobre Lean Startup que fizemos no IME-USP, seguem alguns vídeos com os melhores momentos do curso. São quase 10 horas de vídeos! Enjoy!]]></description>
				<content:encoded><![CDATA[<p>Para aqueles que não puderam participar do curso de verão sobre Lean Startup que fizemos no IME-USP, seguem alguns vídeos com os melhores momentos do curso. São quase 10 horas de vídeos! Enjoy!</p>
<p><iframe width="590" height="350" src="http://www.youtube.com/embed/videoseries?list=PLFEB01EE13CD0DA20&amp;hl=en_US" frameborder="0" allowfullscreen></iframe></p>
]]></content:encoded>
			<wfw:commentRss>http://www.agileandart.com/2012/06/11/curso-de-lean-startup-videos/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>10 SEO tips to improve your website ranking</title>
		<link>http://www.agileandart.com/2012/05/20/10-seo-tips-to-improve-your-website-ranking/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=10-seo-tips-to-improve-your-website-ranking</link>
		<comments>http://www.agileandart.com/2012/05/20/10-seo-tips-to-improve-your-website-ranking/#comments</comments>
		<pubDate>Sun, 20 May 2012 22:59:57 +0000</pubDate>
		<dc:creator>Daniel Cukier</dc:creator>
				<category><![CDATA[Programming]]></category>
		<category><![CDATA[Technology]]></category>
		<category><![CDATA[analytics]]></category>
		<category><![CDATA[google webmaster tools]]></category>
		<category><![CDATA[html]]></category>
		<category><![CDATA[html5]]></category>
		<category><![CDATA[meta]]></category>
		<category><![CDATA[semantic]]></category>
		<category><![CDATA[seo]]></category>
		<category><![CDATA[tagging]]></category>
		<category><![CDATA[tips]]></category>

		<guid isPermaLink="false">http://www.agileandart.com/?p=640</guid>
		<description><![CDATA[Reaching the first place in search engines race is a hard and long term job. Since I started my work in Elo7, we&#8217;ve been doing a lot of improvements in our platform to boost our position in search engines. I&#8217;d like to share some of these techniques with everyone. Before doing it, just a small [...]]]></description>
				<content:encoded><![CDATA[<p><a href="http://www.agileandart.com/wp-content/uploads/2012/05/seo.png"><img src="http://www.agileandart.com/wp-content/uploads/2012/05/seo.png" alt="" title="seo" width="600" height="200" class="aligncenter size-full wp-image-664" /></a><br />
Reaching the first place in search engines race is a hard and long term job. Since I started my work in <a href="http://www.elo7.com.br">Elo7</a>, we&#8217;ve been doing a lot of improvements in our platform to boost our position in search engines. I&#8217;d like to share some of these techniques with everyone. Before doing it, just a small disclaimer: if your website has a content that is adjusted to the search keywords you want be found, these tips are useful. I think this is the most important advice in SEO: y<strong>ou need to have good content. </strong>Content that is interesting for the people who search for specific terms.<br />
<span id="more-640"></span><br />
For example, if your website has nothing to do with Michael Jackson, don&#8217;t try to make it appear in the first position for this search term. It is useless. And even if you were in the first place, you would disappoint all users, who could fall into your website and conclude that you are a liar!</p>
<p>Sometimes your website is full of useful content, but they are not well organized, or the HTML behind it is malformed, so search engine robots can&#8217;t grab the right data from it. If you have good content, by following these tips you will boost your performance. <strong>There is no miracle in the SEO race</strong>. You need to join good content with the right tagging techniques, and you will certainly be in a good position. Don&#8217;t try to be smarter than the search engines. You won&#8217;t!</p>
<h2>Tip 1 &#8211; Good treatment to your Meta Tags</h2>
<p>There are a lot of information you must put into the &lt;header&gt; of you HTML. Here is an example for information about a product:</p>

<div class="wp_syntax"><table><tr><td class="code"><pre class="html4strict" style="font-family:monospace;"><span style="color: #009900;">&lt;<span style="color: #000000; font-weight: bold;">meta</span> property<span style="color: #66cc66;">=</span><span style="color: #ff0000;">&quot;og:type&quot;</span> <span style="color: #000066;">content</span><span style="color: #66cc66;">=</span><span style="color: #ff0000;">&quot;article&quot;</span> <span style="color: #66cc66;">/</span>&gt;</span>
<span style="color: #009900;">&lt;<span style="color: #000000; font-weight: bold;">meta</span> property<span style="color: #66cc66;">=</span><span style="color: #ff0000;">&quot;og:title&quot;</span> <span style="color: #000066;">content</span><span style="color: #66cc66;">=</span><span style="color: #ff0000;">&quot;Lágrimas de Alegria | Estúdio 100 | 1A75C3&quot;</span> <span style="color: #66cc66;">/</span>&gt;</span>
<span style="color: #009900;">&lt;<span style="color: #000000; font-weight: bold;">meta</span> property<span style="color: #66cc66;">=</span><span style="color: #ff0000;">&quot;og:image&quot;</span> <span style="color: #000066;">content</span><span style="color: #66cc66;">=</span><span style="color: #ff0000;">&quot;http://www.elo7.com.br/pp/lagrimas-de-alegria.jpg&quot;</span> <span style="color: #66cc66;">/</span>&gt;</span>
<span style="color: #009900;">&lt;<span style="color: #000000; font-weight: bold;">meta</span> property<span style="color: #66cc66;">=</span><span style="color: #ff0000;">&quot;og:url&quot;</span> <span style="color: #000066;">content</span><span style="color: #66cc66;">=</span><span style="color: #ff0000;">&quot;http://www.elo7.com.br/lagrimas-de-alegria/1A75C3&quot;</span> <span style="color: #66cc66;">/</span>&gt;</span>
<span style="color: #009900;">&lt;<span style="color: #000000; font-weight: bold;">meta</span> property<span style="color: #66cc66;">=</span><span style="color: #ff0000;">&quot;og:site_name&quot;</span> <span style="color: #000066;">content</span><span style="color: #66cc66;">=</span><span style="color: #ff0000;">&quot;Elo7&quot;</span> <span style="color: #66cc66;">/</span>&gt;</span>
<span style="color: #009900;">&lt;<span style="color: #000000; font-weight: bold;">meta</span> <span style="color: #000066;">name</span><span style="color: #66cc66;">=</span><span style="color: #ff0000;">&quot;title&quot;</span> <span style="color: #000066;">content</span><span style="color: #66cc66;">=</span><span style="color: #ff0000;">&quot;Lágrimas de Alegria Pocket Lenço FTC4 | Estúdio 100 | 1A75C3&quot;</span> <span style="color: #66cc66;">/</span>&gt;</span>
<span style="color: #009900;">&lt;<span style="color: #000000; font-weight: bold;">meta</span> <span style="color: #000066;">name</span><span style="color: #66cc66;">=</span><span style="color: #ff0000;">&quot;description&quot;</span> <span style="color: #000066;">content</span><span style="color: #66cc66;">=</span><span style="color: #ff0000;">&quot;Pocket Lenço ORIGINAL Lencinhos para convidados. Envelope em papel branco textura floral + passaro Incluso 2 lencinhos de papel de bolso embalados em papel vegetal.&quot;</span> <span style="color: #66cc66;">/</span>&gt;</span>
<span style="color: #009900;">&lt;<span style="color: #000000; font-weight: bold;">meta</span> <span style="color: #000066;">name</span><span style="color: #66cc66;">=</span><span style="color: #ff0000;">&quot;keywords&quot;</span> <span style="color: #000066;">content</span><span style="color: #66cc66;">=</span><span style="color: #ff0000;">&quot;Lágrimas de Alegria Pocket Lenço FTC4,lagrimas de alegria,lencinho para casamento&quot;</span> <span style="color: #66cc66;">/</span>&gt;</span>
<span style="color: #009900;">&lt;<span style="color: #000000; font-weight: bold;">meta</span> <span style="color: #000066;">name</span><span style="color: #66cc66;">=</span><span style="color: #ff0000;">&quot;GOOGLEBOT&quot;</span> <span style="color: #000066;">content</span><span style="color: #66cc66;">=</span><span style="color: #ff0000;">&quot;NOARCHIVE&quot;</span> <span style="color: #66cc66;">/</span>&gt;</span>
<span style="color: #009900;">&lt;<span style="color: #000000; font-weight: bold;">meta</span> <span style="color: #000066;">name</span><span style="color: #66cc66;">=</span><span style="color: #ff0000;">&quot;robots&quot;</span> <span style="color: #000066;">content</span><span style="color: #66cc66;">=</span><span style="color: #ff0000;">&quot;index, follow, noarchive&quot;</span> <span style="color: #66cc66;">/</span>&gt;</span>
<span style="color: #009900;">&lt;<span style="color: #000000; font-weight: bold;">title</span>&gt;</span>Lágrimas de Alegria Pocket Lenço FTC4 | Estúdio 100 | 1A75C3<span style="color: #009900;">&lt;<span style="color: #66cc66;">/</span><span style="color: #000000; font-weight: bold;">title</span>&gt;</span></pre></td></tr></table></div>

<ul>
<li>Use all these tags (title, description, keywords, og:*)</li>
<li>If your page content changes a lot, use noarchive tag</li>
<li>Pay attention to title and description size. Title is smaller and description must not be too big.</li>
</ul>
<h2>Tip 2 &#8211; Nice and intuitive URLs help a lot</h2>
<p>If you can use intuitive and nice URLs, it will count a lot in your SEO ranking. Try to be organized. For example: if you have products in stores, try to use something like:</p>
<ul>
<li><code>/products/my-beautiful-product</code> &#8211; for the product URL </li>
<li><code>/categories/nice-category</code> or <code>/nice-category</code> &#8211; list all products in a category</li>
<li><code>/stores/incredible-store</code> &#8211; all products from a store</li>
<li><code>/stores/incredible-store/awesome-department</code> &#8211; list all products for a specific department in a store</li>
</ul>
<p>Avoid URLs like <code>/userProfile.do?command=showUserProfile&#038;webCode=1CC1A</code>. They mean nothing to the search engine bots. remember also that everything that goes after the query string (the question mark (?) in the URL) is usually weaker than what comes before the question mark. </p>
<h2>Tip 3 &#8211; Name your images properly</h2>
<p>If you are writing about lasagna in your page content, don&#8217;t the lasagna image <strong>IMG0345.jpg</strong> in the HTML! Name it <strong>lasagna.jpg</strong>! If you have 3 lasagnas photos, name them lasagna, lasagna-sugo.jpg, lasagna-bolognesa.jpg and so on. Put meaning in you page. And don&#8217;t forget the <em>ALT</em> and the <em>TITLE</em> properties in the <strong>IMG</strong> tag. They are indispensable!</p>
<h2>Tip 4 &#8211; The use of canonical</h2>
<p>If you have more than one URL pointing to the same page content, use a canonical link meta tag. Search engine robots are smart, so if you have two identical pages with two different address, their relevance will go down! Use this tag and put it in your HTML HEAD:</p>

<div class="wp_syntax"><table><tr><td class="code"><pre class="html4strict" style="font-family:monospace;"><span style="color: #009900;">&lt;<span style="color: #000000; font-weight: bold;">link</span> <span style="color: #000066;">rel</span><span style="color: #66cc66;">=</span><span style="color: #ff0000;">&quot;canonical&quot;</span> <span style="color: #000066;">href</span><span style="color: #66cc66;">=</span><span style="color: #ff0000;">&quot;http://www.elo7.com.br/lagrimas-de-alegria-pocket-lenco-ftc4/dp/1A75C3&quot;</span> <span style="color: #66cc66;">/</span>&gt;</span></pre></td></tr></table></div>

<h2>Tip 5 &#8211; Semantic content</h2>
<p>HTML is a good designed language for text content. It is not good for styles (colors, font, formats, etc). For styles you use CSS and for content you use HTML. Follow HTML conventions as much as possible: </p>
<ul>
<li>Put the main subject (the title) of your page in a <strong>H1</strong> TAG. </li>
<li>In <strong>H2</strong> tags, put subsections. </li>
<li>If you have a listings, use <strong>UL</strong> and <strong>LI</strong>.</li>
<li>Use tables just when you are really presenting a table.</li>
<li>If you want to emphasize something, use <em>EM</em> or <strong>STRONG</strong> tags.</li>
</ul>
<p>If you know <a href="http://html5tutorial.net/" title="HTML5 Tutorial" target="_blank">HTML5</a>, which has new and very expressive TAGs for multimedia content (and other), use it!<br />
<a href="http://www.agileandart.com/wp-content/uploads/2012/05/how-html5-aids-mobile-financial-app-development.jpeg"><img src="http://www.agileandart.com/wp-content/uploads/2012/05/how-html5-aids-mobile-financial-app-development.jpeg" alt="" title="how-html5-aids-mobile-financial-app-development" width="200" height="200" class="aligncenter size-full wp-image-659" /></a></p>
<h2>Tip 6 &#8211; Use of schema information &#8211; semantic to the extremes</h2>
<p>A recently launched website for the semantic web is <a href="http://schema.org" target="_blank">schema.org</a>. The purpose is to put some tags in your HTML to help robots to identify the kind of content you are serving. Differently from META tags that go in the top of your HTML HEAD, schema information go within the HTML code. Here are some examples that we used in <a href="http://www.elo7.com.br">Elo7</a> for product listing, for price, product description, etc.</p>

<div class="wp_syntax"><table><tr><td class="code"><pre class="html4strict" style="font-family:monospace;"><span style="color: #009900;">&lt;<span style="color: #000000; font-weight: bold;">html</span> <span style="color: #000066;">lang</span><span style="color: #66cc66;">=</span><span style="color: #ff0000;">&quot;pt-br&quot;</span> itemscope itemtype<span style="color: #66cc66;">=</span><span style="color: #ff0000;">'http://schema.org/Product'</span>&gt;</span>
<span style="color: #009900;">&lt;<span style="color: #000000; font-weight: bold;">div</span> itemscope itemtype<span style="color: #66cc66;">=</span><span style="color: #ff0000;">&quot;http://schema.org/Product&quot;</span>&gt;</span>
  <span style="color: #009900;">&lt;<span style="color: #000000; font-weight: bold;">span</span> itemprop<span style="color: #66cc66;">=</span><span style="color: #ff0000;">&quot;name&quot;</span>&gt;</span>Lágrimas de Alegria Pocket Lenço FTC4<span style="color: #009900;">&lt;<span style="color: #66cc66;">/</span><span style="color: #000000; font-weight: bold;">span</span>&gt;</span>
  <span style="color: #009900;">&lt;<span style="color: #000000; font-weight: bold;">img</span> itemprop<span style="color: #66cc66;">=</span><span style="color: #ff0000;">&quot;image&quot;</span> <span style="color: #000066;">src</span><span style="color: #66cc66;">=</span><span style="color: #ff0000;">&quot;http://img.elo7.com.br/product/main/37C149/lagrimas-de-alegria-pocket-lenco-ftc4.jpg&quot;</span> <span style="color: #000066;">alt</span><span style="color: #66cc66;">=</span><span style="color: #ff0000;">&quot;Lágrimas de Alegria Pocket Lenço FTC4&quot;</span> <span style="color: #000066;">title</span><span style="color: #66cc66;">=</span><span style="color: #ff0000;">&quot;Lágrimas de Alegria Pocket Lenço FTC4&quot;</span>&gt;</span>
<span style="color: #009900;">&lt;<span style="color: #000000; font-weight: bold;">span</span> itemprop<span style="color: #66cc66;">=</span><span style="color: #ff0000;">&quot;description&quot;</span>&gt;</span>Pocket Lenço ORIGINAL<span style="color: #009900;">&lt;<span style="color: #000000; font-weight: bold;">br</span>&gt;</span>Lencinhos para convidados...<span style="color: #009900;">&lt;<span style="color: #66cc66;">/</span><span style="color: #000000; font-weight: bold;">span</span>&gt;</span>
  <span style="color: #009900;">&lt;<span style="color: #000000; font-weight: bold;">div</span> itemprop<span style="color: #66cc66;">=</span><span style="color: #ff0000;">&quot;offers&quot;</span> itemscope<span style="color: #66cc66;">=</span><span style="color: #ff0000;">&quot;&quot;</span> itemtype<span style="color: #66cc66;">=</span><span style="color: #ff0000;">&quot;http://schema.org/Offer&quot;</span>&gt;</span>
     <span style="color: #009900;">&lt;<span style="color: #000000; font-weight: bold;">span</span> itemprop<span style="color: #66cc66;">=</span><span style="color: #ff0000;">&quot;price&quot;</span>&gt;</span>R$ 1,90<span style="color: #009900;">&lt;<span style="color: #66cc66;">/</span><span style="color: #000000; font-weight: bold;">span</span>&gt;</span>
  <span style="color: #009900;">&lt;<span style="color: #66cc66;">/</span><span style="color: #000000; font-weight: bold;">div</span>&gt;</span>
  <span style="color: #009900;">&lt;<span style="color: #000000; font-weight: bold;">div</span> itemprop<span style="color: #66cc66;">=</span><span style="color: #ff0000;">&quot;availability&quot;</span> <span style="color: #000066;">href</span><span style="color: #66cc66;">=</span><span style="color: #ff0000;">&quot;http://schema.org/PreOrder&quot;</span>&gt;</span>Prazo para produção: 15 dias<span style="color: #009900;">&lt;<span style="color: #66cc66;">/</span><span style="color: #000000; font-weight: bold;">div</span>&gt;</span>
  <span style="color: #009900;">&lt;<span style="color: #000000; font-weight: bold;">a</span> itemprop<span style="color: #66cc66;">=</span><span style="color: #ff0000;">&quot;url&quot;</span> <span style="color: #000066;">href</span><span style="color: #66cc66;">=</span><span style="color: #ff0000;">&quot;http://www.elo7.com.br/marcador-de-pagina/dp/202850&quot;</span> <span style="color: #66cc66;">/</span>&gt;</span>
<span style="color: #009900;">&lt;<span style="color: #66cc66;">/</span><span style="color: #000000; font-weight: bold;">div</span>&gt;</span></pre></td></tr></table></div>

<p>The <a href="http://schema.org">schema.org</a> is still growing, but google is already considering schema information in its search engines. The complete schema taggin information can be found in <a href="http://www.schema.org" title="Schema.org" target="_blank">schema.org website</a></p>
<h2>Tip 7 &#8211; Be fast for robots</h2>
<p>The faster your page loads, the better you will be ranked in search engine queries. Do as much page optimizations as possible in your website. For these optimizations, I recommend reading the <a href="http://stevesouders.com/">Steve Sourders</a> Books &#8211; <a href="http://shop.oreilly.com/product/9780596529307.do" target="_blank">High Performance Web Sites</a> and <a href="http://www.amazon.com/Even-Faster-Web-Sites-Performance/dp/0596522304" target="_blank">Even Faster Web Sites</a>. Believe it or not, if your website loads 20% faster, you can get 20% more traffic from search engines. </p>
<h2>Tip 8 &#8211; Monitor and graph whatever you can</h2>
<p><a href="http://www.agileandart.com/wp-content/uploads/2012/05/monitor.png"><img src="http://www.agileandart.com/wp-content/uploads/2012/05/monitor.png" alt="" title="monitor" width="600" height="400" class="aligncenter size-full wp-image-670" /></a><br />
Everything you change in your website must be monitored, so you can make sure you are making changes in the right direction. I recommend 3 tools for it:</p>
<ul>
<li>Google Analytics &#8211; watch you traffic increasing after some days of your changes. Mark in analytics the days you pushed SEO modifications into production</li>
<li><a href="https://www.google.com/webmasters/tools">Google webmaster tools</a> &#8211; metrics specifics for SEO. You can know how bots are crawling your site and if these bots are having problems with your code.</li>
<li><a href="http://newrelic.com/">New Relic</a> &#8211; a very powerful monitoring tool. It monitors your web server and your application, and points you hotspots of possible optimizations. Wonderful but expensive tool</li>
</ul>
<h2>Tip 9 &#8211; Backlinking</h2>
<p>This is a very powerful but also difficult task: have as many websites as possible linking to your content. But it is possible to do. Make partnerships with bloggers, big portals, and also your users (create link banners and give it to them to put in their websites). The more links you have pointing to your website, the more relevant it will be to search engines.</p>
<h2>Tip 10 &#8211; Be careful with javascript and flash content</h2>
<p>Robots do not execute javascripts nor have flash player! So, if your content is dynamically loaded using javascripts, you will need to change it, or have an alternative version of it in pure HTML. </p>
<p>An example of something that happen with us in Elo7: our products pages has 5 pictures for each product. The first main was a IMG tag, but the others were loaded using a javascript, just when the user clicked in the small thumbs of these images. For performance reasons, this is an intelligent strategy, because the browser does not need to load all images when the user goes to the page. The result was that just 1/5 of our website image where indexed in search engines. The solution was to put the other images in link &lt;A HREF&gt; tags. With this approach, the images are not loaded until the user clicks it, leaving the page fast; and the robots follow the link, so these images are indexed. Take a look of what happen to our SEO ranking when we did this small change in our HTML. The graph bellow (from <a href="https://www.google.com/webmasters/tools" title="Webmaster tools" target="_blank">Google Webmaster tools</a>) shows that the quantity of listed itens more that double after the images started to appear to the robot:<br />
<a href="http://www.agileandart.com/wp-content/uploads/2012/05/webmaster-tools.png"><img src="http://www.agileandart.com/wp-content/uploads/2012/05/webmaster-tools.png" alt="" title="webmaster-tools" width="633" height="174" class="aligncenter size-full wp-image-660" /></a></p>
]]></content:encoded>
			<wfw:commentRss>http://www.agileandart.com/2012/05/20/10-seo-tips-to-improve-your-website-ranking/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Extending Patterns for Fearless Change &#8211; final version</title>
		<link>http://www.agileandart.com/2012/04/08/extending-patterns-for-fearless-change-final-version/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=extending-patterns-for-fearless-change-final-version</link>
		<comments>http://www.agileandart.com/2012/04/08/extending-patterns-for-fearless-change-final-version/#comments</comments>
		<pubDate>Sun, 08 Apr 2012 22:18:48 +0000</pubDate>
		<dc:creator>Daniel Cukier</dc:creator>
				<category><![CDATA[Academic]]></category>
		<category><![CDATA[Agile]]></category>
		<category><![CDATA[Patterns]]></category>
		<category><![CDATA[Publications]]></category>
		<category><![CDATA[Art]]></category>
		<category><![CDATA[behavioral patterns]]></category>
		<category><![CDATA[do art]]></category>
		<category><![CDATA[fearless change]]></category>
		<category><![CDATA[let them play]]></category>
		<category><![CDATA[linda rising]]></category>
		<category><![CDATA[Mary Lynn Manns]]></category>
		<category><![CDATA[patterns for introducing new ideas]]></category>
		<category><![CDATA[plop]]></category>

		<guid isPermaLink="false">http://www.agileandart.com/?p=636</guid>
		<description><![CDATA[Last year, I went to Portland (OR) and had the honor to attend to PLoP and SPLASH Conference. The paper I published in PLoP 2011 is finally released, so I&#8217;m sharing it with you. I&#8217;d like to thank all participants of the Writers Workshop. Their feedback was precious for me. Special thanks to Richard P. [...]]]></description>
				<content:encoded><![CDATA[<p><iframe id="doc_36591" src="http://www.scribd.com/embeds/70124759/content?start_page=1&amp;view_mode=list&amp;access_key=key-23r45gcp4s812spe4qh7" frameborder="0" scrolling="no" width="100%" height="600" data-auto-height="true" data-aspect-ratio="0.777636594663278"></iframe><br />
<span id="more-636"></span><br />
Last year, I went to Portland (OR) and had the honor to attend to PLoP and SPLASH Conference. The paper I published in PLoP 2011 is finally released, so I&#8217;m sharing it with you. I&#8217;d like to thank all participants of the Writers Workshop. Their feedback was precious for me. Special thanks to Richard P. Gabriel, Joe Yoder and Lise Hvatum, and, I shouldn&#8217;t forget, Linda Rising and Mary Linn Manns, for the unforgettable help during the shepherding process.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.agileandart.com/2012/04/08/extending-patterns-for-fearless-change-final-version/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Introdução ao Cloud Computing e as soluções do Mercado (vídeo)</title>
		<link>http://www.agileandart.com/2012/02/23/introducao-ao-cloud-computing-e-as-solucoes-do-mercado-video/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=introducao-ao-cloud-computing-e-as-solucoes-do-mercado-video</link>
		<comments>http://www.agileandart.com/2012/02/23/introducao-ao-cloud-computing-e-as-solucoes-do-mercado-video/#comments</comments>
		<pubDate>Thu, 23 Feb 2012 23:18:43 +0000</pubDate>
		<dc:creator>Daniel Cukier</dc:creator>
				<category><![CDATA[Cloud]]></category>
		<category><![CDATA[Programming]]></category>
		<category><![CDATA[Technology]]></category>
		<category><![CDATA[Videos]]></category>
		<category><![CDATA[amazon]]></category>
		<category><![CDATA[amazon elastic compute cloud]]></category>
		<category><![CDATA[amazon web services]]></category>
		<category><![CDATA[campus party]]></category>
		<category><![CDATA[cloud]]></category>
		<category><![CDATA[cloud computing]]></category>
		<category><![CDATA[ec2]]></category>
		<category><![CDATA[s3]]></category>
		<category><![CDATA[startup company]]></category>

		<guid isPermaLink="false">http://www.agileandart.com/?p=624</guid>
		<description><![CDATA[Segue o vídeo da palestra que eu dei esse ano na Campus Party sobre Cloud Computing]]></description>
				<content:encoded><![CDATA[<p>Segue o vídeo da palestra que eu dei esse ano na <a href="http://www.campus-party.com.br/2012/desenvolvimento.html">Campus Party sobre Cloud Computing</a><br />
<iframe width="640" height="360" src="http://www.youtube.com/embed/EpPyq8OZBgg" frameborder="0" allowfullscreen></iframe></p>
]]></content:encoded>
			<wfw:commentRss>http://www.agileandart.com/2012/02/23/introducao-ao-cloud-computing-e-as-solucoes-do-mercado-video/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>
