#TDC2012

Tenho escrito pouquíssimo aqui no blog, falha minha! Não estou conseguindo me organizar para manter a constância. Tenho vários posts em rascunho que preciso publicar, tentarei encaixar essa tarefa nas lista de atividades semanais.

E falar sobre o TDC 2012 é algo que eu não posso deixar de fazer apesar de atrasado!

O evento

Novamente o TDC foi além das minhas expectativas. Esse ano mais pessoas inscritas, mais trilhas foram criadas, por exemplo TV Digital e Management 2.0; e algumas foram quebradas em várias tecnologias (além de uma de Mobile, como no ano passado, tivemos trilhas específicas sobre iOS e Androide).

Minha palestra

Tive a satisfação de ter a palestra que submeti aprovada na trilha de Arquitetura (esse ano foi uma das trilhas que foram quebradas: Arquitetura Java e Arquitetura .Net).
Apesar de estar na trilha de Arquitetura,  eu quis apresentar algo mais prático para que pudessem chegar à noite em casa ou no próximo dia no escritório começar a pesquisar mais sobre o assunto, já que uma palestra de 45 minutos não é,  de maneira alguma,  suficiente, e já aplicar, na mesma hora, no projeto atual. Sem precisar instalar framework, mudar paradigmas, ter que pedir autorização.

Que assunto melhor para isso do que falar de Refactoring!?  É uma prática que deveria ser comum no ciclo de desenvolvimento, no TDD após uma funcionalidade passar no teste de unidade você faz Refactoring para melhorar o código. Ao pegar uma aplicação já em funcionamento para fazer uma correção de bug ou mesmo para colocar novas funcionalidades, por que não aplicar um Refactoring em algo que está ali do lado e pode ficar melhor?

Infelizmente o medo é uma constante para muitos, medo de estragar o código, de quebrar a aplicação, ou de que o Refactoring demore muito mais do que só desenvolver a nova funcionalidade. Isso prejudica a melhoria contínua do código, você pode acumular uma dívida técnica e sabemos que a Entropia existe e com o passar do tempo irá dar as caras, ou os bugs, no seu código.

Mas se tudo isso é verdade, então não devemos mesmo fazer Refactoring, certo? Não! Existem técnicas que ajudam nessa hora e muito.

  • Viu que existe código que está lá no meio e pode virar um método e ter reuso em outros lugares? Existe uma técnica para fazer isso
  • Viu que na verdade tem código que está na sua classe mas que não é do que essa classe deve fazer? Existe uma técnica para extrair esse código para uma nova classe

E por aí vai… É novidade? Não, pelo menos não deveria, essas técnicas estão descritas no livro do Martin FowlerRefactoring: Improving the Design of Existing Code.

Mas não é só isso! Você tem que ter certeza de que ao extrair um código e transformar em um método e reutilizá-lo em outros pontos do sistemas não vai quebrar o software! E então, como fazer? Existem técnicas para isso também!!

  • Eu preciso fazer uma mudança… Mas quais métodos preciso testar?
  • Preciso quebrar dependência…

E novamente por aí vai. Você pode encontrar várias respostas para isso no livro do Michael Feathers: Working Effectively with Legacy Code.

Logicamente é impossível se aprofundar nesse assunto durante uma palestra, portanto a mensagem mesmo que eu quis deixar foi:

“It’s easier to beg forgiveness than to ask permission.”, Grace Hopper

Essa frase é sensacional, ou seja, não espere para pedir para o seu gerente permissão para fazer um Refactoring, estude as técnicas e pratique no seu código, melhore ele antes que seja necessário ou antes que alguém peça! Não tenha medo.

Melhor do que simplesmente falar sobre técnicas é demonstrar. Portanto fiz um Kata do o passo a passo de Refactoring do primeiro exemplo do livro do Martin Fowler, em C#. Estou organizando o repositório e vou publicar no Github aqui, dê um Watch para acompanhar ou fique ligado no meu twitter que avisarei quando fizer, provavelmente essa semana ainda. Por hora,  veja os slides da apresentação abaixo:

Segunda palestra! (0_O)

Calhou que no mesmo dia, 30 min depois, apresentei uma lightning talk sobre Brownfield na trilha .Net University, voltada para estudantes, infelizmente e aproveito para me desculpar com o Victor Cavalcante, eu falei demais e não consegui chegar no fim dos slides que montei! Então para não ser totalmente em vão, uma dica: ao fazer uma lightining talk,  cronometre rigorosamente o tempo nos ensaios e NÃO SAIA DO SCRIPT!! Mas valeu a experiência. O tema foi um resumo da minha apresentação ano passado na trilha de Arquitetura do TDC.

Outras trilhas

Resolvi que esse ano iria participar de trilhas com tecnologias que não estavam no meu dia-a-dia. Infelizmente NoSQL não consegui ir, nem na de Arduino, mas me inscrevi para Python e Robótica e domótica no fim de semana. Porém nos dias acabei assistindo palestras de outras trilhas o que foi melhor ainda, consegui ver várias que me interessavam:

  • No sábado
    • Debate: O que muda com o Windows 8, com Giovanni Bassi, Victor Cavalcante e Igor Abade
    • Metaprogramação com Python, Tiago Albineli Motta
    • Brincando com Kinect, Guilherme Policicio Rey
    • Python para programadores PHP, Evaldo Junior Bento
    • Técnicas e recursos para desenvolvimento Web em cenários de grande escala, Alexandre Tarifa / Cleber Dantas da Silva
    • Ruby: Patterns e Anti-Patterns, Fabio Akita
    • … Vi algumas lightning, finalizações de algum, comecinhos de outras
  • No domingo
    • ADK: como o Android pode se integrar com hardware, Luís Fernando de Oliveira Leão
    • Controlando sua casa pela Internet, Vinicius Morandin Senger
    • Dicas de Startup’s, Luca Bastos e Métricas para Startups, Flávio Fonseca Alves; duas rápidas de 20 min
    • … Vi algumas lightning, finalizações de algum, comecinhos de outras

Fora  as conversas entre uma sala e outra, amigos que encontrava, conversas nos stands, que outro lugar eu poderia bater um papo com o Lucino Condé, que há tempos não via e agora foi pras nuvens, … Isso é demais, não é uma tecnologia, não é uma empresa, é tudo ao mesmo tempo junto e misturado, é Open Source do lado de proprietário, é programação de software do lado de “programação de hardware”.

Definitivamente é um evento que se deve ir, mesmo que você não entre em qualquer uma das palestras você terá o que conversar, ver e fazer muito networking.

Agredecimentos ao Leandro Daniel coordenador da trilha de Arquitetura, Victor Cavalcante coordenador da trilha .Net University, agradecimento especial ao Raphael Molesim que me ajudou a organizar o repositório Git para que eu pudesse mostrar a evolução do Refactoring de uma maneira legal, e sempre a Yara Senger e Vinicius Senger pela organização do #TDC.

One Reply to “#TDC2012”

Leave a Reply

Your email address will not be published. Required fields are marked *