Pular para o conteúdo principal

TDD como ferramenta de aprendizado

Na penúltima sessão do DojoBrasilia surgiu a seguinte questão:

Será que o TDD não atrapalha no aprendizado de novas tecnologias?
 A grande questão girava em torno de que o respeito estrito as regras ao TDD tornariam o aprendizado lento e enviesado. Isso por que você estaria focado em passar o teste o que estaria limitando sua velocidade no aprendizado na tecnologia, bem como a visão do objetivo final.

Caso do dojoBrasília


No caso da sessão que levantou a questão acho que o principal sentimento de "lentidão" se deve a grande carga de tecnologias novas que estavam envolvidas. Escolhemos iniciar um problema conhecido em não uma, mas várias tecnologias (Backbone.js, Undescore, CoffeeScript, Jasmine, etc). Ao final da sessão a sensação de pouco avanço era justificada pelo tempo gasto compreendendo as tecnologias em questão.

A sessão seguinte não obteve o avanço que muitos esperavam. Mas nela podemos ver como o uso de TDD compensou. Tínhamos apenas 4 casos de teste e não estávamos conseguindo utilizar alguns recursos do Backbone.js que nos pareciam bastante interessantes. Iniciamos então uma série de refactorings testando várias teorias em cima das tecnologias até que no final nosso código estava utilizando os recursos dos frameworks e estava bem mais agradável. Rodamos então nossos testes e todos ficaram felizes com o resultado. Evoluímos e ainda tínhamos a segurança de que nosso código estava funcionando.

Conclusões

O que eu tiro disto é que, apesar de parecer mais lento, o uso de TDD lhe ajuda a ter uma aprendizado mais firme da tecnologia estudada. No exemplo que vimos é claro que o uso de TDD facilitou testarmos hipóteses sobre os frameworks sem perder o que já tínhamos e com a garantia de que estas hipóteses realmente funcionavam. Outro ponto que achei bastante interessante foi que usando TDD fomos obrigados a conhecer mais da interface de cada uma das ferramentas, para que pudêssemos testá-las, isso aprofundou nosso conhecimento.

Um outro ponto interessante é que algumas pessoas podem ter um pouco de pressa em ver o resultado do que estão fazendo. Neste caso acho interessante a abordagem que o James Shore seguiu neste caso. Ele queria testar um novo gerenciador de layout no seu projeto, então ele construiu um outro projeto onde ele testou o novo framework até ter algo que lhe agradasse. Após isso ele foi transferindo o que ele tinha deste "protótipo" (hipóteses) pro seu código através de testes. É muito interessante observar que muitas das hipóteses dele não estavam corretas (assim como as nossas), porém o exercício lhe ajudou a corrigi-las.


Por fim, acredito que o TDD pode sim ser uma boa ferramenta de aprendizado de tecnologias. E convido vocês a experimentar. Eu a usei no meu kata de Scala e, apesar de ser um exemplo bem simples, foi muito proveitoso.

Comentários

Postagens mais visitadas deste blog

Suporte para Celular

É engraçado de se pensar que, em 3,5 anos de blog, o post mais acessado do site é o sobre o Suporte para Notebook. Sozinho ele tem quase 3 vezes mais acesso que o segundo colocado. Até hoje eu não sei dizer o por que deste efeito. Apesar disto me orgulho bastante daquele post, afinal além de ter superado minha falta de coordenação motora, ainda cheguei num resultado satisfatório. Já se passaram 2 anos e ambos os suportes se mostram em perfeito estado até hoje.

Pois bem, mas por que ressuscitar este assunto? Na Intacto temos um amigo oculto um pouco diferente, onde cada um tem que fazer seu presente, usando o máximo a sua criatividade. Como eu tirei o Fernando Aguiar, um cara fã de software livre (isso temos em comum). Por isso decidi tentar uma evolução do projeto inicial do Suporte de Notebook (que é aberto e disponível a todos) que elaborei junto ao Marcelo Bassani. Nesta segunda versão usei o Papel Pluma, que apesar de seu valor bem acima que o Paraná (usado anteriormente) resultou…

Aceleração de Startups - Parte 4 - Como melhor aproveitar uma aceleração?

Hoje eu fecho essa série de posts sobre aceleração. Já contei sobre o que é uma aceleradora de estágio semente, onde ela se encaixa no ecossistema e como ela pode te ajudar. Se depois disso tudo, você tenha decidido seguir esse caminho, faltou uma coisa: o que você deve fazer para tirar o maior proveito desse momento. E é isso que vou tentar fazer hoje.

Antes de Aplicar Entenda o momento da empresa Antes de aplicar para um programa, reflita bem sobre o momento. O propósito de um programa de aceleração té auxiliar a empresa a "saltar" para seu próximo estágio. Para fazer isso, é importante entender bem onde se está agora. Isso vai te auxiliar a mirar onde se deseja estar no futuro. Ter noção desses marcos é de grande valia para estabelecer pontos de referência em medir a evolução ao longo do caminho. É imensa a probabilidade que as coisas irão mudar, mas ter esses lugares para se olhar e comparar pode ajudar a direcionar o navio em momentos bons e ruins.

Existem também algun…

Aceleração de Startups - Parte 1 - O que é uma aceleradora?

Costumo dizer que eu já participei de mais programas de aceleração que o aconselhado. Contando com 2018, completei a marca de 5 dessas experiências e acho que já passou da hora de colocar em texto um pouquinho do que vivenciei.

Se você não sabe o que é uma aceleradora de startups, vale muito ler este texto do Tony. Aqui vou focar nos critérios do GAN (Global Accelerator Network) do que é um programa de aceleração.

Termos favoráveis aos Empreendedores Programa de Curto Prazo Orientado a Mentoria Pequenos grupos de trabalho* Oferece espaço físico* Time forte de gestão
Termos favoráveis aos Empreendedores Uma aceleradora tem por propósito ajudar que as startups consigam ganhar corpo em um tempo extremamente reduzido. Daí o termo acelerar. É um extremo contrasenso que ela canibalize as quotas da empresa em um estágio tão crucial. Favorecer os empreendedores é chave não apenas para fomentar que estes corram com o máximo de energia nessa etapa, mas também que tenham fôlego nas etapas futuras para…