TDD com Python: Como aprender de forma certa

TDD é algo muito importante para desenvolvedores, nesse artigo do Thiago Belem que explica de forma bem clara como funciona o TDD, vale a pena dar uma olhada antes de seguir com a leitura.

Logo depois dê uma olhada nesses slides do Osvaldo Santana falando a respeito, slides sempre são mais bacanas, informações rápidas de forma precisa e inteligente.

Veja também um pouco do TDD na prática com Francisco Souza, Python tem facilidades nativas muito interessantes, além do Django ter o desenvolvimento voltado para testes, podendo ser aplicado tranquilamente.

E temos essa palestra sensacional da Globo.com no qual explica de forma muito completa como é trabalhar com TDD, suas vantagens, aplicações e porque você deve utilizar testes.

Anúncios

Conheça O Gigante Acordou que foi feito com Python e Django

ogigante

Atualmente estamos vivendo um momento histórico em nosso país, diversas pessoas estão se manifestando reivindicando nossos direitos contra impostos e diversas outras coisas abusivas que se passa em nossa nação, com isso foram criadas milhares de iniciativas para divulgar informações e compartilhar ideias, e assim surgiu o O Gigante Acordou.

Veja a entrevista com os criadores através do momento pythonico promovido pela Pycursos:

O projeto consiste em juntar todas as informações e dicas sobre o que está se passando, contendo vídeos, links e notícias, um projeto voluntário que foi feito através do Python, junto com Flask e Django. Saiba mais sobre o projeto através dessa pequena entrevista com seus criadores e colaboradores.

Gostaria de saber um pouco de vocês, dizendo o que fazem e se fazem parte de alguns projetos open source.

Renato: Meu nome é Renato Oliveira, sou estudante de Ciência da Computação na Universidade Federal de Pernambuco, no momento faço parte de um grupo de pesquisa em redes e segurança da informação e estou abrindo uma empresa de desenvolvimento web. No mundo open source, faço parte do PUG-PE, onde atuo como moderador da lista e coder de alguns projetos que temos por aqui e organizei a Python Nordeste 2013. Contribuições, já brinquei um pouco com o código do django, mas sem muito sucesso, voltando a tentar contribuir agora.

Filipe: Sou estudante de ciência da computação da UFPE, estou terminando a faculdade e presto consultoria (como freelancer) em desenvolvimento web e mobile. Também sou membro ativo da comunidade de Python de Pernambuco (PUG-PE). Sempre procuro trabalhar com tecnologias open source, pois estas dão agilidade, e qualidade no que entrego aos clientes. Apesar de ter muito interesse, o que eu tinha de contribuições era muito pouco, alguns bug reports, opinião em discussões e pouco código. Recentemente eu e Renato nos juntamos e nos desafiamos a contribuir com Django. Confesso que estamos tendo muita dificuldade para começar, mas esse é um dos propósitos: passar pela experiência para poder ajudar outros que querem começar.

Fernando: Meu nome é Fernando Rocha, sou estudante de ciência da computação e desenvolvedor Python/Django, também gosto muito de Linux, tarefas de administração de sistema, etc.

Também faço parte do Pug-PE (Grupo de usuários Python de Pernambuco).

Fora colaborações ao pug-pe, eu fiz algumas contribuições com projetos open source, como o django rest framework e o provy, mas acho que devo muito ainda nesse quesito.

De onde surgiu a ideia de criar um site sobre os movimentos revolucionários que estão acontecendo aqui no Brasil?

Renato: O Xima já responde.

Filipe: Quando começaram os protestos em SP e no Rio, comecei a pensar como poderia apoiar os manifestantes utilizando o conhecimento de programação, dai surgiu a ideia de fazer um agregador onde as pessoas poderiam encontrar referências de onde ler sobre o assunto (dado que a mídia tradicional não estava dando muita bola para a manifestação).

Fernando: Foi idéia do Xima =)

Por que Python foi a tecnologia escolhida?

Renato: E essa também.

Filipe: Eu tinha experiência com Rails e com Django, mas nunca tinha mexido com Flask, então aproveitei a oportunidade para aprender. Outro fator decisivo para o sucesso do projeto foi que estive recentemente da Python Nordeste http://pythonnordeste.org/, onde fiz contato com muita gente da comunidade, e essas pessoas foram extremamente importantes para a divulgação do projeto em todo o Brasil.

Fernando: Como foi Ximenes que começou, temos que perguntar a ele.

O projeto foi criado inicialmente com Flask e logo depois foi implementado com Django, quais foram os motivos para tomarem essa escolha? Quais metodologias, ferramentas e ideias que surgiram e foram usados durante o desenvolvimento?

Renato: Mudamos para facilitar o desenvolvimento, estamos mais acostumados com django, que é a tecnologia que os 3 trabalham hoje em dia e o ponto foi a facilidade de personalizar o admin para as nossas necessidades. Na questão da metodologia não teve muita não, antes até de decidirmos que iriamos migrar pra django definitivamente eu já tinha implementado mais da metade do site e foi uma transição tranquila do ponto de vista de implementação. Heroku deu uns problemas, mas já contornados.

