<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/xsl" media="screen" href="/~d/styles/rss2portuguesefull.xsl"?><?xml-stylesheet type="text/css" media="screen" href="http://feeds.giggio.net/~d/styles/itemcontent.css"?><rss xmlns:blogChannel="http://backend.userland.com/blogChannelModule" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:pingback="http://madskills.com/public/xml/rss/module/pingback/" xmlns:trackback="http://madskills.com/public/xml/rss/module/trackback/" xmlns:wfw="http://wellformedweb.org/CommentAPI/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/" xmlns:geo="http://www.w3.org/2003/01/geo/wgs84_pos#" xmlns:creativeCommons="http://backend.userland.com/creativeCommonsRssModule" xmlns:feedburner="http://rssnamespace.org/feedburner/ext/1.0" version="2.0">
  <channel>
    <title>.Net Unplugged</title>
    <description>.Net essencial</description>
    <link>http://unplugged.giggio.net/unplugged/</link>
    <docs>http://www.rssboard.org/rss-specification</docs>
    <generator>BlogEngine.NET 1.5.1.17</generator>
    <language>pt-BR</language>
    <blogChannel:blogRoll>http://unplugged.giggio.net/unplugged/opml.axd</blogChannel:blogRoll>
    <blogChannel:blink>http://unplugged.giggio.net/syndication.axd</blogChannel:blink>
    <dc:creator>Giovanni Bassi</dc:creator>
    <dc:title>.Net Unplugged</dc:title>
    <geo:lat>-2,356.000000</geo:lat>
    <geo:long>-4,663.000000</geo:long>
    <atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="self" type="application/rss+xml" href="http://feeds.giggio.net/DotNetUnplugged" /><feedburner:info uri="dotnetunplugged" /><atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="hub" href="http://pubsubhubbub.appspot.com/" /><geo:lat>-23.5505</geo:lat><geo:long>-46.6343</geo:long><creativeCommons:license>http://creativecommons.org/licenses/by-sa/3.0/</creativeCommons:license><image><link>http://unplugged.giggio.net</link><url>http://unplugged.giggio.net/themes/StableStartBlack1.3/images/image4.gif</url><title>.Net Unplugged</title></image><feedburner:emailServiceId>DotNetUnplugged</feedburner:emailServiceId><feedburner:feedburnerHostname>http://feedburner.google.com</feedburner:feedburnerHostname><feedburner:feedFlare href="http://add.my.yahoo.com/rss?url=http%3A%2F%2Ffeeds.giggio.net%2FDotNetUnplugged" src="http://us.i1.yimg.com/us.yimg.com/i/us/my/addtomyyahoo4.gif">Subscribe with My Yahoo!</feedburner:feedFlare><feedburner:feedFlare href="http://www.newsgator.com/ngs/subscriber/subext.aspx?url=http%3A%2F%2Ffeeds.giggio.net%2FDotNetUnplugged" src="http://www.newsgator.com/images/ngsub1.gif">Subscribe with NewsGator</feedburner:feedFlare><feedburner:feedFlare href="http://feeds.my.aol.com/add.jsp?url=http%3A%2F%2Ffeeds.giggio.net%2FDotNetUnplugged" src="http://o.aolcdn.com/favorites.my.aol.com/webmaster/ffclient/webroot/locale/en-US/images/myAOLButtonSmall.gif">Subscribe with My AOL</feedburner:feedFlare><feedburner:feedFlare href="http://www.bloglines.com/sub/http://feeds.giggio.net/DotNetUnplugged" src="http://www.bloglines.com/images/sub_modern11.gif">Subscribe with Bloglines</feedburner:feedFlare><feedburner:feedFlare href="http://www.netvibes.com/subscribe.php?url=http%3A%2F%2Ffeeds.giggio.net%2FDotNetUnplugged" src="http://www.netvibes.com/img/add2netvibes.gif">Subscribe with Netvibes</feedburner:feedFlare><feedburner:feedFlare href="http://fusion.google.com/add?feedurl=http%3A%2F%2Ffeeds.giggio.net%2FDotNetUnplugged" src="http://buttons.googlesyndication.com/fusion/add.gif">Subscribe with Google</feedburner:feedFlare><feedburner:feedFlare href="http://www.pageflakes.com/subscribe.aspx?url=http%3A%2F%2Ffeeds.giggio.net%2FDotNetUnplugged" src="http://www.pageflakes.com/ImageFile.ashx?instanceId=Static_4&amp;fileName=ATP_blu_91x17.gif">Subscribe with Pageflakes</feedburner:feedFlare><item>
      <title>Testando o banco de dados: com infra não Microsoft</title>
      <description>&lt;p&gt;Essa é uma continuação do post anterior:&lt;/p&gt;  &lt;p&gt;&lt;a href="http://unplugged.giggio.net/post/Testando-o-banco-de-dados-com-Infra-Microsoft.aspx" target="_blank"&gt;Testando o banco de dados: com Infra Microsoft&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;Nesse vou apresentar a mesma solução, mas usando outras ferramentas, quase todas open source. Por isso eu quero dizer tudo mesmo, só vou manter o Visual Studio de padrão.&lt;/p&gt;  &lt;p&gt;Vamos ao cardápio:&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;Para test framework: &lt;a href="http://gallio.org/" target="_blank"&gt;Gallio/MbUnit&lt;/a&gt; &lt;/li&gt;    &lt;li&gt;Para test runners: &lt;a href="http://testdriven.net/" target="_blank"&gt;TestDriven.Net&lt;/a&gt; e Gallio/MbUnit &lt;/li&gt;    &lt;li&gt;Teste de banco de dados: &lt;a href="http://code.google.com/p/ndbunit/" target="_blank"&gt;NDbUnit&lt;/a&gt; &lt;/li&gt;    &lt;li&gt;OR/M: &lt;a href="http://nhforge.org/" target="_blank"&gt;NHibernate&lt;/a&gt; &lt;/li&gt; &lt;/ul&gt;  &lt;p&gt;Todo o projeto está no BitBucket para download. Você pode baixá-lo &lt;a href="http://bitbucket.org/giggio/blog_testesopensource/get/2ae8c6692998.zip"&gt;aqui&lt;/a&gt; e vê-lo online &lt;a href="http://bitbucket.org/giggio/blog_testesopensource/src" target="_blank"&gt;aqui&lt;/a&gt;.&lt;/p&gt;  &lt;p&gt;Vamos começar pelos testes. Vou continuar no &lt;a href="http://unplugged.giggio.net/post/Testando-com-AAA-%28Arrange-Act-Assert%29.aspx" target="_blank"&gt;estilo AAA&lt;/a&gt; para testar: &lt;/p&gt;  &lt;pre class="brush: csharp;"&gt;using ClassLibrary1;
using NHibernate;
using MbUnit.Framework;

namespace TestProject1.Testes
{
    [TestFixture]
    public class TesteConsulta : TesteBase
    {
        private const int IdParaConsultar = 1;
        private ISession _session;
        private Produto _produtoEncontrado;

        [SetUp]
        public void Initialize()
        {
            Arrange();

            Act();
        }

        private void Arrange()
        {
            _session = Contexto.SessionFactory.OpenSession();
        }

        private void Act()
        {
            _produtoEncontrado = _session.Get&amp;lt;Produto&amp;gt;(IdParaConsultar);
        }

        [Test]
        public void ExisteNoBD()
        {
            Assert.IsNotNull(_produtoEncontrado);
        }
        [Test]
        public void TemNomeCorreto()
        {
            Assert.AreEqual(&amp;quot;meu nome&amp;quot;, _produtoEncontrado.Nome);
        }
    }
}&lt;/pre&gt;

&lt;p&gt;O primeiro a notar é que estamos usando MbUnit, como framework de testes. Ele é o responsável pelos atributos TestFixture na classe e &lt;em&gt;Setup&lt;/em&gt; e &lt;em&gt;Test&lt;/em&gt; nos métodos. O Gallio é parte do MbUnit (ou vice versa) e roda os testes. Ao rodar este é o resultado:&lt;/p&gt;

&lt;p&gt;&lt;a href="http://unplugged.giggio.net/unplugged/image.axd?picture=image_203.png" rel="lightbox"&gt;&lt;img style="background-image: none; border-bottom: 0px; border-left: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top: 0px; border-right: 0px; padding-top: 0px" title="image" border="0" alt="image" src="http://unplugged.giggio.net/unplugged/image.axd?picture=image_thumb_134.png" width="404" height="184" /&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Esse resultado é obtido rodando com o TestDriven.Net. Com ele, posso clicar em qualquer lugar e rodar qualquer teste. Fica muito fácil, e como ele é especializado em rodar testes unitários, ele roda um pouco mais rápido que o runner do MSTest. Veja como rodar com TDD.Net na classe:&lt;/p&gt;

&lt;p&gt;&lt;a href="http://unplugged.giggio.net/unplugged/image.axd?picture=image_204.png" rel="lightbox"&gt;&lt;img style="border-bottom: 0px; border-left: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top: 0px; border-right: 0px; padding-top: 0px" title="image" border="0" alt="image" src="http://unplugged.giggio.net/unplugged/image.axd?picture=image_thumb_135.png" width="404" height="157" /&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Mais fácil impossível, né? E dá para rodar também via Powershell:&lt;/p&gt;

&lt;p&gt;Rodando:&lt;/p&gt;

&lt;p&gt;&lt;a href="http://unplugged.giggio.net/unplugged/image.axd?picture=image_205.png" rel="lightbox"&gt;&lt;img style="background-image: none; border-bottom: 0px; border-left: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top: 0px; border-right: 0px; padding-top: 0px" title="image" border="0" alt="image" src="http://unplugged.giggio.net/unplugged/image.axd?picture=image_thumb_136.png" width="404" height="134" /&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Terminou de rodar, resultados:&lt;/p&gt;

&lt;p&gt;&lt;a href="http://unplugged.giggio.net/unplugged/image.axd?picture=image_206.png" rel="lightbox"&gt;&lt;img style="background-image: none; border-bottom: 0px; border-left: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top: 0px; border-right: 0px; padding-top: 0px" title="image" border="0" alt="image" src="http://unplugged.giggio.net/unplugged/image.axd?picture=image_thumb_137.png" width="404" height="179" /&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;O resultado é apresentado também com um relatório HTML. &lt;a href="http://unplugged.giggio.net/staticpages/TDNetRunner/Report/TestProject1.dll.html" target="_blank"&gt;Publiquei o relatório de uma rodada completa de testes aqui no blog&lt;/a&gt; se alguém quiser dar uma olhada no resultado. O legal é que dá pra ver até os sqls gerados pelo NHibernate.&lt;/p&gt;

&lt;p&gt;Se rodarmos todos os testes, o resultado é esse:&lt;/p&gt;

&lt;p&gt;&lt;a href="http://unplugged.giggio.net/unplugged/image.axd?picture=image_207.png" rel="lightbox"&gt;&lt;img style="background-image: none; border-bottom: 0px; border-left: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top: 0px; border-right: 0px; padding-top: 0px" title="image" border="0" alt="image" src="http://unplugged.giggio.net/unplugged/image.axd?picture=image_thumb_138.png" width="404" height="214" /&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;E para isso, basta clicar no projeto e mandar rodar:&lt;/p&gt;

&lt;p&gt;&lt;a href="http://unplugged.giggio.net/unplugged/image.axd?picture=image_208.png" rel="lightbox"&gt;&lt;img style="background-image: none; border-bottom: 0px; border-left: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top: 0px; border-right: 0px; padding-top: 0px" title="image" border="0" alt="image" src="http://unplugged.giggio.net/unplugged/image.axd?picture=image_thumb_139.png" width="404" height="224" /&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Ok, chega de telinhas, vamos voltar para o teste.&lt;/p&gt;

&lt;p&gt;Estamos usando NHibernate, e a sessão do NH (análoga ao contexto do Entity Framework), é aberta via SessionFactory, que está armazenada em uma classe chamada contexto, em uma propriedade estática:&lt;/p&gt;

&lt;pre class="brush: csharp;"&gt;public class Contexto
{
    public static ISessionFactory SessionFactory { get; set; }
}&lt;/pre&gt;

&lt;p&gt;Esse código seria usado também pela aplicação real, além dos testes. Estamos só reaproveitando. Logo mais vou mostrar como essa variável é configurada.&lt;/p&gt;

&lt;p&gt;O método de ação bate no NH, que bate no banco, e obtem o produto com Id igual a 1. Esse é o método Act.&lt;/p&gt;

&lt;p&gt;Os testes são verificações simples da existência do produto, e de sua propriedade Nome.&lt;/p&gt;

&lt;p&gt;Tenho testes para exclusão e inclusão também. Esse é o de exclusão:&lt;/p&gt;

&lt;pre class="brush: csharp;"&gt;[TestFixture]
public class TesteExclusao : TesteBase
{
    private const int IdParaExcluir = 1;
    private ISession _session;

    [SetUp]
    public void Initialize()
    {
        Arrange();

        Act();
    }

    private void Arrange()
    {
        _session = Contexto.SessionFactory.OpenSession();
    }

    private void Act()
    {
        var produtoParaExcluir = _session.Get&amp;lt;Produto&amp;gt;(IdParaExcluir);
        using (var tran = _session.BeginTransaction())
        {
            _session.Delete(produtoParaExcluir);
            tran.Commit();
        }
    }

    [Test]
    public void NaoEstaNoBD()
    {
        _session.Clear();
        var produtoExcluido = _session.Get&amp;lt;Produto&amp;gt;(IdParaExcluir);
        Assert.IsNull(produtoExcluido);
    }
}&lt;/pre&gt;

&lt;p&gt;Neste eu excluo o Id igual a 1, e depois testo se o produto foi removido do banco, limpando a sessão para evitar cache, e fazendo novamente a consulta.&lt;/p&gt;

&lt;p&gt;Posso rodar este teste quantas vezes quiser. Como ele continua funcionando?&lt;/p&gt;

&lt;p&gt;Vocês já devem ter notado que os testes herdam de TesteBase. Vamos ver esta classe:&lt;/p&gt;

&lt;pre class="brush: csharp;"&gt;public abstract class TesteBase 
{
    [SetUp]
    public virtual void TestInitialize() 
    {
        OperacoesDeTestes.CarregarBancoDeDados(ConfiguracaoDeTestes.Esquema, ConfiguracaoDeTestes.DadosDeTeste);
    }
}&lt;/pre&gt;

&lt;p&gt;Notaram que ela faz uma carga do banco de dados, sempre antes de um teste rodar? É assim que garanto que o teste de exclusão nunca vai falhar por não encontrar produto para excluir, ou que o teste de inclusão vai falhar ao consultar e receber nulo.&lt;/p&gt;

&lt;p&gt;Esta classe colabora com a classe OperacoesDeTestes. Esta classe, na prática, é só um wrapper em volta do NDbUnit. O NDbUnit é responsável por subir os dados no banco de dados, e ele também pode baixá-los. Ele faz isso com xml e xsd. Aqui vocês vêem os métodos desta classe:&lt;/p&gt;

&lt;pre class="brush: csharp;"&gt;public static class OperacoesDeTestes
{
    public static void CarregarBancoDeDados(
        string esquema,
        string dados)
    {
        var baseDeDados = ObterBaseDeDados();
        baseDeDados.ReadXmlSchema(esquema);
        baseDeDados.ReadXml(dados);
        baseDeDados.PerformDbOperation(DbOperationFlag.CleanInsertIdentity);
    }

    private static INDbUnitTest ObterBaseDeDados()
    {
        var baseDeDados = new SqlDbUnitTest(ConfiguracaoDeTestes.StringDeConexao);
        return baseDeDados;
    }

}&lt;/pre&gt;

&lt;p&gt;Notem que o método CarregarBancoDeDados lê o schema e o xml, e salva no banco, limpando os campos identity, se existirem, sempre usando o NDbUnit.&lt;/p&gt;

&lt;p&gt;E de onde vem os dados? Há uma classe chamada ConfiguracaoDeTestes. Vejam ela:&lt;/p&gt;

&lt;pre class="brush: csharp;"&gt;public class ConfiguracaoDeTestes
{
    public static string DiretorioDeDados;
    public static string DadosDeBackup;
    public static string DadosDeTeste;
    public static string Esquema;
    public static string StringDeConexao;

    public static void InicializarVariaveisDeTeste(
        string basedir,
        string stringDeConexao)
    {
        StringDeConexao = stringDeConexao;
        DiretorioDeDados = Path.Combine(basedir, @&amp;quot;Dados\&amp;quot;);
        DadosDeBackup = Path.Combine(DiretorioDeDados, &amp;quot;DadosBackup.xml&amp;quot;);
        DadosDeTeste = Path.Combine(DiretorioDeDados, &amp;quot;Dados.xml&amp;quot;);
        Esquema = Path.Combine(DiretorioDeDados, &amp;quot;Schema.xsd&amp;quot;);
    }
}&lt;/pre&gt;

&lt;p&gt;Na prática ela somente segura valores de configuração, para que possam ser acessados facilmente de qualquer lugar. Entre os dados estão os diretórios onde guardamos os arquivos xml e xsd. Esta classe recebe seus valores de outra, chamada AssemblyInitialize.&lt;/p&gt;

&lt;p&gt;Todo bom framework de testes permite fazer um setup inicial, que roda antes de todos os testes. O MbUnit não é diferente. Para permitir isso, basta usar o atributo AssemblyFixture sobre uma classe, e usar os métodos Setup e TearDown para preparar o ambiente de testes e desmontá-lo, respectivamente.&lt;/p&gt;

&lt;p&gt;No meu caso, na inicialização do teste, preciso inicializar as variáveis de teste, que ficam na classe de configuração vista anteriormente, preciso configurar o NHibernate, e atualizar o esquema do banco de dados. Ufa, vamos ver como fica:&lt;/p&gt;

