Fork me on GitHub

Viagens, opiniões e afins

by Andre Fonseca


Nova revolução industrial

Conversando com alguns amigos e após ver uma excelente palestra (curta – 10 minutos) do Rafael Lima sobre empreendorismo na web, fiquei com alguns pensamentos desse momento que estamos vivendo.  De certa forma, acredito que vivemos uma “nova revolução industrial”: migramos de modelos de proletariado para um modelo de operário do conhecimento.  Trocamos as rígidas jornadas de trabalho por ambientes leves e descontraídos onde a liberdade de se fazer algo é maior pois ali deve imperar o criativo.  Muitos podem dizer que isso é uma utopia – lugares com este liberdade toda – mas a cada dia que passa mais e mais empresas adotam esse comportamento num movimento de sobrevivência as mudanças do mercado.

Quando em nos anos de 1900, a sociedade conheceu o poder das industrias e toda a cultura que dela derivou, tudo mudou. Uma nova forma de fazer as coisas surgia e com ela as oportunidades para empreendedores aumentaram exponencialmente.  O mundo queria o novo e precisava do novo e com isso muitos que se aventuraram em largar o lugar “tranquilo” da agricultura e partir para construir industrias hoje tem famílias riquissímas.

Acredito que com o advento da tecnologia e da internet, uma nova revolução com efeitos semelhantes ao da revolução industrial está acontecendo agora.  O mundo não é mais o mesmo. Os paradigmas vem sendo derrubados um a um sem “perdão”. Aos poucos diversos rompimentos com padrões antigos, abrem espaços, lacunas, que acabam sendo um terreno fertil para inovar fazer diferente. Nisso, o espírito empreendedor, mais uma vez, se faz oportunista e com isso, uma nova onda de oportunidades de investimentos apresentam-se.

Essas oportunidades tem uma de suas diversas facetas as startups web: empresas que com pouco investimento e muita inovação (e também senso de oportunidade,  genialidade, etc)  vem tornando meninos de garagem em grandes empresários bilionários.  Exemplos não faltam: Google, FaceBook, 37signals, ImproveIt, etc.

A questão que o mercado está para peixe. Só que para “ganhar” tem que saber pescar e pescar o peixe certo. Tudo isso, pois da a velocidades das coisas e disponibilidade que a internet oferece,  qualquer um pode colocar um site de serviço no ar em pouco tempo entretanto, pouquíssimo serão aqueles que transformarão isso em uma empresa lucrativa.

Para ajudar a quem quer entrar nesse mercado, existem diversas iniciativas privadas e públicas. Uma deles que me chamou a atenção, graças em parte ao Rafael Lima, é o Empretec. Em breve pretendo fazê-lo e a única certeza que me deram foi que a vida da gente muda.

Published by Andre, on março 23rd, 2010 at 7:54 pm. Filled under: noticias Tags: , , , No Comments

É preciso acreditar

Hoje, pela hora de almoço, estava conversando com Gabriel sobre a questão do TDD (Test Drive Development – Desenvolvimento dirigido por teste).  Conversávamos sobre o fato de hoje isso esta se tornando uma moda e muita gente dizer que está usando a técnica e na verdade não está.

Cena do Filme MatrixPara os nerds de plantão, existe uma cena do filme Matrix, onde o Neo começa a entender a matrix e com isso controlá-la. Pode parecer que quero “forçar a barra”, porém acredito, sinceramente, que o uso TDD se processa da mesma coisa. Só vamos deslumbrar o seu poder quando passamos a acreditar no processo.  Não adianta somente usar porque agora virou moda… tem que acreditar que a coisa realmente funciona, para então aproveitar todo o poder que essa verdade libera (estou inspirado hoje).

Tem muito gente que critica o uso do TDD por justamente se basear em casos onde pessoas que não acreditam no processo e usam por motivos não muito nobres.  Nessas casos o que vejo são, na maioria das vezes, desenvolvedores subvertendo a filosofia, escrevendo testes que não são “profundos”, escrevendo os testes depois, adaptando os testes para passar ( já ouvi histórias de pessoas comentarem o teste), e por aí segue esse terror.

