11 julho 2010

Test-fisrst teaching

Gostei muito muito dessa apresentação:



Sarah Allen explica com muita clareza (inclusive no inglês) uma metodologia para ensinar programação por meio de test-first.

Minha experiência nos dojos e ensinando calouros a programar sempre me disseram que não seria tão fácil fazer o que o Vinícius Teles sugere em seu apelo. Na metodologia apresentada no vídeo, acho que ela esclarece bem o ponto (é muito difícil aprender a programar e a escrever testes ao mesmo tempo) e dá uma saída genial!

De quebra, ela explica muito bem a questão geral em torno dos benefícios de TDD. Concordo muito com ela!

A apresentação toda dura quase uma hora, mas recomendo.
Vale muito a pena!

21 junho 2010

Arrumando a cozinha

GTD, Scrum, Pomodoro, TDD

Esse é o título da palestra que apresentarei na AgileBrazil 2010, na quinta feira (dia 24/06) às 18:15.



Se vc está planejando assistir (ou se não está), eis aqui um resumo bem rápido pra situar melhor as coisas:



A motivação principal para essa reunião de técnicas foi explicada em outro post desse blog, que o convido a ler, caso ainda não o tenha feito. É um post relativamente longo e não é obrigatório, de forma alguma. Mas creio que seja bastante pertinente, já que estabelece o contexto inicial dessa apresentação.

A idéia é apresentar essas 4 técnicas de um ponto de vista bem particular. Vou ressaltar alguns aspectos-chave que me permitam relaciona-las e extrair alguns princípios em comum.


Posso adiantar que o principal valor que pretendo ressaltar em todas elas tem relação profunda com a filosofia de Robert Pirsig - a Metafísica da Qualidade - a qual pretendo abordar de forma suficientemente leve e divertida.


Esse é um conteúdo que venho amadurecendo no último ano, e acho que consegui chegar num resultado muito bom. Estou orgulhoso!

Espero que gostem :-)

DojoSpot: um OpenSpace para a AgileBrazil 2010

Durante a AgileBrazil 2010, espero conseguir discutir com algumas pessoas uma pequena empreitada que me deu na cabeça de colocar em prática esse ano. Se tudo der certo, espero conseguir organizar uma breve reunião, provavelmente em formato de um pequeno WorldCafé, para discutir os objetivos, a pertinência, a relevância, prós e contras desse pequeno projeto:


DojoSpot
Host your own CodingDojo!



O projeto nasceu do site que criamos para o DojoSEA, e acaba de ser colocado no GitHub. Foi criada também uma lista de emails, da qual vc já pode participar, se estiver interessado em ajudar a organizar o OpenSpace :-)

A idéia desse projeto é desenvolver uma pequena e simples aplicação web, que seja fácil de instalar e usar e que dê um suporte mínimo para colocar funcionando um site para o seu CodingDojo. (É claro que é preciso um pouco mais que um site para se estabelecer um Dojo, e é claro que é possível fazê-lo sem um site. É apenas um ponto de partida, para incentivar aqueles que se interessarem.)

A aplicação ainda não faz muita coisa (quase nada), mas espera-se que ela possa ajudar das seguintes formas:
  - estimulando e fomentando a integração e o fortalecimento da comunidade;
  - propondo um dispositivo de reconhecimento entre os participantes;
  - valorizando as indivualidades de cada grupo de Dojo;
  - criando um espaço para discussão e reflexão;

Espero vocês na AgileBrazil! :-)

13 maio 2010

Porque o Twitter é genial?

Estava eu saindo pra capoeira encafifado com uma questão do mestrado. Antes de sair, resolvi desabafar a dúvida, rogando a dúvida pra quem a merecia, via Twitter:


12:01: brunopedroso: @KentBeck , do u think it is possible to grow a quick-sort from TDD?
12:12: KentBeck: .@brunopedroso i think you could tdd quicksort. you'd need assertions about the # of comparisons & ways to incrementally improve the count
12:20: the_chrismo: @KentBeck with the karate chop kata (http://bit.ly/aPh2y6) I started to expose comparisons, but felt it revealed internals too much ...
 12:23: the_chrismo: @KentBeck ... though without doing those, there's no direct assertion of the efficiency of the algorithm.
12:29: KentBeck: .@the_chrismo i think you'd have to introduce a Comparator & be able to plug in one that keeps a count.
13:55: the_chrismo: @KentBeck ah, nice. makes me want to go back and try that.
12:25: brandheintz: .@KentBeck I'd be interested to see that - would be a crack in the "TDD can't guarantee good algorithms" argument.
12:30 KentBeck :.@bradheintz only people can guarantee good algorithms. tdd can certainly be used to assure that they are used, tho.
13:52: brandheintz: .@KentBeck True, but yr notion of pushing toward better algos through smart use of constraints has appeal.
12:18: davenicolette: @KentBeck @brunopedroso That sounds like it could be a good kata.
12:37: asplake: .@KentBeck @bradheintz TDD for algorithm design seems to verge onto "halting problem" territory
12:38 : KentBeck: .@asplake i don't see why. you need an n log n algorithm. give it n inputs. count the operations. assert that < n log n of them took place.
12:40: asplake: .@KentBeck right. And prove that there are no pathological cases?
12:46 : KentBeck.@asplake that's out of scope for tdd. once you find one, you can write a test to demonstrate it.
14:09: the_real_pablosan: @brunopedroso I have tried growing a binary search from TDD: http://salientblue.com/codenotes/index.html?name=kata2Java01

O que tem de fantástico nisso?

A parte do conteúdo da conversa, que pra mim foi um prato cheio, perceba o que o twitter tornou possível: Primeiro de tudo: *o cara* me respondeu!!!! :-) Segundo: outras cinco pessoas se envolveram na conversa e fizeram indicações e comentários interessantíssimos algumas das quais eu nunca tinha ouvido falar (até agora, pois agora eu sigo os 4...)

Em que outro meio de comunicação essas 7 pessoas conseguiriam se encontrar para fazer comentários sobre uma questão tão específica?!

Internet? Não, não foi a internet, apenas... foi o Twitter!


A internet já estava aí há muitos anos (antes do twitter aparecer) e isso ainda não era possível... Nunca teríamos conseguido ter essa conversa por email, nem por chat, nem por nada! Tanto é que não as tínhamos!

7 pessoas, em 7 lugares diferentes do mundo tiveram uma conversa profunda a respeito de um assunto muito específico que os interessa. E o que é mais incrível: em questão de minutos! É quase tão rápido quanto se os 7 tivessem se esbarrado numa sala de conferência entre duas palestras e ficássem jogando conversa fora por 20 minutos! Só que estávamos cada um em sua casa ou em seu escritório.

(Ah, ganhei mais 5 seguidores e passei a seguir + 4)

Sinistro!

02 maio 2010

Pesquisa sobre TDD

Estou bastante envolvido com a pesquisa para minha dissertação de mestrado, que pretendo desenvolver até o fim do ano, se Deus quiser.

Nas útimas semanas tenho passado por uma turbulência forte, mas de um jeito ou de outro vamos chegar no final :-)

A boa nova é que começamos a cooperar mais de perto eu, a Cláudia e o Maurício. Estamos tendo boas disscussões. Espero que saia alguma coisa boa daí!


Pra quem esta interessado em ler um pouco a respeito, eu havia publicado aqui algumas referências no começo da pesquisa, ano passado. Prometo atualizar essa lista em breve!

O mauricio tb compartilhou algumas referências e um paper que ele apresentou no 1st International Workshop on Test-Driven Development (TDD2010). (Parabéns Mauricio \o/).

Outra referência legal é a edição especial que o IEEE lançou em 2007 sobre TDD. (Siga os links '2007 vol.24' e depois 'Issue No. 3 - May/June', não consegui achar um link direto :-/), sobre a qual a InfoQ publicou uma entrevista muito boa com o Erdogmus.

Eu publiquei uma besterinha na XP2010 sobre minha opinião quanto aos estudos que pesquisei (uhuuuu!) Assim que tiver um link eu posto aqui. Pretendo disponibilizar outros textos que escrevi até agora. Vou me organizar e coloco os links por aqui em breve.

Seria legal fortalecermos e unirmos mais os grupos de pesquisa em TDD no Brasil. Se vc tb está nessa (ou se pretende entrar) deixe um comentário ou entre em contato de qq outra forma e vamos unir as forças! Ou pelo menos trocar algumas figurinhas ;-)