&lt;pre class="brush: csharp;"&gt;[AssemblyFixture]
public class AssemblyInitializer
{
    [SetUp]
    public static void AssemblyInitialize()
    {
        var baseDir = Path.GetDirectoryName(Assembly.GetExecutingAssembly().Location);
        ConfiguracaoDeTestes.InicializarVariaveisDeTeste(baseDir, StringDeConexao);
        ConfigurarNHibernateESubirEsquemaDoBancoDeDadosDeDominio();
    }&lt;/pre&gt;

&lt;p&gt;Aqui estamos declarando a classe e o método de inicialização. Estou obtendo o caminho do assembly em execução. É lá que fica meu xml e meu xsd. E passo isso, mais a string de conexão, para configurar o ambiente. Em seguida, configura o NH e subo o esquema do banco de dados. &lt;/p&gt;

&lt;p&gt;Não vou entrar em detalhes de como o NH sobe o banco de dados, você pode ver a classe de configuração &lt;a href="http://bitbucket.org/giggio/blog_testesopensource/src/tip/src/ClassLibrary1/Configurador.cs" target="_blank"&gt;lá no BitBucket&lt;/a&gt;. Na prática a operação se chama schema update, onde ele compara o banco que está em produção com o que ele tem, e atualiza tudo.&lt;/p&gt;

&lt;p&gt;Quero mostrar aqui a parte do NbUnit. Eu configuro ele com um xsd, criado a partir de um dataset tipado. Sim! Um dataset tipado. Eles ainda existem! Esse é o único lugar onde eu tenho usado datasets tipados nos últimos anos, e faz total sentido. Vejam ele, chamado de schema.xsd, aqui:&lt;/p&gt;

&lt;p&gt;&lt;a href="http://unplugged.giggio.net/unplugged/image.axd?picture=image_209.png" rel="lightbox"&gt;&lt;img style="background-image: none; border-bottom: 0px; border-left: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top: 0px; border-right: 0px; padding-top: 0px" title="image" border="0" alt="image" src="http://unplugged.giggio.net/unplugged/image.axd?picture=image_thumb_140.png" width="404" height="312" /&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Notem três coisas. Primeiro: arranquei os table adapters, não precisamos dele, só queremos o xsd. Como queremos só o xsd, apaguei a custom tool, que fica na janela de propriedades. Sem custom tool, não há geração do arquivo que gera o dataset, isso elimina a criação do arquivo Schema.cs.&lt;/p&gt;

&lt;p&gt;Isso me dá o schema que preciso para preparar o banco de dados. Basta então digitar o xml. O xml é muito simples:&lt;/p&gt;

&lt;pre class="brush: xml;"&gt;&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;utf-8&amp;quot; ?&amp;gt;
&amp;lt;Schema xmlns=&amp;quot;http://tempuri.org/Schema.xsd&amp;quot;&amp;gt;
  &amp;lt;Produto&amp;gt;
    &amp;lt;Id&amp;gt;1&amp;lt;/Id&amp;gt;
    &amp;lt;Nome&amp;gt;meu nome&amp;lt;/Nome&amp;gt;
  &amp;lt;/Produto&amp;gt;
  &amp;lt;ProdutoId&amp;gt;
    &amp;lt;NextHi&amp;gt;1&amp;lt;/NextHi&amp;gt;
  &amp;lt;/ProdutoId&amp;gt;
&amp;lt;/Schema&amp;gt;&lt;/pre&gt;

&lt;p&gt;Usando o namespace correto, ele funciona perfeitamente e o Visual Studio ainda valida o xml enquanto você escreve.&lt;/p&gt;

&lt;p&gt;Basta então, apenas configurar estes dois arquivos para serem copiados para o diretório de testes.&lt;/p&gt;

&lt;p&gt;&lt;a href="http://unplugged.giggio.net/unplugged/image.axd?picture=image_210.png" rel="lightbox"&gt;&lt;img style="background-image: none; border-bottom: 0px; border-left: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top: 0px; border-right: 0px; padding-top: 0px" title="image" border="0" alt="image" src="http://unplugged.giggio.net/unplugged/image.axd?picture=image_thumb_141.png" width="264" height="405" /&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Ao rodar o método OperacoesDeTestes.CarregarBancoDeDados, e passar este xml e xsd como parâmetros, tudo funciona. Os dados vão parar no banco de dados conforme o esperado.&lt;/p&gt;

&lt;p&gt;E com isso fecho o ciclo completo: atualizo o schema do banco, subo os dados, e testo. A partir da criação desta pequena infra, é só escrever os testes livremente, sempre herdando de TesteBase.&lt;/p&gt;

&lt;p&gt;O que acharam? Qual preferem, &lt;a href="http://unplugged.giggio.net/post/Testando-o-banco-de-dados-com-Infra-Microsoft.aspx" target="_blank"&gt;com infra Microsoft&lt;/a&gt;, ou infra (semi)open? Porque?&lt;/p&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.giggio.net/~ff/DotNetUnplugged?a=9DTsoGhxCkU:xyyBUsoUd9o:Tph0bMNtBCI"&gt;&lt;img src="http://feeds.feedburner.com/~ff/DotNetUnplugged?d=Tph0bMNtBCI" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.giggio.net/~ff/DotNetUnplugged?a=9DTsoGhxCkU:xyyBUsoUd9o:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/DotNetUnplugged?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.giggio.net/~ff/DotNetUnplugged?a=9DTsoGhxCkU:xyyBUsoUd9o:D7DqB2pKExk"&gt;&lt;img src="http://feeds.feedburner.com/~ff/DotNetUnplugged?i=9DTsoGhxCkU:xyyBUsoUd9o:D7DqB2pKExk" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.giggio.net/~ff/DotNetUnplugged?a=9DTsoGhxCkU:xyyBUsoUd9o:F7zBnMyn0Lo"&gt;&lt;img src="http://feeds.feedburner.com/~ff/DotNetUnplugged?i=9DTsoGhxCkU:xyyBUsoUd9o:F7zBnMyn0Lo" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.giggio.net/~ff/DotNetUnplugged?a=9DTsoGhxCkU:xyyBUsoUd9o:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/DotNetUnplugged?i=9DTsoGhxCkU:xyyBUsoUd9o:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.giggio.net/~ff/DotNetUnplugged?a=9DTsoGhxCkU:xyyBUsoUd9o:I9og5sOYxJI"&gt;&lt;img src="http://feeds.feedburner.com/~ff/DotNetUnplugged?d=I9og5sOYxJI" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.giggio.net/~ff/DotNetUnplugged?a=9DTsoGhxCkU:xyyBUsoUd9o:3oH-tSNJdoA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/DotNetUnplugged?d=3oH-tSNJdoA" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/DotNetUnplugged/~4/9DTsoGhxCkU" height="1" width="1"/&gt;</description>
      <link>http://feeds.giggio.net/~r/DotNetUnplugged/~3/9DTsoGhxCkU/post.aspx</link>
      <author>Giovanni Bassi</author>
      <comments>http://unplugged.giggio.net/unplugged/post/Testando-o-banco-de-dados-com-infra-nao-Microsoft.aspx#comment</comments>
      <guid isPermaLink="false">http://unplugged.giggio.net/unplugged/post.aspx?id=0044211e-c8fc-4cbf-8057-2cc12f2eab08</guid>
      <pubDate>Fri, 27 Aug 2010 02:48:53 -0200</pubDate>
      <category>Testes</category>
      <dc:publisher>Giovanni Bassi</dc:publisher>
      <pingback:server>http://unplugged.giggio.net/unplugged/pingback.axd</pingback:server>
      <pingback:target>http://unplugged.giggio.net/unplugged/post.aspx?id=0044211e-c8fc-4cbf-8057-2cc12f2eab08</pingback:target>
      <slash:comments>0</slash:comments>
      <trackback:ping>http://unplugged.giggio.net/unplugged/trackback.axd?id=0044211e-c8fc-4cbf-8057-2cc12f2eab08</trackback:ping>
      <wfw:comment>http://unplugged.giggio.net/unplugged/post/Testando-o-banco-de-dados-com-infra-nao-Microsoft.aspx#comment</wfw:comment>
      <wfw:commentRss>http://unplugged.giggio.net/unplugged/syndication.axd?post=0044211e-c8fc-4cbf-8057-2cc12f2eab08</wfw:commentRss>
    <feedburner:origLink>http://unplugged.giggio.net/unplugged/post.aspx?id=0044211e-c8fc-4cbf-8057-2cc12f2eab08</feedburner:origLink></item>
    <item>
      <title>TDC2010: Palestra de Integração Contínua</title>
      <description>&lt;p&gt;&lt;img style="background-image: none; border-bottom: 0px; border-left: 0px; padding-left: 0px; padding-right: 0px; display: block; float: none; margin-left: auto; border-top: 0px; margin-right: auto; border-right: 0px; padding-top: 0px" title="TDC 2010 - Agile" border="0" alt="TDC 2010 - Agile" src="http://unplugged.giggio.net/unplugged/image.axd?picture=image_202.png" width="500" height="83" /&gt;&lt;/p&gt;  &lt;p&gt;Hoje (agora a pouco, na verdade) rolou minha palestra sobre Integração Continua na &lt;a href="http://www.thedevelopersconference.com.br/tdc/2010/sp/trilha-agile" target="_blank"&gt;trilha de Agile&lt;/a&gt; do &lt;a href="http://www.thedevelopersconference.com.br/tdc/2010/index.html" target="_blank"&gt;The Developers Conference 2010&lt;/a&gt;.&lt;/p&gt;  &lt;p&gt;Subi a palestra para o SlideShare, como sempre. Está abaixo:&lt;/p&gt;  &lt;div style="width: 425px" id="__ss_5033914"&gt;&lt;strong style="margin: 12px 0px 4px; display: block"&gt;&lt;a title="Integração Contínua" href="http://www.slideshare.net/giovanni.bassi/integrao-contnua"&gt;Integração Contínua&lt;/a&gt;&lt;/strong&gt;&lt;object id="__sse5033914" width="425" height="355"&gt;&lt;param name="movie" value="http://static.slidesharecdn.com/swf/ssplayer2.swf?doc=cinotdc2010-100822131842-phpapp01&amp;amp;stripped_title=integrao-contnua-5033914" /&gt;&lt;param name="allowFullScreen" value="true" /&gt;&lt;param name="allowScriptAccess" value="always" /&gt;&lt;embed name="__sse5033914" src="http://static.slidesharecdn.com/swf/ssplayer2.swf?doc=cinotdc2010-100822131842-phpapp01&amp;amp;stripped_title=integrao-contnua-5033914" type="application/x-shockwave-flash" allowscriptaccess="always" allowfullscreen="true" width="425" height="355"&gt;&lt;/embed&gt;&lt;/object&gt;    &lt;div style="padding-bottom: 12px; padding-left: 0px; padding-right: 0px; padding-top: 5px"&gt;View more &lt;a href="http://www.slideshare.net/"&gt;presentations&lt;/a&gt; from &lt;a href="http://www.slideshare.net/giovanni.bassi"&gt;Giovanni Bassi&lt;/a&gt;.&lt;/div&gt; &lt;/div&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.giggio.net/~ff/DotNetUnplugged?a=1KUkgX8pkac:wAsp5Oyihj8:Tph0bMNtBCI"&gt;&lt;img src="http://feeds.feedburner.com/~ff/DotNetUnplugged?d=Tph0bMNtBCI" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.giggio.net/~ff/DotNetUnplugged?a=1KUkgX8pkac:wAsp5Oyihj8:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/DotNetUnplugged?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.giggio.net/~ff/DotNetUnplugged?a=1KUkgX8pkac:wAsp5Oyihj8:D7DqB2pKExk"&gt;&lt;img src="http://feeds.feedburner.com/~ff/DotNetUnplugged?i=1KUkgX8pkac:wAsp5Oyihj8:D7DqB2pKExk" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.giggio.net/~ff/DotNetUnplugged?a=1KUkgX8pkac:wAsp5Oyihj8:F7zBnMyn0Lo"&gt;&lt;img src="http://feeds.feedburner.com/~ff/DotNetUnplugged?i=1KUkgX8pkac:wAsp5Oyihj8:F7zBnMyn0Lo" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.giggio.net/~ff/DotNetUnplugged?a=1KUkgX8pkac:wAsp5Oyihj8:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/DotNetUnplugged?i=1KUkgX8pkac:wAsp5Oyihj8:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.giggio.net/~ff/DotNetUnplugged?a=1KUkgX8pkac:wAsp5Oyihj8:I9og5sOYxJI"&gt;&lt;img src="http://feeds.feedburner.com/~ff/DotNetUnplugged?d=I9og5sOYxJI" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.giggio.net/~ff/DotNetUnplugged?a=1KUkgX8pkac:wAsp5Oyihj8:3oH-tSNJdoA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/DotNetUnplugged?d=3oH-tSNJdoA" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/DotNetUnplugged/~4/1KUkgX8pkac" height="1" width="1"/&gt;</description>
      <link>http://feeds.giggio.net/~r/DotNetUnplugged/~3/1KUkgX8pkac/post.aspx</link>
      <author>Giovanni Bassi</author>
      <comments>http://unplugged.giggio.net/unplugged/post/TDC2010-Palestra-de-Integracao-Continua.aspx#comment</comments>
      <guid isPermaLink="false">http://unplugged.giggio.net/unplugged/post.aspx?id=e8376acd-7c0d-4537-85ef-a7f17e9d0941</guid>
      <pubDate>Sun, 22 Aug 2010 16:21:02 -0200</pubDate>
      <category>Eventos</category>
      <dc:publisher>Giovanni Bassi</dc:publisher>
      <pingback:server>http://unplugged.giggio.net/unplugged/pingback.axd</pingback:server>
      <pingback:target>http://unplugged.giggio.net/unplugged/post.aspx?id=e8376acd-7c0d-4537-85ef-a7f17e9d0941</pingback:target>
      <slash:comments>2</slash:comments>
      <trackback:ping>http://unplugged.giggio.net/unplugged/trackback.axd?id=e8376acd-7c0d-4537-85ef-a7f17e9d0941</trackback:ping>
      <wfw:comment>http://unplugged.giggio.net/unplugged/post/TDC2010-Palestra-de-Integracao-Continua.aspx#comment</wfw:comment>
      <wfw:commentRss>http://unplugged.giggio.net/unplugged/syndication.axd?post=e8376acd-7c0d-4537-85ef-a7f17e9d0941</wfw:commentRss>
    <feedburner:origLink>http://unplugged.giggio.net/unplugged/post.aspx?id=e8376acd-7c0d-4537-85ef-a7f17e9d0941</feedburner:origLink></item>
    <item>
      <title>TDC2010: Palestra de testes</title>
      <description>&lt;p&gt;&lt;img style="background-image: none; border-right-width: 0px; padding-left: 0px; padding-right: 0px; display: block; float: none; border-top-width: 0px; border-bottom-width: 0px; margin-left: auto; border-left-width: 0px; margin-right: auto; padding-top: 0px" title="The Developers Conference - Trilha .Net" border="0" alt="The Developers Conference - Trilha .Net" src="http://unplugged.giggio.net/unplugged/image.axd?picture=image_200.png" width="550" height="92" /&gt;&lt;/p&gt;   &lt;p&gt;No sábado palestrei com o &lt;a href="http://blogs.msdn.com/andredias/" target="_blank"&gt;André Dias&lt;/a&gt; no &lt;a href="http://www.thedevelopersconference.com.br/tdc/2010/sp/trilha-dot-net" target="_blank"&gt;The Developers Conference 2010&lt;/a&gt;. Falamos sobre “tudo que você precisa saber sobre testes na plataforma Microsoft”. Na prática não falamos tudo, já que o &lt;a href="http://igoravl.spaces.live.com/" target="_blank"&gt;Igor Abade&lt;/a&gt; palestrou na trilha de testes no dia anterior e mostrou toda a parte de testes manuais com Microsoft Test Manager (MTM). E também íamos falar milhões de coisas, só que dados os poucos 50 minutos de cada palestra, tivemos que reduzir para milhares. E como o tempo era pouco, resolvemos cortar qualquer coisa que tomasse tempo da palestra, isso incluiu os slides. Então, para essa palestra não tem slides. Fizemos palestra com o notepad, e íamos exibindo o conteúdo do notepad conforme a palestra adiantava. Vejam aqui o que foi o txt que usamos, pra ter uma ideia:&lt;/p&gt;  &lt;pre&gt;NO SLIDES !! YES DEMOS !!! 
================================================================
# TDC 2010
# Tudo o que você precisar saber sobre testes na Plataforma .NET
================================================================
André Dias
Consultor de ALM - Mic
rosoft | Visual Studio ALM Ranger | Scrum Developer Trainer
http://blogs.msdn.com/andredias
andre.dias@microsoft.com
@andrediasbr
===============================================================
Giovanni Bassi
Consultor Independente | MVP | Scrum Developer Trainer | Scrum Trainer
http://giovannibassi.com
http://unplugged.giggio.net
giggio@giggio.net
@giovannibassi

Agenda:
•	Testes unitários com Visual Studio / MSTest 
	o	Demos de unit tests
	o	Code Generation
	o	Teste de Tipos privados (PrivateObject, PrivateType)
	o	Code Coverage
	o	Teste de exceções
	o	Data-Driven Unit Test	
	o	Test Impact Analysis
	o	Suporte a TDD / Test First
	o	IntelliTrace
	
•	Outros frameworks/test runners
	o	NUnit
	o	MbUnit/Gallio
	o	TestDriven.Net
	o	NCover	

•	Coded UI Tests
	
•	BDD e TDD com Resharper + StoryQ

	
•	Conclusões&lt;/pre&gt;

&lt;p&gt;&amp;#160;&lt;/p&gt;

&lt;p&gt;E isso foi o que ficou de fora, no final do txt. Se sobrasse tempo entraria: 
  &lt;br /&gt;&lt;/p&gt;

&lt;pre&gt;•    O que eu preciso? (licenciamento)
    
•    Testes de banco de dados
    o    Teste unitário de stored procedures e funções
    o    Data Generation Plan
    
•    Mocks
    o    Moq
    
•    Testes de banco de dados com NDbUnit

•    Web Performance Test

•    Load Test        

•    Pex e Moles&lt;/pre&gt;

&lt;p&gt;Mas não sobrou tempo nenhum. Dá pra ver que tinha assunto pra mais uma palestra fácil, né?&lt;/p&gt;

&lt;p&gt;A palestra foi super bem avaliada. Foi apresentação do assunto e demos e mais demos.&lt;/p&gt;

&lt;p&gt;Agora fica o compromisso para eu e o André fazermos uma segunda pra concluir.&lt;/p&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.giggio.net/~ff/DotNetUnplugged?a=7IwmZ6aGwiU:8fHj9PO9fok:Tph0bMNtBCI"&gt;&lt;img src="http://feeds.feedburner.com/~ff/DotNetUnplugged?d=Tph0bMNtBCI" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.giggio.net/~ff/DotNetUnplugged?a=7IwmZ6aGwiU:8fHj9PO9fok:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/DotNetUnplugged?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.giggio.net/~ff/DotNetUnplugged?a=7IwmZ6aGwiU:8fHj9PO9fok:D7DqB2pKExk"&gt;&lt;img src="http://feeds.feedburner.com/~ff/DotNetUnplugged?i=7IwmZ6aGwiU:8fHj9PO9fok:D7DqB2pKExk" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.giggio.net/~ff/DotNetUnplugged?a=7IwmZ6aGwiU:8fHj9PO9fok:F7zBnMyn0Lo"&gt;&lt;img src="http://feeds.feedburner.com/~ff/DotNetUnplugged?i=7IwmZ6aGwiU:8fHj9PO9fok:F7zBnMyn0Lo" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.giggio.net/~ff/DotNetUnplugged?a=7IwmZ6aGwiU:8fHj9PO9fok:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/DotNetUnplugged?i=7IwmZ6aGwiU:8fHj9PO9fok:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.giggio.net/~ff/DotNetUnplugged?a=7IwmZ6aGwiU:8fHj9PO9fok:I9og5sOYxJI"&gt;&lt;img src="http://feeds.feedburner.com/~ff/DotNetUnplugged?d=I9og5sOYxJI" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.giggio.net/~ff/DotNetUnplugged?a=7IwmZ6aGwiU:8fHj9PO9fok:3oH-tSNJdoA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/DotNetUnplugged?d=3oH-tSNJdoA" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/DotNetUnplugged/~4/7IwmZ6aGwiU" height="1" width="1"/&gt;</description>
      <link>http://feeds.giggio.net/~r/DotNetUnplugged/~3/7IwmZ6aGwiU/post.aspx</link>
      <author>Giovanni Bassi</author>
      <comments>http://unplugged.giggio.net/unplugged/post/TDC2010-Palestra-de-testes.aspx#comment</comments>
      <guid isPermaLink="false">http://unplugged.giggio.net/unplugged/post.aspx?id=1d7fc513-5a25-4ccb-8b13-f36b267d0abd</guid>
      <pubDate>Sun, 22 Aug 2010 16:02:00 -0200</pubDate>
      <category>Eventos</category>
      <dc:publisher>Giovanni Bassi</dc:publisher>
      <pingback:server>http://unplugged.giggio.net/unplugged/pingback.axd</pingback:server>
      <pingback:target>http://unplugged.giggio.net/unplugged/post.aspx?id=1d7fc513-5a25-4ccb-8b13-f36b267d0abd</pingback:target>
      <slash:comments>1</slash:comments>
      <trackback:ping>http://unplugged.giggio.net/unplugged/trackback.axd?id=1d7fc513-5a25-4ccb-8b13-f36b267d0abd</trackback:ping>
      <wfw:comment>http://unplugged.giggio.net/unplugged/post/TDC2010-Palestra-de-testes.aspx#comment</wfw:comment>
      <wfw:commentRss>http://unplugged.giggio.net/unplugged/syndication.axd?post=1d7fc513-5a25-4ccb-8b13-f36b267d0abd</wfw:commentRss>
    <feedburner:origLink>http://unplugged.giggio.net/unplugged/post.aspx?id=1d7fc513-5a25-4ccb-8b13-f36b267d0abd</feedburner:origLink></item>
    <item>
      <title>TechEd 2010: Minha agenda</title>
      <description>&lt;p&gt;&lt;a href="http://www.teched.com.br/" target="_blank"&gt;&lt;img style="background-image: none; border-bottom: 0px; border-left: 0px; padding-left: 0px; padding-right: 0px; display: block; float: none; margin-left: auto; border-top: 0px; margin-right: auto; border-right: 0px; padding-top: 0px" title="Teched Brasil" border="0" alt="Teched Brasil" src="http://unplugged.giggio.net/unplugged/image.axd?picture=image_199.png" width="780" height="146" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;A Microsoft liberou as inscrições para os palestrantes, e já fui lá e me inscrevi. &lt;/p&gt;  &lt;p&gt;Abaixo vocês vêem minha grade.&lt;/p&gt;  &lt;p&gt;Alguns comentários:&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;Rob Ranches e Data Mining? Não dá pra perder. Aliás, Rob Ranches não dá pra perder nunca, só pelo show.&lt;/li&gt;    &lt;li&gt;“Conheça os limites do Windows” é um nome muito legal pra uma palestra. Queria eu dar essa!&lt;/li&gt;    &lt;li&gt;Vários amigos na lista. Sempre um prazer ver os MVPs, que encontro sempre, alguns futuros MVPs (evidentes na lista), e os amigos da Microsoft.&lt;/li&gt;    &lt;li&gt;Minhas palestras estão destacadas em amarelo. Depois eu falo mais sobre elas.&lt;/li&gt; &lt;/ul&gt;  &lt;p&gt;Vejo vocês lá.&lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;h5&gt;Programação do dia 13/09/2010&lt;/h5&gt;  &lt;p&gt;13:45 - 15:00&lt;/p&gt;  &lt;p style="background-color: yellow"&gt;&lt;strong&gt;Título:&lt;/strong&gt; ASP.NET MVC para desenvolvedores Web Forms&amp;#160; &lt;br /&gt;&lt;strong&gt;Palestrante (s):&lt;/strong&gt; Giovanni Bassi, Victor Cavalcante,     &lt;br /&gt;&lt;strong&gt;Sala:&lt;/strong&gt; Cantareira 3     &lt;br /&gt;&lt;strong&gt;Público:&lt;/strong&gt; Desenvolvedores / Profissionais de TI&lt;/p&gt;  &lt;p&gt;15:30 - 16:45&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;Título:&lt;/strong&gt; Arquitetura de Soluções com o Windows Server AppFabric, WCF e WF - Patterns de Aplicações, Serviços e Workflows&amp;#160; &lt;br /&gt;&lt;strong&gt;Palestrante (s):&lt;/strong&gt; Waldemir Cambiucci,     &lt;br /&gt;&lt;strong&gt;Sala:&lt;/strong&gt; Jaçanã 1     &lt;br /&gt;&lt;strong&gt;Público:&lt;/strong&gt; Desenvolvedores / Profissionais de TI&lt;/p&gt;  &lt;p&gt;17:15 - 18:30&lt;/p&gt;  &lt;p style="background-color: yellow"&gt;&lt;strong&gt;Título:&lt;/strong&gt; Scrum Process Template para TFS 2010: Seja ágil de verdade! - 150 min&amp;#160; &lt;br /&gt;&lt;strong&gt;Palestrante (s):&lt;/strong&gt; André Dias, Giovanni Bassi,     &lt;br /&gt;&lt;strong&gt;Sala:&lt;/strong&gt; Cantareira 5     &lt;br /&gt;&lt;strong&gt;Público:&lt;/strong&gt; Desenvolvedores / Profissionais de TI&lt;/p&gt;  &lt;h5&gt;Programação do dia 14/09/2010&lt;/h5&gt;  &lt;p&gt;09:00 - 10:15&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;Título:&lt;/strong&gt; Windows Server AppFabric Caching - construindo aplicações com alto desempenho na plataforma Microsoft&amp;#160; &lt;br /&gt;&lt;strong&gt;Palestrante (s):&lt;/strong&gt; Osvaldo Daibert,     &lt;br /&gt;&lt;strong&gt;Sala:&lt;/strong&gt; Jaçanã 1     &lt;br /&gt;&lt;strong&gt;Público:&lt;/strong&gt; Desenvolvedores / Profissionais de TI&lt;/p&gt;  &lt;p&gt;10:45 - 12:00&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;Título:&lt;/strong&gt; Teste de software com o Visual Studio 2010: Parte 2 de 2&amp;#160; &lt;br /&gt;&lt;strong&gt;Palestrante (s):&lt;/strong&gt; Brian Keller, Rodrigo de Carvalho,     &lt;br /&gt;&lt;strong&gt;Sala:&lt;/strong&gt; Cantareira 4     &lt;br /&gt;&lt;strong&gt;Público:&lt;/strong&gt; Desenvolvedores / Profissionais de TI&lt;/p&gt;  &lt;p&gt;13:45 - 15:00&lt;/p&gt;  &lt;p style="background-color: yellow"&gt;&lt;strong&gt;Título:&lt;/strong&gt; &lt;a href="http://ASP.NET"&gt;ASP.NET&lt;/a&gt; MVC 2: O que há de Novo?&amp;#160; &lt;br /&gt;&lt;strong&gt;Palestrante (s):&lt;/strong&gt; Giovanni Bassi, Victor Cavalcante,     &lt;br /&gt;&lt;strong&gt;Sala:&lt;/strong&gt; Cantareira 3     &lt;br /&gt;&lt;strong&gt;Público:&lt;/strong&gt; Desenvolvedores / Profissionais de TI&lt;/p&gt;  &lt;p&gt;15:30 - 16:45&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;Título:&lt;/strong&gt; Implementando Serviços RESTful usando o Microsoft .NET Framework&amp;#160; &lt;br /&gt;&lt;strong&gt;Palestrante (s):&lt;/strong&gt; Israel Aece,     &lt;br /&gt;&lt;strong&gt;Sala:&lt;/strong&gt; Cantareira 5     &lt;br /&gt;&lt;strong&gt;Público:&lt;/strong&gt; Desenvolvedores / Profissionais de TI&lt;/p&gt;  &lt;p&gt;17:15 - 18:30&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;Título:&lt;/strong&gt; Conheça os limites do Windows&amp;#160; &lt;br /&gt;&lt;strong&gt;Palestrante (s):&lt;/strong&gt; Guilherme Carnevale,     &lt;br /&gt;&lt;strong&gt;Sala:&lt;/strong&gt; Santana 2     &lt;br /&gt;&lt;strong&gt;Público:&lt;/strong&gt; Desenvolvedores / Profissionais de TI&lt;/p&gt;  &lt;h5&gt;Programação do dia 15/09/2010&lt;/h5&gt;  &lt;p&gt;09:00 - 10:15&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;Título:&lt;/strong&gt; PowerPivot Avançado: Modelagem, formulas e DAX&amp;#160; &lt;br /&gt;&lt;strong&gt;Palestrante (s):&lt;/strong&gt; Thiago Henrique Hernandes Zavaschi,     &lt;br /&gt;&lt;strong&gt;Sala:&lt;/strong&gt; Cantareira 7     &lt;br /&gt;&lt;strong&gt;Público:&lt;/strong&gt; Desenvolvedores / Profissionais de TI&lt;/p&gt;  &lt;p&gt;10:45 - 12:00&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;Título:&lt;/strong&gt; Criando Dashboards no PerformacePoint Services do SharePoint 2010&amp;#160; &lt;br /&gt;&lt;strong&gt;Palestrante (s):&lt;/strong&gt; Thiago Cruz Soares,     &lt;br /&gt;&lt;strong&gt;Sala:&lt;/strong&gt; Cantareira 7     &lt;br /&gt;&lt;strong&gt;Público:&lt;/strong&gt; Desenvolvedores / Profissionais de TI&lt;/p&gt;  &lt;p&gt;13:45 - 15:00&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;Título:&lt;/strong&gt; Criando Rich Internet Applications (RIA) com Silverlight 4 e WCF RIA Services&amp;#160; &lt;br /&gt;&lt;strong&gt;Palestrante (s):&lt;/strong&gt; Kelps Leite de Sousa,     &lt;br /&gt;&lt;strong&gt;Sala:&lt;/strong&gt; Cantareira 3     &lt;br /&gt;&lt;strong&gt;Público:&lt;/strong&gt; Desenvolvedores / Profissionais de TI&lt;/p&gt;  &lt;p&gt;15:30 - 16:45&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;Título:&lt;/strong&gt; Entendendo a Plataforma de Aplicações do Windows Phone 7&amp;#160; &lt;br /&gt;&lt;strong&gt;Palestrante (s):&lt;/strong&gt; Galileu Vieira, Luciano Condé,     &lt;br /&gt;&lt;strong&gt;Sala:&lt;/strong&gt; Cantareira 5     &lt;br /&gt;&lt;strong&gt;Público:&lt;/strong&gt; Desenvolvedores / Profissionais de TI&lt;/p&gt;  &lt;p&gt;17:15 - 18:30&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;Título:&lt;/strong&gt; Tudo o que você precisa saber sobre Data Mining&amp;#160; &lt;br /&gt;&lt;strong&gt;Palestrante (s):&lt;/strong&gt; Roberval Ranches,     &lt;br /&gt;&lt;strong&gt;Sala:&lt;/strong&gt; Cantareira 7     &lt;br /&gt;&lt;strong&gt;Público:&lt;/strong&gt; Desenvolvedores / Profissionais de TI&lt;/p&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.giggio.net/~ff/DotNetUnplugged?a=xDvTbITKRVw:g-sju295mvw:Tph0bMNtBCI"&gt;&lt;img src="http://feeds.feedburner.com/~ff/DotNetUnplugged?d=Tph0bMNtBCI" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.giggio.net/~ff/DotNetUnplugged?a=xDvTbITKRVw:g-sju295mvw:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/DotNetUnplugged?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.giggio.net/~ff/DotNetUnplugged?a=xDvTbITKRVw:g-sju295mvw:D7DqB2pKExk"&gt;&lt;img src="http://feeds.feedburner.com/~ff/DotNetUnplugged?i=xDvTbITKRVw:g-sju295mvw:D7DqB2pKExk" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.giggio.net/~ff/DotNetUnplugged?a=xDvTbITKRVw:g-sju295mvw:F7zBnMyn0Lo"&gt;&lt;img src="http://feeds.feedburner.com/~ff/DotNetUnplugged?i=xDvTbITKRVw:g-sju295mvw:F7zBnMyn0Lo" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.giggio.net/~ff/DotNetUnplugged?a=xDvTbITKRVw:g-sju295mvw:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/DotNetUnplugged?i=xDvTbITKRVw:g-sju295mvw:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.giggio.net/~ff/DotNetUnplugged?a=xDvTbITKRVw:g-sju295mvw:I9og5sOYxJI"&gt;&lt;img src="http://feeds.feedburner.com/~ff/DotNetUnplugged?d=I9og5sOYxJI" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.giggio.net/~ff/DotNetUnplugged?a=xDvTbITKRVw:g-sju295mvw:3oH-tSNJdoA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/DotNetUnplugged?d=3oH-tSNJdoA" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/DotNetUnplugged/~4/xDvTbITKRVw" height="1" width="1"/&gt;</description>
      <link>http://feeds.giggio.net/~r/DotNetUnplugged/~3/xDvTbITKRVw/post.aspx</link>
      <author>Giovanni Bassi</author>
      <comments>http://unplugged.giggio.net/unplugged/post/TechEd-2010-Minha-agenda.aspx#comment</comments>
      <guid isPermaLink="false">http://unplugged.giggio.net/unplugged/post.aspx?id=ef6f066b-5832-4886-9f10-b5e92b38b52c</guid>
      <pubDate>Thu, 19 Aug 2010 21:28:14 -0200</pubDate>
      <category>Eventos</category>
      <dc:publisher>Giovanni Bassi</dc:publisher>
      <pingback:server>http://unplugged.giggio.net/unplugged/pingback.axd</pingback:server>
      <pingback:target>http://unplugged.giggio.net/unplugged/post.aspx?id=ef6f066b-5832-4886-9f10-b5e92b38b52c</pingback:target>
      <slash:comments>1</slash:comments>
      <trackback:ping>http://unplugged.giggio.net/unplugged/trackback.axd?id=ef6f066b-5832-4886-9f10-b5e92b38b52c</trackback:ping>
      <wfw:comment>http://unplugged.giggio.net/unplugged/post/TechEd-2010-Minha-agenda.aspx#comment</wfw:comment>
      <wfw:commentRss>http://unplugged.giggio.net/unplugged/syndication.axd?post=ef6f066b-5832-4886-9f10-b5e92b38b52c</wfw:commentRss>
    <feedburner:origLink>http://unplugged.giggio.net/unplugged/post.aspx?id=ef6f066b-5832-4886-9f10-b5e92b38b52c</feedburner:origLink></item>
    <item>
      <title>Testando com AAA (Arrange, Act, Assert)</title>
      <description>&lt;p&gt;Não, AAA não é só uma pilha, é também uma forma de testar. O que eu vou mostrar aqui talvez você já conheça, talvez você já faça, mas talvez nunca tenha parado pra pensar no assunto.&lt;/p&gt;  &lt;ol&gt;   &lt;li&gt;Todo teste passa por uma preparação, seja de ambiente, variáveis, banco de dados, etc. Essa preparação pode ser chamada em inglês de &lt;strong&gt;A&lt;/strong&gt;rrange. Nosso primeiro &lt;strong&gt;A&lt;/strong&gt;. &lt;/li&gt;    &lt;li&gt;Em seguida, todo teste passa por um momento onde estimulamos o sistema sendo testado (System Under Test em inglês, ou SUT). Isso é o &lt;strong&gt;A&lt;/strong&gt;ct, nosso segundo &lt;strong&gt;A&lt;/strong&gt;. &lt;/li&gt;    &lt;li&gt;E logo em seguida, verificarmos se os resultados obtidos batem com os resultados esperados&lt;strong&gt;. &lt;/strong&gt;Isso é o &lt;strong&gt;A&lt;/strong&gt;ssert, o terceiro &lt;strong&gt;A&lt;/strong&gt;. &lt;/li&gt; &lt;/ol&gt;  &lt;p&gt;Essa não é a única forma de definir o ciclo de testes, há outras. Mas essa é uma das mais fáçeis de entender. Vamos pegar um teste comum, e vamos transformá-lo num testes triple-A. Vejam o teste abaixo, onde testo uma calculadora:&lt;/p&gt;  &lt;pre class="brush: csharp;"&gt;[TestClass]
public class TestaCalc
{
    [TestMethod]
    public void TesteSoma()
    {
        var calculadora = new Calculadora();
        var resultado = calculadora.Somar(2, 3);
        Assert.AreEqual(5, resultado);
    }
}

public class Calculadora
{
    public int Somar(int a, int b)
    {
        return a + b;
    }
}&lt;/pre&gt;

&lt;p&gt;Posso evidenciar os três As assim:&lt;/p&gt;

&lt;pre class="brush: csharp; highlight: [7,9,11];"&gt;[TestClass]
public class TestaCalc
{
    [TestMethod]
    public void TesteSoma()
    {
        //arrange:
        var calculadora = new Calculadora();
        //act:
        var resultado = calculadora.Somar(2, 3);
        //assert:
        Assert.AreEqual(5, resultado);
    }
}&lt;/pre&gt;

&lt;p&gt;Mas isso não muda nada o que eu já estava fazendo. &lt;/p&gt;

&lt;p&gt;Já ouviram falar que cada teste só pode testar uma coisa? Já tentou fazer isso? Já viu como é difícil se não pensarmos de forma estruturada? E o problema é mesmo a estrutura. Vou propor uma mudança estrutural.&lt;/p&gt;

&lt;p&gt;Inicio separando a preparação (Arrange) e o estímulo (Act), das verificações (Asserts). Isso é fácil de fazer, a primeira ação é criar a ideia de contexto, que no teste anterior da calculadora não existia, e na prática, ficava encapsulado no método. O contexto vai ser aplicado à classe, e não mais ao método. O contexto do teste é a calculadora. O contexto é preparado e estimulado na inicialização do teste.&lt;/p&gt;

&lt;p&gt;Toda classe fica com mais ou menos essa estrutura:&lt;/p&gt;

&lt;pre class="brush: csharp;"&gt;[TestClass]
public class Teste
{
    [TestInitialize]
    public void Inicializar()
    {
        Arrange();

        Act();
    }

