terça-feira, 29 de março de 2011

DOJO na Faculdade Hélio Rocha - Relato de Experiência

Venho relatar minha experiência com os DOJOs que tenho realizando junto com os alunos da disciplina Desenvolvimento Web com Banco de Dados do curso de SI da Faculdade Hélio Rocha.

Já leciono essa disciplina pelo menos 5 anos, e o objetivo dela é passar para os alunos alguma tecnologia web. Iniciei com ASP, PHP e JSP. O primeiro semestre que ensinei, vi que deveria formatar a disciplina de alguma forma mais dinâmica e que, por mais simples que fosse, era bom reservar algumas aulas para passar as linguagens HTML, CSS e JavaScript, o que eu fiz a partir do segundo semestre que passei a lecionar.

Depois de alguns semestres tentando achar uma fórmula interessantes de ensino e após ler o livro Professores e Professauros, vi que a busca por tornar essa aula mais dinâmica era louvável, e, após ter os primeiros contatos com DOJO no Serpro e trocar experiências com alguns colegas que partilhavam dessa mesma visão, vi que para esse tipo de disciplina, não existe forma melhor de passar conteúdo e despertar o interesse dos alunos pela aula.

Minhas primeiras experiências com DOJO aconteceram esse ano assim que entrei no Serpro e talvez por minha falta de prática em TDD, ainda não estou adotando essa técnica da forma que preconiza a prática do DOJO.

O mais difícil na minha opinião é falta de contato dos alunos com programação, apesar de ser uma disciplina de final do curso.

Estou usando uma mistura entre o PreparedKata com o RandoriKata. Abaixo, segue o relato das primeiras aulas do semestre:

Na aula de HTML, sem muita novidade, fizemos uma tela usando div, table e forms.
Na aula de CSS, vimos as formas de usar folhas de estilo e como usar um framework CSS (Formee).
Na 1ª aula de JS, vimos as formas de colocar um script na página e o básico de DOM, fazendo algumas validações de formulário.
Na 2ª aula de JS, vimos os conceitos de JS OO e desenvolvemos uma pequena aplicação usando o GoogleMaps API.
Na 1ª aula de Ruby, não usei DOJO, pois, como a turma não tem experiência em desenvolvimento, fiz uma revisão de OO com Ruby.