Filipe: Mudamos principalmente para facilitar o desenvolvimento, no caso, precisávamos urgentemente de um admin o que o django já fornecia sem nenhum esforço. Fernando até sugeriu utilizar uma biblioteca de admim para Flask, mas optamos pelas facilidades do django pensando também a longo prazo. Não estamos utilizando nenhuma metodologia, dado que não sabíamos (nem sabemos) exatamente o rumo do projeto, então as features vão sendo sugeridas e adicionadas as pouco a medida que as ideias aparecem.

Fernando: Facilidade de desenvolvimento, todos contribuidores iniciais tinham mais experiência com o Django, e por conta do admin.

Como está o processo de colaboração da galera? Que tipos de comentários vocês receberam do projeto?

Renato: Tá massa! Tem gente que a gente nem conhece e contribuindo! O engajamento tá legal.

Filipe: Muito boa, várias pessoas já apareceram para contribuir, umas com ideias novas outras implementaram issues que já estavam abertos. Também recebemos bons feedbacks da galera que vai lá visitar e compartilhar conteúdo, e dos amigos.

Fernando: Eu achei bem legal, em poucos dias já temos commits de várias pessoas no repositório!

Por fim gostaria de saber o que vocês estão achando de tudo isso que está acontecendo, o futuro do projeto e suas considerações.

Renato: Tá bonito de se ver, eu espero que consigamos alguma mudança para melhor com tudo isso!

