Um pouco sobre como fazer a diferença

Para quem acompanha as comunidades de desenvolvimento ágil no Brasil, o trabalho de Vinícius Teles dispensa apresentações, mas dessa vez ele se superou! Muito inspiradores os slides de sua apresentação na última edição do PythonCampus. Aliás, não é de hoje que todo o pessoal da PythOnRio, do Dojo Rio e comunidades afins vem fazendo um trabalho exemplar e digno de admiração. Eu mesmo me tornei fã dos caras. Estão todos de parabéns!

Vale compartilhar:

Começando um user group: a experiência do PUG-PE

Recentemente, surgiu uma thread da lista de discussão da comunidade Python Brasil cujo autor solicitava dicas e sugestões sobre como iniciar e movimentar um grupo de usuários local. Muitas pessoas deram sua opinião, o que me fez notar que nem todo mundo costuma divulgar seu ponto de vista sobre o assunto. Por isso, resolvi compartilhar um pouco da minha experiência com o PUG-PE, o Grupo de Usuários Python de Pernambuco. Antes de mais nada, quero deixar claro que não tenho a intenção de esgotar o assunto, até porque estamos todos em contínuo processo de aprendizado. O relato a seguir é simplesmente fruto da necessidade de documentar a iniciativa. Afinal, small acts make great revolutions!

O início

No início de julho de 2007, comecei a perceber que as pessoas interessadas em Python no Recife estavam muito isoladas, apesar de saber que havia iniciativas importantes envolvendo tanto o uso quanto o ensino da linguagem algumas instituições locais. Entrei em contato com alguns participantes da lista de discussão nacional que já haviam mencionado residir em Pernambuco, para ver se seria uma boa ideia criar uma lista de discussão e tentar reunir os usuários locais de Python em torno dela. Diante do retorno positivo, criei a lista e divulguei na comunidade Python Brasil. Em pouco tempo, começaram a surgir as solicitações de participação e no intervalo de uma semana já eram mais de 15 membros.

A primeira tentativa

A empolgação do início nos motivou a marcar rapidamente a primeira reunião presencial. Se de todos os inscritos na lista uns quatro ou cinco comparecessem, já teríamos o que comemorar. Para quebrar o gelo – afinal quase ninguém se conhecia pessoalmente – optamos por um encontro informal num restaurante do Recife, numa noite de meio de semana. Infelizmente, por uma grande coincidência, todas as outras pessoas que haviam confirmado presença tiveram contratempos de última hora e acabei indo sozinho ao “não-encontro”.

Depois de passado algum tempo, encaramos esse pequeno tropeço como um lição aprendida, que nos prepararia para o que poderia vir pela frente. Pessoalmente, entendi o episódio como uma métrica do quanto ainda precisávamos maturar a ideia do grupo de usuários. Talvez, se tudo tivesse dado certo na naquela primeira tentativa, não teríamos nenhuma experiência para relatar hoje. Decidimos dar tempo ao tempo.

Um breve hiato

Durante algum tempo, a lista de discussão se limitou a funcionar como um mural de anúncios de eventos relacionados a software livre, com um ou outro pedido de ajuda com alguma tarefa de programação em Python. De vez em quando surgiam interessados em realizar o tão sonhado encontro presencial. Sempre incentivei a todos, me colocando à disposição para o que fosse necessário, mas deixando claro que não iria tomar a iniciativa de organizar o encontro sozinho novamente. Não tinha certeza se essa seria a melhor maneira de lidar com a situação, mas na hora me parecia a única saída para evitar um novo eventual “fogo de palha”.

A retomada