Dia 25/03 foi a 2ª aula de Ruby, e a proposta foi fazer um Twitter4Dos (criar um cliente para o twitter que rode na linha de comando), usamos a gem "Twitter" (http://twitter.rubyforge.org/) e fizemos a aplicação abaixo, gostaria da ajuda de vocês para refatorar o código e quem puder ajudar com os testes, ficaria grato.

Propus aos alunos desenvolverem esse sistema usando o FxRuby para a próxima aula 01/04 e devo iniciar com Rails.

Segue código (obs: os atributos de config você pega cadastrando uma aplicação no twitter, solicitei ao twitter uma forma de fazer a aplicação usando usuário e senha, mas eles não deixaram):

require "rubygems"
require "twitter"

class TwitterDos

def initialize
Twitter.configure do |config|
config.consumer_key = "nonononononono"
config.consumer_secret = "nononononononno"
config.oauth_token = "nononononon"
config.oauth_token_secret ="nonononononnooono"
end
@client = Twitter::Client.new
end

def menu
puts "Twitter for dos"
puts "1- Postar mensagens"
puts "2- Ler mensagens"
puts "3- Mostrar seguidores "
puts "4- Sair"
puts "Escolha uma opcao"
escolha = gets().to_i
end

def mostrarseguidores
a = @client.friend_ids.ids.sort.each {|f|
puts Twitter.user(f).name
}
end

def postarMsg
puts "Digite msg: "
msg = gets()
@client.update(msg)
end

def listarTimeLine
a = @client.home_timeline
a.each { |t|
puts t.text
}
end

end

# PROGRAMA PRINCIPAL

t = TwitterDos.new
begin
opt = t.menu
case opt
when 1
t.postarMsg
when 2
t.listarTimeLine
when 3
t.mostrarseguidores
end
end while opt < 4


Sds,
Luciano (@lusabo)

Dojo na FIB: JavaBahia nas Universidades

No II JavaBahia nas Universidades, que ocorreu na FIB em 26/03/2011, fizemos um Dojo usando a linguagem Groovy. Veja no blog do JavaBahia o relato de como foi.

O desafio foi o jogo de Zero A Cem. Tinha bastante gente na sala, portanto infelizmente a maioria não teve oportunidade de programar. Ainda assim foi uma sessão bastante rica. Passei uns 15 minutos explicando sobre Dojo e falamos de como seria o desafio.

Aqui o resumo da retrospectiva:

:D
- Iteração, dinâmica em grupo
- Gostei de tudo
- Gostei da dinâmica da aula, do que foi discutido e apresentado e desenvolvido. Por Mauricio Vitorio Cerqueira
- Idea muito produtiva, evita vícios
- Programação orientada a teste, garante qualidade
- Constante refatoração resulta em melhores códigos
- Encoraja a atitude por parte dos programadores, independente da experiência. Encoraja a refatoração em tempo de codificação
- Conhecer o groovy. Iteração entre pessoas
- Duas cabeças pensam melhor que uma
- Oportunidade de ampliar conhecimento nesse imenso universo da programação
- Boa iniciativa. Parabéns
- Gostei de tudo, pois adquiri conhecimento, e estou no começo do meu curso. E ainda sou leigo em determinados assuntos
- Gostei pelo fato de ter sido muito participativo. A participação do publico melhorou no entendimento
- A pratica mostrou que o treino é muito importante na vida do desenvolvedor
- Bom exemplo de como utilizar o XP na pratica
- Bom, muito bom o nível de conhecimento passado e a interatividade com o pessoal
- Auxiliar na formulação de jogos voltado para a programação
- Pode-se ver novas formas de programar
- Novas modalidades
- Produtividade no aprendizado
- Bom, uma boa didática, pois troca conhecimento entre todos, facilitando o aprendizado
- Dojo bastante dinâmico
- A dinâmica, gera uma bom aprendizado
- Interessante seria usar técnicas de Dojo junto a internet, o qual em uma sala em grupo definiriam a tarefa, e o vencedor seria o quem obtivesse melhor resultado
- Não tem nada que não gostei

:(
- Embolou um pouco o código
- Pratica interessante, porem o tempo curto acaba comprometendo o entendimento
- Alto custo de aprendizado
- Funciona melhor em escopo menores
- Necessita mudança de pensamento na forma de desenvolver
- Falta de padrão
- Poderia ser melhor, ter um exemplo de um problema resolvido pelo palestrante e outro para o grupo
- Precisar –se: Mais vezes, mais dojo, mais informação, mais interação
- Inicialmente parece não sair do lugar
- Dinâmica repetitiva no Dojo
- Necessário regras mais específicas
- Pouco tempo para a explicação do Groovy
- O tempo foi escasso para tanta informação
- Pouco tempo para uma oficina que foi produtiva.
- Intevalo de tempo curto (3x)
- Pouco proveitoso para um publico muito grande
- Mudança de foco constante
- Curto período para desenvolver e concluir o aprendizado

O código produzido na sessão pode ser encontrado no Google Code do Dojo-Bahia.

Abaixo coloco um código que eu já havia criado antes.

class ZeroACemTest extends GroovyTestCase {

def verificaNumero

void testAcertou () {
verificaNumero = new ZeroACem(5)
assertTrue verificaNumero.palpite(5)
}

void testMaior(){
verificaNumero = new ZeroACem(5)
assertEquals 'maior', verificaNumero.palpite(7)
}

void testMenor(){
verificaNumero = new ZeroACem(5)
assertEquals 'menor', verificaNumero.palpite(2)
}

void testApertadinho(){
verificaNumero = new ZeroACem(5)
verificaNumero.palpite(4)
assertEquals 'bebi', verificaNumero.palpite(6)
}
}



class ZeroACem {
def segredo

def sup = 100
def inf = 0

def palpite(numero){
if (segredo == numero)
return true

if (numero > segredo) {
sup = numero
return 'maior'
else
return 'menor'
}

ZeroACem(segredo){
this.segredo = segredo
}
}


Ah, no blog do JavaBahia tem o vídeo da parte introdutória sobre Dojo e também os Slides que utilizei: http://javabahia.blogspot.com/2011/03/ii-javabahia-nas-univerisadades-2011.html

Coding-Dojo na UFBA

Pessoal, venho aqui resumir a experiencia do Dojo realizado em 23/03, na UFBA, à convite do Prof. Manoel Mendonça. A idéia dele para a disciplina Paradigmas e Linguagens de Programação é fantástica! Realizar vários Coding Dojos, com desafios e linguagens diferentes, de forma a explorar as características de cada linguagem. Se eu fosse um dos seus alunos, estaria altamente motivado a participar de uma aula assim. Quem me dera ter tido essa oportunidade no meu curso de gradução em Informática, na UCSal, de 1992 a 1996.

Tive a satisfação de ajudar a conduzir essa primeira sessão. A linguagem escolhida foi Java, utilizamos Eclipse e JUnit. Comecei dando uma rápida explicação sobre o Coding-Dojo (ver slidecast) e depois apresentei o desafio, o mesmo realizado na 1a sessão que fizemos no Serpro, o jogo SuperSenha. Na retrospectiva estávamos sem post-it, então foi no caderno mesmo. Apresentei a técnica Speed Boat (que tinha acabado de ler na revista MundoJ), uma forma divertida de organizar os pontos de melhoria (post-its colados nas âncoras do barco) e os pontos positivos (colados junto à vela, junto com o vento).

:D
- Contato com Java/Junit
- Construção do conhecimento em conjunto
- Prática de TDD
- Programação em Dupla/Grupo
- Dojo no horário da aula
- Participação de pessoa de fora da UFBA, foi uma grande ajuda
- Motivação em relação a práticas de XP
- MOtivação à prática de programação fora do ambneite de trabalho

:(
- Muito tempo ser usar Java
- Falta de prática na linguagem de programaçao usada
- Demora da "apresentação" do piloto/co-piloto
- Cumunicação entre piloto e co-piloto muito baixa
- Demora do entendimento do desafio pela turma
- Interpretação do problema
- Timidez
- Interação da platéia
- Sintaxe Java (muito esqueceram)
- Tempo curto (2x)

Parabéns ao prof. Manoel e aos seus alunos! Para o que precisarem, podem contar comigo e todo o Grupo LinguÁgil. Ah, nos vemos no Maré de Agilidade, em abril na UNEB. Vocês não vão perder né?!