"Para que levar a vida tão a sério, se a vida é uma alucinante aventura da qual jamais sairemos vivos." - Bob Marley

Perguntas ao final do eventoOi Pessoal! Nesse sábado rolou o primeiro Arena do grupo MSDev-ES na Faculdade Faesa. O evento tinha como objetivo apresentar as características dos dois ORMs que estão mais “em alta” no mercado: O NHibernate e o Entity Framework. Apesar do nome Arena, não tínhamos como objetivo definir qual das duas ferramentas era a melhor, e sim apresentar suas características e particularidades a fim de tirar as principais dúvidas dos desenvolvedores locais sobre suas utilizações.

A idéia era o Dilter Porto (@dilterporto) apresentar o NHibernate e eu apresentar o EF4. Conversamos muito nas semanas que antecederam o evento e decidimos não falar puramente das ferramentas. Tomei a liberdade de falar não só de EF4, mas sim como eu tenho utilizado o EF4, sendo assim, falei sobre Arquitetura de software, TDD, Domain-Driven Design, DI, Repository e finalmente EF4. O Dilter abordou desde a teoria dos ORMs até sua experiência na utilização do NHibernate. Os feedbacks que tivemos é que as palestras se encaixaram perfeitamente. Gostei muito da seleção de informações que foram apresentadas no evento.

Após as duas palestras tivemos uma mesa redonda mediada pelo Rafael Hrasko (@hrosko) com perguntas e comparações sobre os dois ORMs. Procurei deixar bem claro que não curto vestir camisas de tecnologias, e sim tentar aplicá-las da melhor forma para solucionar os meus problemas. Tivemos perguntas bem interessantes sobre Performance, facilidades, maturidade, etc. Acredito que esse tenho sido um dos melhores eventos que participei ultimamente.

Disponibilizei aqui o vídeo da minha palestra (veja no denisferrari.blip.tv com qualidade superior), a apresentação, algumas fotos do evento e o código fonte do projeto apresentado (Faça download aqui).

Vídeo da palestra

Apresentação

Fotos do evento

Abraços!

Tagged with:
 
Faça da pedra de tropeço, um degrau de subida. Transforme cada fato negativo, em uma experiência positiva. - "Bruce Lee"

Nessa semana realizamos o II Fórum para Gerentes de Sistemas na Mindworks em Vitória-ES. Realizamos a primeira versão do evento no mês passado a pedido da própria Microsoft, e depois de uma série de pedidos para realização de uma segunda versão, decidimos organizar um evento semelhante, porém, voltado para a comunidade local.

Acredito que a segunda versão do evento ficou ainda melhor que a primeira. Mudamos algumas abordagens, inserimos alguns assuntos importantes e procuramos trabalhar de uma forma dinâmica e interativa com os participantes. Vou relatar agora um pouco do que aconteceu no evento:

.NET 4.0 e Visual Studio 2010

Nesse evento procuramos apresentar todos os recursos do Framework .NET desde a sua primeira versão lançada em 2003. O objetivo principal dessa parte do evento foi mostrar a maturidade da plataforma e como a mesma vem sendo melhorada de forma contínua e incremental (desde sua versão 2.0).

Como a idéia era fazer uma espécie de túnel do tempo das tecnologias Microsoft, procuramos abordar desde as características mais básicas da versão 2.0 do framework até as novidades mais quentes da versão 4.0 (versão mais atual).

Depois do apanhado histórico sobre o framework, fizemos algumas demonstrações das ferramentas de arquitetura do Visual Studio 2010, tais como: Gráfico de Dependências e Diagrama de camadas.

É impressionante perceber o mundo de ferramentas que temos à disposição no Framework .NET, e essa foi a idéia dessa apresentação, mostrar o poder que temos nas mãos utilizando essa plataforma.

Scrum e Agilidade

O André Pires apresentou o Scrum de uma forma muito interativa e dinâmica. Visitamos os conceitos do Scrum, seus papéis, artefatos, regras, cerimônias e recomendações. Acredito que todos os participantes tiveram uma visão bem clara do framework.