    private void Arrange()
    {
        //prepara
    }

    private void Act()
    {
        //executa
    }

    [TestMethod]
    public void VerificaAlgo()
    {
        //faz as verificaoes
    }
    
    [TestMethod]
    public void VerificaAlgoAMais()
    {
        //faz outras verificaoes
    }
}&lt;/pre&gt;

&lt;p&gt;Para traduzir o teste de calculadora fica fácil. Coloco a criação da calculadora no arrange, a soma no Act, e as verificações no teste em si.&lt;/p&gt;

&lt;pre class="brush: csharp;"&gt;[TestClass]
public class DadaUmaCalculadoraQueSoma2Mais3
{
    private Calculadora _calculadora;
    private int _resultado;

    [TestInitialize]
    public void Inicializar()
    {
        Arrange();

        Act();
    }
    private void Arrange()
    {
        _calculadora = new Calculadora();
    }
    private void Act()
    {
        _resultado = _calculadora.Somar(2, 3);
    }
    [TestMethod]
    public void Totaliza5()
    {
        Assert.AreEqual(5, _resultado);
    }
}&lt;/pre&gt;

&lt;p&gt;Com isso, apenas separamos o teste em três métodos diferentes, e pode ser que não esteja valendo a pena. &lt;/p&gt;

&lt;p&gt;A ideia começa a ficar mais interessantes quando o teste fica mais complexo. O teste passa a ser auto-explicativo, e as falhas passam a ficar mais evidentes. O exemplo a seguir deixa isso claro:&lt;/p&gt;

&lt;pre class="brush: csharp;"&gt;[TestClass]
public class TestaServicoEmissaoNFEmitindoNF
{
    private ServicoEmissaoNF _servico;
    private Pedido _pedido;
    private NotaFiscal _nf;
    private EnviadorDeMensagensFake _enviador;

    [TestInitialize]
    public void Inicializar()
    {
        Arrange();

        Act();
    }

    private void Arrange()
    {
        _pedido = new Pedido(500);
        _enviador = new EnviadorDeMensagensFake();
        _servico = new ServicoEmissaoNF(_enviador);
    }

    private void Act()
    {
        _nf = _servico.Emitir(_pedido);
    }

    [TestMethod]
    public void NFNaoÉNula()
    {
        Assert.IsNotNull(_nf);
    }
    
    [TestMethod]
    public void ValorDaNFÉIgualAoValorDoPedido()
    {
        Assert.AreEqual(_pedido.Valor, _nf.Valor);
    }

    [TestMethod]
    public void MensagemEhEnviada()
    {
        Assert.IsFalse(string.IsNullOrWhiteSpace(_enviador.MensagemEnviada));
    }
}&lt;/pre&gt;

&lt;p&gt;Nesse cenário, crio uma nota fiscal a partir de um pedido, e verifico 3 coisas: a NF é criada (não é nula), o valor da NF é igual ao valor do pedido, e uma mensagem é enviada durante o processo. Cada um é um único teste.&lt;/p&gt;

&lt;p&gt;Poderia fazer isso sem o AAA explícito? Poderia. Ficaria assim:&lt;/p&gt;

&lt;pre class="brush: csharp;"&gt;[TestClass]
public class TestaServicoEmissaoNF
{
    [TestMethod]
    public void EmissaoDaNF()
    {
        //arrange
        var pedido = new Pedido(500);
        var enviador = new EnviadorDeMensagensFake();
        var servico = new ServicoEmissaoNF(enviador);
        //act
        var nf = servico.Emitir(pedido);
        //assert
        Assert.IsNotNull(nf);
        Assert.AreEqual(pedido.Valor, nf.Valor);
        Assert.IsFalse(string.IsNullOrWhiteSpace(enviador.MensagemEnviada));
    }
}&lt;/pre&gt;

&lt;p&gt;Porque eu não faria isso num cenário como esse?&lt;/p&gt;

&lt;ol&gt;
  &lt;li&gt;O teste testa 3 coisas diferentes;&lt;/li&gt;

  &lt;li&gt;Se o primeiro assert falhar, eu não sei se os outros passaram;&lt;/li&gt;