O grupo continuou assim até meados de janeiro de 2010, quando o Marcel Caraciolo ingressou na lista após fazer o que eu tinha feito lá em 2007: procurar por algum grupo local de Python antes de tentar iniciar um por conta própria. Era a fagulha de iniciativa que faltava para impulsionar o funcionamento do grupo pra valer. Percebi que o catalisador trazido por Marcel era algo simples, mas extremamente importante para um grupo de usuários de tecnologia: uma rede de contatos no meio acadêmico. A partir daí, aconteceu um crescimento impressionante no número de membros da lista de discussão. A quantidade de participantes praticamente dobrou em menos de um mês, alcançando quase 100 pessoas. Chegava o momento de fazer uma nova tentativa de reunir o pessoal.

Os encontros

Com um massa crítica razoável de pessoas interessadas a atuantes, ficou mais fácil concretizar o objetivo de realizar a primeira reunião presencial. Uma ferramenta importante no processo de organização dos encontros foi o uso de enquetes para auxiliar na tomada de decisões. Com elas foi possível verificar com antecedência qual o dia da semana, horário e local que atenderia a maior parte das pessoas. Desde então, temos conseguido realizar encontros mensais em manhãs de sábado, no Centro de Informática da UFPE.

Tem sido uma experiência gratificante ver a quantidade de participantes e a qualidade dos encontros aumentar a cada mês. Na última edição, em abril de 2010, contamos com a presença de cerca de 40 pessoas, número que eu jamais poderia imaginar que pudesse ser alcançado tão rápido. Muito bom também perceber que o pessoal já começa a não mais esperar ou perguntar o que pode ser feito para ajudar: vai lá e toma a iniciativa de reservar sala para os encontros, avisar aos amigos que ainda não conhecem e assim por diante.

As lições aprendidas

Não existe receita de bolo nem fórmula mágica para iniciar um grupo de usuários. Até mesmo a experiência que tenha servido para um grupo pode não servir para outro. Os motivos para isso são os mais diversos, desde o perfil dos interessados, até as diferenças culturais de cada região. No entanto, nunca é demais registrar e compartilhar as lições aprendidas, pois pode ser o detalhe que esteja faltando para alavancar o funcionamento de um grupo.

  • Não tente promover uma reunião informal demais logo na primeira tentativa. É normal que situações muito descontraídas sejam um pouco intimidantes quando as pessoas ainda não se conhecem pessoalmente, o que é ainda pior se o grupo inicial for composto por muitos principiantes. Geralmente as pessoas com esse perfil são atraídas pela expectativa de que vão ser expostas a algum conhecimento novo, a ser transmitido por pessoas mais experientes.
  • Aproxime-se do ambiente acadêmico. Os universitários, principalmente dos períodos iniciais, costumam ser muito receptivos a novidades ou a algo que os indique um caminho a seguir, tanto na graduação, quanto na vida profissional. Além disso, a parte da logística também fica mais simples, já que o acesso a recursos e espaço físico adequados é mais fácil.
  • Tenha paciência e avance em baby steps. Introduza ideias e novidades gradualmente e aguarde um pouco para observar o feedback. Às vezes uma ideia que parece boba desperta muito mais interesse naquele determinado momento do que algo que você considere genial.
  • Aprenda a conviver com a diversidade. As pessoas têm graus de interesse diferentes por diferentes atividades. Não é porque você está disposto a despender muita energia e tempo no grupo de usuários que todos têm a obrigação de fazer o mesmo.

Ainda temos muito o que aprender e várias coisas a realizar, mas acredito que o mais difícil foi vencer a inércia. Períodos de altos e baixos virão pela frente, mas certamente estamos cada dia mais preparados para manter a cabeça fora da água.

Se você tem alguma experiência parecida ou mesmo alguma dica complementar, seria ótimo vê-la compartilhada nos comentários!

Introdução ao Google App Engine

No último encontro do PUG-PE, apresentei uma rápida introdução ao Google App Engine. A finalidade era mostrar como até mesmo desenvolvedores iniciantes podem disponibilizar uma aplicação web de forma fácil e rápida. O feedback dos presentes foi muito positivo. Fiquei bastante satisfeito em ver que muita gente correu para experimentar o App Engine assim que chegou em casa. Portanto, missão cumprida!

Download direto

Código-fonte do exemplo

CategoriasPython Etiquetas: , , ,

Pragmatic Thinking and Learning

Pragmatic Thinking and Learning: Refactor You WetwareEm tempos de mundo interconectado e informação instantânea, uma das habilidades mais valorizadas entre profissionais de diversas áreas é a capacidade de aprendizado. Sendo assim, “aprender a aprender” deveria ser um dos primeiros objetivos de qualquer pessoa que deseja desempenho pleno, seja em sua profissão, seja em seus projetos pessoais. Pensando nisso, Andy Hunt reuniu em Pragmatic Thinking and Learning um conjunto de práticas e técnicas para refatorar nosso wetware, analogia usada pelo autor para aproximar os processos do pensamento humano de um modelo computacional.

O objetivo do livro é mostrar como fazer a transição do modo de pensar de um novato para o modo de pensar de um expert. O texto é basicamente voltado para desenvolvedores de software, mas as técnicas apresentadas são úteis para qualquer ramo de atuação. Nada mais natural, já que todos temos um cérebro que pode ter seu desempenho melhorado por meio de alguma “malhação” e meia dúzia de novos hábitos.

O caminho entre o novato e o expert

O autor cita o Modelo Dreyfus de aquisição de conhecimento para definir o mapa que deve ser trilhado para nos tornarmos experts em nossas respectivas áreas de atuação. Para chegar lá, é preciso percorrer um espectro que vai da necessidade de obediência quase cega a regras e receitas pré-definidas, em um extremo, até um modo de pensar que é fundamentalmente calcado na intuição, no outro. Além disso, a proficiência também pode ser medida em termos da capacidade de contextualizar informações e tomar decisões de acordo com cenários específicos. Nesse processo, é fundamental que o aprendizado aconteça por meio de observação e imitação, como fazem tão bem as crianças ao tomar como modelo o comportamento das pessoas que as cercam.

Conhecer seu cérebro

A comparação comum entre o cérebro humano e um computador é sedutora, mas não passa de uma metáfora. Não somos programáveis e sequer conseguimos executar a mesma ação da mesma maneira mais de uma vez. Ainda assim, para fins didáticos é conveniente imaginar o cérebro como uma CPU de núcleo duplo. Um dos núcleos por ser equiparado a uma máquina de Von Neumann, responsável pelo pensamento linear, pela lógica e pelo processamento da linguagem. O outro é mais parecido com um processador digital de sinais, responsável por busca e reconhecimento de padrões, ainda que não diretamente relacionados entre si. O primeiro é chamado de modo-L (modo linear) e o segundo de modo-R (modo “rico”).

Em linhas gerais, podemos dizer que o modo-R cuida da intuição e criatividade necessárias para resolver os problemas, enquanto que o modo-L é responsável por cuidar dos detalhes para materializar a solução. Como o modo-R é imprevisível e difícil de ser domado, é importante contar com alguma ajuda para capturar inspiração e ideias assim que elas surgem. Caderno-e-caneta, dispositivos portáteis ou cartões de anotações servem como uma espécie de armazenamento auxiliar de memória para essas ocasiões.

Recrutar o lado direito

Existem algumas técnicas que podem ser utilizadas para ajudar a conseguir mais “potência” mental. Essas técnicas envolvem o estímulo ao lado direito do cérebro (modo-R, o da intuição e criatividade) para que seja possível contar com sua ajuda para trabalhar em conjunto com o lado direito. Uma dessas técnicas consiste em tentar representar determinada ideia ou conceito usando mais sentidos que o usual. Além de descrever verbalmente a ideia, podemos tentar representá-la em forma de desenho ou através de algum modelo manipulável, tal como peças de Lego, por exemplo.

Outro recurso útil para engajar o modo-R é exercitar a criação de metáforas para facilitar a representação de conceitos abstratos ou de de difícil compreensão. Boas metáforas são valiosas e conseguir criá-las é um importante passo para a resolução de problemas complexos. Uma ferramenta para ajudar na criação de boas metáforas é cultivar o humor: pensar em trocadilhos e piadas que envolvam palavras com mais de um significado estimula o surgimento de metáforas em potencial.

Depurar a mente

Embora usar nossa intuição seja algo fantástico, às vezes ela pode nos enganar. Esses bugs no nosso modo de pensar são conhecidos como propensões cognitivas e nos fazem, muitas vezes, deixar a imparcialidade de lado ao tomar decisões. A lista de propensões cognitivas é extensa, mas vale a pena conhecer algumas se quisermos aperfeiçoar nossa capacidade de fazer escolhas de maneira clara. Outro aspecto que merece atenção é a afinidade que temos com as características comuns à nossa geração e como esses valores podem ser conflitantes ao lidar com pessoas de gerações diferentes.

Aprender deliberadamente

Nos dias de hoje, podemos considerar que nossa habilidade de aprender é um dos fatores mais importantes para determinar se nossas ações e projetos têm chance de sucesso. Neste capítulo, o autor sugere a criação de um “plano de investimentos” em aprendizado, que funcionaria de forma similar a um plano de investimentos financeiros. O plano consiste em objetivos e metas que devem ser atingidos de forma que se possa perceber seu progresso. Para tanto, podemos fazer uso de técnicas de aprendizagem que envolvem uma maneira mais efetiva de ler material escrito, sumarizar e relacionar conhecimentos e aprender ensinando.

Ganhar experiência

A experiência é o pavimento do caminho entre o iniciante e o expert em qualquer atividade. No processo de conquistar experiência, é inevitável cometer erros. Por isso, é importante incluir a falha como um elemento comum ao aprendizado. Para que isso seja possível, precisamos criar um ambiente em que possamos explorar e experimentar com liberdade e no qual tenhamos como receber feedback sobre nossos erros.

Gerenciar a concentração

A enxurrada de informações a que somos submetidos diariamente vem criando uma dificuldade inédita: não somos mais capazes de nos concentrar adequadamente ao realizar grande parte de nossas atividades. Nossa mente vive acelerada e em constante mudança de foco. Uma das técnicas sugeridas pelo autor para reduzir nosso “burburinho mental” é cultivar o hábito da meditação, cujos benefícios são comprovadamente eficazes. Além disso, também é necessário preparar nosso ambiente de trabalho de modo a evitar distrações e otimizar o contexto da atividade que estivermos realizando.

Conclusão

Pragmatic Thinking and Learning é uma daquelas obras que tem a capacidade de mudar a maneira como percebemos o mundo. Aliás, essa é uma das características das coisas que nos fazem ganhar experiência: se nada mudou em sua cabeça depois de terminar um livro, um filme, uma música ou qualquer outra atividade (um emprego, por exemplo), não dá para contar como experiência de fato. De forma simples, empolgante e bem-humorada, Andy Hunt ensina como abrir caminho para explorarmos todo nosso potencial de pensar, aprender e aplicar os resultados, germinando as sementes para a inovação e a excelência. Livro recomendadíssimo para comprar e manter por perto.

Livros livres ou gratuitos na web

Sou fã de livros impressos – ou feitos de árvores mortas, como preferem alguns – mas às vezes comprar um livro pode ser um investimento alto demais quanto o que queremos é apenas uma referência rápida para um determinado assunto. Nesses casos, existem incontáveis fontes gratuitas de conhecimento, incluindo aí os livros online ou em formato digital.

Abaixo seguem alguns livros que já me foram muito úteis, tanto como fonte de referência constante, quanto por trechos que provocam aquele chamado “estalo” e nos fazem enxegar o assunto de uma maneira completamente nova. Alguns dos livros estão disponíveis em para download em PDF, enquanto outros apenas em HTML.

Python

Projeto de Software

Métodos Ágeis

Produtividade Pessoal

  • The Pomodoro Technique, por Francesco Cirillo (pretendo falar mais sobre esta técnica em outra oportunidade!)

Ciência da Computação

Linux

Estes foram os que consegui lembrar rapidamente. A intenção é atualizar esse post à medida que for lembrando de mais livros, para servir como referência futura.

Conhece outros livros? Compartilhe as indicações nos comentários!

CategoriasLivros Etiquetas: , , , ,

Como fazer apresentações eficientes

Não tem a menor paciência para apresentações, palestras, treinamentos ou assemelhados que usam aqueles slides com listas intermináveis de tópicos? Nem com aquelas com mais texto do que a Bíblia e, de quebra, com o apresentador lendo todo o conteúdo dos slides? Então, muito cuidado para não fazer o mesmo quando for a sua vez. Aprenda as principais características para montar apresentações que comunicam e dão resultado:

Link para a apresentação (via Saia do Lugar).

Novo App Engine SDK na rua

A versão 1.2.8 do Google App Engine SDK já está disponível para download. O novo release traz muitas melhorias no serviço de Task Queue e no Admin Console, além de várias pequenas correções.

Para mais detalhes:

CategoriasPython Etiquetas: ,

Verificando a versão do Django

Quando estamos usando um computador desconhecido ou simplesmente não conseguimos lembrar qual a versão do Django que está instalada, é sempre útil descobrir do jeito mais rápido possível. Para resolver o problema com uma única linha de comando no shell, temos:

$ python -c "import django; print django.get_version()"

Para aprender mais:

CategoriasPython Etiquetas: , , , ,

Criando seu próprio planet com o Google Reader

Há algum tempo andei pesquisando uma maneira elegante de montar e publicar um agregador de posts de blogs. A primeira opção, claro, foi fazer o serviço completo: hospedar e instalar uma instância do PlanetPlanet. Mas o custo superaria muito o benefício para a finalidade desejada. Procurei ainda por algum tipo de serviço gratuito de planets. Sem sucesso.

Foi então que lembrei do Google Reader e seu recurso de compartilhamento de feeds (shared items). O Google Reader disponibiliza uma página com todos os posts que o usuário marca como compartilhados (shared). Isso já é algo que lembra um planet, mas ainda não servia para o propósito, pois a ideia era publicar todos os posts de determinados blogs de forma automática, sem precisar de “interferência humana”.

Pesquisando mais um pouco nas configurações e na ajuda do Google Reader, percebi que era possível publicar uma página para cada pasta ou tag existente. Embora não seja possível personalizar o leiaute da página para além dos quatro temas padrão disponíveis, a solução já servia para o intento. Seguem os passos para compartilhar os posts de blogs de uma determinada pasta, assumindo a versão em inglês do Google Reader:

  1. Clicar em Settings
  2. Clicar na aba Subscriptions
  3. Adicionar os feeds do seu “planet” a uma pasta. Caso a pasta ainda não exista, escolha a opção New folder e digite o nome da nova pasta antes de adicioná-los
  4. Com todos os feeds devidamente organizados, clique na aba Folders and tags, selecione a pasta desejada, clique em Change sharing e selecione public
  5. Aparecerão alguns links ao lado da pasta. O link view public page contém o URL do seu novo planet.

A partir daí, é só divulgar para a audência, o que pode ser feito por meio das opções email a link, add a clip to your site ou add a blogroll to your site.

CategoriasProdutividade Etiquetas: , ,

Keeping it simple

Em busca de mais agilidade, a partir de hoje passarei a escrever aqui neste espaço. Percebi que o site pessoal estava sendo subutilizado e, portanto, causando desperdício de recursos. Com isso, vou aproveitar para mudar um pouco a abordagem do blog e passar a partilhar também sobre assuntos de outras áreas de interesse, além do desenvolvimento de software. Então é isso. Bem-vindos a mais um refactoring!

Categoriaspessoal Etiquetas: ,