Gosto muito de discutir sobre Agile e Scrum. Apesar de não ser o palestrante desse tema, foi muito rico só ouvir os questionamentos feitos pelos gerentes de projetos que estavam presentes. O André apresentou com maestria o tema discorrendo sobre as grandes dúvidas e questionamentos dos gerentes de projeto tradicionais ao mundo ágil.

A apresentação terminou com uma dinâmica que exemplificava a utilização do Scrum. Os participantes tinham que atingir um objetivo específico em um tempo limite. O bacana é que o PO (André) passava pelas equipes gerando pequenos impedimentos e interferindo nos trabalhos, o que gerou fortes reações pela parte de alguns ScrumMasters. :)

Volto a destacar que, apesar de entender do tema, nada paga a troca de experiências que temos com os participantes do evento.

Técnicas de engenharia de software e TDD

Diferente da versão anterior desse evento, abordamos a importância da orientação a objetos e das técnicas de engenharia em projetos de software que usem processos interativos e incrementais na produção.

Fizemos algumas reflexões sobre qualidade de software e discutimos como é importante utilizar técnicas para construir o projeto que façam com que o custo de evolução não seja discrepante do custo de produção. Afinal de contas, em processos iterativos estamos sempre evoluindo o projeto.

Aprofundamos alguns conceitos que o André havia citado na palestra sobre Scrum. Falamos sobre POO, Design Patterns, CI, ORMs (Entity Framework e NHibernate), Programação em par, Testes unitários, DDD e TDD. Foi muito legal apresentar uma visão geral sobre esses assuntos que estão em alta nas listas de discussão mais ativas.

Finalmente, apresentamos o TDD de uma forma resumida como primeira prática a ser adotada dentre todas as práticas que havíamos discutido nessa etapa do evento.

O objetivo principal dessa parte do evento foi mostrar aos participantes que investir nas disciplinas apresentadas é um investimento tão importante quanto o investimento feito no aprendizado das tecnologias (ou mais).

Fotos do evento

Estamos preparando muitas novidades para o próximo evento, fiquem ligados!

Abraços!

Tagged with:
 
"Seja como a água que abre caminho através das pedras: não se oponha ao obstáculo; contorne-o!" - Bruce Lee

Olá Pessoal! Para auxiliar quem está começando ou quer começar a utilizar o TDD, estou disponibilizando um vídeo com uma demostração da ténica. O objetivo do vídeo é apresentar a utilização do TDD e fornecer algumas dicas sobre como se sair bem na utilização da técnica. Espero que gostem do vídeo:

Dicas gerais sobre TDD

Sempre inicie com uma lista de testes : No TDD, não saímos codificando. Antes de iniciar a construção de qualquer coisa, elabore uma lista de testes inicial. Caso seja necessário, você poderá incluir mais itens na sua lista de testes mesmo depois de já ter iniciado a codificação;

Sempre inicie pelo teste mais simples : Após elaborar sua lista de testes, inicie a codificação pelo teste mais simples da sua lista. Desenvolvendo dessa forma, você não só ganha ritmo, mas também vai aprendendo de pouco a pouco sobre o problema que está resolvendo.

Comece a construção do seu código pela construção do seu teste : Desenvolvendo o teste primeiro (como preza o TDD) temos a oportunidade de tomar decisões de design das nossas classes antes mesmo de construí-las. Iniciar a construção do código pelo teste possibilita que você veja o seu código pela perspectiva de quem o utilizará, ou seja, você terá um feedback de utilização antes mesmo de codificar sua classe.

Comece o teste pela assertiva : Iniciar o teste pela assertiva é definir o objetivo do teste. Escrever a assertiva é definir onde você quer chegar no teste, qual objetivo quer alcançar, se isso não estiver bem definido não adianta escrever o teste.

Simule até construir realmente : Sempre que possível, construa implementações falsas. Deixe para construir as implementações reais só quando for realmente necessário.

Busque o verde o mais rápido possível : Quando o teste estiver vermelho, procure fazê-lo passar o mais rápido possível, mesmo que a implementação feita não seja a mais agradável de ver. Quando o teste estiver verde, substitua a implementação feita por uma implementação mais elegante, afinal, a fase de refatoração serve para isso. :)