  &lt;li&gt;O método testa coisa demais, isso fica evidente pelo nome do método de teste&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;É uma troca de expressividade e manutenibilidade por velocidade na escrita do código. Como a diferença de velocidade é mínima, e a perda de expressividade é alta, eu decido por não fazer.&lt;/p&gt;

&lt;p&gt;Isso fica ainda mais fácil se você criar uma classe abstrata para testes. Algo assim:&lt;/p&gt;

&lt;pre class="brush: csharp;"&gt;public abstract class TesteBase
{
    [TestInitialize]
    public void Inicializar()
    {
        Arrange();

        Act();
    }

    protected virtual void Arrange()
    {
    }

    protected abstract void Act();
}&lt;/pre&gt;

&lt;p&gt;Assim, o Arrange é opcional, o Act é obrigatório, e os testes você implementa como quiser.&lt;/p&gt;

&lt;p&gt;Depois eu conto como melhorar isso ainda mais. Em breve. Estou devendo alguns posts…&lt;/p&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.giggio.net/~ff/DotNetUnplugged?a=ubz-oUmuRzY:Ia4auQZm_uk:Tph0bMNtBCI"&gt;&lt;img src="http://feeds.feedburner.com/~ff/DotNetUnplugged?d=Tph0bMNtBCI" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.giggio.net/~ff/DotNetUnplugged?a=ubz-oUmuRzY:Ia4auQZm_uk:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/DotNetUnplugged?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.giggio.net/~ff/DotNetUnplugged?a=ubz-oUmuRzY:Ia4auQZm_uk:D7DqB2pKExk"&gt;&lt;img src="http://feeds.feedburner.com/~ff/DotNetUnplugged?i=ubz-oUmuRzY:Ia4auQZm_uk:D7DqB2pKExk" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.giggio.net/~ff/DotNetUnplugged?a=ubz-oUmuRzY:Ia4auQZm_uk:F7zBnMyn0Lo"&gt;&lt;img src="http://feeds.feedburner.com/~ff/DotNetUnplugged?i=ubz-oUmuRzY:Ia4auQZm_uk:F7zBnMyn0Lo" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.giggio.net/~ff/DotNetUnplugged?a=ubz-oUmuRzY:Ia4auQZm_uk:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/DotNetUnplugged?i=ubz-oUmuRzY:Ia4auQZm_uk:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.giggio.net/~ff/DotNetUnplugged?a=ubz-oUmuRzY:Ia4auQZm_uk:I9og5sOYxJI"&gt;&lt;img src="http://feeds.feedburner.com/~ff/DotNetUnplugged?d=I9og5sOYxJI" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.giggio.net/~ff/DotNetUnplugged?a=ubz-oUmuRzY:Ia4auQZm_uk:3oH-tSNJdoA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/DotNetUnplugged?d=3oH-tSNJdoA" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/DotNetUnplugged/~4/ubz-oUmuRzY" height="1" width="1"/&gt;</description>
      <link>http://feeds.giggio.net/~r/DotNetUnplugged/~3/ubz-oUmuRzY/post.aspx</link>
      <author>Giovanni Bassi</author>
      <comments>http://unplugged.giggio.net/unplugged/post/Testando-com-AAA-(Arrange-Act-Assert).aspx#comment</comments>
      <guid isPermaLink="false">http://unplugged.giggio.net/unplugged/post.aspx?id=dd7a1af9-a133-4186-a82d-390582ff9256</guid>
      <pubDate>Wed, 18 Aug 2010 19:11:02 -0200</pubDate>
      <category>Testes</category>
      <dc:publisher>Giovanni Bassi</dc:publisher>
      <pingback:server>http://unplugged.giggio.net/unplugged/pingback.axd</pingback:server>
      <pingback:target>http://unplugged.giggio.net/unplugged/post.aspx?id=dd7a1af9-a133-4186-a82d-390582ff9256</pingback:target>
      <slash:comments>6</slash:comments>
      <trackback:ping>http://unplugged.giggio.net/unplugged/trackback.axd?id=dd7a1af9-a133-4186-a82d-390582ff9256</trackback:ping>
      <wfw:comment>http://unplugged.giggio.net/unplugged/post/Testando-com-AAA-(Arrange-Act-Assert).aspx#comment</wfw:comment>
      <wfw:commentRss>http://unplugged.giggio.net/unplugged/syndication.axd?post=dd7a1af9-a133-4186-a82d-390582ff9256</wfw:commentRss>
    <feedburner:origLink>http://unplugged.giggio.net/unplugged/post.aspx?id=dd7a1af9-a133-4186-a82d-390582ff9256</feedburner:origLink></item>
    <item>
      <title>Webcasts sobre Scrum com Visual Studio</title>
      <description>&lt;p&gt;Dois webcasts serão apresentados pelo Richard Hundhausen, da &lt;a href="http://www.accentient.com/" target="_blank"&gt;Accentient&lt;/a&gt;, que criou junto com a &lt;a href="http://www.scrum.org" target="_blank"&gt;Scrum.org&lt;/a&gt; o &lt;a href="http://www.scrumdev.com.br/curso/psd" target="_blank"&gt;Professional Scrum Developer&lt;/a&gt; para .Net.&lt;/p&gt;  &lt;p&gt;Serão em inglês, semana que vem:&lt;/p&gt;  &lt;p&gt;Parte 1: Terça, 17/08, 15 hrs&lt;/p&gt;  &lt;p&gt;&lt;a href="https://www.clicktoattend.com/invitation.aspx?code=149942"&gt;https://www.clicktoattend.com/invitation.aspx?code=149942&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;Parte 2: Quinta, 19/08, 15 hrs&lt;/p&gt;  &lt;p&gt;&lt;a href="https://www.clicktoattend.com/invitation.aspx?code=149944"&gt;https://www.clicktoattend.com/invitation.aspx?code=149944&lt;/a&gt;&lt;/p&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.giggio.net/~ff/DotNetUnplugged?a=73C49ZZIWYQ:N5BPu0yomqg:Tph0bMNtBCI"&gt;&lt;img src="http://feeds.feedburner.com/~ff/DotNetUnplugged?d=Tph0bMNtBCI" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.giggio.net/~ff/DotNetUnplugged?a=73C49ZZIWYQ:N5BPu0yomqg:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/DotNetUnplugged?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.giggio.net/~ff/DotNetUnplugged?a=73C49ZZIWYQ:N5BPu0yomqg:D7DqB2pKExk"&gt;&lt;img src="http://feeds.feedburner.com/~ff/DotNetUnplugged?i=73C49ZZIWYQ:N5BPu0yomqg:D7DqB2pKExk" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.giggio.net/~ff/DotNetUnplugged?a=73C49ZZIWYQ:N5BPu0yomqg:F7zBnMyn0Lo"&gt;&lt;img src="http://feeds.feedburner.com/~ff/DotNetUnplugged?i=73C49ZZIWYQ:N5BPu0yomqg:F7zBnMyn0Lo" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.giggio.net/~ff/DotNetUnplugged?a=73C49ZZIWYQ:N5BPu0yomqg:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/DotNetUnplugged?i=73C49ZZIWYQ:N5BPu0yomqg:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.giggio.net/~ff/DotNetUnplugged?a=73C49ZZIWYQ:N5BPu0yomqg:I9og5sOYxJI"&gt;&lt;img src="http://feeds.feedburner.com/~ff/DotNetUnplugged?d=I9og5sOYxJI" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.giggio.net/~ff/DotNetUnplugged?a=73C49ZZIWYQ:N5BPu0yomqg:3oH-tSNJdoA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/DotNetUnplugged?d=3oH-tSNJdoA" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/DotNetUnplugged/~4/73C49ZZIWYQ" height="1" width="1"/&gt;</description>
      <link>http://feeds.giggio.net/~r/DotNetUnplugged/~3/73C49ZZIWYQ/post.aspx</link>
      <author>Giovanni Bassi</author>
      <comments>http://unplugged.giggio.net/unplugged/post/Webcasts-sobre-Scrum-com-Visual-Studio.aspx#comment</comments>
      <guid isPermaLink="false">http://unplugged.giggio.net/unplugged/post.aspx?id=29539a5f-a548-4ac8-a5d3-d0983efe9ec2</guid>
      <pubDate>Fri, 13 Aug 2010 18:19:56 -0200</pubDate>
      <category>Eventos</category>
      <category>Scrum Developer</category>
      <category>Scrum</category>
      <dc:publisher>Giovanni Bassi</dc:publisher>
      <pingback:server>http://unplugged.giggio.net/unplugged/pingback.axd</pingback:server>
      <pingback:target>http://unplugged.giggio.net/unplugged/post.aspx?id=29539a5f-a548-4ac8-a5d3-d0983efe9ec2</pingback:target>
      <slash:comments>0</slash:comments>
      <trackback:ping>http://unplugged.giggio.net/unplugged/trackback.axd?id=29539a5f-a548-4ac8-a5d3-d0983efe9ec2</trackback:ping>
      <wfw:comment>http://unplugged.giggio.net/unplugged/post/Webcasts-sobre-Scrum-com-Visual-Studio.aspx#comment</wfw:comment>
      <wfw:commentRss>http://unplugged.giggio.net/unplugged/syndication.axd?post=29539a5f-a548-4ac8-a5d3-d0983efe9ec2</wfw:commentRss>
    <feedburner:origLink>http://unplugged.giggio.net/unplugged/post.aspx?id=29539a5f-a548-4ac8-a5d3-d0983efe9ec2</feedburner:origLink></item>
    <item>
      <title>TDC 2010, desta vez com .Net</title>
      <description>&lt;p&gt;&lt;a href="http://www.thedevelopersconference.com.br/" target="_blank"&gt;&lt;img style="border-right-width: 0px; display: block; float: none; border-top-width: 0px; border-bottom-width: 0px; margin-left: auto; border-left-width: 0px; margin-right: auto" class="wlDisabledImage" title="The Developers Conference 2010" border="0" alt="The Developers Conference 2010" src="http://unplugged.giggio.net/unplugged/image.axd?picture=botao-tdc-grande.png" width="425" height="345" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;Esse ano tem &lt;a href="http://www.thedevelopersconference.com.br/" target="_blank"&gt;The Developers Conference (TDC)&lt;/a&gt;, um grande evento da comunidade de desenvolvimento. E pela primeira vez o .Net fará parte do evento, que conta também com outras linguagens, como &lt;a href="http://www.thedevelopersconference.com.br/tdc/2010/sp/trilha-ruby" target="_blank"&gt;Ruby&lt;/a&gt;, &lt;a href="http://www.thedevelopersconference.com.br/tdc/2010/sp/trilha-python" target="_blank"&gt;Python&lt;/a&gt; e &lt;a href="http://www.thedevelopersconference.com.br/tdc/2010/sp/trilha-java" target="_blank"&gt;Java&lt;/a&gt;, além de trilhas tão diversas como &lt;a href="http://www.thedevelopersconference.com.br/tdc/2010/sp/trilha-testes" target="_blank"&gt;Testes&lt;/a&gt;, &lt;a href="http://www.thedevelopersconference.com.br/tdc/2010/sp/trilha-nosql" target="_blank"&gt;noSQL&lt;/a&gt; e &lt;a href="http://www.thedevelopersconference.com.br/tdc/2010/sp/trilha-arduino" target="_blank"&gt;Arduino&lt;/a&gt;.&lt;/p&gt;  &lt;p&gt;Estou organizando a &lt;a href="http://www.thedevelopersconference.com.br/tdc/2010/sp/trilha-dot-net" target="_blank"&gt;trilha de .Net&lt;/a&gt; do TDC, e trabalhando junto com o Felipe Rodrigues na de &lt;a href="http://www.thedevelopersconference.com.br/tdc/2010/sp/trilha-agile" target="_blank"&gt;Agile&lt;/a&gt;. O evento vai contar com 13 trilhas, 3 dias, e custará apenas 20 reais por trilha, ou seja, você vai gastar no máximo 60 reais, em um evento de 3 dias. Você faz a combinação que quiser.&lt;/p&gt;  &lt;p&gt;Uma combinação interessante para desenvolvedores web: participar da trilha de SOA na sexta, .Net no sábado, que vai mostrar ASP.Net MVC 3, Silverlight 4 e outros, e web no domingo, que vai falar de SEO, HTML5, CSS3, etc.&lt;/p&gt;  &lt;p&gt;Outra muito legal é igual a acima, mas em vez da de SOA, assistir a de testes na sexta, que também está bem legal.&lt;/p&gt;  &lt;p&gt;E pros agilistas, vamos falar de Coaching, Integração contínua, clean code, entre outros. Uma combinação legal é ver .Net no sábado e Agile no domingo.&lt;/p&gt;  &lt;p&gt;Pra quem curte uma piração e também gosta de hardware, a trilha de Arduíno, que acontece no domingo, é uma ótima pedida. Vai falar de Arduíno + injeção eletrônica, automação residencial, e até física quântica. Difícil é perder a trilha de agile que rola no mesmo dia.&lt;/p&gt;  &lt;p&gt;Esperem ver vários MVPs, funcionários da Microsoft, e membros do .Net Architects por lá. Hélio de Sá, Fabio Galuppo, Tuca, Caverna, André Dias, Victor Cavalcante, são só alguns dos nomes que estarão por lá. Montei também um painel de linguagens do .Net, onde vamos falar de tudo, menos C# e VB. Inclua aí Boo, IronPython, IronRuby, F#, C++, e talvez outras.&lt;/p&gt;  &lt;p&gt;Eu vou palestrar na trilha de .Net, na de Agile, e talvez na de testes, falando de integração contínua, testes, entre outras. &lt;/p&gt;  &lt;p&gt;Em resumo, imperdível.&lt;/p&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.giggio.net/~ff/DotNetUnplugged?a=QkcnenL9UUg:NsmIZNAj9Iw:Tph0bMNtBCI"&gt;&lt;img src="http://feeds.feedburner.com/~ff/DotNetUnplugged?d=Tph0bMNtBCI" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.giggio.net/~ff/DotNetUnplugged?a=QkcnenL9UUg:NsmIZNAj9Iw:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/DotNetUnplugged?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.giggio.net/~ff/DotNetUnplugged?a=QkcnenL9UUg:NsmIZNAj9Iw:D7DqB2pKExk"&gt;&lt;img src="http://feeds.feedburner.com/~ff/DotNetUnplugged?i=QkcnenL9UUg:NsmIZNAj9Iw:D7DqB2pKExk" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.giggio.net/~ff/DotNetUnplugged?a=QkcnenL9UUg:NsmIZNAj9Iw:F7zBnMyn0Lo"&gt;&lt;img src="http://feeds.feedburner.com/~ff/DotNetUnplugged?i=QkcnenL9UUg:NsmIZNAj9Iw:F7zBnMyn0Lo" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.giggio.net/~ff/DotNetUnplugged?a=QkcnenL9UUg:NsmIZNAj9Iw:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/DotNetUnplugged?i=QkcnenL9UUg:NsmIZNAj9Iw:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.giggio.net/~ff/DotNetUnplugged?a=QkcnenL9UUg:NsmIZNAj9Iw:I9og5sOYxJI"&gt;&lt;img src="http://feeds.feedburner.com/~ff/DotNetUnplugged?d=I9og5sOYxJI" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.giggio.net/~ff/DotNetUnplugged?a=QkcnenL9UUg:NsmIZNAj9Iw:3oH-tSNJdoA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/DotNetUnplugged?d=3oH-tSNJdoA" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/DotNetUnplugged/~4/QkcnenL9UUg" height="1" width="1"/&gt;</description>
      <link>http://feeds.giggio.net/~r/DotNetUnplugged/~3/QkcnenL9UUg/post.aspx</link>
      <author>Giovanni Bassi</author>
      <comments>http://unplugged.giggio.net/unplugged/post/TDC-2010-desta-vez-com-Net.aspx#comment</comments>
      <guid isPermaLink="false">http://unplugged.giggio.net/unplugged/post.aspx?id=017853bb-016d-43b3-b66c-4c1047f2ad1a</guid>
      <pubDate>Mon, 09 Aug 2010 11:23:47 -0200</pubDate>
      <category>Eventos</category>
      <dc:publisher>Giovanni Bassi</dc:publisher>
      <pingback:server>http://unplugged.giggio.net/unplugged/pingback.axd</pingback:server>
      <pingback:target>http://unplugged.giggio.net/unplugged/post.aspx?id=017853bb-016d-43b3-b66c-4c1047f2ad1a</pingback:target>
      <slash:comments>2</slash:comments>
      <trackback:ping>http://unplugged.giggio.net/unplugged/trackback.axd?id=017853bb-016d-43b3-b66c-4c1047f2ad1a</trackback:ping>
      <wfw:comment>http://unplugged.giggio.net/unplugged/post/TDC-2010-desta-vez-com-Net.aspx#comment</wfw:comment>
      <wfw:commentRss>http://unplugged.giggio.net/unplugged/syndication.axd?post=017853bb-016d-43b3-b66c-4c1047f2ad1a</wfw:commentRss>
    <feedburner:origLink>http://unplugged.giggio.net/unplugged/post.aspx?id=017853bb-016d-43b3-b66c-4c1047f2ad1a</feedburner:origLink></item>
    <item>
      <title>Contextos e estilos de gerência</title>
      <description>&lt;p&gt;No post em que diferenciei &lt;a href="http://unplugged.giggio.net/post/Complicado-Complexo-ou-Caotico.aspx" target="_blank"&gt;complicado, complexo e caótico&lt;/a&gt; eu explico alguns conceitos que deixam claro em quais tipos de projeto faz sentido uma abordagem ágil, e em quais faz sentido uma abordagem tradicional, baseada em cascata. Explico também o que significa ser simples, complicado, complexo, e caótico, além de explicar as características de um contexto complexo. Você vai aproveitar melhor este post se ler aquele primeiro.&lt;/p&gt;  &lt;p&gt;Estou estudando o &lt;a href="http://en.wikipedia.org/wiki/Cynefin" target="_blank"&gt;framework Cynefin&lt;/a&gt; e percebo que alguns conceitos complementam bem o que eu já havia iniciado, já que ele levanta os modelos de gestão apropriados a cada contexto.&lt;/p&gt;  &lt;p&gt;A categorização é parecida com a que eu havia proposto antes, e que é parte do curso de &lt;a href="http://www.scrum.org/psmoverview/" target="_blank"&gt;Professional ScrumMaster&lt;/a&gt;:&lt;/p&gt;  &lt;p&gt;&lt;img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" class="wlDisabledImage" title="image" border="0" alt="Cynefin Framework" src="http://unplugged.giggio.net/unplugged/image.axd?picture=image_198.png" width="200" height="200" /&gt;&lt;/p&gt;  &lt;p&gt;Nesse gráfico, temos expostos os contextos em que uma situação, um projeto de software, por exemplo, acontece. Estes contextos são classificados em ordenados e desordenados:&lt;/p&gt;  &lt;ol&gt;   &lt;li&gt;Nos contextos ordenados as decisões são baseadas em fatos, existe uma clara relação de causa e efeito (causalidade), e o sistema restringe os agentes, ou seja, é possível limitar as ações e criatividade das pessoas e ainda assim obter resultados. Um estilo comando e controle pode funcionar, ainda que eu prefira uma liderança democrática, e não autocrática. Os contextos simples e complicados são contextos ordenados. &lt;/li&gt;    &lt;li&gt;Nos contextos desordenados há necessidade de avaliação empírica, e a análise de padrões é que determina a resposta. Há pouca ou nenhuma relação evidente entre causa e efeito (ainda que ela exista, é difícil de medir). Nesse cenário, somente o autogerenciamento e a autoorganização libertam os agentes para criar soluções que realmente endereçam os problemas que aparecem. Hierarquia estrutural e autocracia são o melhor caminho para o fracasso. Os contextos complexo e caótico são contextos desordenados. &lt;/li&gt; &lt;/ol&gt;  &lt;p&gt;O problema maior é tomar um pelo outro. A maioria dos líderes/gerentes imagina trabalhar em ambientes ordenados. Isso é um problema porque as respostas esperadas em cada contexto são diferentes. Ao tomar um pelo outro, as decisões ficam aquém do esperado e produzem desperdício, no mínimo.&lt;/p&gt;  &lt;p&gt;No contexto simples e também no complicado, o ambiente é planejado e previsível. &lt;/p&gt;  &lt;p&gt;No simples, sabe-se tudo ou quase tudo o que pode acontecer ao processo. Nesse contexto, os líderes sentem, &lt;strong&gt;categorizam&lt;/strong&gt; e respondem, ou seja, eles avaliam a situação, as categorizam e decidem com base nos fatos categorizados. Nesse cenário, os líderes podem não perceber a mudança de contexto, de simples para complicado, complexo ou caótico, e caminham para a falha, já que o contexto mudou e eles continuam aplicando técnicas baseadas em sentir, categorizar e responder, na expectativa de uma previsibilidade que pode ser falsa, e achando que sabem mais do que sabem.&lt;/p&gt;  &lt;p&gt;No ambiente complicado, muito pouco é desconhecido sobre o processo e o produto. Sabe-se mais do que não se sabe. Nesse contexto, os líderes sentem, &lt;strong&gt;analizam&lt;/strong&gt;, e respondem, ou seja, é preciso analizar as situações que aparecem, e não só categorizá-las. Essa análise fica a cargo de experts, que precisam informar como responder. Nesse cenário, não os líderes (como no contexto simples), mas os experts é que correm o risco de não perceber a mudança de contexto, e, junto aos líderes, podem aplicar abordagens erradas para endereçar cada situação.&lt;/p&gt;  &lt;p&gt;No contexto complexo, o desconhecido predomina sobre o conhecido, sabe-se pouco, e não se sabe o que não se sabe. É preciso levantar os fatos antes de tomar as decisões, e por isso, o processo não começa pelo sentir, como nos contextos ordenados, mas começa com &lt;strong&gt;sondar&lt;/strong&gt;, e então sentir, e só então responder. É o processo empírico tateando a cada passo, porque sabe que não é possível crer no planejamento, já que não sabemos quase nada. Nesse cenário, tentar impor ordem e buscar previsibilidade é caminhar para o abísmo, já que o contexto é naturalmente desordenado; mais vale entender e abraçar a complexidade, adaptando-se sempre que necessário. Aqui o sistema restringe os agentes, devido à sua imprevisibilidade, e os agentes restringem o sistema, impedindo que ele caminhe para o total desconhecido, inspecionando frequentemente e adaptando sempre que necessário.&lt;/p&gt;  &lt;p&gt;No contexto caótico, não só não sabemos nada, mas não conseguimos saber. Não adianta sondar, os resultados serão nulos ou inúteis. Causa e efeito não tem relação aparente alguma. Resta &lt;strong&gt;agir&lt;/strong&gt;, e esse é o primeiro passo, seguido do sentir, e então responder. Os líderes agem, e então sondam os resultados, e respondem aos efeitos dessa sondagem, tentando trazer o contexto para algo no mínimo gerenciável, onde também não se sabe, mas pelo menos temos como tatear, ou seja, buscam o complexo. O ideal é atuar de forma rápida, a fim de reestabilizar; imagine um avião em queda, e girando – a primeira coisa que se faz é agir e fazer o avião parar de girar, só depois é que faz sentido buscar nivelar o avião. Buscar ler os instrumentos ou planejar seria absurdo. Neste contexto, o sistema e os agentes estão sem restrições, não há controle ou previsibilidade alguma, e não há como medir. Mas o caótico não é só ruim, ao mesmo tempo que busca agir, o líder tem em mãos uma grande oportunidade de mudança radical, proporcionada pela desordem absoluta e pela total falta de posição. Se o momento caótico passar e a mudança não acontecer, dificilmente ela acontecerá tão facilmente como poderia antes.&lt;/p&gt;  &lt;p&gt;Reforçando: o grande erro está em liderar imaginando um contexto, quando na verdade estamos em outro. O mais comum é responder utilizando técnicas para contextos simples ou complicados, quando na verdade estamos no caótico ou complexo, por acaso os mais comuns no mundo de software.&lt;/p&gt;  &lt;p&gt;Por exemplo, uma empresa que desenvolve software sob medida, sempre atuando em novos clientes, ambientes, tecnologias, e com pessoas diferentes, vive um ambiente no mínimo complexo e portanto pouco previsível. Aplicar técnicas baseadas em análise e resposta, como as baseadas no modelo cascata, ou atuar como um líder que comanda e controla, é ignorar o contexto em que o projeto vive, além de ignorar o que não se sabe. Pior, assumir que sabe, ou até basear-se em informações erradas, desatualizadas ou ambos.&lt;/p&gt;  &lt;p&gt;O mesmo vale para o oposto. Uma empresa que trabalha com um software vanilla, que customiza para clientes sempre de forma semelhante, está sempre atuando no mesmo produto, ou seja, atua num ambiente provavelmente no máximo complicado. Nesse cenário, sondar é desnecessário, e trará um custo extra ao projeto. Basta analizar os resultados das medições e corrigir de acordo com o plano. Um modelo em cascata, baseado em alta previsibilidade, seria o ideal e o mais barato.&lt;/p&gt;  &lt;p&gt;E você? Trabalha em qual contexto? As decisões dos líderes batem com o contexto?&lt;/p&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.giggio.net/~ff/DotNetUnplugged?a=lqUw-3CUAL4:TOyO39ao1Eo:Tph0bMNtBCI"&gt;&lt;img src="http://feeds.feedburner.com/~ff/DotNetUnplugged?d=Tph0bMNtBCI" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.giggio.net/~ff/DotNetUnplugged?a=lqUw-3CUAL4:TOyO39ao1Eo:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/DotNetUnplugged?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.giggio.net/~ff/DotNetUnplugged?a=lqUw-3CUAL4:TOyO39ao1Eo:D7DqB2pKExk"&gt;&lt;img src="http://feeds.feedburner.com/~ff/DotNetUnplugged?i=lqUw-3CUAL4:TOyO39ao1Eo:D7DqB2pKExk" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.giggio.net/~ff/DotNetUnplugged?a=lqUw-3CUAL4:TOyO39ao1Eo:F7zBnMyn0Lo"&gt;&lt;img src="http://feeds.feedburner.com/~ff/DotNetUnplugged?i=lqUw-3CUAL4:TOyO39ao1Eo:F7zBnMyn0Lo" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.giggio.net/~ff/DotNetUnplugged?a=lqUw-3CUAL4:TOyO39ao1Eo:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/DotNetUnplugged?i=lqUw-3CUAL4:TOyO39ao1Eo:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.giggio.net/~ff/DotNetUnplugged?a=lqUw-3CUAL4:TOyO39ao1Eo:I9og5sOYxJI"&gt;&lt;img src="http://feeds.feedburner.com/~ff/DotNetUnplugged?d=I9og5sOYxJI" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.giggio.net/~ff/DotNetUnplugged?a=lqUw-3CUAL4:TOyO39ao1Eo:3oH-tSNJdoA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/DotNetUnplugged?d=3oH-tSNJdoA" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/DotNetUnplugged/~4/lqUw-3CUAL4" height="1" width="1"/&gt;</description>
      <link>http://feeds.giggio.net/~r/DotNetUnplugged/~3/lqUw-3CUAL4/post.aspx</link>
      <author>Giovanni Bassi</author>
      <comments>http://unplugged.giggio.net/unplugged/post/Contextos-e-estilos-de-gerencia.aspx#comment</comments>
      <guid isPermaLink="false">http://unplugged.giggio.net/unplugged/post.aspx?id=a7a57eaa-edb0-4253-8be7-c04a45d9ca4b</guid>
      <pubDate>Thu, 05 Aug 2010 14:52:01 -0200</pubDate>
      <category>Agilidade</category>
      <category>Gestão de projeto</category>
      <dc:publisher>Giovanni Bassi</dc:publisher>
      <pingback:server>http://unplugged.giggio.net/unplugged/pingback.axd</pingback:server>
      <pingback:target>http://unplugged.giggio.net/unplugged/post.aspx?id=a7a57eaa-edb0-4253-8be7-c04a45d9ca4b</pingback:target>
      <slash:comments>1</slash:comments>
      <trackback:ping>http://unplugged.giggio.net/unplugged/trackback.axd?id=a7a57eaa-edb0-4253-8be7-c04a45d9ca4b</trackback:ping>
      <wfw:comment>http://unplugged.giggio.net/unplugged/post/Contextos-e-estilos-de-gerencia.aspx#comment</wfw:comment>
      <wfw:commentRss>http://unplugged.giggio.net/unplugged/syndication.axd?post=a7a57eaa-edb0-4253-8be7-c04a45d9ca4b</wfw:commentRss>
    <feedburner:origLink>http://unplugged.giggio.net/unplugged/post.aspx?id=a7a57eaa-edb0-4253-8be7-c04a45d9ca4b</feedburner:origLink></item>
    <item>
      <title>Mitos sobre Stored Procedures</title>
      <description>&lt;p&gt;&lt;img style="display: block; float: none; margin-left: auto; margin-right: auto" class="wlDisabledImage" title="Sprocs???" alt="Sprocs???" src="http://unplugged.giggio.net/unplugged/image.axd?picture=image_196.png" width="500" height="117" /&gt;&lt;/p&gt;  &lt;p&gt;Com razoável frequência alguém levanta a ideia de usar stored procedures (procs, para abreviar) porque melhora segurança e performance.&lt;/p&gt;  &lt;p&gt;Como eu sei que isso não é verdade, e o assunto é levantado sempre, vou escrever esse post, depois é só linkar. &lt;img style="border-bottom-style: none; border-right-style: none; border-top-style: none; border-left-style: none" class="wlEmoticon wlEmoticon-smile" alt="Smile" src="http://unplugged.giggio.net/unplugged/image.axd?picture=wlEmoticon-smile.png" /&gt;&lt;/p&gt;  &lt;p&gt;Geralmente as consultas via procs são comparadas com queries feitas com texto SQL, que vou chamar de ad-hoc. Esse tipo de consulta é aquela onde você escreve “SELECT Id, Campo FROM Cliente WHERE Id = 1” e manda direto para o banco, e é também o usado por mapeadores objeto relacional (ORMs).&lt;/p&gt;  &lt;p&gt;Vamos aos mitos:&lt;/p&gt;  &lt;ol&gt;   &lt;li&gt;Stored Procedures permitem fazer cache do plano de execução, enquanto consultas ad-hoc não permitem      &lt;br /&gt;&lt;strong&gt;Mito.&lt;/strong&gt; Os planos de execução são armezanados para reutilização em procs e também em consultas ad-hoc. Vejam essa afirmação do MSDN:       &lt;br /&gt;“In SQL Server 2000, whenever a statement within a batch causes recompilation, the whole batch, &lt;strong&gt;whether submitted through a stored procedure, trigger, ad-hoc batch, or prepared statement&lt;/strong&gt;, is recompiled. In SQL Server 2005 and later, only the statement inside the batch that causes recompilation is recompiled.” &lt;a href="http://msdn.microsoft.com/en-us/library/ms181055.aspx" target="_blank"&gt;Daqui&lt;/a&gt;.       &lt;br /&gt;&lt;a href="http://msdn.microsoft.com/en-us/library/ee343986.aspx" target="_blank"&gt;Esse outro artigo&lt;/a&gt; entra mais a fundo. Notem que o importante é o uso de parâmetros, não só para evitar o SQL Injection, mas também para permitir o cache do plano de execução (algo que o SQL Server 2008 já tenta resolver, mesmo se você não enviar o parâmetro). &lt;/li&gt;    &lt;li&gt;Stored Procedures estimulam reusabilidade.      &lt;br /&gt;&lt;strong&gt;Mito.&lt;/strong&gt; Reusabilidade pode ser atingida de diversas formas. Um modelo procedural, como o da programação de um banco de dados relacional, possibilita reusabilidade dentro deste paradigma. Eu prefiro estimular reusabilidade com OO, mas isso não quer dizer que não podemos reutilizar tanto em um quanto no outro. &lt;/li&gt;    &lt;li&gt;Stored Procedures ajudam a encapsular regras de negócio.      &lt;br /&gt;&lt;strong&gt;Mito.&lt;/strong&gt; Eu posso encapsular, com mais produtividade na programação, em um modelo OO. &lt;/li&gt;    &lt;li&gt;Stored Procedures são mais seguras. Com procs você pode remover os direitos a insert, update, delete e consulta, inclusive com granularidade na coluna de uma tabela.      &lt;br /&gt;&lt;strong&gt;Mito.&lt;/strong&gt; Ainda que seja possível fazer isso, se em uma operação de negócio o usuário precisa atualizar um campo, ele terá que ter acesso de atualização deste campo, se não direto, indiretamente pela proc. Isso fica ainda mais irrelevante quando vemos aquelas procs de CUD, ou seja, quando o programador cria 3 procs, uma para cada operação do CUD, e simplesmente pega os parâmetros e repassa para as declarações de insert, update e delete. A proc nesse caso é um mero proxy. A outra opção é colocar a regra de negócio no banco, algo absurdo na maioria dos cenários (não vou me aprofundar no porquê, vai ficar para outro post). &lt;/li&gt;    &lt;li&gt;Stored Procedures diminuem o consumo de banda, já que a consulta que vai ao banco é somente o nome da proc e seus parâmetros.      &lt;br /&gt;&lt;strong&gt;Meia verdade.&lt;/strong&gt; De fato a operação que vai ao banco é menor. Mas em uma operação de consulta, o maior peso está no retorno da consulta, cheio de dados, e não na solicitação, que é um texto curto. A diferença entre a consulta com proc e sem chega a ser ridícula. E em uma operação de atualização do banco, os dados que vão subir tem que ser enviados da mesma forma, e o resto da declaração de uma operação ad-hoc é só um pouco maior se comparado com a proc. Além disso, nas redes de hoje, com servidores web ao lado de servidores de banco em rede gigabit, o gargalo não fica na rede. &lt;/li&gt; &lt;/ol&gt;  &lt;p&gt;Além destes mitos, o que mais me incomoda é que procs praticamente impedem o uso de ORMs. E ORMs são praticamente obrigatórios em um projeto que quer ter um mínimo de produtividade. Escrever SQL na mão hoje em dia é algo absolutamente desnecessário para 90% das aplicações, e nos 10% que sobram, só um pequeno percentual teria algum ganho sobre o uso de SQL manual sobre um ORM. Mas isso fica para outro post também.&lt;/p&gt;  &lt;p&gt;Um caso onde vejo uso de procs como útil: &lt;a href="http://en.wikipedia.org/wiki/Extract,_transform,_load" target="_blank"&gt;ETL&lt;/a&gt; (veja update 1 abaixo). Geralmente é muito difícil fazer carga de grandes massas de dados via interação com o client, seja ele .Net, Java, C++, VB6, ou o que for. O ideal é a carga acontecer no banco, e aí procs vão bem. O maior problema, derivado do ETL, é a duplicação de regras de negócio, já que uma operação de negócio que entra via carga externa estará sujeita às mesmas regras de uma entrada manual, normalmente também permitida. É algo que aumenta o custo de manutenção, mas muitas vezes não tem jeito.&lt;/p&gt;  &lt;p&gt;É isso. Joguem as procs no lixo, programem com ORMs (ou bancos NOSQL), e sejam produtivos.&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;Update 1:&lt;/strong&gt; O &lt;a href="http://gustavomaiaaguiar.spaces.live.com/" target="_blank"&gt;Gustavo Maia Aguiar&lt;/a&gt;, MVP de SQL, levanta que procs não são boas para ETL, e expõe vários motivos. Vejam&amp;#160; nos comentários.&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;Update 2:&lt;/strong&gt; O &lt;a href="http://luticm.blogspot.com/" target="_blank"&gt;Luciano Moreira (Luti)&lt;/a&gt;, também MVP de SQL, também responde a este post, &lt;a href="http://luticm.blogspot.com/2010/08/mitos-sobre-stored-procedures-uma.html" target="_blank"&gt;mas com outro post&lt;/a&gt;. Imperdível se você gostou da discussão. &lt;/p&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.giggio.net/~ff/DotNetUnplugged?a=xGilnBnZo4g:PQbRAIGXAAs:Tph0bMNtBCI"&gt;&lt;img src="http://feeds.feedburner.com/~ff/DotNetUnplugged?d=Tph0bMNtBCI" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.giggio.net/~ff/DotNetUnplugged?a=xGilnBnZo4g:PQbRAIGXAAs:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/DotNetUnplugged?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.giggio.net/~ff/DotNetUnplugged?a=xGilnBnZo4g:PQbRAIGXAAs:D7DqB2pKExk"&gt;&lt;img src="http://feeds.feedburner.com/~ff/DotNetUnplugged?i=xGilnBnZo4g:PQbRAIGXAAs:D7DqB2pKExk" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.giggio.net/~ff/DotNetUnplugged?a=xGilnBnZo4g:PQbRAIGXAAs:F7zBnMyn0Lo"&gt;&lt;img src="http://feeds.feedburner.com/~ff/DotNetUnplugged?i=xGilnBnZo4g:PQbRAIGXAAs:F7zBnMyn0Lo" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.giggio.net/~ff/DotNetUnplugged?a=xGilnBnZo4g:PQbRAIGXAAs:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/DotNetUnplugged?i=xGilnBnZo4g:PQbRAIGXAAs:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.giggio.net/~ff/DotNetUnplugged?a=xGilnBnZo4g:PQbRAIGXAAs:I9og5sOYxJI"&gt;&lt;img src="http://feeds.feedburner.com/~ff/DotNetUnplugged?d=I9og5sOYxJI" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.giggio.net/~ff/DotNetUnplugged?a=xGilnBnZo4g:PQbRAIGXAAs:3oH-tSNJdoA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/DotNetUnplugged?d=3oH-tSNJdoA" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/DotNetUnplugged/~4/xGilnBnZo4g" height="1" width="1"/&gt;</description>
      <link>http://feeds.giggio.net/~r/DotNetUnplugged/~3/xGilnBnZo4g/post.aspx</link>
      <author>Giovanni Bassi</author>
      <comments>http://unplugged.giggio.net/unplugged/post/Mitos-sobre-Stored-Procedures.aspx#comment</comments>
      <guid isPermaLink="false">http://unplugged.giggio.net/unplugged/post.aspx?id=96571b61-9da1-4d52-a62f-aa6a6c10b45b</guid>
      <pubDate>Thu, 22 Jul 2010 16:16:34 -0200</pubDate>
      <category>Polêmicas</category>
      <dc:publisher>Giovanni Bassi</dc:publisher>
      <pingback:server>http://unplugged.giggio.net/unplugged/pingback.axd</pingback:server>
      <pingback:target>http://unplugged.giggio.net/unplugged/post.aspx?id=96571b61-9da1-4d52-a62f-aa6a6c10b45b</pingback:target>
      <slash:comments>55</slash:comments>
      <trackback:ping>http://unplugged.giggio.net/unplugged/trackback.axd?id=96571b61-9da1-4d52-a62f-aa6a6c10b45b</trackback:ping>
      <wfw:comment>http://unplugged.giggio.net/unplugged/post/Mitos-sobre-Stored-Procedures.aspx#comment</wfw:comment>
      <wfw:commentRss>http://unplugged.giggio.net/unplugged/syndication.axd?post=96571b61-9da1-4d52-a62f-aa6a6c10b45b</wfw:commentRss>
    <feedburner:origLink>http://unplugged.giggio.net/unplugged/post.aspx?id=96571b61-9da1-4d52-a62f-aa6a6c10b45b</feedburner:origLink></item>
    <item>
      <title>Testando o banco de dados: com Infra Microsoft</title>
      <description>&lt;p&gt;(&lt;strong&gt;Update:&lt;/strong&gt; Veja também o artigo irmão deste: &lt;a href="http://unplugged.giggio.net/post/Testando-o-banco-de-dados-com-infra-nao-Microsoft.aspx" target="_blank"&gt;Testando o banco de dados: com infra não Microsoft&lt;/a&gt;)&lt;/p&gt;  &lt;p&gt;Eu testo minhas aplicações, e algo que não pode ficar de fora é o teste do banco de dados. Vocês sabem que eu não gosto de colocar regras de negócio no banco de dados (e isso é assunto para outra discussão), então para mim, testar o banco de dados é testar a interação da aplicação com o banco de dados. E eu uso ORMs, ou seja, na verdade, o que eu preciso testar é a se o meu mapeamento está funcionando e se o schema do banco está correto, de acordo com o que a aplicação espera.&lt;/p&gt;  &lt;p&gt;Neste post eu vou mostrar como fazer isso com infra Microsoft, ou seja, com Data Dude (VS Database) e Entity Framework. No próximo vou mostrar com alguns componentes open source. O próximo vem semana que vem.&lt;/p&gt;  &lt;p&gt;Você só precisa de um Visual Studio 2010 Premium, porque na edição professional &lt;a href="http://www.microsoft.com/visualstudio/en-us/products" target="_blank"&gt;não vem o Data Dude&lt;/a&gt;, que é o antigo VS Database edition, que não existe mais. Ele tem um projeto de banco de dados, e vou usá-lo.&lt;/p&gt;  &lt;p&gt;Mas antes de mais nada…&lt;/p&gt;  &lt;p&gt;Como testar algo que interage com o banco de dados? É óbvio que se interage com o BD, não pode ser um teste unitário, tem que ser um teste integrado, nesse caso, integrado com o banco. O que testar? &lt;/p&gt;  &lt;p&gt;Os testes vão manipular o banco, vão incluir, alterar, excluir, e consultar, ou seja, vão fazer operações CRUD. Quando um teste altera os dados do banco pode ser que ele altere o resultado de outro teste. Por exemplo, em um teste eu incluo um item em uma nota fiscal e salvo, antes ela tinha 10, agora tem 11. Em outro teste eu consulto a mesma nota, e verifico se ela tem 10 itens, o teste falha, porque o teste que inseriu o teste rodou antes. Eu até poderia determinar a ordem dos testes, mas isso deixaria meu plano de testes confuso e ruim: jamais poderia rodar um único teste sem antes rodar os outros. Testes devem rodar sempre independentes uns dos outros. Como resolver? A cada teste o banco deve ter seus dados reiniciados. Como subir estes dados? Já vi pessoas usarem transações, e dar rollback no final, mas isso é no mínimo incompleto: quem sobe os dados iniciais? É feito na mão? Além disso, o esquema tem que estar atualizado. Não dá pra testar se falta uma tabela, uma coluna, ou se há alguma diferença. Nossa infra de testes deve resolver esse problema.&lt;/p&gt;  &lt;p&gt;Primeiro vamos resolver o problema do esquema. O Data Dude tem um projeto de banco de dados. Vejam lá, File &amp;gt; New &amp;gt; Project &amp;gt; Database &amp;gt; SQL Server &amp;gt; SQL Server 2008 Database Project (clique nas imagens para ampliar):&lt;/p&gt;  &lt;p&gt;&lt;a href="http://unplugged.giggio.net/unplugged/image.axd?picture=image_186.png" rel="lightbox[ttbdms]"&gt;&lt;img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" class="wlDisabledImage" title="image" border="0" alt="image" src="http://unplugged.giggio.net/unplugged/image.axd?picture=image_thumb_122.png" width="355" height="206" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;Esse projeto cria todo o esquema que você vai precisar e também os dados. Não vou explicar aqui o que é o Data Dude, mas confie em mim, funciona e é muito legal. Para mais informações, baixe o &lt;a href="http://www.microsoft.com/downloads/details.aspx?familyid=752CB725-969B-4732-A383-ED5740F02E93" target="_blank"&gt;training kit&lt;/a&gt;, &lt;a href="http://blogs.msdn.com/b/briankel/archive/2010/06/25/now-available-visual-studio-2010-rtm-virtual-machine-with-sample-data-and-hands-on-labs.aspx" target="_blank"&gt;baixe a VM&lt;/a&gt;, e/ou veja online a documentação.&lt;/p&gt;  &lt;p&gt;Criei também um projeto class library e fiz um mapeamento simples no EF, vejam só:&lt;/p&gt;  &lt;p&gt;&lt;a href="http://unplugged.giggio.net/unplugged/image.axd?picture=image_187.png" rel="lightbox[ttbdms]"&gt;&lt;img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" class="wlDisabledImage" title="image" border="0" alt="image" src="http://unplugged.giggio.net/unplugged/image.axd?picture=image_thumb_123.png" width="262" height="206" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;Esse mapeamento já gerou a classe de produto e também o contexto que eu quero testar.&lt;/p&gt;  &lt;p&gt;Gerei o SQL, importei ele pro projeto de database:&lt;/p&gt;  &lt;p&gt;&lt;a href="http://unplugged.giggio.net/unplugged/image.axd?picture=image_188.png" rel="lightbox[ttbdms]"&gt;&lt;img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" class="wlDisabledImage" title="image" border="0" alt="image" src="http://unplugged.giggio.net/unplugged/image.axd?picture=image_thumb_124.png" width="404" height="160" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;E tenho o schema lá:&lt;/p&gt;  &lt;p&gt;&lt;a href="http://unplugged.giggio.net/unplugged/image.axd?picture=image_189.png" rel="lightbox[ttbdms]"&gt;&lt;img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" class="wlDisabledImage" title="image" border="0" alt="image" src="http://unplugged.giggio.net/unplugged/image.axd?picture=image_thumb_125.png" width="223" height="206" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;Eu quero ter uma carga de dados, então criei um plano de geração de dados, ou data generation plan:&lt;/p&gt;  &lt;p&gt;&lt;a href="http://unplugged.giggio.net/unplugged/image.axd?picture=image_190.png" rel="lightbox[ttbdms]"&gt;&lt;img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" class="wlDisabledImage" title="image" border="0" alt="image" src="http://unplugged.giggio.net/unplugged/image.axd?picture=image_thumb_126.png" width="325" height="206" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;Ele gera dados para minhas tabelas, vou precisar disso mais pra frente.&lt;/p&gt;  &lt;p&gt;Criei um projeto de testes, e pra ganhar tempo, pedi pra criar um teste de banco de dados, que vai me ajudar na criação da infra de testes com banco:&lt;/p&gt;  &lt;p&gt;&lt;a href="http://unplugged.giggio.net/unplugged/image.axd?picture=image_191.png" rel="lightbox[ttbdms]"&gt;&lt;img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" class="wlDisabledImage" title="image" border="0" alt="image" src="http://unplugged.giggio.net/unplugged/image.axd?picture=image_thumb_127.png" width="245" height="206" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;Ele me dá a opção de gerar meu banco (fecha azul), e incluir o meu plano de geração de dados (flecha vermelha).&lt;/p&gt;  &lt;p&gt;&lt;a href="http://unplugged.giggio.net/unplugged/image.axd?picture=image_192.png" rel="lightbox[ttbdms]"&gt;&lt;img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" class="wlDisabledImage" title="image" border="0" alt="image" src="http://unplugged.giggio.net/unplugged/image.axd?picture=image_thumb_128.png" width="167" height="206" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;Ao fazer isso, vários artefatos interessantes apareceram no meu projeto. Vamos vê-los. Primeiro meu web.config:&lt;/p&gt;  &lt;pre class="brush: xml;"&gt;&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;utf-8&amp;quot; ?&amp;gt;
&amp;lt;configuration&amp;gt;
    &amp;lt;configSections&amp;gt;
        &amp;lt;section name=&amp;quot;DatabaseUnitTesting&amp;quot; type=&amp;quot;Microsoft.Data.Schema.UnitTesting.Configuration.DatabaseUnitTestingSection, Microsoft.Data.Schema.UnitTesting, Version=10.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a&amp;quot; /&amp;gt;
    &amp;lt;/configSections&amp;gt;
    &amp;lt;DatabaseUnitTesting&amp;gt;
        &amp;lt;DatabaseDeployment DatabaseProjectFileName=&amp;quot;..\..\..\Database1\Database1.dbproj&amp;quot;
            Configuration=&amp;quot;Debug&amp;quot; /&amp;gt;
        &amp;lt;DataGeneration DataGenerationFileName=&amp;quot;..\..\..\Database1\Data Generation Plans\DataGenerationPlan1.dgen&amp;quot;
            ClearDatabase=&amp;quot;true&amp;quot; /&amp;gt;
        &amp;lt;ExecutionContext Provider=&amp;quot;System.Data.SqlClient&amp;quot; ConnectionString=&amp;quot;Data Source=.\sqlexpress;Initial Catalog=TesteIntegradoBanco;Integrated Security=True;Pooling=False&amp;quot;
            CommandTimeout=&amp;quot;30&amp;quot; /&amp;gt;
        &amp;lt;PrivilegedContext Provider=&amp;quot;System.Data.SqlClient&amp;quot; ConnectionString=&amp;quot;Data Source=.\sqlexpress;Initial Catalog=TesteIntegradoBanco;Integrated Security=True;Pooling=False&amp;quot;
            CommandTimeout=&amp;quot;30&amp;quot; /&amp;gt;
    &amp;lt;/DatabaseUnitTesting&amp;gt;
&amp;lt;/configuration&amp;gt;&lt;/pre&gt;

&lt;p&gt;O Web.config está com toda a configuração para gerar o banco e fazer o deploy dos dados, inclusive o ponteiro para o data generation plan.&lt;/p&gt;

&lt;p&gt;Foi criada também esta classe:&lt;/p&gt;

&lt;pre class="brush: csharp;"&gt;[TestClass]
public class DatabaseSetup
{
    [AssemblyInitialize]
    public static void InitializeAssembly(TestContext ctx)
    {
        DatabaseTestClass.TestService.DeployDatabaseProject();
        DatabaseTestClass.TestService.GenerateData();
    }

}&lt;/pre&gt;

&lt;p&gt;Notem o atributo AssemblyInitialize. Ele indica que quando antes deste assembly de teste rodar, este método será executado. Ele fará duas coisas: subirá o schema do banco de dados (método DeployDatabaseProject) e gerará os dados (método GenerateData). Esse segunda chamada de método não vai ficar aí, mas por enquanto tudo bem.&lt;/p&gt;

&lt;p&gt;Agora eu posso excluir o teste de banco de dados que foi criado, ele servia pra criar os artefatos.&lt;/p&gt;

&lt;p&gt;Agora só falta criar o teste que testa a interação com o banco em si. Vamos adicionar a classe de testes, usando o novo basic test, que vem sem aquele monte de linhas que eu sempre apago:&lt;/p&gt;

&lt;p&gt;&lt;a href="http://unplugged.giggio.net/unplugged/image.axd?picture=image_193.png" rel="lightbox[ttbdms]"&gt;&lt;img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" class="wlDisabledImage" title="image" border="0" alt="image" src="http://unplugged.giggio.net/unplugged/image.axd?picture=image_thumb_129.png" width="265" height="206" /&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Ela fica assim:&lt;/p&gt;

&lt;pre class="brush: csharp;"&gt;[TestClass]
public class TesteInclusao
{
    private Produto _produtoParaIncluir;
    private Model1Container _container;

