5. 09.
Contextualizando…
Hoje recebi um email de Swaroop C. H., autor do livro “A Byte of Python”, avisando que o texto foi atualizado para contemplar as mudanças que virão com o Python 3. O aviso foi endereçado a mim porque, há algum tempo, fui a primeira pessoa a se voluntariar para traduzir a obra para o Português Brasileiro. Na época, cheguei a abrir o projeto de tradução para o público, mas ainda assim o trabalho evoluiu devagar. Acredito que o processo de tradução ficou mais complicado que o necessário, o que deve ter afugentado algumas pessoas. Algum tempo depois, Samuel Dias Neto tomou a dianteira e fez um ótimo trabalho, disponibilizando a tradução completa do livro.
Dessa vez, a nova versão do livro foi disponibilizada originalmente em formato de wiki, o que vai facilitar o processo colaborativo de tradução para diferentes idiomas. Ainda pensando nisso, o autor também modificou a licença, que continua Creative Commons, mas ficou ainda menos restritiva, passando de Attribution Non-commercial Share Alike (by-nc-sa) para Attribution Share Alike (by-sa).
E onde eu quero chegar?
Como trata-se de um texto voltado principalmente para iniciantes absolutos tanto em Python quanto em programação, nunca é demais tê-lo disponível em nosso idioma. Para isso, vamos aproveitar a proximidade da chegada de Python 3 e tentar (novamente) traduzir o livro. Dessa vez, vou tentar utilizar a abordagem mais simples possível, apenas para dar visibilidade aos voluntários sobre quem está traduzindo/revisando o quê.
Como contribuir com a tradução
Bastam três passos simples:
- Ter uma conta no Google para poder editar a planilha de controle
- Mandar um email para abop-ptbr (at) rodrigoamaral (dot) net, para que eu possa dar permissão de escrita na planilha
- Escolher um ou mais capítulos para traduzir ou revisar, colocando seu nome na coluna correspondente e editando a coluna de status para indicar a situação atual do capítulo
Depois, é só criar uma conta no wiki seguir o Translation Howto, acessar o índice da tradução em português brasileiro, clicar no capítulo desejado e colocar a mão na massa, lembrando sempre de atualizar na planilha o status do capítulo quando o trabalho estiver terminado.
Preparar… Fogo! Apontar…
Simples assim. A idéia é ir ajustando o projeto da tradução de acordo com as necessidades que surgirem. Para isso, conto com a colaboração de quem já tenha experiência em outras traduções para contribuir com dicas e sugestões, que poderão ser enviadas para o email acima ou postadas nos aqui nos comentários. O mesmo vale para as dúvidas.
Bom final de semana a todos!
Leia também
16. 08.
A natureza maleável do software muitas vezes traz a sensação de que ele pode ser produzido quase que instantaneamente. Embora esse sentimento seja justificável, escrever software de qualidade, para durar o tempo necessário para agregar valor para seus usuários, leva tempo. Às vezes mais do que todas as partes interessadas desejariam.
Independente de qual seja a definição de pronto da equipe de desenvolvimento, a construção de cada parte do software deve demorar o tempo suficiente para satisfazê-la. Um determinado time de desenvolvimento, por exemplo, poderia adotar a seguinte convenção para considerar que uma funcionalidade está pronta:
- Testes unitários e de integração realizados
- Deploy em servidor de demonstração/homologação
- Funcionalidade pronta para testes de aceitação
Mesmo com poucos itens, a lista acima requer uma boa dose de esforço para se alcançar. Na verdade, em muitos casos é comum aceitar como “pronta” uma funcionalidade que acabou de ser codificada. Tal prática é nociva para qualquer processo de desenvolvimento, uma vez que, além de comprometer a qualidade do produto, impossibilita a correta medição de esforço e prejudica as estimativas para projetos futuros.
Os métodos ágeis prevêem algumas práticas e princípios para disciplinar esse aspecto do desenvolvimento. Ao definir iterações curtas, na verdade estamos tentando garantir que o escopo para a iteração seja cuidadosamente escolhido, de modo a forçar a decomposição em atividades atômicas o suficiente garantir que cada uma seja executada por completo. Ao trazer o cliente para perto da equipe, facilitamos sua compreensão de que é importante que todos os passos previstos para completar uma funcionalidade sejam realizados na íntegra.
Ou seja, o produto estará pronto quando estiver pronto.
Os textos e livros a seguir discorrem com mais detalhes sobre o assunto:
- Building a definition of done
- Cuidando para o que o software não apodreça
- Scrum and XP from the trenches
- The Pragmatic Programmer
Leia também
9. 08.
Nos dias 18, 19 e 20 de setembro acontecerá a quarta edição da PyConBrasil, o maior evento brasileiro da comunidade Python. Este ano, o encontro será sediado na Universidade Veiga de Almeida, no Rio de Janeiro. Durante os três dias, várias palestras sobre diversos temas do mundo Python serão ministradas por grandes nomes da comunidade brasileira. É esperada também a ilustre presença de Bruce Eckel. Infelizmente, será mais um ano em que não poderei me deslocar até o evento, mas meu planejamento para a PyConBrasil 2009 começa desde já!
Informações Importantes
Mais detalhes podem ser encontrados no site do evento.
Leia também
2. 08.
A internet proporcionou uma ampliação do potencial de difusão de conhecimento sem precedentes na história. Nos dias de hoje, é virtualmente impossível que até mesmo o aspecto mais obscuro de qualquer assunto não possua referências na rede. Ainda assim, muitas vezes existe a necessidade de buscar ajuda e tirar dúvidas em comunidades, fóruns, listas de discussão ou salas de chat.
No entanto, especialmente em fóruns técnicos, é necessário adotar a postura adequada para que as dúvidas tenham chance de ser resolvidas por mais pessoas. É justamente por se tratar de pessoas - e não de máquinas - que a abordagem deve facilitar a vida de quem vai responder. Para isso, a pergunta precisa ter algumas características fundamentais:
- Detalhes do que se está tentando fazer ou do problema a ser resolvido. A menos que a pessoa esteja fisicamente a seu lado, não há como adivinhar detalhes como configuração de hardware, sistema operacional utilizado, versão dos aplicativos ou linguagens, entre outros aspectos que podem fazer toda a diferença entre uma resposta precisa, uma resposta vaga ou resposta alguma. Além disso, evite esconder seu código. Acredite: existem mais chances de você ganhar duas vezes na mega sena acumulada do que as de seu código ser inédito.
- Descrição pormenorizada do que está dando errado. Muitas vezes o próprio erro fornece indicações de como resolvê-lo. É comum vermos frases como “tentei executar o trecho de código X, mas deu erro”. Tudo bem, mas que tipo de erro? O que aconteceu? Havia alguma mensagem?
- Indicação do resultado esperado. Não é raro tentarmos resolver um problema pelo caminho mais difícil simplesmente por não saber que havia uma alternativa mais fácil. Se você concentra sua pergunta em “como estou fazendo” ao invés de “o que eu preciso obter”, pode estar perdendo uma chance de economizar tempo e de aprender algo novo.
- Identificação de quem está perguntando. Essa talvez não seja tão fundamental assim, mas considero importante do ponto de vista de humanizar a interação, principalmente quando se está em um meio profissional. Afinal, na internet ninguém sabe que você é um cachorro.
Há alguns anos, Eric Raymond escreveu um artigo chamado How To Ask Questions The Smart Way. Nele, o ilustre programador detalha esses e outros pontos importantes na hora de perguntar. O artigo também está disponível em português brasileiro. Outra boa fonte de dicas é o wiki da comunidade Python Brasil, na página AntesDePerguntar. Apesar de dar ênfase a perguntas para a Python Brasil, os princípios apresentados se aplicam a qualquer comunidade técnica.
Em suma, é primordial ter respeito pelo tempo alheio. Embora a maioria das pessoas tenha boa vontade para ajudar, elas o fazem voluntariamente e, assim como você, também têm seus compromissos. Além disso, bom senso, bons modos e humildade para acatar as orientações também contam pontos na hora de obter boas respostas. Afinal, só pergunta quem ainda não sabe e só se aprende perguntando.
Leia também
8. 07.
Há algum tempo a Sun contratou dois pythonistas renomados para aproximá-la da linguagem. Uma conseqüência natural dessa aproximação seria o suporte a Python em sua IDE NetBeans . Na verdade, a iniciativa já vinha de antes do recrutamento de Ted Leung e Frank Wierzbicki . O projeto NBPython , iniciado por Allan Davis , ganhou o auxílio dos dois novos colaboradores e uma versão inicial já está disponível para quem quiser testar. Por enquanto, o plugin só funciona em nightly builds , já que está em fase inicial de desenvolvimento.
Outra boa notícia vinda da Sun é o lançamento de seu Python Developer Center . O site ainda tem pouco conteúdo, mas não deixa de ser mais uma oportunidade de divulgar Python e seus frameworks para um público que, via de regra, ainda não despertou para o fato de que existe vida além do Java.
Referência: Python in NetBeans: NBPython
Leia também
3. 06.
O programa foi alterado para contemplar as modificações realizadas no site da Bovespa, que tinham inutilizado a versão anterior. Espero que seja de alguma utilidade para quem acompanha a Bolsa. Em breve pretendo soltar um novo release contendo também uma nova versão da interface gráfica, com mais funcionalidades. Postem suas críticas, dúvidas e sugestões nos comentários.
Download: bovespa-utils-0.0.2.tar.gz
Leia também
6. 05.
Google apresentou ontem alguns novos incrementos de funcionalidade ao seu Google Reader . Particularmente, um dos novos recursos vinha fazendo muita falta: a possibilidade de anexar uma nota pessoal a um item compartilhado. Além disso, agora também é possível:
- Compartilhar um item sem a necessidade de assinar o feed previamente, através do bookmarklet Note in Reader , encontrado na seção "Your stuff > Notes"
- Postar uma nota sem anexá-la a algum item
- Personalizar a página de itens compartilhados
Mais detalhes sobre as mudanças podem ser conferidos em Share anything. Anytime. Anywhere.
Leia também
2. 05.
- Scrum and XP From The Trenches (PDF) - Relata experiências reais da aplicação de Scrum e XP em ambientes de desenvolvimento. Mostra dicas e armadilhas aprendidas na prática em projetos bem sucedidos. Apesar de ser gratuito, é necessário um rápido cadastro para baixar o PDF.
- Getting Real (online) - Livro composto de 91 ensaios agrupados em 16 capítulos sobre como abordar o desenvolvimento de software com foco em simplicidade, agilidade e entrega de resultados tangíveis e com real valor agregado para o cliente.
- Methods and Tools (PDF) - Periódico trimestral sobre métodos e ferramentas para desenvolvimento de software. Costuma trazer bons artigos sobre diversas perspectivas do desenvolvimento ágil.
- Scrum Checklists (PDF) - Uma compilação de listas de ações que devem ser tomadas para a implementação de Scrum. Serve como mapa para quem está começando a adotar a metodologia em sua equipe. Também requer cadastro para realizar o download.
- Essential Skills for Agile Development (PDF) - Focado nas características essenciais do desenvolvimento ágil, o livro traz exercícios e exemplos de aplicação de métodos ágeis no mundo real.
Leia também
24. 04.
A última edição da revista Exame traz um artigo que ilustra a importância do foco nas necessidades do cliente. O texto fala sobre como aparelhos como o ASUS Eee PC, a câmera filmadora Flip Video e o Nintendo Wii vão direto ao ponto quando se trata de concentrar a experiência do uso naquilo para o que as pessoas gastaram seu dinheiro, sem obstáculos e sem rodeios. Parece algo óbvio de se imaginar, mas apenas até o momento em que paramos para contar quantos dos produtos que temos em casa já tiveram todas as suas funcionalidades plenamente utilizadas.
Apesar de destacar produtos de hardware que vêm conquistando mercado por sua simplicidade, a essência da matéria poderia muito bem ser aplicada a produtos de software. Será que as aplicações que estamos construindo não estão sofrendo de uma doença chamada “featurite”? O que motiva essa tendência ao aumento de funcionalidades a cada versão?
Muito provavelmente nossos clientes utilizam nosso software para fazer apenas duas ou três coisas, certamente menos do que imaginamos a princípio. Por isso é importante que essas coisas saiam realmente bem feitas. O usuário precisa se sentir bem, se sentir esperto, ter certeza de que ele é “o cara”.
Referência: O triunfo do low tech , por Denise Dweck
Leia também
15. 04.
O uso de teclas de atalho da IDE ou editor favorito é um dos maiores fatores de aumento de produtividade no desenvolvimento. A IDE Eclipse proporciona uma infinidade de atalhos de teclado capazes de economizar muito tempo (e movimentos) do desenvolvedor. A maioria dos atalhos apresentados aqui são específicos da perspectiva Java do Eclipse e tentam abranger as operações mais efetuadas durante a manutenção de código, uma vez que é comum gastarmos mais tempo nessa fase do que na criação da primeira versão de cada componente de código.
Busca
- Ctrl+Shift+R
Busca e abre rapidamente qualquer item do projeto, seja ele uma classe, arquivo XML, arquivo de properties, bytecode etc. - Ctrl+T
Mostra a hierarquia da classe atual, permitindo abrir rapidamente qualquer classe da hierarquia. - Ctrl+H
Abre a janela de pesquisa nos arquivos do workspace. Nela é possível procurar tanto por trechos textuais nos arquivos, quanto por referências a elementos da linguagem como tipos, métodos, pacotes, atributos etc. - Ctrl+J
Busca incremental no arquivo aberto. O cursor é posicionado no trecho de código correspondente à medida em que o programador digita o termo de pesquisa. - Ctrl+Alt+G
Pesquisa no workspace por todas as ocorrências do elemento sobre o qual o cursor está posicionado.
Navegação no código
- Alt+Left
Volta para a última posição editada. - Alt+Right
Avança para a próxima posição editada. - Ctrl+O
Mostra a estrutura (outline) do arquivo que está sendo editado e permite navegar até declaração selecionada. - Ctrl+G
Localiza a declaração da classe, interface, atributo ou método selecionado. - Crtl+Shift+G
Localiza todas as referências à classe, interface, atributo ou método selecionado existentes no workspace. - Ctrl+3
Navegação rápida. Navega entre todos os itens abertos em todas as views e perspectivas abertas no momento. Novo no Eclipse 3.3 .
Organização do código
- Crtl+Shift+F
Formata automaticamente o trecho de código selecionado de acordo com as configurações definidas em Window > Preferences > Java > Code Style > Formatter - Crtl+Shift+O
Organiza os imports do arquivo aberto, removendo as declarações desnecessárias.
Depuração
- Ctrl+1
Invoca a funcionalidade de reparo rápido (quick fix) quando o compilador acusa algum erro. O reparo rápido consiste em um pop-up com uma lista de sugestões de modificação que são aplicadas automaticamente ao selecionar. - Ctrl+Shift+I
Inspeciona o valor das variáveis enquanto ocorre a depuração. Disponível apenas na perspectiva Debug.
Refactoring
- Alt+Shift+R
Renomeia o elemento. - Alt+Shift+L
Extrair para variável local. Atribui a expressão selecionada a uma váriavel. - Alt+Shift+M
Extrair método. Cria um novo método contendo o trecho de código selecionado.
Configuração
- Ctrl+Shift+L
Mostra a lista de atalhos de teclado. - Ctrl+Shift+L duas vezes
Abre a tela de personalização de atalhos de teclado.
Rodrigo Amaral