Filipe: Acredito que as coisas estão indo no caminho certo, mas tenho um pouco de receio que esfriem a medida a questão do transporte for sendo “amenizada” pelos políticos. Temos muito mais coisas (algumas delas bem mais importantes que o transporte) para conquistar. O projeto é uma ferramenta aberta para os manifestantes, então ele vai sempre seguir o caminho que o protesto seguir. Nós como desenvolvedores temos o poder de criar e melhorar essas ferramentas, é apenas uma das formas que temos de contribuir para um país melhor. Por fim, quero convidar todos a contribuir com o projeto, seja com novas ideias, código (https://github.com/filipeximenes/ogiganteacordou), ou enviando notícias das manifestações (http://ogiganteacordou.org/contribua).

Fernando: Estou achando incrível  as manifestações, só acho que temos que ter mais foco e tomar muito cuidado com oportunistas, que podem enfraquecer e desvirtuar as manifestações.

Temos que evitar cair nas armadilhas de redução do preço via subsídios, como foi feito em Recife, que dá na mesma, visto que esse valor sai dos impostos que pagamos.

Agradeço as respostas muito rápidas do pessoal e dou parabéns pela excelente iniciativa, é muito bom ter mais casos de sucesso feitos em Python, mostrando que a tecnologia a cada dia cresce e está sendo criado coisas muito boas com ela.

Segue abaixo os contatos deles caso tenham alguma dúvida ou sugestão, e compartilhe com seus amigos o site, a cada dia sendo atualizado e contendo um rico conteúdo falando sobre a situação dos protestos pelo Brasil afora.

Renato Oliveira:

http://about.me/renatosoliveira

Filipe Ximenes:

filipeximenes@gmail.com

https://github.com/filipeximenes

Twitter: @xima

Fernando Rocha:

http://about.me/fernandogrd

 

 

O que achei do Welcome to the Django e que você deveria saber

python-django

Esse texto é baseado a a partir das experiências que tive durante o percorrer do curso.

A inspiração do texto será em divulgar pontos que acredito serem muito importantes que foram aprendidos e reforçados, no qual fazem uma enorme diferença para quem deseja conhecer Python e Django. Fiz o curso pois desejava aprender Django de forma rápida e prática, e como mesmo disse em minha entrevista sobre minha dificuldade em aprender, o curso se tornou uma escolha natural, pensando dessa forma me inscrevi sem pestanejar.

O curso se resume a desenvolvimento ágil na prática, mostrando as facilidades que o Django oferece para criar aplicações rápidas, através de baby steps, ou seja, pequenas metas a serem cumpridas pouco a pouco, entregando apenas o mínimo, sempre incrementando de acordo com as necessidades que surgem durante o projeto.

Criar aplicações rápidas com entregas contínuas e incrementais é fundamental para que seu cliente obtenha uma aplicação básica, contendo informações importantes para que dê andamento ao projeto. Você já viu aquelas páginas que contém apenas informações como telefone, e-mail e alguns contatos? E logo depois o site foi liberado com diversas outras funcionalidades? É isso aí que estamos falando, e você não achou legal isso?

Isso realmente é um ponto importante, muitas vezes criamos algo que contém diversas funcionalidades que não serão necessárias, pesando o projeto, comprometendo o tempo e planejamento, encarecendo e dando mais trabalho para dar manutenção. Essa ideia é baseada em Extreme Programming, entregar projetos rápidos que atendem as necessidades imediatas dos clientes. Veja essa palestra bacana do Henrique que comenta um pouco sobre isso.

Vamos falar sobre alguns pontos que aprendi e que achei importantes:

Ter um ambiente bem preparado é indispensável

Ter as ferramentas corretas faz uma enorme diferença, umas das maiores dúvidas para quem está começando a programar é sobre quais IDE’s escolher, mas o que é controverso e engraçado é o quanto mais você se aprofunda sobre programação, mais coisas simples desejará.

Vamos explicar melhor: “Não se preocupe com a ferramenta inicialmente, a melhor ferramenta será aquela que você se sentir confortável e que atenda hoje as suas necessidades. De acordo com o tempo elas podem mudar, mas serão escolhas naturais e indolores. Aprenda o básico e persista, essa é a chave do sucesso para iniciantes.”.

O uso do Vagrant e Virtualenv fazem a diferença pois isolam suas aplicações e organizam de forma que não se comprometam. De acordo com o tempo seus projetos podem se misturar com as bibliotecas dos outros ou plugins que são agregados, desatualizações e quebras de compatibilidade podem se transformar em um efeito dominó que será difícil consertar.

O Python vem com baterias inclusas

Acredito que esse seja um dos pontos fortes da linguagem, assim como as Gems do Ruby, são bibliotecas já inclusas que enriquecem a experiência, com apenas algumas importações poderá fazer coisas extraordinárias com poucas linhas. Isso não é nenhuma novidade, mas a história contada durante o curso, de minha parte achei engraçada, exemplifica de forma clara os poderes que a linguagem oferece.

Testes são essenciais

Para implementação de novas funcionalidades, é necessário que o sistema pronto não seja comprometido, para que você não tenha que ficar testando suas aplicações na mão, os testes servem para que se mantenha em pleno funcionamento. Testes em sua grande parte são lindos na teoria, mas são chatos na prática, por isso que muitas pessoas não gostam deles ou falam mal, erros e travamentos são frequentes e tiram a paciência, mas a recompensa posterior é reconfortante.

A comunidade é fundamental

Se existe algo que me faz gostar da linguagem é a comunidade, mas porque eu e outros repetem frequentemente isso? Por que se você tem dificuldade existem pessoas dispostas a te ajudar, compartilhar ideias e conhecimento. Para quem está começando, ter uma boa quantidade de material para consulta é fundamental para não travarmos e perdermos o pique. Já escrevi um artigo falando sobre aonde encontrar respostas as suas dúvidas, isso são apenas alguns, existem diversos outros.

Conhecer gente nova, novas tecnologias e ideias é algo fora do comum, geralmente quem trabalha com tecnologia é movido a novidade e trocas de conhecimento.

Sempre é bom refatorar código

Isso vem da ideia do TDD, porém não é diretamente atrelado. No zen do Python há a citação:

There should be one– and preferably only one –obvious way to do it.”, quer dizer, deverá haver apenas uma forma óbvia para fazer tal coisa, e de forma mais simples possível, e devido as diversas formas que a linguagem permite que sejam criados seus códigos, deverão ser enxugados pouco a pouco até que fique satisfatória.

Se você deseja um curso aonde se aprende na prática, no qual seu projeto é posto no ar de forma simples e rápida, indico o curso. Acredito que tendo uma base de programação, saber sobre Git, controle de versão e TDD farão as aulas serem mais produtivas, claro que se não souber dessas coisas previamente não irá comprometer o andamento do curso.

O curso não indico para quem não tem conhecimento algum sobre programação.

COMO ASSIM, ERIC?

Não se espante, falei aquilo acima para chamar sua atenção, se você não conhece nada dá para acompanhar tranquilamente o curso, porém o foco não é para você.

Por que? O intuito do curso é uma injeção de Python e Django, ou seja, lógica de programação que é algo fundamental não é abordado aprofundadamente. Como o curso aborda desenvolvimento ágil, e são aulas ‘curtas’, infelizmente não há tempo para abordar esses tópicos, mas dentro do grupo de estudos você pode sem problemas solicitar aos seus colegas e também ao Henrique, fontes de estudo e referências das quais você pode estudar para companhar, e também esse tópico pode ser facilmente aprendido dentro de 1 semana com 1 hora de estudo diário, isso se você já não aprendeu alguma coisa na faculdade.

O diferencial do curso é ser completo, abordando desde a instalação do Python, criação do ambiente de desenvolvimento, testado, com exercícios para casa, suporte tanto do professor como dos outros alunos e colocando sua aplicação no ar, que é bem legal. Repleto de dicas e fontes de estudo, e ex-alunos sempre indicando muito bem. Conheci um que refez o curso por questões de atualização e por gostar do método de ensino.

Se você é ex-aluno, diga nos comentários suas observações, se não ainda não foi e tem interesse, faça sua pergunta tanto sobre o curso quanto sobre Python.

Para mais informações, acesse: http://welcometothedjango.com.br/

Gostaria de agradecer ao Henrique Bastos que me ajudou dando dicas e sugestões sobre os tópicos que podia abordar, todas as considerações do texto são minhas.

Boa viagem Djangonalta!