É preciso crer. O começo é verdadeiramente complicado e trabalhoso. Escrevemos toneladas de linhas de código, sem gerar nenhum valor “real” para nosso cliente. Por várias vezes ficamos tentados a deixar os teste de lado e partir direto para implementar por motivos diversos. Mas ao respeitarmos a formúla, o ganho vem com o tempo. Apenas para exemplificar, uma dessas vantagens é a questão de sempre estarmos focado no simples e atender estrictamente o escopo.

Quem nunca se deixou levar, ao implementar, uma aplicação, pela loucura de criar arquitecturas imensas e sem necessidade? Aquelas aplicações (Java) com um amontoado de camadas – DAOs, VOs, Services, etc – que no final vão servir apenas para um site pequeno de noticias que não terá grande modificações após ser colocar em produção.

Voltando para a questão do TDD… Escrever testes antes da implementação faz com que foquemos na necessidade: Criamos a necessidade para podermos supri-las e não contrário – criar soluções para depois ver necessidades.

Ser simples é chave. E TDD é um dos caminhos que nos levam a isso quando falamos em desenvolvimento de sistemas. Além disso, existe já as justificativas de ampla cobertura de testes e de foco na aderencia de requisitos.

Quando realmente usamos o TDD, como já disse antes, criamos a necessidade e a partir daí partimos para criar a solução que a satisfaçam.  Isso faz com que tenhamos um código amplamente testado, justo – evitasse o desperdício em criar solução para necessidades que nem existem ainda, código limpo, etc. Se extrapolarmos então para a questão da evolução de código a coisa fica mais interessante ainda: primeiro modificamos o testes, pois a necessidade é diferente,  e depois modificamos a implementação para passar nos novos cenários de teste. Isso limita nossa área de atuação e nos disciplina a fazer apenas o justo necessário. Sem firulas, sem big to front, sem complexidades adicionais para supostos futuros contextos.

Ainda sobre a vantagem, seria dizer que você, usando TDD e acreditando verdadeiramente,  você está otimizando o uso do sprint e com isso gerando mais valor agregado para o cliente. Pensem nisso na próxima vez que tive seu projeto pela frente.

Published by Andre, on março 19th, 2010 at 9:26 pm. Filled under: Sem categoria Tags: , , 2 Comments

Pyccuracy – Uma boa ferramenta de teste. Coloque-a na sua maleta

Ultimamente, no meu emprego atual, tenho a oportunidade de usar um excelente framework de testes de aceitação brasileiríssimo que é o pycurracy . Ele é uma ferramenta feita em python que permite que você escreva suas histórias de aceitação em linguagem natural. Isso significa dizer, que você pode escreve o seu teste em português.

Não preciso dizer o quanto isso traz de vantagem. Só para citar, uma das mais imediatas, pelo menos para mim, é a questão da documentação.  Quem já está na estrada um tempo, sabe como é uma verdadeira luta manter documentações atualizadas do produto.  Tudo sempre começa bem, mas com o passar do tempo, sempre surgem outras tarefas mais urgentes e os “casos de uso”  ou histórias acabam ficando não condizentes com a realidade da aplicação.  Para muitos, isso pode soar como preciosismo porém imagine um contexto de um projeto open source… sem uma documentação bem feita, colaborar pode ficar bem difícil.

Um outro aspecto também é que desenvolvedores “não são muito amigos” de escrever documentos. Esta aí uma tarefa que vejo poucos colegas fazerem com prazer. Se puderem evitar, a grande maioria em minha humilde opinião,  evitarão fazê-lo.

Ferramentas como o pyccuracy, vem unir o “útil ao agradável”: vem possibilitar escrever testes, programando, e como resultado indireto obter uma excelente fonte para consultas.  Por permitir escrever os cenários  em linguagem natural (inglês e português) acabamos por ter um documento descrevendo o funcionamento esperado… as nossas histórias.

O pyccurace é todo feito em python usando o Selenium .  Para maiores detalhes recomendo uma visita a página do projeto.

A única coisa que tenho a dizer sobre ele é que bem que poderia ter uma implementação que usasse o WebDriver ao invés do Selenium RC. Acredito que ficaria bem mais rápido. Mas, até agora só temos versões estáveis do WebDriver para Java. A versão python está bem timida ainda.

Published by Andre, on março 12th, 2010 at 8:37 pm. Filled under: codigo,Java,python Tags: , , 1 Comment