Construa somente o necessário para o teste passar : Não construa nada além do que o seus testes pedirem. Se desejar realizar alguma codificação, escreve primeiro um teste e depois o código. TDD também exige muita disciplina.

Passos de bebê : Procure sempre dar passos pequenos durante a construção dos seus testes, evite assumir um teste muito difícil ou grande logo de cara, deixe sempre os testes mais complicados para o final.

Links

Faça download do projeto construído: ConversaoNumerosRomanos

Veja outros links sobre TDD no delicious: delicious.com/denisferrari/tdd

Abraços!

Tagged with:
 
"Meus seguidores em Jeet Kune Do, atendem a isso: todas as normas fixas são incapazes de adaptabilidade ou flexibilidade; a verdade está fora de todas as normas fixas." - Bruce Lee

No dia 16/06 tive a oportunidade e a honra de palestrar na faculdade UNES em Cachoeiro-ES. O Evento foi organizado pelo MIC e marcou a inauguração do mais novo prédio da faculdade. A minha palestra representou a comunidade de desenvolvedores capixabas, o MSDev-ES. A segunda palestra foi realizada pelo Cleyton Santana do grupo MSInfraES.

Falar para pessoas que estão iniciando na área de desenvolvimento de software é uma extrema responsabilidade, por isso, ao invés de falar somente sobre TDD procurei mostrar alguns problemas da área e boas práticas através do case do meu primeiro projeto de software relevante (tinha 17 ou 18). Esse projeto foi realmente traumático, porém, definiu muitos dos meus paradigmas atuais sobre a carreira e o desenvolvimento de software em geral.

Troquei muitas informações com os profissionais locais após a minha palestra, fizemos tanto networking que acabei nem assistindo a segunda palestra do evento. Outro ponto relevante é que muitas pessoas que estavam lá tinham comparecido ao Maré-VIX, evento que organizei no CET-Faesa poucos dias antes.

Fotos

Slides da apresentação

Espero que os presentes tenham gostado do evento assim como eu gostei. Agradeço ao MIC e a UNES pela oportunidade e pela confiança.

Abraços!

Tagged with:
 

I Fórum Microsoft para Gerentes de Sistemas em Vitória-ES

"A tradição nada mais é que uma fórmula imposta pela experiência anterior... mudem, precisamos reformular nossa fórmula!" - Bruce Lee

Na quarta-feira (14/07) tivemos o I Fórum Microsoft para Gerente de Sistemas em Vitória-ES. O evento foi realizado pela Mindworks a convite da Microsoft, e a equipe de desenvolvimento entrou em cena para apresentar as novidades do Visual Studio 2010, Scrum, TDD, Ferramentas de qualidade do VS2010 e por fim, o TFS.

Foi uma imensa responsabilidade apresentar novas ferramentas e principalmente novas idéias em desenvolvimento de software para representantes das empresas do mercado capixaba e para os desenvolvedores presentes. Vejam como foi cada parte do evento:

Novidades do Visual Studio 2010

Abri o evento apresentando as novidades do Visual Studio 2010, e não tinha como não ficar empolgado com tanta coisa boa! Queria mostrar exemplos de tudo, mas não havia tempo, e ainda assim atrasei “um pouco” a minha palestra para apresentar todos os recursos que tinha preparado. Alguns tópicos abordados:

  • IntelliTrace
  • Gráfico de dependências
  • Diagrama de camadas
  • Ferramentas para Deploy
  • Novidades do C# 4.0
  • Novidades do ASP.NET 4.0
  • Code Analysis
  • Performance Analysis
  • Biblioteca para Paralelismo
  • Novidades no desenvolvimento para SharePoint

Ao final da apresentação, quem já gostava do Visual Studio passou a gostar mais, e quem não conhecia viu o poder dessa IDE.

Scrum e Desenvolvimento Ágil

O André Pires apresentou muito bem a metodologia ágil e seus princípios.  Como de costume, a palestra dele foi muito interativa e divertida. Discutimos muito com os representantes do mercado e do governo o cenário atual dos nossos projetos de software e por que precisamos adotar novas estratégias se quisermos melhorar nossas estatísticas de sucesso.