    [TestInitialize]
    public void Initialize()
    {
        Arrange();

        Act();
    }

    private void Arrange()
    {
        _container = new Model1Container();
        _produtoParaIncluir = new Produto
                       {
                           Nome = &amp;quot;um&amp;quot;
                       };
    }
    
    private void Act()
    {
        _container.AddToProdutoes(_produtoParaIncluir);
        _container.SaveChanges();
    }
   
    [TestMethod]
    public void NaoEhIgualAZero()
    {
        Assert.AreNotEqual(0, _produtoParaIncluir.Id);
    }

    [TestMethod]
    public void EstaNoBD()
    {
        var outroContainer = new Model1Container();
        var produtoIncluido = outroContainer.Produtoes.Single(p =&amp;gt; p.Id == _produtoParaIncluir.Id);
        Assert.AreEqual(&amp;quot;um&amp;quot;, produtoIncluido.Nome);
    }
}&lt;/pre&gt;

&lt;p&gt;Notem que estou testando diretamente o container do Entity Framework.&lt;/p&gt;

&lt;p&gt;O teste deve passar. Não esqueça de puxar as strings de conexão do projeto de class library para o projeto de testes, senão o container não vai ser criado. O banco subiu, o dado foi inserido. Você pode realizar uma consulta manual e confirmar, se você não acreditar no seu teste.&lt;/p&gt;

&lt;p&gt;E um teste para excluir? Será que fuciona? Vamos olhar os dados gerados no plano de geração de dados:&lt;/p&gt;

&lt;p&gt;&lt;a href="http://unplugged.giggio.net/unplugged/image.axd?picture=image_195.png" rel="lightbox[ttbdms]"&gt;&lt;img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" class="wlDisabledImage" title="image" border="0" alt="image" src="http://unplugged.giggio.net/unplugged/image.axd?picture=image_thumb_131.png" width="291" height="206" /&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Posso pedir para consultar por id, ou por nome, e então excluir. Vou pedir por id, que é gerado automaticamente por identity no SQL Server. Vejam o teste:&lt;/p&gt;

&lt;p&gt;&amp;#160;&lt;/p&gt;

&lt;pre class="brush: csharp;"&gt;[TestClass]
public class TesteExclusao
{
    private const int IdParaExcluir = 1;
    private Model1Container _container;

    [TestInitialize]
    public void Initialize()
    {
        Arrange();

        Act();
    }

    private void Arrange()
    {
        _container = new Model1Container();
    }
    
    private void Act()
    {
        var produtoParaExcluir = _container.Produtoes.Single(p =&amp;gt; p.Id == IdParaExcluir);
        _container.DeleteObject(produtoParaExcluir);
        _container.SaveChanges();
    }
   
    [TestMethod]
    public void NaoEstaNoBD()
    {
        var outroContainer = new Model1Container();
        var produtoExcluido = outroContainer.Produtoes.SingleOrDefault(p =&amp;gt; p.Id == IdParaExcluir);
        Assert.IsNull(produtoExcluido);
    }
}&lt;/pre&gt;

&lt;p&gt;E funciona!&lt;/p&gt;


&lt;br /&gt;

&lt;p&gt;Se em outro teste eu quiser consultar o id 1, eu poderia ter problemas, já que o teste de exclusão poderia interferir. Para resolver isso eu puxo para o teste de consulta o setup dos dados no banco, veja a chamada de GenerateData, destacada.&lt;/p&gt;

&lt;p&gt;&amp;#160;&lt;/p&gt;

&lt;pre class="brush: csharp; highlight: [19];"&gt;[TestClass]
public class TesteConsulta
{
    private const int IdParaConsultar = 1;
    private Model1Container _container;
    private Produto _produtoEncontrado;

    [TestInitialize]
    public void Initialize()
    {
        Arrange();

        Act();
    }

    private void Arrange()
    {
        _container = new Model1Container();
        DatabaseTestClass.TestService.GenerateData();
    }
    
    private void Act()
    {
        _produtoEncontrado = _container.Produtoes.SingleOrDefault(p =&amp;gt; p.Id == IdParaConsultar);
    }
   
