Categories
Etc.

Que ferramentas você vai usar na hora de programar?

Há uns dois meses estava eu numa madrugada típica brincado de escrever códigos aleatórios, dessa vez usando o Google App Engine. Num determinado momento (acho que eu estava testando o versionamento de deploys – que é lindo demais) fiquei tão empolgado que soltei um daqueles posts meio aleatórios no Twitter dizendo: Google App Engine kicks serious ass!. Muita gente estranhou, incluindo o meu amigo Rodrigo Kumpera que prontamente respondeu: @gchapiewski I thought you used to work for yahoo!.

O mesmo “fenômeno” aconteceu no Yahoo! Open Hack Day que fizemos em São Paulo em março. Muitas pessoas acharam estranho e ficaram abismadas pelo fato do Yahoo! e seus funcionários mostrarem hacks que faziam uso de Google Maps, Twitter, Facebook e outros produtos que não são do Yahoo!.

Vamos lá, qual o problema? Sério mesmo, qual o problema? 🙂 Agora que eu trabalho no Yahoo! tenho que usar Y! Mail ao invés de Gmail? Ou então tenho que programar usando apenas YUI ao invés de jQuery? A política do Yahoo! é muito simples e na minha opinião bem coerente: a Internet está cheia de serviços excelentes e nós também temos alguns ótimos serviços. Porque não combinar o que há de melhor e fazer uma coisa melhor ainda?

Sempre falo isso e já até me falaram que parece meio “piegas”, mas é a pura verdade (e nunca é demais repetir): use a melhor ferramenta para resolver cada problema!

Esse modo de pensar é bem difícil nesse mercado. Muita gente acha que linguagens e tecnologias são como religiões, mas não é o que eu acredito. Não me importo de usar Java se for a melhor opção para resolver meus problemas – apesar de adorar programar em Ruby. Ou de aprender uma nova linguagem/ferramenta se ela se mostrar melhor para resolver alguma coisa (como quando eu precisei aprender ActionScript para fazer coisas legais para o Globo Vídeos – apesar de eu nunca ter tido simpatia por Flash).

Para pessoas da nossa área, acredito em um posicionamento profissional baseado em fatos e dados, não em preferências, traumas ou qualquer outro argumento sem lógica. No caso que comecei a contar no início desse post, eu estava programando um webservice REST em Python e o Google App Engine é o melhor lugar para ele estar hospedado. Aliás, eu usei Python já pensando em fazer o deploy lá, porque é super simples de usar, funciona muito bem e vai me liberar mais rápido para fazer outras coisas interessantes. É óbvio que todos temos nossas preferências de linguagens e tecnologias, mas o papel de um profissional é ser pragmático é fazer o que for mais adequado para cada situação.

Sempre que você está programando você precisa atingir um objetivo. Como eu ouvi falar esses dias, você “não senta e começa a programar igual a um cavalo”, você está desenvolvendo um produto ou alguma coisa maior e precisa ter isso em mente o tempo inteiro. Seu objetivo é entregar um software de qualidade, performático, bem testado, manutenível e que atenda ao seu cliente/objetivo. O seu objetivo não é usar as ferramentas da sua empresa ou as tecnologias que você gosta. Pense nisso.

Categories
Etc.

Mais um blog (agora em inglês)

Há muito tempo tenho pensado em criar um blog em inglês. Muito tempo mesmo. Pra ser mais exato tenho essa idéia desde o fim de 2007. Nessa época num evento internacional fiz um amigo falando sobre um artigo que eu escrevi no meu blog, mas como era em portugês ele teve que ler usando o Google Translate… Teria sido bem melhor se eu sempre tivesse blogado em inglês.

Como eu sou um protelador profissional, fiquei durante todo esse tempo enrolando e inventando várias coisas mais prioritárias que sempre me impediram de colocar essa idéia em prática. Mas agora finalmente foi e o endereço é “http://guilherme.pro“!

Fiquei numa baita dúvida se ia usar esse mesmo blog ou fazer um novo. Por enquanto decidi fazer um novo, mas no futuro posso mudar. Ainda não sei como vou fazer para decidir o que vai entrar nesse blog ou no outro, mas com certeza não vou parar de blogar aqui e nem pretendo diminuir a frequência!

Atualizem seus leitores de RSS com mais esse feed!

Categories
Etc.

2009: ano novo, vida nova

O ano novo é sempre um momento de reflexão e mudanças na vida de muita gente. Comigo não foi diferente. 🙂

Em 2008, por conta do forte movimento para adoção de Scrum aqui na Globo.com, meu blog acabou virando quase que totalmente sobre metodologias ágeis e afins. Por um lado foi muito bom porque durante esse ano pude explorar vários aspectos dessas metodologias e entender profundamente vários motivos e princípios por trás de várias coisas. Por outro lado, acabei falando muito menos do que gostaria sobre minhas raizes… Minha maior especialidade e o que me dá mais prazer é explorar coisas novas, escrever código e desenvolver software. Em 2009 pretendo falar muito mais sobre isso do que qualquer outra coisa.

A segunda mudança é que estou em novos desafios na Globo.com (e por isso ando postando pouco). Depois de dois anos, muitas vitórias e conquistas, no fim de dezembro deixei minha antiga equipe de WebMedia para atuar como evangelista e líder de desenvolvimento de software na Globo.com.

O desafio dessa nova equipe é grande: impregnar a empresa inteira com práticas de desenvolvimento ágil e qualidade de software. Não estamos montando um dos famosos “escritórios de arquitetura” e nem definindo padrões para as equipes trabalharem, mas sim vamos liderar, dar apoio e estimular inovações em desenvolvimento de software, implantar técnicas de desenvolvimento ágil e boas práticas de desenvolvimento e arquitetura de software. Ok, vamos ajudar com processos também, eu assumo – afinal ninguém é de ferro. Para isso tudo vamos fazer vários treinamentos, workshops, vamos trabalhar infiltrados nos times fazendo mentoring com todos os desenvolvedores e sujando a mão de graxa; dentre outras coisas. Traduzindo: diversão garantida e muita história pra contar por um bom tempo!

Já estamos fazendo muitas coisas legais e já começo a ver alguns resultados animadores. Aos poucos vou contando as iniciativas e as novidades!

Categories
Etc.

Não dá pra fazer só mais uma coisinha?

Desde que o mundo é mundo sempre tentam fazer com que nós programadores façamos mais do que nós achamos que é possível. Não importa quanto tempo você leve para fazer uma determinada tarefa, sempre alguém vem com aquela pergunta: mas não dá pra fazer só mais essa coisinha aqui???

O problema é que nem sempre se tem a percepção exata do que essa “coisinha” significa. A cada “coisinha” a mais que se faz é mais uma coisinha para programar, errar, testar, integrar, testar denovo e dar bug em produção.

No último Sprint da minha equipe aconteceu uma coisa muito engraçada. Uma das tarefas era colocar uma imagem de uma determinada forma em um site. Basicamente tratava-se de uma linha simples de código, só que a história não foi priorizada e por isso não entrou no Sprint. De fato parecia ser uma coisa bem simples. Como era só uma linha de código e todo mundo sabia disso, fizeram uma força danada pra empurrar essa história para dentro do Sprint, mas eu fui o chato e repetí umas vinte vezes: é mais uma coisa para testar e dar bug.

Isso foi no início do Sprint. Casualmente, nos dois dias seguintes o time deu um salto e o trabalho ficou muito adiantado. Com isso foi necessário colocar mais umas histórias para o time não ficar sem o que fazer e entre essas histórias estava a tal da linha para colocar uma imagem numa tal posição.

Fim do Sprint, tudo estava testado e o pacote com a aplicação fechado. Quando colocamos o site em produção, das 17 (dezessete) histórias que fizemos adivinha qual foi a única que deu problema??? A maldita “coisinha”, que por causa de uma configuração que só existia no mod_rewrite do Apache de produção não funcionava nem por um milagre! Até descobrir esse problema e resolvê-lo levamos algumas horas, sem contar que manchamos nosso histórico de alguns Sprints sem colocar bugs em produção…

Essas “coisinhas” de última hora nunca são tão simples quanto parecem. No mínimo é mais uma coisa para testar e dar bug em produção. 🙂

Categories
Etc.

Procrastination considered harmful?

Procrastination considered harmful? Not anymore!

No ano passado desobrí um negócio chamado structured procrastination. John Perry, o criador da idéia, explica do que se trata:

I have been intending to write this essay for months. Why am I finally doing it? Because I finally found some uncommitted time? Wrong. I have papers to grade, textbook orders to fill out, an NSF proposal to referee, dissertation drafts to read. I am working on this essay as a way of not doing all of those things. This is the essence of what I call structured procrastination, an amazing strategy I have discovered that converts procrastinators into effective human beings, respected and admired for all that they can accomplish and the good use they make of time. All procrastinators put off things they have to do. Structured procrastination is the art of making this bad trait work for you. The key idea is that procrastinating does not mean doing absolutely nothing. Procrastinators seldom do absolutely nothing; they do marginally useful things, like gardening or sharpening pencils or making a diagram of how they will reorganize their files when they get around to it. Why does the procrastinator do these things? Because they are a way of not doing something more important. If all the procrastinator had left to do was to sharpen some pencils, no force on earth could get him do it. However, the procrastinator can be motivated to do difficult, timely and important tasks, as long as these tasks are a way of not doing something more important.

Structured procrastination means shaping the structure of the tasks one has to do in a way that exploits this fact. The list of tasks one has in mind will be ordered by importance. Tasks that seem most urgent and important are on top. But there are also worthwhile tasks to perform lower down on the list. Doing these tasks becomes a way of not doing the things higher up on the list. With this sort of appropriate task structure, the procrastinator becomes a useful citizen. Indeed, the procrastinator can even acquire, as I have, a reputation for getting a lot done.

Há mais ou menos uns 6 meses decidí adotar gradativamente essas práticas de procrastinação estruturada (ou o certo seria protelação estruturada?). Quanto mais o tempo passa e eu evoluo, mais e mais coisas consigo fazer! Por mais que isso possa parecer uma desorganização total, é muito efetivo.

To-Do listsBasicamente minha única ferramenta é uma lista de coisas a fazer, que procuro manter em ordem de prioridade. Tenho uma meia dúzia de post-its na minha frente com várias coisas que preciso fazer, desde coisas importantíssimas até coisas totalmente supérfluas. Em alguns casos uso até cores para identificar itens mais importantes ou de um certo tipo (como tarefas pessoais ou coisas que se eu não fizer urgentemente posso atrapalhar alguém). Sempre que me lembro de alguma coisa nova, anoto em um post-it e aquilo entra automaticamente na fila. Quando lembro de coisas no meio da rua ou em casa quando estou dormindo, procuro rapidamente anotar em algum lugar para depois poder esquecer tranquilo, e daí quando chego no trabalho eu reorganizo a lista. Ao terminar uma tarefa, simplesmente faço um X do lado para indicar, e de tempos em tempos, faço um refactoring da lista inteira para caber em dois ou três post-its.

Estou bem satisfeito com essa nova forma de trabalhar, porque dessa forma posso tirar o máximo dessa minha característica proteladora! Ultimamente incluí até mesmo tarefas como “ler e-mails” e “blogar” na minha lista, motivo pelo qual só estou blogando depois de quase 3 semanas. Esses últimos dias foram super agitados e minha lista me ajudou a priorizar todas as coisas mais urgentes!

Categories
Etc.

[off-topic] Anonimato: escudo dos covardes

Se tem uma coisa que me deixa revoltado é quando as pessoas vêm aqui no meu blog e me criticam e insultam anonimamente. Eu gosto de críticas, porque elas me fazem refletir e me ajudam a melhorar. As críticas são oportunidades genuínas para que você possa pensar no que está fazendo de errado, se ajustar e evoluir.

O que me deixa revoltado são os comentários anônimos extremamente maldosos e insultos que vocês nem imaginam, que obviamente eu não aprovo. Na boa, isso não pode ser sério. Se alguém não diz o seu nome quando critica, no mínimo não tem moral, não tem certeza, ou não tem peito para assumir o que está falando. A própria Constituição Brasileira garante o direito à liberdade de expressão, mas veda o anonimato.

No GUJ, por exemplo, já cansei de vér tópicos com críticas violentas, e o mais engraçado é que esses tópicos normalmente são criados por pessoas como “laranjada”, “Borat” ou qualquer outra coisa aleatória. O problema não são os apelidos, mas sim o fato das pessoas não se identificarem. Isso é covardia. E o pior é que algumas pessoas são tão inocentes que nem se preocupam em esconder seu endereço IP, e dá pra saber facilmente quem são. Outras são tão covardes que além de usarem um pseudônimo, usam um proxy para manter seu endereço anônimo…

Em toda minha vida virtual, sempre usei meu nome verdadeiro em listas de discussões, blogs, fóruns ou qualquer outra coisa que se possa imaginar. Faço isso por um motivo muito simples: eu quero que as pessoas me respeitem e me levem a sério quando falo.

Quando alguém tem caráter, personalidade e confia no que está dizendo, não precisa se esconder no anonimato.