o/

05 março 2010

Learn some Javascript!

Fiquei impressionado com a qualidade da revista PragPub.

Em especial, adorei o artigo sobre javascript que aponta na direção de mais uma bela reviravolta no mundo das tecnologias de desenvolvimento para web.

Quem diria? A linguagem de programação que há aguns anos nem era considerada uma linguagem de programação de verdade por muitos, agora começa a mostrar sinais de que vai entrar pra briga do lado do servidor, enfrentando Java, C#, Ruby, Python, PHP, etc. E parece que já vai entrar na vantagem!

Sendo a linguagem padrão no lado dos navegadores, e relativamente bem conhecida pelas tribos de todas as outras tecnologias, acho bem provável que se torne o esperanto das linguagens de programação, pelo menos dentro do contexto da web (que parece estar mesmo engolindo tudo, então dá na mesma...)



E mais: estando a comunidade e todo o eco-sistema de frameworks nascendo agora, durante a hype da programação distribuida de alta performance - Erlang, Scala, Clojure e afins - parece que o pensamento funcional e distribuído, a lá Google e seu MapReduce, já está nascendo nas entranhas dos novos projetos que surgem. (O que é também bastante sincronizado com as reformulações nos paradigmas de dados, noSQL's, e afins).

Com toda a hype do Ajax, Prototype (e agora JQuery), Scriptaculous, e framework de interface rica praticamente WYSIWYG (programadores Delphy adoraram!), e depois que linguagens dinâmicas como Ruby e Python mostraram que a tipagem estática e a velocidade do código compilado não são assim tãããããão importantes, parece que o Javascript vem ganhando ainda mais popularidade.

De minha parte, fico satisfeito em saber que os novos frameworks já estão nascendo também com seu legado metodológico ágil, como uma infra-estrutura decente para TDD/BDD, e espero que herdem muito do modelo de programação ágil embutido no framework, a exemplo de Rails e cia.

Para arrematar, deixo o comentário de que gostei muito também, no tal artigo (e ao que parece em toda a revista), da relevância dada aos aspectos sociais e culturais inerentes à tecnologia. Dêem uma olhada na revista, acho que vão gostar também!

02 novembro 2009

Quem pode te interromper?


Remédio ou veneno? A diferença está na dose. Eis aqui uma breve reflexão sobre como a tecnologia pode acabar com a sua produtividade.

Não sei você, mas eu sempre tive dificuldade em me concentrar em algumas coisas. Leitura é uma delas. Se alguém passa na rua conversando sobre qualquer coisa que dê pra escutar, lá se vai minha leitura. Por isso eu só leio com fone de ouvido. De preferência ouvindo músicas conhecidas e instrumentais, que não vão surpreender minha mente e tirar minha atenção do texto.

Outras pessoas, como meu irmão, afundam a cara no que quer que estejam lendo e entram numa espécie de transe do qual só saem no terceiro grito, depois de já termos esperneado bastante em sua frente.

Alguns tipos de trabalho exigem um tempo relativamente longo de concentração, para que se possa enxergar toda uma linha de raciocínio até que se alcance os pontos de decisão realmente importantes.


Acontece que ultimamente tem se tornado cada vez mais difícil se concentrar no que quer que seja. Celular, SMS, Messenger, Twitter, Email. São todas ferramentas maravilhosas de comunicação, mas que podem acabar com a produtividade de qualquer um.

O celular é ótimo pra ilustrar isso. Seu celular tem autorização pra te interromper quando... você está lendo? quando está escrevendo? quando vc está no cinema? Quando está em reunião? Quando está no banheiro?! Tem gente que sai correndo, todo borrado, pra atender o celular a tempo...


Somos nós quem determinamos quando e como os meios de comunicação podem nos interromper. Pare pra pensar! A decisão está nas pequenas coisas. Quando seu celular vai pro "silencioso"? Quem tem seu telefone de casa? Vc deixa seu email sempre aberto na janela de trás? Twitter? Messenger?

Em tempos de escassa atenção, saber usar os meios de comunicação pode ser tão importante quanto saber gastar ou aplicar seu dinheiro.