    [TestMethod]
    public void ExisteNoBD()
    {
        Assert.IsNotNull(_produtoEncontrado);
    }
    [TestMethod]
    public void TemNomeCorreto()
    {
        Assert.AreEqual(&amp;quot;aquele dado gigante gerado&amp;quot;, _produtoEncontrado.Nome);
    }
}&lt;/pre&gt;

&lt;br /&gt;Isso garante a consistência dos dados entre os testes. 

&lt;p&gt;&amp;#160;&lt;/p&gt;

&lt;p&gt;Com isso posso criar testes à vontade, o banco sempre vai ter o último esquema e dados atualizado. Não preciso me preocupar com os dados, eles sempre vão estar lá. Isso é o básico dos testes integrado com banco de dados. O Visual Studio permite toda essa integração de maneira simples. Esse tipo de cenário fica especialmente importante quando não usamos ORMs, já que todo o acesso a dados é manual, e nesse caso testamos nossos DAOs, e também quando usamos POCO, onde o mapeamento é mais manual do que o que usei aqui.&lt;/p&gt;

&lt;p&gt;No próximo vou mostrar como resolver isso sem o Data Dude, já que ele está limitado ao SQL Server e aos poucos providers extras que foram feitos até agora. E sem Entity Framework também.&lt;/p&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.giggio.net/~ff/DotNetUnplugged?a=KSsE_2MmlRE:D8CvT-CX6eM:Tph0bMNtBCI"&gt;&lt;img src="http://feeds.feedburner.com/~ff/DotNetUnplugged?d=Tph0bMNtBCI" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.giggio.net/~ff/DotNetUnplugged?a=KSsE_2MmlRE:D8CvT-CX6eM:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/DotNetUnplugged?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.giggio.net/~ff/DotNetUnplugged?a=KSsE_2MmlRE:D8CvT-CX6eM:D7DqB2pKExk"&gt;&lt;img src="http://feeds.feedburner.com/~ff/DotNetUnplugged?i=KSsE_2MmlRE:D8CvT-CX6eM:D7DqB2pKExk" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.giggio.net/~ff/DotNetUnplugged?a=KSsE_2MmlRE:D8CvT-CX6eM:F7zBnMyn0Lo"&gt;&lt;img src="http://feeds.feedburner.com/~ff/DotNetUnplugged?i=KSsE_2MmlRE:D8CvT-CX6eM:F7zBnMyn0Lo" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.giggio.net/~ff/DotNetUnplugged?a=KSsE_2MmlRE:D8CvT-CX6eM:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/DotNetUnplugged?i=KSsE_2MmlRE:D8CvT-CX6eM:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.giggio.net/~ff/DotNetUnplugged?a=KSsE_2MmlRE:D8CvT-CX6eM:I9og5sOYxJI"&gt;&lt;img src="http://feeds.feedburner.com/~ff/DotNetUnplugged?d=I9og5sOYxJI" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.giggio.net/~ff/DotNetUnplugged?a=KSsE_2MmlRE:D8CvT-CX6eM:3oH-tSNJdoA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/DotNetUnplugged?d=3oH-tSNJdoA" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/DotNetUnplugged/~4/KSsE_2MmlRE" height="1" width="1"/&gt;</description>
      <link>http://feeds.giggio.net/~r/DotNetUnplugged/~3/KSsE_2MmlRE/post.aspx</link>
      <author>Giovanni Bassi</author>
      <comments>http://unplugged.giggio.net/unplugged/post/Testando-o-banco-de-dados-com-Infra-Microsoft.aspx#comment</comments>
      <guid isPermaLink="false">http://unplugged.giggio.net/unplugged/post.aspx?id=abb3c32b-c2d1-4610-8726-1085c16f18ec</guid>
      <pubDate>Mon, 19 Jul 2010 19:02:33 -0200</pubDate>
      <category>Team System</category>
      <category>Testes</category>
      <dc:publisher>Giovanni Bassi</dc:publisher>
      <pingback:server>http://unplugged.giggio.net/unplugged/pingback.axd</pingback:server>
      <pingback:target>http://unplugged.giggio.net/unplugged/post.aspx?id=abb3c32b-c2d1-4610-8726-1085c16f18ec</pingback:target>
      <slash:comments>1</slash:comments>
      <trackback:ping>http://unplugged.giggio.net/unplugged/trackback.axd?id=abb3c32b-c2d1-4610-8726-1085c16f18ec</trackback:ping>
      <wfw:comment>http://unplugged.giggio.net/unplugged/post/Testando-o-banco-de-dados-com-Infra-Microsoft.aspx#comment</wfw:comment>
      <wfw:commentRss>http://unplugged.giggio.net/unplugged/syndication.axd?post=abb3c32b-c2d1-4610-8726-1085c16f18ec</wfw:commentRss>
    <feedburner:origLink>http://unplugged.giggio.net/unplugged/post.aspx?id=abb3c32b-c2d1-4610-8726-1085c16f18ec</feedburner:origLink></item>
    <item>
      <title>Tech·Ed Brasil 2010: Eu vou, você vai?</title>
      <description>&lt;p&gt;&lt;img style="border-right-width: 0px; margin: 0px 10px 10px 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="Eu vou no TechEd Brasil 2010. Você vai?" border="0" alt="Eu vou no TechEd Brasil 2010. Você vai?" align="left" src="http://unplugged.giggio.net/pics/Teched2010/EuVou-P.png" width="200" height="116" /&gt;Sim, os motores estão começando a esquentar: o &lt;a href="http://www.teched.com.br/" target="_blank"&gt;Tech·Ed Brasil 2010&lt;/a&gt; está chegando. Milhares de pessoas estarão presentes no maior evento da comunidade Microsoft brasileira.&amp;#160; O Tech·Ed&amp;#160; é promovido pela Microsoft, e com conteúdo entregue por MVPs, funcionários Microsoft, e membros influentes da comunidade, ou seja, só gente que sabe muito sobre tecnologia em geral, e mais ainda sobre o tema que estará palestrando.&lt;/p&gt;  &lt;p&gt;Esse ano o evento será em Setembro, de 13 a 15, no &lt;a href="http://www.teched.com.br/2010/Mapa.aspx" target="_blank"&gt;Expo Center Norte&lt;/a&gt;, em São Paulo. É um lugar grande, que é capaz de receber muita gente confortavelmente. Pra quem é de fora de São Paulo, tem um motivo a mais para vir: o &lt;a href="http://unplugged.giggio.net/post/QCon-Sao-Paulo-2010-estarei-la-falando-de-BDD.aspx" target="_blank"&gt;QCon São Paulo&lt;/a&gt; acontece exatamente antes, dias 11 e 12 de Setembro, sábado e domingo. O Tech-ed começa na segunda.&lt;a href="http://unplugged.giggio.net/unplugged/image.axd?picture=image_185.png" rel="lightbox"&gt;&lt;img style="border-right-width: 0px; margin: 10px 0px 10px 10px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="" border="0" alt="" align="right" src="http://unplugged.giggio.net/unplugged/image.axd?picture=image_thumb_121.png" width="289" height="206" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;Eu sou presença assídua no TechEd a anos, praticamente desde que o evento iniciou no Brasil. É imperdível, é sem dúvida o melhor evento do ano no país para absorver conteúdo técnico. Além disso, todo mundo sabe, Tech Ed não é só estudo, é também &lt;a href="http://unplugged.giggio.net/post/Tech-Ed-Brasil-2009-Networking-e-diversao.aspx" target="_blank"&gt;networking e diversão&lt;/a&gt;. Ano passado nos divertimos muito reencontrando amigos da comunidade que são de fora de São Paulo, tanto durante o evento em si, quanto depois, nos happy hours, jantares e baladas que acompanham obrigatoriamente qualquer evento de peso. Metade do evento são esses encontros e a experiência de estar presente. Só a outra metade é o conteúdo. E um não vive sem o outro.&lt;/p&gt;  &lt;p&gt;O conteúdo do evento está ótimo: basta olhar as &lt;a href="http://www.teched.com.br/2010/Tracks.aspx" target="_blank"&gt;tracks&lt;/a&gt;, lotadas de assuntos instigantes: computação na nuvem, desenvolvimento web, ferramentas, linguagens e frameworks de desenvolvimento, e, vejam só: práticas de desenvolvimento. Sim, no TechEd se fala bastante de práticas, basta dar uma olhada nas &lt;a href="http://www.msteched.com/Tracks/DevelopmentPractices" target="_blank"&gt;palestras sobre práticas do TechEd americano deste ano&lt;/a&gt; pra ter um gostinho. Se o nosso tiver metade destas palestras já está ótimo.&lt;/p&gt;  &lt;p&gt;Pra ter uma ideia de como foi o TechEd nos anos passados, basta dar uma olhada nos posts anteriores deste blog, na tag “&lt;a href="http://unplugged.giggio.net/?tag=/teched" target="_blank"&gt;teched&lt;/a&gt;”. Está lotado de fotos e comentários, e tem até um post onde &lt;a href="http://unplugged.giggio.net/post/Tech-Ed-Brasil-2009-Twitter-reportou-o-evento-ao-vivo.aspx" target="_blank"&gt;cataloguei o twitter&lt;/a&gt;, sempre usando a hashtag &lt;a href="http://search.twitter.com/search?q=%23TechEdBrasil"&gt;#TechEdBrasil&lt;/a&gt; (esse ano mudou, estamos usando a hashtag &lt;a href="http://search.twitter.com/search?q=%23TechEdBR" target="_blank"&gt;#TechEdBR&lt;/a&gt;). O primeiro relato é de 2008, já que o blog só nasceu neste ano, e dá pra ver que eu estava começando a falar com a comunidade para criar o &lt;a href="http://dotnetarchitects.net" target="_blank"&gt;.Net Architects&lt;/a&gt;. Sim, o TechEd de 2008 ajudou a fazer o grupo acontecer, foi lá que eu conheci o &lt;a href="http://cavalcante.net/" target="_blank"&gt;Victor Cavalcante&lt;/a&gt; e o &lt;a href="http://www.valdir.blog.br/" target="_blank"&gt;Valdir Rogerio&lt;/a&gt;, que na época trabalhavam na Unip, e apoiaram a ideia de fazer as reuniões do grupo por lá, onde &lt;a href="http://www.dotnetarchitects.net/page/Reunioes-presenciais.aspx" target="_blank"&gt;elas são até hoje&lt;/a&gt;. TechEd não é só conteúdo, diversão e networking, também é &lt;strong&gt;comunidade&lt;/strong&gt;!&lt;/p&gt;  &lt;p&gt;&lt;img style="border-right-width: 0px; display: block; float: none; border-top-width: 0px; border-bottom-width: 0px; margin-left: auto; border-left-width: 0px; margin-right: auto" title="" border="0" alt="" src="http://unplugged.giggio.net/unplugged/image.axd?picture=DSC02236.jpg" width="644" height="280" /&gt;&lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;Foi no TechEd que conheci muita gente da comunidade técnica. Não é toda hora que você tem a oportunidade de ver juntas dezenas de pessoas que conhecem tão a fundo cada assunto.&lt;/p&gt;  &lt;p&gt;Vi algumas críticas com relação ao valor do evento, que está agora por 900 reais (vai aumentar mais ou menos uma vez por mês, o preço inicial era 800 reais). Mas dada a qualidade do evento e do conteúdo, eu acho que é um preço justo. Lá fora o TechEd bate quase 4 mil reais, e sempre lota com milhares e milhares de pessoas. Se pesar pra você, faça como eu sempre fiz: peça para seu empregador pagar. Eu acho que nunca paguei um TechEd, porque eu ia atrás dos executivos da empresa para bancarem o evento, eu justificava que era importante, que ia dar retorno. Quando me tornei independente comecei a palestrar no evento, não preciso mais pagar. Mas não teria problemas em pagar, aliás, pagaria até mais. Acredito que vale cada centavo.&lt;/p&gt;  &lt;p&gt;Pra ajudar a promover o evento montei alguns badges. Pegue o que fizer mais sentido pra você e coloque onde achar melhor (site, blog, email). Não esqueçam de linkar para &lt;a href="http://www.teched.com.br"&gt;www.teched.com.br&lt;/a&gt; (vejam exemplo aí do lado direito, em “Selos”). As imagens estão abaixo (clique para link para imagem ampliada): &lt;/p&gt;  &lt;p&gt;&lt;a href="http://unplugged.giggio.net/pics/Teched2010/Inscrevase.png" target="_blank"&gt;&lt;img style="border-right-width: 0px; margin: 0px auto 10px; display: block; float: none; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="EuVou-P" border="0" alt="EuVou-P" src="http://unplugged.giggio.net/pics/Teched2010/Inscrevase-P.png" width="200" height="116" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;&lt;a href="http://unplugged.giggio.net/pics/Teched2010/EuVou.png" target="_blank"&gt;&lt;img style="border-right-width: 0px; margin: 0px auto 10px; display: block; float: none; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="EuVou-P" border="0" alt="EuVou-P" src="http://unplugged.giggio.net/pics/Teched2010/EuVou-P.png" width="200" height="116" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;&lt;/p&gt; &lt;a href="http://unplugged.giggio.net/pics/Teched2010/Palestrante.png" target="_blank"&gt;&lt;img style="border-right-width: 0px; margin: 0px auto 10px; display: block; float: none; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="EuVou-P" border="0" alt="EuVou-P" src="http://unplugged.giggio.net/pics/Teched2010/Palestrante-P.png" width="200" height="116" /&gt;&lt;/a&gt;   &lt;p&gt;&lt;/p&gt;  &lt;p&gt;&lt;/p&gt;  &lt;p&gt;&lt;/p&gt;  &lt;p&gt;&lt;/p&gt;  &lt;p&gt;&lt;/p&gt;  &lt;p&gt;&lt;/p&gt;  &lt;p&gt;&lt;/p&gt;  &lt;p&gt;Mais informações para ficar atento ao evento, e se preparar: &lt;/p&gt;  &lt;ol&gt;   &lt;li&gt;O &lt;a href="http://fabiohara.spaces.live.com/" target="_blank"&gt;Fabio Hara&lt;/a&gt; está no comitê do evento, e está falando toda hora sobre ele. E &lt;a href="http://twitter.com/fabiohara" target="_blank"&gt;também no twitter&lt;/a&gt;. &lt;/li&gt;    &lt;li&gt;Também da comissão, o João Paulo (aka JP) também pode soltar alguma coisa &lt;a href="http://blogs.msdn.com/b/jpclementi/" target="_blank"&gt;no seu blog&lt;/a&gt;. Mas ele está falando sobre o assunto mesmo &lt;a href="http://twitter.com/jpclementi" target="_blank"&gt;é no Twitter&lt;/a&gt;. &lt;/li&gt;    &lt;li&gt;O Thiago Everton montou &lt;a href="http://thiagoeverton.spaces.live.com/blog/cns!9725208EE42880F3!1041.entry?sa=961941936" target="_blank"&gt;um guia&lt;/a&gt; para quem vai pela primeira vez. &lt;/li&gt;    &lt;li&gt;No Twitter, a hashtag &lt;a href="http://search.twitter.com/search?q=%23TechEdBR" target="_blank"&gt;#TechEdBR&lt;/a&gt; já está bombando, e a conta oficial é a &lt;a href="http://twitter.com/techedbrasil" target="_blank"&gt;@TechEdBrasil&lt;/a&gt;. &lt;/li&gt;    &lt;li&gt;Fique atento aos &lt;a href="http://www.microsoft.com/brasil/mvp/mvpawardees.mspx" target="_blank"&gt;MVPs brasileiros&lt;/a&gt;, sempre sai alguma coisa lá. O &lt;a href="http://mvpbrasil.spaces.live.com/" target="_blank"&gt;Rodolfo Roim&lt;/a&gt;, que é MVP Lead também é capaz de soltar alguma informação por lá, senão antes, talvez depois do evento. &lt;/li&gt;    &lt;li&gt;Fique atento à &lt;a href="http://www.teched.com.br/2010/Palestrantes.aspx" target="_blank"&gt;página de palestrantes&lt;/a&gt;, que acredito que vai ser atualizada em breve. Os palestrantes, assim que puderem contar que foram convocados para palestrar vão começar a falar sobre o assunto. &lt;/li&gt; &lt;/ol&gt;  &lt;p&gt;Para aproveitar melhor, algumas dicas:&lt;/p&gt;  &lt;ol&gt;   &lt;li&gt;Essa é óbvia: &lt;strong&gt;vá ao evento&lt;/strong&gt;. Por mais que algumas palestras depois vão parar em webcasts, ou até que você possa baixá-las online do site americano ou coisa do tipo, nada substitui a experiência ao vivo. &lt;/li&gt;    &lt;li&gt;&lt;strong&gt;Fale com as pessoas&lt;/strong&gt;. Não tenha receio de entrar em uma roda de pessoas desconhecidas, principalmente se forem funcionários Microsoft ou MVPs. Chegue junto, se apresente, tire dúvidas, troque cartão de visita, conte experiências. Uns anos atrás, antes de eu ser nomeado, me parecia que alguns MVPs davam a impressão que não queriam falar com a comunidade. Era impressão errada minha: todos gostam de uma boa conversa. Se a pessoa não puder falar porque tem algum compromisso ou algo do tipo, ela vai te dizer. &lt;/li&gt;    &lt;li&gt;&lt;strong&gt;Durma antes do evento&lt;/strong&gt;. Pra aguentar o ritmo intenso da semana. Esse vale mais ainda se você for ao QCon. &lt;/li&gt;    &lt;li&gt;&lt;strong&gt;Agende-se para dormir menos durante os dias do evento&lt;/strong&gt;. À noite sempre tem happy hour, balada, jantares, alguma coisa. O Twitter avisa, e as pessoas no próprio evento se comunicam. Só como exemplo: No &lt;a href="http://unplugged.giggio.net/post/AgileBrazil-2010-arrebentou!.aspx" target="_blank"&gt;AgileBrazil&lt;/a&gt; saimos praticamente todas as noites, no TechEd de 2009 também. &lt;/li&gt;    &lt;li&gt;&lt;strong&gt;Assista as palestras mais importantes&lt;/strong&gt;, mas você não precisa assistir todas. Às vezes um bate papo com um palestrante no corredor vale 10 vezes mais que uma palestra. &lt;/li&gt;    &lt;li&gt;&lt;strong&gt;Assista aos keynotes&lt;/strong&gt;. Eles dão o tom do resto do evento. &lt;/li&gt;    &lt;li&gt;&lt;strong&gt;Vá ao ask the experts&lt;/strong&gt;. É lá que a comunidade pode realmente se conhecer e tirar suas dúvidas com os caras que mais manjam de cada assunto no país. &lt;/li&gt; &lt;/ol&gt;  &lt;p&gt;É isso aí. Vejo vocês lá.&lt;/p&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.giggio.net/~ff/DotNetUnplugged?a=lx_dvoFj-lU:L_3n1xWVJm4:Tph0bMNtBCI"&gt;&lt;img src="http://feeds.feedburner.com/~ff/DotNetUnplugged?d=Tph0bMNtBCI" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.giggio.net/~ff/DotNetUnplugged?a=lx_dvoFj-lU:L_3n1xWVJm4:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/DotNetUnplugged?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.giggio.net/~ff/DotNetUnplugged?a=lx_dvoFj-lU:L_3n1xWVJm4:D7DqB2pKExk"&gt;&lt;img src="http://feeds.feedburner.com/~ff/DotNetUnplugged?i=lx_dvoFj-lU:L_3n1xWVJm4:D7DqB2pKExk" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.giggio.net/~ff/DotNetUnplugged?a=lx_dvoFj-lU:L_3n1xWVJm4:F7zBnMyn0Lo"&gt;&lt;img src="http://feeds.feedburner.com/~ff/DotNetUnplugged?i=lx_dvoFj-lU:L_3n1xWVJm4:F7zBnMyn0Lo" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.giggio.net/~ff/DotNetUnplugged?a=lx_dvoFj-lU:L_3n1xWVJm4:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/DotNetUnplugged?i=lx_dvoFj-lU:L_3n1xWVJm4:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.giggio.net/~ff/DotNetUnplugged?a=lx_dvoFj-lU:L_3n1xWVJm4:I9og5sOYxJI"&gt;&lt;img src="http://feeds.feedburner.com/~ff/DotNetUnplugged?d=I9og5sOYxJI" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.giggio.net/~ff/DotNetUnplugged?a=lx_dvoFj-lU:L_3n1xWVJm4:3oH-tSNJdoA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/DotNetUnplugged?d=3oH-tSNJdoA" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/DotNetUnplugged/~4/lx_dvoFj-lU" height="1" width="1"/&gt;</description>
      <link>http://feeds.giggio.net/~r/DotNetUnplugged/~3/lx_dvoFj-lU/post.aspx</link>
      <author>Giovanni Bassi</author>
      <comments>http://unplugged.giggio.net/unplugged/post/TechEd-Brasil-2010-Eu-vou-voce-vai.aspx#comment</comments>
      <guid isPermaLink="false">http://unplugged.giggio.net/unplugged/post.aspx?id=5d3d28ad-7921-440f-893d-bf71a6dcfe6d</guid>
      <pubDate>Sat, 03 Jul 2010 02:05:43 -0200</pubDate>
      <category>Eventos</category>
      <dc:publisher>Giovanni Bassi</dc:publisher>
      <pingback:server>http://unplugged.giggio.net/unplugged/pingback.axd</pingback:server>
      <pingback:target>http://unplugged.giggio.net/unplugged/post.aspx?id=5d3d28ad-7921-440f-893d-bf71a6dcfe6d</pingback:target>
      <slash:comments>2</slash:comments>
      <trackback:ping>http://unplugged.giggio.net/unplugged/trackback.axd?id=5d3d28ad-7921-440f-893d-bf71a6dcfe6d</trackback:ping>
      <wfw:comment>http://unplugged.giggio.net/unplugged/post/TechEd-Brasil-2010-Eu-vou-voce-vai.aspx#comment</wfw:comment>
      <wfw:commentRss>http://unplugged.giggio.net/unplugged/syndication.axd?post=5d3d28ad-7921-440f-893d-bf71a6dcfe6d</wfw:commentRss>
    <feedburner:origLink>http://unplugged.giggio.net/unplugged/post.aspx?id=5d3d28ad-7921-440f-893d-bf71a6dcfe6d</feedburner:origLink></item>
    <item>
      <title>Fazendo software com telefone sem fio</title>
      <description>&lt;p&gt;&lt;img style="border-bottom: 0px; border-left: 0px; margin: 0px 10px 10px 0px; display: inline; border-top: 0px; border-right: 0px" title="Não estou entendendo nada!!!" border="0" alt="Não estou entendendo nada!!!" align="left" src="http://unplugged.giggio.net/unplugged/image.axd?picture=image_184.png" width="274" height="206" /&gt; &lt;/p&gt;  &lt;p&gt;Cliente presente é algo que todos entendemos que é obrigatório para entregar um projeto com sucesso. Será que é suficiente?&lt;/p&gt;  &lt;p&gt;Tenho visto alguma frequência que desenvolvedores se esforçam para construir uma aplicação corretamente, buscam um modelo rico, OO, fugindo do modelo anêmico. Usam tecnologias de ponta, ORMs, bancos NOSQL. Tem cliente presente. Entregam em iterações curtas, e chegam até a buscar o release contínuo. Buscam evitar o Scrum flácido, praticam XP, programam pareados. E falham. Quero analisar aqui um dos motivos que tenho visto para essa falha.&lt;/p&gt;  &lt;p&gt;É comum que o cliente, apesar de presente, não tenha todo o entendimento de como o software deve se comportar. Um Product Owner pode saber &lt;strong&gt;o que&lt;/strong&gt; deve ser feito, mas frequentemente não sabe &lt;strong&gt;como &lt;/strong&gt;a aplicação deve funcionar em detalhes. Mas tudo bem, ele sabe quem sabe. E quem sabe é o especialista de negócio, ou business expert. Essa é a pessoa que realmente realiza as ações de negócio hoje, provavelmente de forma manual no Excel, como boa parte do planeta. É ele que sabe como as coisas devem funcionar, em detalhes.&lt;/p&gt;  &lt;p&gt;Só que entender o negócio é algo complicado, e hoje em dia, mais do que nunca, precisamos de especialistas. E quem faz o trabalho super especializado de entender o negócio? O &lt;strong&gt;an&lt;/strong&gt;alista de negócio, é claro; vou chamá-lo de &lt;strong&gt;An&lt;/strong&gt;dré. Ok, temos times multidisciplinares, pessoas multidisciplinares. Isso significa que provavelmente temos mais de uma pessoa no time que sabe fazer análise, mas ninguém o faz tão bem quanto o André. O André se especializou, ele leu o &lt;a href="http://en.wikipedia.org/wiki/BABOK"&gt;BABOK&lt;/a&gt; todo, fez cursos e mais cursos de análise, entende bem de usabilidade, conhece diversas técnicas para entender o que o especialista de negócio precisa, e sabe como documentar isso, como passar esse conhecimento pra frente.&lt;/p&gt;  &lt;p&gt;Mas ele não programa. &lt;/p&gt;  &lt;p&gt;Quer dizer, ele está num time multidisciplinar, mas ele prefere não programar. Quando está na hora de ele ser multidisciplinar ele escreve uns casos de testes, e está aprendendo a especificar com testes de aceitação com os Test Cases do Visual Studio, ou Fitnesse, ou Cucumber. Já faz uns 5 anos ou mais que o André prefere não programar. E ele é feliz assim, ele gosta de investir seu tempo no desenvolvimento de suas soft skills, é o que ele mais gosta de fazer. Isso é normal, todo mundo tem suas preferências, e estas habilidades são úteis ao projeto.&lt;/p&gt;  &lt;p&gt;Então ele vai lá, analisa o negócio. Prepara o conhecimento e o transfere da melhor forma possível para o &lt;strong&gt;c&lt;/strong&gt;odificador – vou chamá-lo de &lt;strong&gt;C&lt;/strong&gt;arlos – que vai implementar com código o que André analisou. O Carlos não fala com o especialista de negócio, ele fala com o André.&lt;/p&gt;  &lt;p&gt;O André fala com o especialista de negócio sobre o negócio. Se o domínio é um caixa eletrônico, ele fala em saques, depósitos, saldos.&lt;/p&gt;  &lt;p&gt;O André também fala com o Carlos. Ele fala de regras de negócio, fluxos principais, fluxos alternativos, wireframes, critérios de aceitação e até de tabelas de banco de dados de vez em quando. E no meio desse monte de outras coisas, ele também fala de saques, depósitos e saldos.&lt;/p&gt;  &lt;p&gt;O Carlos, quando tem uma dúvida, pergunta pro André, que pergunta pro especialista de negócio. O especialista responde pro André, o André responde pro Carlos. O Carlos daí conta pros outros codificadores, analistas de banco de dados, etc. Ou o André conta.&lt;/p&gt;  &lt;p&gt;Não preciso dizer que isso é um telefone sem fio, não é? Quem já brincou de telefone sem fio sabe que o que sai de um lado dificilmente é igual ao que chega do outro lado. E é assim que tantos consultores, cursos, etc, recomendam que façamos análise de negócio. Com telefone sem fio. Esse é um dos grandes motivos para a falha na entrega: entendemos errado porque o processo de comunicação é falho.&lt;/p&gt;  &lt;p&gt;O Carlos, ao contrário do André, não se aprofundou em análise de negócio. Pode ser que ele odeie analisar o negócio, pode ser que não, mas de qualquer forma ele não desenvolveu tanto suas soft skills. Ele prefere codificar, ele se aprofundou em padrões de projeto, em OO, em assuntos diferentes do que o André se aprofundou.&lt;/p&gt;  &lt;p&gt;Como resolver isso? Eliminando o analista de negócio do projeto? Claro que não! Quem fará a análise, o Carlos, que não é tão especializado? Não, é o próprio analista que fará a análise do negócio, mas ele o fará de uma maneira um pouco diferente. Em vez de fazer a ponta entre especialista de negócio e codificador, ele vai trabalhar como um facilitador da comunicação dos dois. Ele vai trazer o codificador ao especialista de negócio, ou vice-versa, e usar suas técnicas e soft skills para levantar as informações mais relevantes, na maior quantidade possível. Os três, juntos, vão desenhar a aplicação. &lt;/p&gt;  &lt;p&gt;E na hora de parear, porque não o André, sentado ao lado do Carlos, enquanto ele codifica? Isso sim, é trabalhar num time verdadeiramente multidisciplinar.&lt;/p&gt;  &lt;p&gt;Ingrediente pro sucesso.&lt;/p&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.giggio.net/~ff/DotNetUnplugged?a=mJPVkjdwoIk:CTQvU8pmVDk:Tph0bMNtBCI"&gt;&lt;img src="http://feeds.feedburner.com/~ff/DotNetUnplugged?d=Tph0bMNtBCI" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.giggio.net/~ff/DotNetUnplugged?a=mJPVkjdwoIk:CTQvU8pmVDk:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/DotNetUnplugged?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.giggio.net/~ff/DotNetUnplugged?a=mJPVkjdwoIk:CTQvU8pmVDk:D7DqB2pKExk"&gt;&lt;img src="http://feeds.feedburner.com/~ff/DotNetUnplugged?i=mJPVkjdwoIk:CTQvU8pmVDk:D7DqB2pKExk" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.giggio.net/~ff/DotNetUnplugged?a=mJPVkjdwoIk:CTQvU8pmVDk:F7zBnMyn0Lo"&gt;&lt;img src="http://feeds.feedburner.com/~ff/DotNetUnplugged?i=mJPVkjdwoIk:CTQvU8pmVDk:F7zBnMyn0Lo" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.giggio.net/~ff/DotNetUnplugged?a=mJPVkjdwoIk:CTQvU8pmVDk:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/DotNetUnplugged?i=mJPVkjdwoIk:CTQvU8pmVDk:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.giggio.net/~ff/DotNetUnplugged?a=mJPVkjdwoIk:CTQvU8pmVDk:I9og5sOYxJI"&gt;&lt;img src="http://feeds.feedburner.com/~ff/DotNetUnplugged?d=I9og5sOYxJI" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.giggio.net/~ff/DotNetUnplugged?a=mJPVkjdwoIk:CTQvU8pmVDk:3oH-tSNJdoA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/DotNetUnplugged?d=3oH-tSNJdoA" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/DotNetUnplugged/~4/mJPVkjdwoIk" height="1" width="1"/&gt;</description>
      <link>http://feeds.giggio.net/~r/DotNetUnplugged/~3/mJPVkjdwoIk/post.aspx</link>
      <author>Giovanni Bassi</author>
      <comments>http://unplugged.giggio.net/unplugged/post/Fazendo-software-com-telefone-sem-fio.aspx#comment</comments>
      <guid isPermaLink="false">http://unplugged.giggio.net/unplugged/post.aspx?id=6f5327a6-834e-4ca3-bf50-f376bddabfba</guid>
      <pubDate>Thu, 01 Jul 2010 01:26:39 -0200</pubDate>
      <category>Gestão de projeto</category>
      <dc:publisher>Giovanni Bassi</dc:publisher>
      <pingback:server>http://unplugged.giggio.net/unplugged/pingback.axd</pingback:server>
      <pingback:target>http://unplugged.giggio.net/unplugged/post.aspx?id=6f5327a6-834e-4ca3-bf50-f376bddabfba</pingback:target>
      <slash:comments>3</slash:comments>
      <trackback:ping>http://unplugged.giggio.net/unplugged/trackback.axd?id=6f5327a6-834e-4ca3-bf50-f376bddabfba</trackback:ping>
      <wfw:comment>http://unplugged.giggio.net/unplugged/post/Fazendo-software-com-telefone-sem-fio.aspx#comment</wfw:comment>
      <wfw:commentRss>http://unplugged.giggio.net/unplugged/syndication.axd?post=6f5327a6-834e-4ca3-bf50-f376bddabfba</wfw:commentRss>
    <feedburner:origLink>http://unplugged.giggio.net/unplugged/post.aspx?id=6f5327a6-834e-4ca3-bf50-f376bddabfba</feedburner:origLink></item>
    <item>
      <title>AgileBrazil 2010: arrebentou!</title>
      <description>&lt;p&gt;&lt;img style="border-bottom: 0px; border-left: 0px; margin: 0px auto 10px; display: block; float: none; border-top: 0px; border-right: 0px" title="logo-trans" border="0" alt="logo-trans" src="http://unplugged.giggio.net/unplugged/image.axd?picture=logo-trans_2.png" width="400" height="137" /&gt; Ok, eu ia reportar o evento ao vivo… mas eu também ia dormir 8 horas por dia. Nenhum dos dois aconteceu. Então o relatório do evento segue agora, alguns dias atrasado, mas nem por isso tão desatualizado.&lt;/p&gt;  &lt;p&gt;O evento foi muito bom. Já vi diversos relatos em blogs de amigos e de desconhecidos agora, depois que o evento já aconteceu, e só sucessos. Algumas críticas vieram, mas nada demais, só recomendações para deixar o de 2011 ainda melhor. Trabalhamos intensamente no evento vários meses, e o sucesso é a concretização deste trabalho. &lt;/p&gt;  &lt;p&gt;O evento abriu com dois dias de cursos, sendo um &lt;a href="http://www.agilebrazil.com/2010/pt/xp.html" target="_blank"&gt;de XP&lt;/a&gt;, onde fui um dos instrutores, um de CSM, um de CSPO, e outro de coaching. Não estive presente nos outros 3 cursos, mas pelo feedback que recebi também foram muito bons. No de XP tivemos nada menos do que seis instrutores (contando comigo) com vasta experiência e conhecimento. Passamos por toda a teoria, e ainda tivemos exercícios práticos e muitas dúvidas resolvidas. Dava pra ter feito 2 dias de curso tranquilamente, e aprofundado mais em alguns assuntos. Na verdade, dava pra fazer 1 semana numa boa, de tanto conteúdo que nós 6 tinhamos pra falar. Considerando que os 6 eram também palestrantes do evento e membros da organização, ou seja, todos adoram falar, nos saímos muito bem, e a dinâmica do curso foi ótima. Com os três cursos somamos mais de cem pessoas.&lt;/p&gt;  &lt;p&gt;Algumas fotos (clique para ampliar):&lt;/p&gt;  &lt;p&gt;Dúvidas dos alunos para resolver e horário:&lt;/p&gt;  &lt;p&gt;&lt;a href="http://unplugged.giggio.net/unplugged/image.axd?picture=DSC_2044.jpg" rel="lightbox"&gt;&lt;img style="border-bottom: 0px; border-left: 0px; display: inline; border-top: 0px; border-right: 0px" title="" border="0" alt="" src="http://unplugged.giggio.net/unplugged/image.axd?picture=DSC_2044_thumb.jpg" width="306" height="206" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;Coffee-break:&lt;/p&gt;  &lt;p&gt;&lt;a href="http://unplugged.giggio.net/unplugged/image.axd?picture=DSC_2080.jpg" rel="lightbox"&gt;&lt;img style="border-bottom: 0px; border-left: 0px; display: inline; border-top: 0px; border-right: 0px" title="" border="0" alt="" src="http://unplugged.giggio.net/unplugged/image.axd?picture=DSC_2080_thumb.jpg" width="358" height="176" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;Times praticando:&lt;/p&gt;  &lt;p&gt;&lt;a href="http://unplugged.giggio.net/unplugged/image.axd?picture=DSC_2092.jpg" rel="lightbox"&gt;&lt;img style="border-bottom: 0px; border-left: 0px; display: inline; border-top: 0px; border-right: 0px" title="" border="0" alt="" src="http://unplugged.giggio.net/unplugged/image.axd?picture=DSC_2092_thumb.jpg" width="431" height="147" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;Pareando a três:&lt;/p&gt;  &lt;p&gt;&lt;a href="http://unplugged.giggio.net/unplugged/image.axd?picture=DSC_2117.jpg" rel="lightbox"&gt;&lt;img style="border-bottom: 0px; border-left: 0px; display: inline; border-top: 0px; border-right: 0px" title="" border="0" alt="" src="http://unplugged.giggio.net/unplugged/image.axd?picture=DSC_2117_thumb.jpg" width="306" height="206" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;Parte da turma:&lt;/p&gt;  &lt;p&gt;&lt;a href="http://unplugged.giggio.net/unplugged/image.axd?picture=DSC_2120.jpg" rel="lightbox"&gt;&lt;img style="border-bottom: 0px; border-left: 0px; display: inline; border-top: 0px; border-right: 0px" title="" border="0" alt="" src="http://unplugged.giggio.net/unplugged/image.axd?picture=DSC_2120_thumb.jpg" width="379" height="167" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;Curso de CSM:&lt;/p&gt;  &lt;p&gt;&lt;a href="http://unplugged.giggio.net/unplugged/image.axd?picture=DSC_2055.jpg" rel="lightbox"&gt;&lt;img style="border-bottom: 0px; border-left: 0px; display: inline; border-top: 0px; border-right: 0px" title="" border="0" alt="" src="http://unplugged.giggio.net/unplugged/image.axd?picture=DSC_2055_thumb.jpg" width="362" height="174" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;Curso de CSPO: &lt;/p&gt;  &lt;p&gt;&lt;a href="http://unplugged.giggio.net/unplugged/image.axd?picture=DSC_2070.jpg" rel="lightbox"&gt;&lt;img style="border-bottom: 0px; border-left: 0px; display: inline; border-top: 0px; border-right: 0px" title="" border="0" alt="" src="http://unplugged.giggio.net/unplugged/image.axd?picture=DSC_2070_thumb.jpg" width="351" height="180" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;À noite saímos pra jantar, foi muito legal. Aqui vocês vêem parte dos instrutores e comissão do evento:&lt;/p&gt;  &lt;p&gt;&lt;a href="http://unplugged.giggio.net/unplugged/image.axd?picture=DSC_2150.jpg" rel="lightbox"&gt;&lt;img style="border-bottom: 0px; border-left: 0px; display: inline; border-top: 0px; border-right: 0px" title="" border="0" alt="" src="http://unplugged.giggio.net/unplugged/image.axd?picture=DSC_2150_thumb.jpg" width="351" height="180" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;No segundo dia do evento, outro jantar, dessa vez bem mais cheio. Muita gente já tinha chegado para participar do evento. A mesa deve ter batido quase 100 pessoas:&lt;/p&gt;  &lt;p&gt;&lt;a href="http://unplugged.giggio.net/unplugged/image.axd?picture=DSC_2191.jpg" rel="lightbox"&gt;&lt;img style="border-bottom: 0px; border-left: 0px; display: inline; border-top: 0px; border-right: 0px" title="" border="0" alt="" src="http://unplugged.giggio.net/unplugged/image.axd?picture=DSC_2191_thumb.jpg" width="330" height="191" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;Em Porto Alegre é comum esse licor, servido em cascata. Novamente tomamos neste restaurante. Quem foi que disse que agilista não gosta de cascata?&lt;/p&gt;  &lt;p&gt;&lt;a href="http://unplugged.giggio.net/unplugged/image.axd?picture=DSC_2216.jpg" rel="lightbox"&gt;&lt;img style="border-bottom: 0px; border-left: 0px; display: inline; border-top: 0px; border-right: 0px" title="" border="0" alt="" src="http://unplugged.giggio.net/unplugged/image.axd?picture=DSC_2216_thumb.jpg" width="224" height="281" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;No terceiro dia do evento abrimos com as palestras, onde quase 900 pessoas participaram. A abertura foi feita pelo Martin Fowler, e foi como a apresentação de um Rock Star. O Fowler é engraçado, ele ficou disponível o evento todo no estande da Thoughtworks, empresa que trabalha que também patrocionou o evento e estava lá, mas não tirava foto com ninguém porque dizia que ia parecer um político. Eu já tinha ouvido essas histórias, é engraçado ver que as idiossincrasias afetam todos. A palestra foi ótima, foi na verdade 3 palestras em 1, onde ele abordou, entre outros assuntos, o &lt;a href="http://martinfowler.com/bliki/FlaccidScrum.html" target="_blank"&gt;Scrum Flácido&lt;/a&gt; e o débito técnico. Isso foi muito legal, porque foi o Scrum flácido que inspirou a criação do programa &lt;a href="http://scrumdev.com.br" target="_blank"&gt;Professional Scrum Developer&lt;/a&gt; da &lt;a href="http://Scrum.org" target="_blank"&gt;Scrum.org&lt;/a&gt;. Várias outras palestras no evento se relacionaram com a do Fowler, o que foi ótimo.&lt;/p&gt;  &lt;p&gt;Fowler palestrando:&lt;/p&gt;  &lt;p&gt;&lt;a href="http://unplugged.giggio.net/unplugged/image.axd?picture=DSC_2258.jpg" rel="lightbox"&gt;&lt;img style="border-bottom: 0px; border-left: 0px; display: inline; border-top: 0px; border-right: 0px" title="" border="0" alt="" src="http://unplugged.giggio.net/unplugged/image.axd?picture=DSC_2258_thumb.jpg" width="306" height="206" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;Auditório lotado:&lt;/p&gt;  &lt;p&gt;&lt;a href="http://unplugged.giggio.net/unplugged/image.axd?picture=DSC_2262.jpg" rel="lightbox"&gt;&lt;img style="border-bottom: 0px; border-left: 0px; display: inline; border-top: 0px; border-right: 0px" title="" border="0" alt="" src="http://unplugged.giggio.net/unplugged/image.axd?picture=DSC_2262_thumb.jpg" width="437" height="145" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;Um telão reportou o evento ao vivo no twitter:&lt;/p&gt;  &lt;p&gt;&lt;a href="http://unplugged.giggio.net/unplugged/image.axd?picture=DSC_2246.jpg" rel="lightbox"&gt;&lt;img style="border-bottom: 0px; border-left: 0px; display: inline; border-top: 0px; border-right: 0px" title="" border="0" alt="" src="http://unplugged.giggio.net/unplugged/image.axd?picture=DSC_2246_thumb.jpg" width="305" height="207" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;Isso foi ótimo porque dava pra ver na hora o que o pessoal estava pensando, além de estimular o pessoal a dar feedback.&lt;/p&gt;  &lt;p&gt;Esta é a área onde ficavam os patrocinadores, aqui vocês me vêem ao lado da grade:&lt;/p&gt;  &lt;p&gt;&lt;a href="http://unplugged.giggio.net/unplugged/image.axd?picture=DSC_2335.jpg" rel="lightbox"&gt;&lt;img style="border-bottom: 0px; border-left: 0px; display: inline; border-top: 0px; border-right: 0px" title="" border="0" alt="" src="http://unplugged.giggio.net/unplugged/image.axd?picture=DSC_2335_thumb.jpg" width="306" height="206" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;Aqui uma visão melhor, em um momento em que não estava tão cheio:&lt;/p&gt;  &lt;p&gt;&lt;a href="http://unplugged.giggio.net/unplugged/image.axd?picture=DSC_2244.jpg" rel="lightbox"&gt;&lt;img style="border-bottom: 0px; border-left: 0px; display: inline; border-top: 0px; border-right: 0px" title="" border="0" alt="" src="http://unplugged.giggio.net/unplugged/image.axd?picture=DSC_2244_thumb.jpg" width="346" height="182" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;O evento seguiu o resto do dia com break-out sessions, e bastante movimento no open space, com diversas discussões:&lt;/p&gt;  &lt;p&gt;&lt;a href="http://unplugged.giggio.net/unplugged/image.axd?picture=DSC_2333.jpg" rel="lightbox"&gt;&lt;img style="border-bottom: 0px; border-left: 0px; display: inline; border-top: 0px; border-right: 0px" title="" border="0" alt="" src="http://unplugged.giggio.net/unplugged/image.axd?picture=DSC_2333_thumb.jpg" width="308" height="204" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;Tivemos um workshop com o Philippe Kruchten de Release Planning Game, onde de Mariana Bravo, Samuel Crescêncio, Teresa Maciel e eu servimos de facilitadores, ao lado do Philippe:&lt;/p&gt;  &lt;p&gt;&lt;a href="http://unplugged.giggio.net/unplugged/image.axd?picture=DSC_2275.jpg" rel="lightbox"&gt;&lt;img style="border-bottom: 0px; border-left: 0px; display: inline; border-top: 0px; border-right: 0px" title="" border="0" alt="" src="http://unplugged.giggio.net/unplugged/image.axd?picture=DSC_2275_thumb.jpg" width="358" height="176" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;Achei o workshop muito legal, principalmente para quem está começando. É um jogo, onde as pessoas conseguem ter uma visão clara sobre débito técnico, planejamento iterativo, entre outros conceitos.&lt;/p&gt;  &lt;p&gt;A Microsoft palestrou também. O Igor Abade foi o responsável por mostrar que a Microsoft está abraçando a ideia de apoiar processo ágeis. O Igor parecia apreensivo com a palestra, mas foi muito bem recebido e a sala estava bem cheia, ainda mais se considerar que palestras de patrocinador não costumam ter muita gente:&lt;/p&gt;  &lt;p&gt;&lt;a href="http://unplugged.giggio.net/unplugged/image.axd?picture=DSC_2280.jpg" rel="lightbox"&gt;&lt;img style="border-bottom: 0px; border-left: 0px; display: inline; border-top: 0px; border-right: 0px" title="" border="0" alt="" src="http://unplugged.giggio.net/unplugged/image.axd?picture=DSC_2280_thumb.jpg" width="463" height="137" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;Eu estava particularmente podre. Como fazia parte da organização estava dormindo muito pouco, e eu já vinha de uma semana fora de casa, ministrando o Professional Scrum Developer em BH, e também dormindo pouco por lá. Na quinta atingi meu limite, estava exausto e com dor de cabeça. E no fim do dia tinha minha palestra. A adrenalina da palestra me reanimou, e apresentei a palestra com toda a energia:&lt;/p&gt;  &lt;p&gt;&lt;a href="http://unplugged.giggio.net/unplugged/image.axd?picture=DSC_2241.jpg" rel="lightbox"&gt;&lt;img style="border-bottom: 0px; border-left: 0px; display: inline; border-top: 0px; border-right: 0px" title="" border="0" alt="" src="http://unplugged.giggio.net/unplugged/image.axd?picture=DSC_2241_thumb.jpg" width="349" height="181" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;&lt;a href="http://unplugged.giggio.net/unplugged/image.axd?picture=DSC_2297.jpg" rel="lightbox"&gt;&lt;img style="border-bottom: 0px; border-left: 0px; display: inline; margin-left: 0px; border-top: 0px; margin-right: 0px; border-right: 0px" title="" border="0" alt="" align="left" src="http://unplugged.giggio.net/unplugged/image.axd?picture=DSC_2297_thumb.jpg" width="306" height="206" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;&lt;a href="http://unplugged.giggio.net/unplugged/image.axd?picture=DSC_2302.jpg" rel="lightbox"&gt;&lt;img style="border-bottom: 0px; border-left: 0px; display: inline; border-top: 0px; border-right: 0px" title="" border="0" alt="" src="http://unplugged.giggio.net/unplugged/image.axd?picture=DSC_2302_thumb.jpg" width="306" height="206" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;Mas depois eu quase desmaiei.&lt;/p&gt;  &lt;p&gt;Mentira, depois fomos para o John Bull, um bar de Porto Alegre onde estava rolando um Rock, para a festa do evento. Mas não consegui acompanhar o resto do pessoal, que esticou madrugada adentro. Eu estava quase morto, voltei pro hotel para descansar. Descansei tanto que perdi o keynote do Philippe Kruchten, cheguei lá para o jogo do Brasil, que todos já sabem, era melhor não ter assistido. Perdemos um slot de palestra, mas imaginem se o Brasil tivesse ido bem? Seríamos crucificados por termos ignorado o jogo. Fazer o que?&lt;/p&gt;  &lt;p&gt;A sexta seguiu com mais palestras e no final um keynote que foi um fechamento excepcional! O Klaus Wuestefeld, um dos pioreiros da agilidade no país apresentou sua visão sobre o futuro do XP, onde ele praticamente desconstruiu o XP todo, e criou o Klaus Process, o KP, onde somente dois valores importam: Learning e Coolness. Fui uma palestra muito boa, e serviu para dar uma ótima visão sobre para onde estamos indo. Pode ser que não seja exatamente onde o Klaus espera que seja, mas ele ajudou a abrir os horizontes:&lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;&lt;a href="http://unplugged.giggio.net/unplugged/image.axd?picture=DSC_2350.jpg" rel="lightbox"&gt;&lt;img style="border-bottom: 0px; border-left: 0px; display: inline; border-top: 0px; border-right: 0px" title="" border="0" alt="" src="http://unplugged.giggio.net/unplugged/image.axd?picture=DSC_2350_thumb.jpg" width="376" height="168" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;Na sexta tivemos um jantar da organização e alguns amigos, que eu não fotografei porque merecia descansar da câmera um pouco. Depois publico as outras fotos.&lt;/p&gt;  &lt;p&gt;Gostei do evento e provavelmente estarei na organização da edição do ano que vem. Vamos ver. Foi ótimo dar rostos aos membros da organização, já que eu só conhecia pessoalmente um ou outro. Aproximar-me de pessoas como o Samuel Crescêncio, Rodrigo de Toledo, Paulo Caroli, entre outros, é algo sem preço.&lt;/p&gt;  &lt;p&gt;Aqui o time todo da organização reunida para foto histórica:&lt;/p&gt;  &lt;p&gt;&lt;a href="http://unplugged.giggio.net/unplugged/image.axd?picture=DSC_2357.jpg" rel="lightbox"&gt;&lt;img style="border-bottom: 0px; border-left: 0px; display: inline; border-top: 0px; border-right: 0px" title="" border="0" alt="" src="http://unplugged.giggio.net/unplugged/image.axd?picture=DSC_2357_thumb.jpg" width="306" height="206" /&gt;&lt;/a&gt; &lt;a href="http://unplugged.giggio.net/unplugged/image.axd?picture=DSC_2371.jpg" rel="lightbox"&gt;&lt;img style="border-bottom: 0px; border-left: 0px; display: inline; border-top: 0px; border-right: 0px" title="" border="0" alt="" src="http://unplugged.giggio.net/unplugged/image.axd?picture=DSC_2371_thumb.jpg" width="326" height="194" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;Acreditem se quiserem, nossa primeira reunião presencial se deu na segunda-feira, um dia antes do evento. Toda a coordenação foi remota. Quem disse que times ágeis obrigatoriamente tem que estar colocados?&lt;/p&gt;  &lt;p&gt;Valeu pessoal!&lt;/p&gt;  &lt;p&gt;&lt;a href="http://unplugged.giggio.net/unplugged/image.axd?picture=DSC_2358.jpg" rel="lightbox"&gt;&lt;img style="border-bottom: 0px; border-left: 0px; display: inline; border-top: 0px; border-right: 0px" title="" border="0" alt="" src="http://unplugged.giggio.net/unplugged/image.axd?picture=DSC_2358_thumb.jpg" width="291" height="216" /&gt;&lt;/a&gt;&lt;/p&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.giggio.net/~ff/DotNetUnplugged?a=pyZkeAKfE2w:LLLXja4MCHA:Tph0bMNtBCI"&gt;&lt;img src="http://feeds.feedburner.com/~ff/DotNetUnplugged?d=Tph0bMNtBCI" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.giggio.net/~ff/DotNetUnplugged?a=pyZkeAKfE2w:LLLXja4MCHA:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/DotNetUnplugged?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.giggio.net/~ff/DotNetUnplugged?a=pyZkeAKfE2w:LLLXja4MCHA:D7DqB2pKExk"&gt;&lt;img src="http://feeds.feedburner.com/~ff/DotNetUnplugged?i=pyZkeAKfE2w:LLLXja4MCHA:D7DqB2pKExk" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.giggio.net/~ff/DotNetUnplugged?a=pyZkeAKfE2w:LLLXja4MCHA:F7zBnMyn0Lo"&gt;&lt;img src="http://feeds.feedburner.com/~ff/DotNetUnplugged?i=pyZkeAKfE2w:LLLXja4MCHA:F7zBnMyn0Lo" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.giggio.net/~ff/DotNetUnplugged?a=pyZkeAKfE2w:LLLXja4MCHA:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/DotNetUnplugged?i=pyZkeAKfE2w:LLLXja4MCHA:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.giggio.net/~ff/DotNetUnplugged?a=pyZkeAKfE2w:LLLXja4MCHA:I9og5sOYxJI"&gt;&lt;img src="http://feeds.feedburner.com/~ff/DotNetUnplugged?d=I9og5sOYxJI" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.giggio.net/~ff/DotNetUnplugged?a=pyZkeAKfE2w:LLLXja4MCHA:3oH-tSNJdoA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/DotNetUnplugged?d=3oH-tSNJdoA" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/DotNetUnplugged/~4/pyZkeAKfE2w" height="1" width="1"/&gt;</description>
      <link>http://feeds.giggio.net/~r/DotNetUnplugged/~3/pyZkeAKfE2w/post.aspx</link>
      <author>Giovanni Bassi</author>
      <comments>http://unplugged.giggio.net/unplugged/post/AgileBrazil-2010-arrebentou!.aspx#comment</comments>
      <guid isPermaLink="false">http://unplugged.giggio.net/unplugged/post.aspx?id=63d2c991-4ddd-445c-8754-aae9ef490664</guid>
      <pubDate>Tue, 29 Jun 2010 02:09:57 -0200</pubDate>
      <category>Agilidade</category>
      <category>Eventos</category>
      <dc:publisher>Giovanni Bassi</dc:publisher>
      <pingback:server>http://unplugged.giggio.net/unplugged/pingback.axd</pingback:server>
      <pingback:target>http://unplugged.giggio.net/unplugged/post.aspx?id=63d2c991-4ddd-445c-8754-aae9ef490664</pingback:target>
      <slash:comments>4</slash:comments>
      <trackback:ping>http://unplugged.giggio.net/unplugged/trackback.axd?id=63d2c991-4ddd-445c-8754-aae9ef490664</trackback:ping>
      <wfw:comment>http://unplugged.giggio.net/unplugged/post/AgileBrazil-2010-arrebentou!.aspx#comment</wfw:comment>
      <wfw:commentRss>http://unplugged.giggio.net/unplugged/syndication.axd?post=63d2c991-4ddd-445c-8754-aae9ef490664</wfw:commentRss>
    <feedburner:origLink>http://unplugged.giggio.net/unplugged/post.aspx?id=63d2c991-4ddd-445c-8754-aae9ef490664</feedburner:origLink></item>
    <item>
      <title>Videos do NDC 2010 disponibilizados</title>
      <description>&lt;p&gt;&lt;img style="border-bottom: 0px; border-left: 0px; display: inline; border-top: 0px; border-right: 0px" title="ndc2010" border="0" alt="ndc2010" src="http://unplugged.giggio.net/unplugged/image.axd?picture=ndc2010_1.png" width="200" height="83" /&gt; &lt;/p&gt;  &lt;p&gt;A &lt;a href="http://www.ndc2010.no/" target="_blank"&gt;Conferência Norueguesa de Desenvolvedores&lt;/a&gt; de 2010 (NDC – Norwigean Developers Conference) &lt;a href="http://streaming.ndc2010.no/tcs/" target="_blank"&gt;postou novamente&lt;/a&gt; (assim como no ano passado) todos os videos para download. E as palestras foram incríveis. Não dá pra não ver. &lt;/p&gt;  &lt;p&gt;A conferência é anual, caríssima, e focada em .Net e Agile.&lt;/p&gt;  &lt;p&gt;Vão lá baixar e divirtam-se.&lt;/p&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.giggio.net/~ff/DotNetUnplugged?a=9nLXH9bczuY:NZSfqzl9NRs:Tph0bMNtBCI"&gt;&lt;img src="http://feeds.feedburner.com/~ff/DotNetUnplugged?d=Tph0bMNtBCI" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.giggio.net/~ff/DotNetUnplugged?a=9nLXH9bczuY:NZSfqzl9NRs:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/DotNetUnplugged?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.giggio.net/~ff/DotNetUnplugged?a=9nLXH9bczuY:NZSfqzl9NRs:D7DqB2pKExk"&gt;&lt;img src="http://feeds.feedburner.com/~ff/DotNetUnplugged?i=9nLXH9bczuY:NZSfqzl9NRs:D7DqB2pKExk" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.giggio.net/~ff/DotNetUnplugged?a=9nLXH9bczuY:NZSfqzl9NRs:F7zBnMyn0Lo"&gt;&lt;img src="http://feeds.feedburner.com/~ff/DotNetUnplugged?i=9nLXH9bczuY:NZSfqzl9NRs:F7zBnMyn0Lo" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.giggio.net/~ff/DotNetUnplugged?a=9nLXH9bczuY:NZSfqzl9NRs:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/DotNetUnplugged?i=9nLXH9bczuY:NZSfqzl9NRs:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.giggio.net/~ff/DotNetUnplugged?a=9nLXH9bczuY:NZSfqzl9NRs:I9og5sOYxJI"&gt;&lt;img src="http://feeds.feedburner.com/~ff/DotNetUnplugged?d=I9og5sOYxJI" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.giggio.net/~ff/DotNetUnplugged?a=9nLXH9bczuY:NZSfqzl9NRs:3oH-tSNJdoA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/DotNetUnplugged?d=3oH-tSNJdoA" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/DotNetUnplugged/~4/9nLXH9bczuY" height="1" width="1"/&gt;</description>
      <link>http://feeds.giggio.net/~r/DotNetUnplugged/~3/9nLXH9bczuY/post.aspx</link>
      <author>Giovanni Bassi</author>
      <comments>http://unplugged.giggio.net/unplugged/post/Videos-do-NDC-2010-disponibilizados.aspx#comment</comments>
      <guid isPermaLink="false">http://unplugged.giggio.net/unplugged/post.aspx?id=0b5f0ee6-2752-4082-b76a-441db9e367a5</guid>
      <pubDate>Mon, 28 Jun 2010 02:48:54 -0200</pubDate>
      <category>Agilidade</category>
      <category>.Net</category>
      <category>Eventos</category>
      <dc:publisher>Giovanni Bassi</dc:publisher>
      <pingback:server>http://unplugged.giggio.net/unplugged/pingback.axd</pingback:server>
      <pingback:target>http://unplugged.giggio.net/unplugged/post.aspx?id=0b5f0ee6-2752-4082-b76a-441db9e367a5</pingback:target>
      <slash:comments>0</slash:comments>
      <trackback:ping>http://unplugged.giggio.net/unplugged/trackback.axd?id=0b5f0ee6-2752-4082-b76a-441db9e367a5</trackback:ping>
      <wfw:comment>http://unplugged.giggio.net/unplugged/post/Videos-do-NDC-2010-disponibilizados.aspx#comment</wfw:comment>
      <wfw:commentRss>http://unplugged.giggio.net/unplugged/syndication.axd?post=0b5f0ee6-2752-4082-b76a-441db9e367a5</wfw:commentRss>
    <feedburner:origLink>http://unplugged.giggio.net/unplugged/post.aspx?id=0b5f0ee6-2752-4082-b76a-441db9e367a5</feedburner:origLink></item>
    <item>
      <title>QCon São Paulo 2010: estarei lá falando de BDD</title>
      <description>&lt;p&gt;&lt;img style="border-bottom: 0px; border-left: 0px; margin: 0px 10px 10px 0px; display: inline; border-top: 0px; border-right: 0px" title="QCon SP" border="0" alt="QCon SP" align="left" src="http://unplugged.giggio.net/unplugged/image.axd?picture=image_183.png" width="243" height="98" /&gt; Fechei com o pessoal da InfoQ minha participação no &lt;a href="http://www.qconsp.com/" target="_blank"&gt;QCon São Paulo 2010&lt;/a&gt;. O evento vai ser nos dias 11 e 12 de Setembro, sábado e domingo, logo antes do &lt;a href="http://www.teched.com.br/" target="_blank"&gt;TechEd Brasil&lt;/a&gt; (que começa dia 13, segunda-feira, e vai até a quarta-feira, dia 15 de Setembro).&lt;/p&gt;  &lt;p&gt;No QCon vou valar de BDD, com minha palestra intitulada &lt;a href="http://www.qconsp.com/palestra/giovanni-bassi/behavior-driven-development-bdd-no-mundo-real" target="_blank"&gt;“Behavior-Driven Development (BDD) no mundo real”&lt;/a&gt;. Vejam o resumo:&lt;/p&gt;  &lt;blockquote&gt;   &lt;p&gt;BDD é um assunto controverso, muitos não entendem o que ele significa, e não sabem como usar. O que é (e de acordo com quem)? É igual TDD, é diferente, é melhor, é pior? Precisamos de ferramentas? Quais as opções disponíveis? Vale a pena? O que as pessoas que trabalham com BDD querem dizer quando falam em &amp;quot;especificações executáveis&amp;quot;? O que funciona e o que o levou a falhar?     &lt;br /&gt;Nesta palestra abordaremos essas perguntas, e avaliaremos algumas técnicas e ferramentas que você pode usar para começar a desenvolver software com BDD para aplicações do mundo real. Mais do que uma excelente técnica para criar e organizar testes unitários, BDD é também uma ótima maneira de se comunicar com os usuários. &lt;/p&gt; &lt;/blockquote&gt;  &lt;p&gt;Interessante, não?&lt;/p&gt;  &lt;p&gt;Estou na track de Agile, &lt;a href="http://www.qconsp.com/schedule/sabado" target="_blank"&gt;no sábado, dia 11&lt;/a&gt;. Por lá teremos outros MVPs, na track de .Net, como o grande &lt;a href="http://mgtcbs.spaces.live.com/" target="_blank"&gt;Thiago Soares&lt;/a&gt;, falando de .Net e o futuro, e o &lt;a href="http://www.israelaece.com/" target="_blank"&gt;Israel Aéce&lt;/a&gt;, falando de WCF (obviamente). Outros amigos por lá serão o &lt;a href="http://blog.aspercom.com.br/" target="_blank"&gt;Rodrigo Yoshima&lt;/a&gt; e o &lt;a href="http://amagno.blogspot.com/" target="_blank"&gt;Alexandre Magno&lt;/a&gt;, também na track de Agile, além de outros. O sábado terá ainda uma track de Java, com o &lt;a href="http://www.qconsp.com/palestrante/paulo-silveira" target="_blank"&gt;Paulo Silveira&lt;/a&gt;, que conheci no AgileBrazil. Figuras de peso abrem o evento, como o &lt;a href="http://www.qconsp.com/palestrante/nick-kallen" target="_blank"&gt;Nick Kallen&lt;/a&gt;, engenheiro do Twitter, que vai falar de escalabilidade, e o &lt;a href="http://www.qconsp.com/palestrante/douglas-crockford" target="_blank"&gt;Douglas Crockford&lt;/a&gt;, ninguém menos do que o criador do JSON.&lt;/p&gt;  &lt;p&gt;Domingo segue com tracks de arquitetura, casos de sucesso, e Ruby, que obviamente contará com o &lt;a href="http://www.akitaonrails.com/" target="_blank"&gt;Akita&lt;/a&gt;. Uma das palestras que abre o evento é do &lt;a href="http://www.ambysoft.com/scottAmbler.html" target="_blank"&gt;Scott Ambler&lt;/a&gt;, falando sobre como escalar Agile. O &lt;a href="http://www.qconsp.com/palestrante/guilherme-silveira" target="_blank"&gt;Guilherme Silveira&lt;/a&gt;, da Caelum, que me chamou a palestrar, também estará lá, falando de REST. Aliás, o Guilherme esteve no &lt;a href="http://www.agilebrazil.com/" target="_blank"&gt;AgileBrazil&lt;/a&gt;, e ele faz uma palestra de 45 minutos sem respirar. Juro. Vale a pena assistir.&lt;/p&gt;  &lt;p&gt;Em resumo: o evento é imperdível, e eu não vou trabalhar a semana toda, já que logo em seguida tem TechEd. Eu já estava arrumando minha agenda pra ir, mesmo se não fosse convidado a palestrar. &lt;a href="http://www.qconsp.com/" target="_blank"&gt;Vejo vocês lá&lt;/a&gt;.&lt;/p&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.giggio.net/~ff/DotNetUnplugged?a=b8zgdczyNL8:fzM7IjrzJIs:Tph0bMNtBCI"&gt;&lt;img src="http://feeds.feedburner.com/~ff/DotNetUnplugged?d=Tph0bMNtBCI" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.giggio.net/~ff/DotNetUnplugged?a=b8zgdczyNL8:fzM7IjrzJIs:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/DotNetUnplugged?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.giggio.net/~ff/DotNetUnplugged?a=b8zgdczyNL8:fzM7IjrzJIs:D7DqB2pKExk"&gt;&lt;img src="http://feeds.feedburner.com/~ff/DotNetUnplugged?i=b8zgdczyNL8:fzM7IjrzJIs:D7DqB2pKExk" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.giggio.net/~ff/DotNetUnplugged?a=b8zgdczyNL8:fzM7IjrzJIs:F7zBnMyn0Lo"&gt;&lt;img src="http://feeds.feedburner.com/~ff/DotNetUnplugged?i=b8zgdczyNL8:fzM7IjrzJIs:F7zBnMyn0Lo" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.giggio.net/~ff/DotNetUnplugged?a=b8zgdczyNL8:fzM7IjrzJIs:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/DotNetUnplugged?i=b8zgdczyNL8:fzM7IjrzJIs:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.giggio.net/~ff/DotNetUnplugged?a=b8zgdczyNL8:fzM7IjrzJIs:I9og5sOYxJI"&gt;&lt;img src="http://feeds.feedburner.com/~ff/DotNetUnplugged?d=I9og5sOYxJI" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.giggio.net/~ff/DotNetUnplugged?a=b8zgdczyNL8:fzM7IjrzJIs:3oH-tSNJdoA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/DotNetUnplugged?d=3oH-tSNJdoA" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/DotNetUnplugged/~4/b8zgdczyNL8" height="1" width="1"/&gt;</description>
      <link>http://feeds.giggio.net/~r/DotNetUnplugged/~3/b8zgdczyNL8/post.aspx</link>
      <author>Giovanni Bassi</author>
      <comments>http://unplugged.giggio.net/unplugged/post/QCon-Sao-Paulo-2010-estarei-la-falando-de-BDD.aspx#comment</comments>
      <guid isPermaLink="false">http://unplugged.giggio.net/unplugged/post.aspx?id=f354edf8-7152-45f1-be6e-ecbbc6bbde6b</guid>
      <pubDate>Mon, 28 Jun 2010 01:34:27 -0200</pubDate>
      <category>Eventos</category>
      <dc:publisher>Giovanni Bassi</dc:publisher>
      <pingback:server>http://unplugged.giggio.net/unplugged/pingback.axd</pingback:server>
      <pingback:target>http://unplugged.giggio.net/unplugged/post.aspx?id=f354edf8-7152-45f1-be6e-ecbbc6bbde6b</pingback:target>
      <slash:comments>0</slash:comments>
      <trackback:ping>http://unplugged.giggio.net/unplugged/trackback.axd?id=f354edf8-7152-45f1-be6e-ecbbc6bbde6b</trackback:ping>
      <wfw:comment>http://unplugged.giggio.net/unplugged/post/QCon-Sao-Paulo-2010-estarei-la-falando-de-BDD.aspx#comment</wfw:comment>
      <wfw:commentRss>http://unplugged.giggio.net/unplugged/syndication.axd?post=f354edf8-7152-45f1-be6e-ecbbc6bbde6b</wfw:commentRss>
    <feedburner:origLink>http://unplugged.giggio.net/unplugged/post.aspx?id=f354edf8-7152-45f1-be6e-ecbbc6bbde6b</feedburner:origLink></item>
    <item>
      <title>Dados da palestra do AgileBrazil 2010: Ágil ou rápido</title>
      <description>&lt;p&gt;Segue a palestra feita ontem no &lt;a href="http://www.agilebrazil.com/2010/pt/index.html" target="_blank"&gt;AgileBrazil 2010&lt;/a&gt;:&lt;/p&gt;  &lt;div style="width: 425px" id="__ss_4615209"&gt;&lt;strong style="margin: 12px 0px 4px; display: block"&gt;&lt;a title="Rápido ou Ágil? (AgileBrazil 2010)" href="http://www.slideshare.net/giovanni.bassi/rpido-ou-gil-agilebrazil-2010"&gt;Rápido ou Ágil? (AgileBrazil 2010)&lt;/a&gt;&lt;/strong&gt;&lt;object id="__sse4615209" width="425" height="355"&gt;&lt;param name="movie" value="http://static.slidesharecdn.com/swf/ssplayer2.swf?doc=agilebrazil2010-rpidoougil-100625133922-phpapp01&amp;amp;stripped_title=rpido-ou-gil-agilebrazil-2010" /&gt;&lt;param name="allowFullScreen" value="true" /&gt;&lt;param name="allowScriptAccess" value="always" /&gt;&lt;embed name="__sse4615209" src="http://static.slidesharecdn.com/swf/ssplayer2.swf?doc=agilebrazil2010-rpidoougil-100625133922-phpapp01&amp;amp;stripped_title=rpido-ou-gil-agilebrazil-2010" type="application/x-shockwave-flash" allowscriptaccess="always" allowfullscreen="true" width="425" height="355"&gt;&lt;/embed&gt;&lt;/object&gt;    &lt;div style="padding-bottom: 12px; padding-left: 0px; padding-right: 0px; padding-top: 5px"&gt;View more &lt;a href="http://www.slideshare.net/"&gt;presentations&lt;/a&gt; from &lt;a href="http://www.slideshare.net/giovanni.bassi"&gt;Giovanni Bassi&lt;/a&gt;.&lt;/div&gt; &lt;/div&gt;  &lt;p&gt;Depois faço meu relato. Depois que eu morrer e descansar nesse fim de semana.&lt;/p&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.giggio.net/~ff/DotNetUnplugged?a=a4lcTo82kB4:kW6N9FkS1fE:Tph0bMNtBCI"&gt;&lt;img src="http://feeds.feedburner.com/~ff/DotNetUnplugged?d=Tph0bMNtBCI" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.giggio.net/~ff/DotNetUnplugged?a=a4lcTo82kB4:kW6N9FkS1fE:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/DotNetUnplugged?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.giggio.net/~ff/DotNetUnplugged?a=a4lcTo82kB4:kW6N9FkS1fE:D7DqB2pKExk"&gt;&lt;img src="http://feeds.feedburner.com/~ff/DotNetUnplugged?i=a4lcTo82kB4:kW6N9FkS1fE:D7DqB2pKExk" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.giggio.net/~ff/DotNetUnplugged?a=a4lcTo82kB4:kW6N9FkS1fE:F7zBnMyn0Lo"&gt;&lt;img src="http://feeds.feedburner.com/~ff/DotNetUnplugged?i=a4lcTo82kB4:kW6N9FkS1fE:F7zBnMyn0Lo" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.giggio.net/~ff/DotNetUnplugged?a=a4lcTo82kB4:kW6N9FkS1fE:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/DotNetUnplugged?i=a4lcTo82kB4:kW6N9FkS1fE:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.giggio.net/~ff/DotNetUnplugged?a=a4lcTo82kB4:kW6N9FkS1fE:I9og5sOYxJI"&gt;&lt;img src="http://feeds.feedburner.com/~ff/DotNetUnplugged?d=I9og5sOYxJI" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.giggio.net/~ff/DotNetUnplugged?a=a4lcTo82kB4:kW6N9FkS1fE:3oH-tSNJdoA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/DotNetUnplugged?d=3oH-tSNJdoA" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/DotNetUnplugged/~4/a4lcTo82kB4" height="1" width="1"/&gt;</description>
      <link>http://feeds.giggio.net/~r/DotNetUnplugged/~3/a4lcTo82kB4/post.aspx</link>
      <author>Giovanni Bassi</author>
      <comments>http://unplugged.giggio.net/unplugged/post/Dados-da-palestra-do-AgileBrazil-2010-Agil-ou-rapido.aspx#comment</comments>
      <guid isPermaLink="false">http://unplugged.giggio.net/unplugged/post.aspx?id=3a75b22e-0ad2-4a94-aa42-bd800fff5862</guid>
      <pubDate>Fri, 25 Jun 2010 16:48:16 -0200</pubDate>
      <category>Agilidade</category>
      <category>Eventos</category>
      <dc:publisher>Giovanni Bassi</dc:publisher>
      <pingback:server>http://unplugged.giggio.net/unplugged/pingback.axd</pingback:server>
      <pingback:target>http://unplugged.giggio.net/unplugged/post.aspx?id=3a75b22e-0ad2-4a94-aa42-bd800fff5862</pingback:target>
      <slash:comments>0</slash:comments>
      <trackback:ping>http://unplugged.giggio.net/unplugged/trackback.axd?id=3a75b22e-0ad2-4a94-aa42-bd800fff5862</trackback:ping>
      <wfw:comment>http://unplugged.giggio.net/unplugged/post/Dados-da-palestra-do-AgileBrazil-2010-Agil-ou-rapido.aspx#comment</wfw:comment>
      <wfw:commentRss>http://unplugged.giggio.net/unplugged/syndication.axd?post=3a75b22e-0ad2-4a94-aa42-bd800fff5862</wfw:commentRss>
    <feedburner:origLink>http://unplugged.giggio.net/unplugged/post.aspx?id=3a75b22e-0ad2-4a94-aa42-bd800fff5862</feedburner:origLink></item>
    <item>
      <title>Dados da palestra de DDD no DevIsland</title>
      <description>&lt;p&gt;Segue a palestra feita em BH pro evento de inauguracão do &lt;a href="http://devisland.com/" target="_blank"&gt;DevIsland&lt;/a&gt;:&lt;/p&gt;  &lt;div style="width: 425px" id="__ss_4614906"&gt;&lt;strong style="margin: 12px 0px 4px; display: block"&gt;&lt;a title="Domain Driven Design (DDD) - DevIsland, BH" href="http://www.slideshare.net/giovanni.bassi/domain-driven-design-ddd-devisland-bh"&gt;Domain Driven Design (DDD) - DevIsland, BH&lt;/a&gt;&lt;/strong&gt;&lt;object id="__sse4614906" width="425" height="355"&gt;&lt;param name="movie" value="http://static.slidesharecdn.com/swf/ssplayer2.swf?doc=ddd-devisland-100625132307-phpapp01&amp;amp;stripped_title=domain-driven-design-ddd-devisland-bh" /&gt;&lt;param name="allowFullScreen" value="true" /&gt;&lt;param name="allowScriptAccess" value="always" /&gt;&lt;embed name="__sse4614906" src="http://static.slidesharecdn.com/swf/ssplayer2.swf?doc=ddd-devisland-100625132307-phpapp01&amp;amp;stripped_title=domain-driven-design-ddd-devisland-bh" type="application/x-shockwave-flash" allowscriptaccess="always" allowfullscreen="true" width="425" height="355"&gt;&lt;/embed&gt;&lt;/object&gt;    &lt;div style="padding-bottom: 12px; padding-left: 0px; padding-right: 0px; padding-top: 5px"&gt;View more &lt;a href="http://www.slideshare.net/"&gt;presentations&lt;/a&gt; from &lt;a href="http://www.slideshare.net/giovanni.bassi"&gt;Giovanni Bassi&lt;/a&gt;.&lt;/div&gt; &lt;/div&gt;  &lt;p&gt;Links relacionados:&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;Webcasts no MSDN     &lt;br /&gt;&lt;a href="http://tinyurl.com/webcastsddd"&gt;http://tinyurl.com/webcastsddd&lt;/a&gt; &lt;/li&gt;    &lt;li&gt;Domain Language (empresa do Evans)      &lt;br /&gt;&lt;a href="http://domainlanguage.com"&gt;http://domainlanguage.com&lt;/a&gt; &lt;/li&gt;    &lt;li&gt;Grupo do Yahoo sobre DDD (em inglês)      &lt;br /&gt;&lt;a href="http://groups.yahoo.com/group/domaindrivendesign"&gt;http://groups.yahoo.com/group/domaindrivendesign&lt;/a&gt; &lt;/li&gt;    &lt;li&gt;Greg Young (MVP - em inglês)      &lt;br /&gt;&lt;a href="http://codebetter.com/blogs/gregyoung/"&gt;http://codebetter.com/blogs/gregyoung/&lt;/a&gt; &lt;/li&gt;    &lt;li&gt;Domain Driven Design.org (em inglês)      &lt;br /&gt;&lt;a href="http://www.domaindrivendesign.org"&gt;http://www.domaindrivendesign.org&lt;/a&gt; &lt;/li&gt;    &lt;li&gt;Jimmy Nilsson (em inglês)      &lt;br /&gt;&lt;a href="http://jimmynilsson.com"&gt;http://jimmynilsson.com&lt;/a&gt;&lt;/li&gt;    &lt;li&gt;.Net Architects     &lt;br /&gt;&lt;a href="http://www.dotnetarchitects.net"&gt;http://www.dotnetarchitects.net&lt;/a&gt;      &lt;br /&gt;&lt;a href="http://groups.google.com/group/dotnetarchitects"&gt;http://groups.google.com/group/dotnetarchitects&lt;/a&gt; &lt;/li&gt; &lt;/ul&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.giggio.net/~ff/DotNetUnplugged?a=Ssqkt3NrEFk:Vlty2-i_s2s:Tph0bMNtBCI"&gt;&lt;img src="http://feeds.feedburner.com/~ff/DotNetUnplugged?d=Tph0bMNtBCI" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.giggio.net/~ff/DotNetUnplugged?a=Ssqkt3NrEFk:Vlty2-i_s2s:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/DotNetUnplugged?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.giggio.net/~ff/DotNetUnplugged?a=Ssqkt3NrEFk:Vlty2-i_s2s:D7DqB2pKExk"&gt;&lt;img src="http://feeds.feedburner.com/~ff/DotNetUnplugged?i=Ssqkt3NrEFk:Vlty2-i_s2s:D7DqB2pKExk" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.giggio.net/~ff/DotNetUnplugged?a=Ssqkt3NrEFk:Vlty2-i_s2s:F7zBnMyn0Lo"&gt;&lt;img src="http://feeds.feedburner.com/~ff/DotNetUnplugged?i=Ssqkt3NrEFk:Vlty2-i_s2s:F7zBnMyn0Lo" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.giggio.net/~ff/DotNetUnplugged?a=Ssqkt3NrEFk:Vlty2-i_s2s:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/DotNetUnplugged?i=Ssqkt3NrEFk:Vlty2-i_s2s:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.giggio.net/~ff/DotNetUnplugged?a=Ssqkt3NrEFk:Vlty2-i_s2s:I9og5sOYxJI"&gt;&lt;img src="http://feeds.feedburner.com/~ff/DotNetUnplugged?d=I9og5sOYxJI" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.giggio.net/~ff/DotNetUnplugged?a=Ssqkt3NrEFk:Vlty2-i_s2s:3oH-tSNJdoA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/DotNetUnplugged?d=3oH-tSNJdoA" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/DotNetUnplugged/~4/Ssqkt3NrEFk" height="1" width="1"/&gt;</description>
      <link>http://feeds.giggio.net/~r/DotNetUnplugged/~3/Ssqkt3NrEFk/post.aspx</link>
      <author>Giovanni Bassi</author>
      <comments>http://unplugged.giggio.net/unplugged/post/Dados-da-palestra-de-DDD-no-DevIsland.aspx#comment</comments>
      <guid isPermaLink="false">http://unplugged.giggio.net/unplugged/post.aspx?id=34adb5f1-c35b-4835-bd5c-8a6a7675f715</guid>
      <pubDate>Fri, 25 Jun 2010 16:44:07 -0200</pubDate>
      <category>Arquitetura</category>
      <category>Eventos</category>
      <dc:publisher>Giovanni Bassi</dc:publisher>
      <pingback:server>http://unplugged.giggio.net/unplugged/pingback.axd</pingback:server>
      <pingback:target>http://unplugged.giggio.net/unplugged/post.aspx?id=34adb5f1-c35b-4835-bd5c-8a6a7675f715</pingback:target>
      <slash:comments>0</slash:comments>
      <trackback:ping>http://unplugged.giggio.net/unplugged/trackback.axd?id=34adb5f1-c35b-4835-bd5c-8a6a7675f715</trackback:ping>
      <wfw:comment>http://unplugged.giggio.net/unplugged/post/Dados-da-palestra-de-DDD-no-DevIsland.aspx#comment</wfw:comment>
      <wfw:commentRss>http://unplugged.giggio.net/unplugged/syndication.axd?post=34adb5f1-c35b-4835-bd5c-8a6a7675f715</wfw:commentRss>
    <feedburner:origLink>http://unplugged.giggio.net/unplugged/post.aspx?id=34adb5f1-c35b-4835-bd5c-8a6a7675f715</feedburner:origLink></item>
    <item>
      <title>AgileBrazil 2010 está chegando</title>
      <description>&lt;p&gt;&lt;a href="http://agilebrazil.com" target="_blank"&gt;&lt;img style="border-bottom: 0px; border-left: 0px; margin: 0px 10px 10px 0px; display: inline; border-top: 0px; border-right: 0px" title="AgileBrazil 2010" border="0" alt="AgileBrazil 2010" align="left" src="http://unplugged.giggio.net/unplugged/image.axd?picture=logo-trans_1.png" width="409" height="140" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;Estou indo hoje para o &lt;a href="http://www.agilebrazil.com" target="_blank"&gt;AgileBrazil&lt;/a&gt; 2010, que tenho certeza será um dos melhores eventos do ano. Faço parte da organização, e vai ser muito legal ver o trabalho finalmente entregue. Vai ser uma conferência incrível.&lt;/p&gt;  &lt;p&gt;Estou feliz de reencontrar amigos da comunidade de agilidade que não são de São Paulo e que por isso não vejo com tanta frequencia. O clima neste tipo de evento é muito rico, pessoas com backgrounds muito diferentes e com muito a acrescentar. Comunidades de Ruby, Java, PHP, .Net, entre várias outras, estarão representadas no evento. O &lt;a href="http://dotnetarchitects.net" target="_blank"&gt;.Net Architects&lt;/a&gt;, mais uma vez, vai estar lá em peso, estou estimando algumas dezenas de pessoas. O evento vai reunir mil pessoas, e é sua primeira edição!&lt;/p&gt;  &lt;p&gt;As palestras estão excepcionais, com assuntos muito diversos e importantes. Eu acompanhei de perto a seleção das propostas de palestras, e foi algo absurdamente profissional e criterioso. Membros expoentes da comunidade de software brasileira, além da organização, avaliaram as propostas, com cada proposta sendo avaliada três vezes. Os track leaders então, baseando-se nas avaliações fecharam várias propostas de agenda, e a organização pesou muito até escolher uma que apresentasse ótimos temas, representasse todo o país, e trouxesse tanto membros antigos da comunidade quanto os mais novos.&lt;/p&gt;  &lt;p&gt;Isso sem falar dos palestrantes convidados, muitos deles internacionais. Imperdível.&lt;/p&gt;  &lt;p&gt;Vou, como sempre, reportar o progresso do evento por aqui. Espero conseguir fazer isso ao final de cada dia, se eu não estiver morto de tanto trabalhar. Quero ver o evento, mas também vou palestrar, e ajudar na organização local do evento. Vamos ter muito trabalho. E espere uma avalanche no twitter na hashtag &lt;a href="http://search.twitter.com/search?q=%23agilebrazil" target="_blank"&gt;#agilebrazil&lt;/a&gt;. Se você não vai, pelo menos dá pra ter uma ideia de como foi.&lt;/p&gt;  &lt;p&gt;A Microsoft está patrocinando o evento com a cota mais alta de patrocínio. Eu mesmo puxei isso com o &lt;a href="http://blogs.msdn.com/b/vstsbrasil/" target="_blank"&gt;Rodrigo de Carvalho&lt;/a&gt; da Microsoft, que está comprometidíssimo com a agilidade aqui no Brasil (o Rodrigo também ajudou na ponte para realizar o &lt;a href="http://www.scrum.org/brazilscrumspikeportuguese" target="_blank"&gt;Scrum Spike Brasil&lt;/a&gt; em um espaço cedido pela Microsoft). Teremos uma palestra do grande &lt;a href="http://igoravl.spaces.live.com/" target="_blank"&gt;Igor Abade&lt;/a&gt; por lá, falando adivinhem de que?&lt;/p&gt;  &lt;p&gt;Vejo vocês lá.&lt;/p&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.giggio.net/~ff/DotNetUnplugged?a=_bVGvaqwFkU:gEGAKRqrvEQ:Tph0bMNtBCI"&gt;&lt;img src="http://feeds.feedburner.com/~ff/DotNetUnplugged?d=Tph0bMNtBCI" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.giggio.net/~ff/DotNetUnplugged?a=_bVGvaqwFkU:gEGAKRqrvEQ:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/DotNetUnplugged?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.giggio.net/~ff/DotNetUnplugged?a=_bVGvaqwFkU:gEGAKRqrvEQ:D7DqB2pKExk"&gt;&lt;img src="http://feeds.feedburner.com/~ff/DotNetUnplugged?i=_bVGvaqwFkU:gEGAKRqrvEQ:D7DqB2pKExk" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.giggio.net/~ff/DotNetUnplugged?a=_bVGvaqwFkU:gEGAKRqrvEQ:F7zBnMyn0Lo"&gt;&lt;img src="http://feeds.feedburner.com/~ff/DotNetUnplugged?i=_bVGvaqwFkU:gEGAKRqrvEQ:F7zBnMyn0Lo" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.giggio.net/~ff/DotNetUnplugged?a=_bVGvaqwFkU:gEGAKRqrvEQ:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/DotNetUnplugged?i=_bVGvaqwFkU:gEGAKRqrvEQ:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.giggio.net/~ff/DotNetUnplugged?a=_bVGvaqwFkU:gEGAKRqrvEQ:I9og5sOYxJI"&gt;&lt;img src="http://feeds.feedburner.com/~ff/DotNetUnplugged?d=I9og5sOYxJI" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.giggio.net/~ff/DotNetUnplugged?a=_bVGvaqwFkU:gEGAKRqrvEQ:3oH-tSNJdoA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/DotNetUnplugged?d=3oH-tSNJdoA" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/DotNetUnplugged/~4/_bVGvaqwFkU" height="1" width="1"/&gt;</description>
      <link>http://feeds.giggio.net/~r/DotNetUnplugged/~3/_bVGvaqwFkU/post.aspx</link>
      <author>Giovanni Bassi</author>
      <comments>http://unplugged.giggio.net/unplugged/post/AgileBrazil-2010-esta-chegando.aspx#comment</comments>
      <guid isPermaLink="false">http://unplugged.giggio.net/unplugged/post.aspx?id=e413f39c-fc6d-4685-929b-58b3ba5145a0</guid>
      <pubDate>Sun, 20 Jun 2010 05:09:29 -0200</pubDate>
      <category>Eventos</category>
      <category>Agilidade</category>
      <category>Scrum</category>
      <dc:publisher>Giovanni Bassi</dc:publisher>
      <pingback:server>http://unplugged.giggio.net/unplugged/pingback.axd</pingback:server>
      <pingback:target>http://unplugged.giggio.net/unplugged/post.aspx?id=e413f39c-fc6d-4685-929b-58b3ba5145a0</pingback:target>
      <slash:comments>0</slash:comments>
      <trackback:ping>http://unplugged.giggio.net/unplugged/trackback.axd?id=e413f39c-fc6d-4685-929b-58b3ba5145a0</trackback:ping>
      <wfw:comment>http://unplugged.giggio.net/unplugged/post/AgileBrazil-2010-esta-chegando.aspx#comment</wfw:comment>
      <wfw:commentRss>http://unplugged.giggio.net/unplugged/syndication.axd?post=e413f39c-fc6d-4685-929b-58b3ba5145a0</wfw:commentRss>
    <feedburner:origLink>http://unplugged.giggio.net/unplugged/post.aspx?id=e413f39c-fc6d-4685-929b-58b3ba5145a0</feedburner:origLink></item>
    <item>
      <title>Scrum Spike Brasil</title>
      <description>&lt;p&gt;&lt;/p&gt;  &lt;p&gt;Direto &lt;a href="http://www.scrum.org/spike" target="_blank"&gt;do site da Scrum.org&lt;/a&gt;, estou traduzindo aqui (&lt;strong&gt;update:&lt;/strong&gt; agora &lt;a href="http://www.scrum.org/brazilscrumspikeportuguese" target="_blank"&gt;traduzido por lá&lt;/a&gt; também). O evento vai contar com palestras o dia inteiro, com a presença do Ken Schwaber, eu, e outros membros da comunidade. Isso é parte de uma iniciativa que inclui também &lt;a href="http://courses.scrum.org/classes/show/48" target="_blank"&gt;um curso de Scrum In Depth&lt;/a&gt; com o Ken e eu nos dias 22 e 23 de Julho, e &lt;a href="http://www.scrumdev.com.br/Agenda/Enroll/5" target="_blank"&gt;outro de Scrum Developer&lt;/a&gt; nos dias 26 a 30 de Julho, também com nós dois e mais o Alex Armstrong.&lt;/p&gt;  &lt;p&gt;Tradução abaixo:&lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;&lt;font size="4"&gt;Scrum Spike Brasil&lt;/font&gt;       &lt;br /&gt;&lt;/strong&gt;&lt;em&gt;Você é o melhor Scrummer do Brasil?&lt;/em&gt;&lt;/p&gt;  &lt;p&gt;Leve o seu conhecimento de Scrum a uma nova profundidade em uma spike de imersão em Scrum. Liderado por Ken Schwaber, os melhores Scrummers no Brasil e América do Sul vão trabalhar juntos para levar seus conhecimentos a uma nova profundidade. Abrangendo temas como arquitetura emergente, definição de pronto, dívida técnica, custo total de propriedade, práticas de desenvolvimento ágil, e &amp;quot;Scrum but&amp;quot;. &lt;img style="border-right-width: 0px; margin: 10px 0px 10px 10px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="Scrum Spike Brasil" border="0" alt="Scrum Spike Brasil" align="right" src="http://unplugged.giggio.net/unplugged/image.axd?picture=image_182.png" width="200" height="200" /&gt;&lt;/p&gt;  &lt;p&gt;Somente os melhores do Brasil e América do Sul estão convidados. Depois de participar, eles serão listados publicamente como tendo alcançado tal distinção.&amp;#160; &lt;/p&gt;  &lt;p&gt;&lt;strong&gt;Qualificação: &lt;/strong&gt;Para participar, você deve ficar entre as 150 melhores pontuações em uma avaliação de Scrum. A avaliação será realizada até 10 de julho de 2010, e baseia-se no &lt;a href="http://www.scrum.org/scrumguides" target="_blank"&gt;corpo de conhecimento do Scrum&lt;/a&gt;. As pessoas que mostrarem maior conhecimento serão convidadas sem custo para um dia inteiro na Spike que acontecerá na Microsoft Brasil em São Paulo no sábado, 24 de julho. &lt;/p&gt;  &lt;p&gt;&lt;strong&gt;Logística: &lt;/strong&gt;Você deve registrar-se em &lt;a href="http://www.1shoppingcart.com/SecureCart/SecureCart.aspx?mid=7868E8C3-6444-42E2-88FD-1CE8EA150227&amp;amp;pid=0385f6ba8ca04ac78faccbaa63416915" target="_blank"&gt;ScrumSpike&lt;/a&gt; para a avaliação da Scrum Spike. Há uma taxa 20 dólares para fazer a avaliação. Você pode se registrar quantas vezes desejar. Ao se registrar, você receberá uma senha que será utilizada para realizar a avaliação, &lt;a href="http://www.classmarker.com/embedded_quizzes/?quiz=1fb10406dcf14757aecdbfefccc62cdb" target="_blank"&gt;comece por aqui&lt;/a&gt;. Até 10 de julho, os 150 melhores colocados serão afixados publicamente. O melhores 150 ao final receberão convites. &lt;/p&gt;  &lt;p&gt;&lt;strong&gt;Preparação: &lt;/strong&gt;Se você quer se preparar para a avaliação, leia o Guia do Scrum (&lt;a href="http://www.scrum.org/scrumguides" target="_blank"&gt;www.scrum.org/scrumguides&lt;/a&gt;) e faça a avaliação gratuita de Scrum (Scrum open assessment), &lt;a href="http://www.scrum.org/scrumopen" target="_blank"&gt;www.scrum.org/scrumopen/&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;Nota: Esta avaliação e o Scrum Spike são em Inglês. No entanto, uma &lt;a href="http://tinyurl.com/28mjsgl" target="_blank"&gt;edição em Português&lt;/a&gt; do Guia do Scrum está disponível em scrum.org. &lt;/p&gt;  &lt;p&gt;Patrocinado pela &lt;a href="http://Scrum.org" target="_blank"&gt;Scrum.org&lt;/a&gt;&lt;/p&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.giggio.net/~ff/DotNetUnplugged?a=iREyBFMHLUM:RmWKN_IAl1I:Tph0bMNtBCI"&gt;&lt;img src="http://feeds.feedburner.com/~ff/DotNetUnplugged?d=Tph0bMNtBCI" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.giggio.net/~ff/DotNetUnplugged?a=iREyBFMHLUM:RmWKN_IAl1I:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/DotNetUnplugged?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.giggio.net/~ff/DotNetUnplugged?a=iREyBFMHLUM:RmWKN_IAl1I:D7DqB2pKExk"&gt;&lt;img src="http://feeds.feedburner.com/~ff/DotNetUnplugged?i=iREyBFMHLUM:RmWKN_IAl1I:D7DqB2pKExk" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.giggio.net/~ff/DotNetUnplugged?a=iREyBFMHLUM:RmWKN_IAl1I:F7zBnMyn0Lo"&gt;&lt;img src="http://feeds.feedburner.com/~ff/DotNetUnplugged?i=iREyBFMHLUM:RmWKN_IAl1I:F7zBnMyn0Lo" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.giggio.net/~ff/DotNetUnplugged?a=iREyBFMHLUM:RmWKN_IAl1I:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/DotNetUnplugged?i=iREyBFMHLUM:RmWKN_IAl1I:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.giggio.net/~ff/DotNetUnplugged?a=iREyBFMHLUM:RmWKN_IAl1I:I9og5sOYxJI"&gt;&lt;img src="http://feeds.feedburner.com/~ff/DotNetUnplugged?d=I9og5sOYxJI" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.giggio.net/~ff/DotNetUnplugged?a=iREyBFMHLUM:RmWKN_IAl1I:3oH-tSNJdoA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/DotNetUnplugged?d=3oH-tSNJdoA" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/DotNetUnplugged/~4/iREyBFMHLUM" height="1" width="1"/&gt;</description>
      <link>http://feeds.giggio.net/~r/DotNetUnplugged/~3/iREyBFMHLUM/post.aspx</link>
      <author>Giovanni Bassi</author>
      <comments>http://unplugged.giggio.net/unplugged/post/Scrum-Spike-Brasil.aspx#comment</comments>
      <guid isPermaLink="false">http://unplugged.giggio.net/unplugged/post.aspx?id=0c584da8-394d-4313-82fc-adfc47404ee0</guid>
      <pubDate>Thu, 17 Jun 2010 09:59:46 -0200</pubDate>
      <category>Scrum</category>
      <category>Scrum Developer</category>
      <category>Agilidade</category>
      <category>Eventos</category>
      <dc:publisher>Giovanni Bassi</dc:publisher>
      <pingback:server>http://unplugged.giggio.net/unplugged/pingback.axd</pingback:server>
      <pingback:target>http://unplugged.giggio.net/unplugged/post.aspx?id=0c584da8-394d-4313-82fc-adfc47404ee0</pingback:target>
      <slash:comments>0</slash:comments>
      <trackback:ping>http://unplugged.giggio.net/unplugged/trackback.axd?id=0c584da8-394d-4313-82fc-adfc47404ee0</trackback:ping>
      <wfw:comment>http://unplugged.giggio.net/unplugged/post/Scrum-Spike-Brasil.aspx#comment</wfw:comment>
      <wfw:commentRss>http://unplugged.giggio.net/unplugged/syndication.axd?post=0c584da8-394d-4313-82fc-adfc47404ee0</wfw:commentRss>
    <feedburner:origLink>http://unplugged.giggio.net/unplugged/post.aspx?id=0c584da8-394d-4313-82fc-adfc47404ee0</feedburner:origLink></item>
    <item>
      <title>Palestra sobre DDD em Belo Horizonte</title>
      <description>&lt;p&gt;&lt;img style="border-bottom: 0px; border-left: 0px; margin: 0px 0px 10px; display: inline; border-top: 0px; border-right: 0px" title="DevIsland" border="0" alt="DevIsland" align="left" src="http://unplugged.giggio.net/unplugged/image.axd?picture=DevIsland_logo_800px.png" width="161" height="102" /&gt; Estou em BH para mais uma edição do curso de &lt;a href="http://scrumdev.com.br" target="_blank"&gt;Professional Scrum Developer&lt;/a&gt; e vou aproveitar a vinda para cá para palestrar sobre Domain Driven Design no DevDay, evento de lançamento do DevIsland, comunidade de .Net recente daqui. &lt;/p&gt;  &lt;p&gt;O evento conta ainda com palestras de Scrum, TDD, BDD, e ASP.Net MVC. Mais ágil impossível.&lt;/p&gt;  &lt;p&gt;Teremos também um encontro com a “filial” de Minas do &lt;a href="http://dotnetarchitects.net" target="_blank"&gt;.Net Architects&lt;/a&gt;. Vai ser a primeira vez que encontro um pedaço do grupo que criei, fora de São Paulo! &lt;/p&gt;  &lt;p&gt;Mais informações sobre o evento você acha &lt;a href="http://devisland.com/devisland/post/DevDay-O-evento-do-DevIsland.aspx" target="_blank"&gt;aqui&lt;/a&gt;. As inscrições estão lotadas, mas eles estão tentando abrir para acomodar mais algumas.&lt;/p&gt;  &lt;p&gt;Até lá.&lt;/p&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.giggio.net/~ff/DotNetUnplugged?a=guU3OL7-BrU:5Bt9Daj0kFI:Tph0bMNtBCI"&gt;&lt;img src="http://feeds.feedburner.com/~ff/DotNetUnplugged?d=Tph0bMNtBCI" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.giggio.net/~ff/DotNetUnplugged?a=guU3OL7-BrU:5Bt9Daj0kFI:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/DotNetUnplugged?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.giggio.net/~ff/DotNetUnplugged?a=guU3OL7-BrU:5Bt9Daj0kFI:D7DqB2pKExk"&gt;&lt;img src="http://feeds.feedburner.com/~ff/DotNetUnplugged?i=guU3OL7-BrU:5Bt9Daj0kFI:D7DqB2pKExk" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.giggio.net/~ff/DotNetUnplugged?a=guU3OL7-BrU:5Bt9Daj0kFI:F7zBnMyn0Lo"&gt;&lt;img src="http://feeds.feedburner.com/~ff/DotNetUnplugged?i=guU3OL7-BrU:5Bt9Daj0kFI:F7zBnMyn0Lo" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.giggio.net/~ff/DotNetUnplugged?a=guU3OL7-BrU:5Bt9Daj0kFI:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/DotNetUnplugged?i=guU3OL7-BrU:5Bt9Daj0kFI:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.giggio.net/~ff/DotNetUnplugged?a=guU3OL7-BrU:5Bt9Daj0kFI:I9og5sOYxJI"&gt;&lt;img src="http://feeds.feedburner.com/~ff/DotNetUnplugged?d=I9og5sOYxJI" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.giggio.net/~ff/DotNetUnplugged?a=guU3OL7-BrU:5Bt9Daj0kFI:3oH-tSNJdoA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/DotNetUnplugged?d=3oH-tSNJdoA" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/DotNetUnplugged/~4/guU3OL7-BrU" height="1" width="1"/&gt;</description>
      <link>http://feeds.giggio.net/~r/DotNetUnplugged/~3/guU3OL7-BrU/post.aspx</link>
      <author>Giovanni Bassi</author>
      <comments>http://unplugged.giggio.net/unplugged/post/Palestra-sobre-DDD-em-Belo-Horizonte.aspx#comment</comments>
      <guid isPermaLink="false">http://unplugged.giggio.net/unplugged/post.aspx?id=c3f146be-66ad-46b0-8905-6a4239d05b8c</guid>
      <pubDate>Thu, 17 Jun 2010 00:11:41 -0200</pubDate>
      <category>Eventos</category>
      <dc:publisher>Giovanni Bassi</dc:publisher>
      <pingback:server>http://unplugged.giggio.net/unplugged/pingback.axd</pingback:server>
      <pingback:target>http://unplugged.giggio.net/unplugged/post.aspx?id=c3f146be-66ad-46b0-8905-6a4239d05b8c</pingback:target>
      <slash:comments>0</slash:comments>
      <trackback:ping>http://unplugged.giggio.net/unplugged/trackback.axd?id=c3f146be-66ad-46b0-8905-6a4239d05b8c</trackback:ping>
      <wfw:comment>http://unplugged.giggio.net/unplugged/post/Palestra-sobre-DDD-em-Belo-Horizonte.aspx#comment</wfw:comment>
      <wfw:commentRss>http://unplugged.giggio.net/unplugged/syndication.axd?post=c3f146be-66ad-46b0-8905-6a4239d05b8c</wfw:commentRss>
    <feedburner:origLink>http://unplugged.giggio.net/unplugged/post.aspx?id=c3f146be-66ad-46b0-8905-6a4239d05b8c</feedburner:origLink></item>
  </channel>
</rss>