Essa palestra foi praticamente em dupla, pois o André sempre solicitava relatos de experiências e complementações da minha parte. Aproveitei para explicar a importância do trabalho iterativo e por que projetos de software são tão difíceis de serem estimados.

Gosto muito do assunto e das discussões que rolam, mas a impressão que tive é que todos os presentes concordaram que a forma de trabalho que estávamos apresentando possuía práticas que facilitariam o desenvolvimento como um todo.

TDD e Ferramentas de garantia da qualidade no Visual Studio 2010

Tenho falado muito sobre TDD aqui em Vitória. Por questões de tempo, procurei não apresentar todas as dicas que geralmente dou e mostrar um exemplo prático de aplicação do TDD, uma espécie de TDD para iniciantes.

A segunda parte da palestra foi dedicada as ferramentas de Teste do Visual Studio. Gosto muito dessas ferramentas, a Microsoft acertou mais uma vez, apesar de ainda acreditar que eles podem melhorar a biblioteca Microsoft.VisualStudio.TestTools.UnitTesting para dar mais poder e semântica aos testes unitários.

TFS

Só o TFS daria um evento inteiro. O André apresentou a utilização do template Scrum e mais uma série de recursos do TFS, os presentes realmente ficaram impressionados com o nível de integração e as facilidades que os recursos apresentados geram para a equipe.

Fotos do evento

Apesar do trabalho que dá, não vejo a hora do próximo evento. :)

Agradeço a todos os presentes e a Mindworks pela oportunidade.

Abraços!

Tagged with:
 
"A preguiça é a mãe do progresso. Se o homem não tivesse preguiça de caminhar, não teria inventado a roda."

PrevisibilidadeA cada dia que passo na área de desenvolvimento de software percebo que a mesma é peculiar em vários aspectos. É comum pessoas de outras áreas formarem opiniões sobre a nossa área usando como referência suas áreas de conhecimento, o problemas disso é que, geralmente, só quem é da área de software consegue ter uma visão realista sobre as características e problemas da área.

Após vários debates sobre o tema, decidi fazer um post sobre Previsibilidade em desenvolvimento de software. Decidi abordar o tema em uma apresentação ao invés de escrever, pois acredito que assim consegui expressar melhor as características que fazem com que seja tão difícil na nossa área estimar o tempo de desenvolvimento dos projetos.

Veja mais sobre previbilidade em desenvolvimento de software na tag “Previsibilidade” no delicious: delicious.com/denisferrari/Previsibilidade

Fico no aguardo dos feedbacks!

Abraços!

Tagged with:
 

Já salvou meu dia: xDirectory

"Escuta e serás sábio. O começo da sabedoria é o silêncio."

IoCQuando trabalhamos com um framework vasto como o .NET sempre imaginamos que o mesmo irá resolver nossos problemas mais simples em projetos. O problema é que nem sempre a Microsoft pensa em tudo (sarcasmo).

Atendendo um pedido interno da Mindworks, fiz um projeto muito simples que tinha um requisito principal: Copiar pastas de várias origens para um mesmo destino. Fiz o projeto rapidamente, usei TDD para construção dos processos e Serialização e Desserialização para obtenção das origens e destinos. O problema é que em uma linha de código eu copiava a pasta de um lugar para o outro, e só nesse momento lembrei que o .NET não copia o conteúdo das pastas automaticamente. Apesar de não ser tão trabalhoso a construção desse código, eu não tinha muito tempo restante, então, decidi procurar por uma biblioteca pronta que o fizesse. Foi meu primeiro contato com o xDirectory.

Como produzi o código respeitando a separação de responsabilidades e a coesão dos componentes, só precisei alterar uma linha de código para usar o xDiretory, sendo assim, todo o processo que construí manualmente estava coberto por testes unitários, e como meu código não estava usando o componente diretamente realizar a alteração do mesmo foi muito simples.

O xDirectory pode ser encontrado no link abaixo, vale a pena conferir:
http://www.codeproject.com/KB/files/xdirectorycopy.aspx

Abraços!

Tagged with: