semana_groovy

Semana Groovy 20!

Trabalhar no exterior (ou talvez aqui mesmo) com Grails?

Find Grails Jobs – Procurando trabalho com Grails fora do Brasil? Este site é bastante interessante e talvez possa lhe ajudar. :) – http://findgrailsjobs.com/

Posts

Recursos sobre Groovy e Grails para quem quiser aprender mais! – Publiquei este post no blog do Instituto Pangea logo após o Webinar (“Um Java EE diferente com Groovy e Grails”). Nele vocês poderão encontrar uma série de recursos para quem já está começando e também falo de alguns “recursos futuros” interessantes. – http://www.institutopangea.org/blog/23-recursos-sobre-groovy-e-grails-para-quem-quer-aprender-mais?a=110

StringTemplates in Groovy – Uma ferramenta muito útil do Groovy e que poucas pessoas usam. É o que uso no Grails Brasil para enviar e-mails, diga-se de passagem :) – http://www.objectpartners.com/2014/11/11/stringtemplates-in-groovy/

New Blog: Ratpack’s execution model in practice – RatPack é um destes frameworks que você deve prestar atenção mesmo que jamais o use pois tem algumas idéias muito boas ali. Encontrei este post interessante sobre seu modelo de execução e aqui está ele para vocês: http://www.grails.info/2014/11/13/new-blog-ratpacks-execution-model-in-practice/

Painless AOP with Groovy – Este é um post bem antigo (2006, mostra inclusive um Groovy diferente do atual) mas que mostra bem o poder do Groovy. Como disse em minha apresentação no DevDay 2014, você conhece o poder de uma linguagem quando ela te possibilita acessar paradigmas de forma simples. Smalltalk fez isto com OO e, adivinha? Groovy faz isto com AOP! – http://www.infoq.com/articles/aop-with-groovy (dica: na minha apresentação expus algo bem mais simples)

Lançamentos

Spring Boot 1.1.9 – http://spring.io/blog/2014/11/12/spring-boot-1-1-9-released

Spring Framework 4.1.2, 4.0.8 e 3.2.12 – http://spring.io/blog/2014/11/11/spring-framework-4-1-2-4-0-8-3-2-12-released

Gradle 2.2 – http://forums.gradle.org/gradle/topics/gradle-2-2-released

GORM para Cassandra – http://grails.org/plugin/cassandra

Dois convites

Hangout Semana Groovy – em breve devo iniciar uma série de hangouts sobre Groovy e Grails em meu canal ( http://www.youtube.com/kicolobo ). Seria uma experiência muito bacana saber suas experiências a respeito destas tecnologias. Interessou? Contacte-me por e-mail para que possamos agendar o primeiro! kicolobo@itexto.net

Conteúdo para Semana Groovy – está fazendo relacionado a Groovy, Grails, Spring ou qualquer coisa que execute na JVM e gostaria que fosse divulgado aqui? Entre em contato comigo usando o e-mail que citei acima. :)

Assine nossa newsletter!

Quer receber esta newsletter por e-mail no momento em que for publicada? Basta se inscrever preenchendo este formulário!

semana_groovy

Semana Groovy 19!

Após quatro semanas de hiato Semana Groovy volta à normalidade com uma série de novidades para vocês. O hiato foi motivado em grande parte por boas razões como verão nesta newsletter!

Eventos

Ainda dá tempo! – Webinar “Um Java EE diferente com Groovy e Grails” - Dia 11/11 às 20 horas, estarei ministrando este webinar gratuito em que apresentarei nossas duas tecnologias favoritas. Será bastante interativo, com muito live coding (e cujo código fonte você poderá acessar na sua máquina em tempo real). Vale muito à pena se inscrever pois caso não possa participar você terá acesso à gravação do evento pelo site do Instituto Pangea – Mais detalhes no /dev/Kico – http://www.itexto.net/devkico/?p=2040   (farei um anúncio muito bacana neste webinar, fiquem ligados!)

DevDay 2014 – Falei sobre Groovy e Grails na palestra “Alta produtividade em Java EE com Groovy e Grails” no dia 1/11/2014. Foi uma experiência fantástica e, pelo que pude ver, quem compareceu gostou bastante. A organização do evento já está editando os vídeos das palestras, que devem sair em breve, mas enquanto isto, você pode pelo menos ter acesso aos meus slides para ter uma noção de como foi – http://pt.slideshare.net/loboweissmann/slides-final-41029521

Comunidades

Novidades importantes nesta área!

MG-JUG está de volta! – Se você mora em Minas Gerais e quer conhecer melhor as empresas e pessoas que trabalham com Java (claro: Groovy e Grails também), uma boa notícia: estamos voltando com o MG-JUG. A idéia é agendarmos pelo menos um evento por mês contendo apresentações e também alguns encontros pela cidade. Caso se interesse, cadastre-se no site que foi criado no Meetup! – http://www.meetup.com/MG-JUG/

Instituto Pangea – Uma iniciativa da comunidade de Arquitetura de Software Pangea ( http://www.pangeanet.org ): trata-se de uma comunidade virtual voltada para a capacitação e atualização em tecnologia. São ministrados cursos (aguardem novidades) e é também um portal no qual já começaram a aparecer artigos muito interessantes. – http://www.institutopangea.org

itexto – O novo site da itexto está no ar. Nele vai ser inserido algum material sobre Groovy e Grails também. Por que isto é importante para nós? Por que uma série de produtos e serviços baseados nas nossas tecnologias favoritas surgem da itexto e, ainda mais importante: eles financiam diversas iniciativas como, por exemplo, esta newsletter, cursos e apresentações. Além disto, é mais uma fonte que vocês poderão usar daqui para frente. O site ainda está em beta, sendo assim todo feedback é bem vindo, ok? – http://www.itexto.com.br

Groovy Blogs está de volta! – o agregador de blogs sobre tecnologias baseadas em Groovy está de volta e totalmente renovado. Vale muito à pena conferir caso não conheça! – http://www.groovyblogs.org/

Apresentações

Idiomatic Spock – Encontrei esta apresentação no site da GR8Conf e achei muito interessante. Vale à pena assistir pois já faz algum tempo que o framework de testes do Grails passou a ser o Spock e até hoje vejo pouca gente de fato dominando a ferramenta. Vale cada segundo! – https://www.youtube.com/watch?v=dvDoieRf4po

Groovy: por que e pra que? – Dois vídeos que você só vai encontrar no novo site da itexto. O primeiro (por que) mostra alguns problemas e o segundo (o que) é uma visão panorâmica sobre a linguagem. Boas justificativas para se adotar Groovy. Espero que gostem! – http://www.itexto.com.br/site/?page_id=313

Developer Tooling – What’s new and what’s next – Uma excelente apresentação na InfoQ sobre o que podemos esperar do SpringSource Tool Suite. IntelliJ que se prepare?  – http://www.infoq.com/presentations/spring-4-tools-update

Posts

As pontes Groovy e Grails – mostro o grande valor de Groovy e Grails: o fato de nos permitirem aprender coisas novas sem precisarmos jogar fora aquilo que já conhecemos. Falei sobre isto no DevDay 2014, talvez torne mais claros os slides. :) – http://www.itexto.net/devkico/?p=2025

Produtividade pra que, quem e como? – Outro ponto que vocês vão encontrar nos meus slides e talvez não entendam, mas que se tornará mais claro lendo este post de /dev/Kico – http://www.itexto.net/devkico/?p=2009

Experiences publishing a Grails plugin – Já escreveu um plugin Grails (ou gostaria de saber como) e gostaria de ver a experiência de alguém a respeito? Este é um excelente post cuja leitura recomendo. – http://www.objectpartners.com/2014/10/29/experiences-with-publishing-a-grails-plugin/

Lançamentos

Groovy Serv 1.0 – Não conhece? Ele torna o início de scripts Groovy muito mais rápido, confira! – http://kobo.github.io/groovyserv/changelog.html

Ratpack 0.9.10 – http://www.ratpack.io/versions/0.9.10

Quer ajudar na Semana Groovy?

Publico aqui os links e acontecimentos que acredito serem os mais importantes relacionados a Groovy, Grails, Spring e Java em geral. No entanto, sempre pode haver alguma coisa que não vi e vocês considerem importante. Caso seja o caso, entrem em contato comigo para que este conteúdo seja divulgado na comunidade, ok? Basta me chamar pelo Twitter ( http://www.twitter.com/loboweissmann ) ou Facebook ( http://www.facebook.com/devkico )

webinar-groovy-grails-11-11-2014

Participe do meu webinar sobre Groovy e Grails dia 11/11!

Quer conhecer o “tal do Groovy e Grails” que falo tanto a respeito por todos estes anos? Dia 11/11, terça feira, às 20 horas (horário de Brasília) estarei ministrando no Instituto Pangea o webinar gratuito “Um Java EE diferente com Groovy e Grails”.

Vou começar mostrando de uma forma bem panorâmica o que é Groovy: o que ele tem de parecido e diferente com Java e outras linguagens? O que nos oferece? Por que vale à pena aprender? Como disse em meu último post, trata-se de uma tecnologia de ponte e uma excelente linguagem de programação.

Em seguida será apresentado Grails: vou criar uma aplicação do zero e durante sua construção serão apresentados os principais conceitos por trás do framework e de que maneira ele nos propicia obter altíssima produtividade (e veremos também qual produtividade é esta) mantendo (e, quem sabe, aumentando?) a qualidade dos nossos sistemas.

Prometo que serão poucos slides e muito live coding. Claro: de uma maneira bastante informal para que aproveitemos cada minuto!

Como participar

Você deve se cadastrar no site do Instituto Pangea clicando neste link. Lembre-se de fazer o mais rápido possível, pois as vagas são limitadas!

logo-institutopangea-cabecalho

Instituto Pangea?

É uma iniciativa muito bacana do Adriano Tavares: uma extensão da comunidade Pangea, que é a nossa melhor comunidade de arquitetos do Brasil. Lá são ministrados cursos online (aguardem novidades em breve ;) ) e também são publicados artigos escritos por membros proeminentes da comunidade de desenvolvimento de software.

Então…

Aguardo vocês terça feira. Haverá tempo para perguntas, então poderemos nos conhecer melhor e sanar suas dúvidas a respeito destas tecnologias.

Ei: cadê o link para o webinar? Tá aqui. :)

Update 6/11 – O webinar será gravado

Um pequeno detalhe que esqueci de mencionar: o webinar será gravado e será disponibilizado para todas as pessoas que se inscreverem no evento.

ponte

As pontes Groovy e Grails

No dia 1/11/2014, em minha apresentação no DevDay, tornei publica uma descoberta que fiz ao longo destes quase 10 anos de Groovy e Grails: estas tecnologias são valiosas por serem pontes. Neste post explico o que chamo de “tecnologia ponte”.

O que é uma ponte?

Só valorizamos as pontes quando não as temos

Só valorizamos as pontes quando não as temos

Pontes são o tipo de coisa que estão tão presentes em nosso dia a dia que sequer as notamos. As uso como uma poderosa metáfora, mas o que é uma ponte?

Estrutura arquitetural que nos permite trafegar de um ponto a outro de modo cômodo, o que seria muito difícil na sua ausência.

Isto é óbvio: mas o que seria uma tecnologia ponte?

Aquela que me permite sair de um estado de formação para outro suavemente.

Minhas primeiras pontes

Na minha progressão profissional houve algumas pontes. Quando comecei havia Internet, mas não era algo acessível, eu mesmo não tinha em casa, então o que me restavam eram livros técnicos que para mim eram caríssimos. A tecnologia mais popular ainda era o desenvolvimento desktop para a plataforma Windows. Ouvindo conversas, a impressão que tinha é que isto só podia ser feito com C++. Imagine meu choque quando topei com o código necessário para se criar uma janela usando isto! Nunca viu como é? Dê uma conferida neste link e depois volte para este post.

Tantos comandos! Como aprender aquela coisa sinistra? Foi quando descobri uma variante da primeira linguagem que conheci: o BASIC. Se chamava Visual Basic, e me permitia criar janelas literalmente desenhando-as com o mouse!

Um milagre da ciência!!!

VB era um milagre da ciência!!!

Era incrível, um milagre da ciência! Quando dava um duplo clique em um botão, surgia um editor de texto no qual digitava o comportamento que eu queria. Fornecia todos os comportamentos possíveis e logo em seguida compilava meu programa em um arquivo EXE. Boom: meu próprio executável e que podia ser usado em qualquer computador (Windows)! Era um estímulo e tanto: de repente me via distribuindo disquetes entre meus colegas do segundo grau todo orgulhoso.

Passado algum tempo, me sentia mais seguro e, com isto, fui me aprofundando na linguagem Visual Basic. Aprendia funções, entendia alguns comportamentos da sintaxe, funcionalidades como tratamento de erros, escrita em arquivos, etc. Visual Basic foi minha ponte inicial para me tornar um bom programador. E tudo isto de uma forma muito suave, não foi do dia pra noite.

delphi

Passado o Visual Basic, veio a segunda ponte: me sentia a vontade para tentar aprender Delphi,  o que fiz e se tornou minha ferramenta de trabalho por muitos anos, em paralelo ao VB. Devorei o Object Pascal, me sentia seguro e poderoso com ele, o que me preparou psicologicamente para aquele que considerava ser O GRANDE SALTO: Java.

Tenho cá minhas dúvidas se aquele Kico adolescente realmente conseguiria chegar ao Java se tivesse parado no C++ que se mostrava tão assustador. E sabem o que é mais legal? Passado algum tempo, brincando com Visual Basic e Delphi acabei aprendendo o C++ também.

Percebem? Com Visual Basic comecei a programar por que meu primeiro passo era com algo que me sentia à vontade: o mouse e desenho. Com o tempo a parte visual foi perdendo a graça e me acostumei com o código, o que me possibilitou aprender rápido o Delphi. E do Delphi, com orientação a objetos básica, me sentia o suficientemente bem para ir ao Java. Duas pontes.

Tecnologias ponte são aquelas que nos permitem aprender coisas que, de outra forma, seriam muito mais difíceis de serem compreendidas. Elas nos permitem iniciar o processo com aquilo que já temos.

Projetando a ponte

Para explicar como Groovy e Grails são pontes irei usar apenas imagens baseadas no esquema abaixo: do lado esquerdo encontram-se aqueles conhecimentos que já possuo e com os quais me sinto seguro. Do lado direito encontram-se aqueles que gostaria de obter e a ponte me fornece o caminho tranquilo que percorro para atingir aquele objetivo.

esquema_ponte

Groovy

ponte_groovy

Das duas é sem sombra de dúvidas a mais rica. Lembram quando falei sobre o valor social de Groovy e Grails? É a porta de entrada de muita gente que não conhece ainda a plataforma Java. Confesso que me tornou um programador Java melhor, pois de repente tive contato com programação funcional, DSLs e, principalmente, adquiri uma visão mais crítica a respeito do próprio Java.

(você sabe que está bom de fato em uma linguagem quando consegue criticá-la com argumentos racionais)

E qual o material desta ponte? A similaridade com a sintaxe do Java. Você começa a escrever programas em Groovy exatamente como faria em Java: com o tempo vai ficando mais confiante com a coisa e, de repente, esta lá, pulando do Olá mundo “Javiano” abaixo:


public class OlaMundo {

public static void main(String args[]) {
System.out.println("Olá mundo!");
}

}

Que evolui rapidamente para


System.out.println("Olá mundo")

E termina em


println "Olá mundo Groovy!"

Grails

ponte_grails

A ponte Grails nos leva ao Java EE: uma das plataformas mais importantes da história da computação. Podemos inclusive dizer que se trata da responsável por democratizar de verdade o desenvolvimento corporativo, ao menos aqui no Brasil.

Talvez você sequer precise conhecer Groovy para trabalhar com Grails (o que não recomendo), mas com o tempo,Grails acaba se tornando sabe o que? Uma ponte para o Groovy, pois muitos conhecem a linguagem a partir do framework. Mais do que isto: com o tempo você começa a usar recursos do Java EE que se mostravam distantes como, por exemplo, JMS, JNDI e tantos outros.

Conheço diversos casos de pessoas que vieram do ambiente desktop para web graças ao Grails. Por que? Simples: ele te permite usar todas as funcionalidades do desenvolvimento web Java EE usando apenas uma fina camada de Groovy. Raríssimas vezes você lidará com objetos do tipo ServletRequest ou ServletResponse.

Atravessando a ponte

O bacana da experiência de atravessar a ponte é que um belo dia você percebe que se tornou um programador melhor passando por um caminho suave, que respeitou e valorizou seu background e no final o enriqueceu ainda mais.

Passado algum tempo, nossa busca passa a ser por novas pontes. Já estou percorrendo algumas novas hoje e me pergunto quais surgirão depois.

PS: os slides da apresentação no DevDay 2014 podem ser vistos neste link. Acredito que agora eles se tornem mais compreensíveis. :)

wordpress-logo-stacked-rgb

Como salvei /dev/Kico dos spammers

Demorou mas aconteceu: este blog foi descoberto pelos spammers. Neste post mostro como adaptei o site, baseado em WordPress, para lidar com o problema sem precisar aumentar a capacidade do servidor.

Evolução do problema

Quando criei /dev/Kico em 2008 era raríssimo receber alguma mensagem de spam por uma razão simples: ninguém acessava este blog. Conforme o tempo foi passando, o spam começou a se manifestar sob a forma de comentários com propaganda.

A partir do meio daquele ano, conforme o número de acessos aumentou, começaram a aparecer os primeiros comentários com spam. Era algo em torno de uns dois ou três por semana. O plugin Akismet os detectava, eu checava se eram realmente spam e, sendo, os apagava. O interessante é que até onde pude perceber, este plugin conseguiu detectar 100% dos casos até os dias de hoje.

Conforme o tempo passa começo a ver dois ou três posts com spam no site. E isto vai progredindo até chegar a uns 400 por dia. Até então era tranquilo: ia na aba de comentários e simplesmente clicava em apagar todo o spam. Só que neste mês comecei a ver 1000, 2000 comentários por dia, até que nesta semana, em um único dia, 40.000 posts foram incluídos!

Para piorar a situação, como meu servidor é bastante modesto, os serviços simplesmente caiam. Se você é visitante contínuo do site deve ter percebido uma “certa” lentidão. Agora sabe a razão. Algo em torno de 60000 acessos/dia, mais da metade bots postando conteúdo.

(dica: sempre tenha um job que de tempos em tempos verifique se os principais serviços estão em execução ;) )

Como resolvi o problema (ao menos por enquanto)

Reduzindo os custos de renderização dos posts e acessos ao MySQL

O primeiro passo é tentar reduzir ao máximo as consultas ao MySQL e o custo de renderização dos posts. O primeiro passo é instalar algum plugin de cacheamento. No caso do /dev/Kico uso o Quick Cache. O funcionamento é simples: no primeiro acesso a um post o plugin irá criar uma versão estática da página e a armazenará em seu servidor. A partir do segundo acesso será servido o conteúdo estático da página. O desempenho do seu site aumenta e as consultas ao SGBD diminuem. Quando um novo comentário é aprovado para o post o cache é removido para ser gerado novamente no próximo acesso.

Isto dá uma bela folga ao servidor, mas ainda não resolveu o problema, pois os bots continuam enviando comentários para o seu site.

Banindo os spammers pelo IP

O plugin Akismet que mencionei acima é maravilhoso: como disse, ele consegue detectar 100% do spam, mas não evita que novos registros sejam inseridos na tabela de comentários do WordPress, pois ele apenas os marca como mensagens indesejadas. Se o número de registros nesta tabela for muito grande seu blog irá sofrer com isto, especialmente quando tentamos acessar a lista de comentários na área administrativa.

A solução para o problema foi bloquear os spammers pelo IP. Há dois caminhos para isto: você pode alterar o firewall do seu servidor ou usar algum plugin do WordPress. Optei pela segunda opção pois assim tenho uma interface mais amigável para este tipo de manutenção e, ao mesmo tempo, não preciso ficar acessando o servidor via SSH. O plugin que adotei foi o WP-Ban.

É muito fácil de usar: observe a imagem abaixo que contém um comentário de spam:

Um maldito spammer!

Um maldito spammer!

Como pode ser visto, na listagem de comentários do WordPress é exposto o IP de quem enviou a mensagem. No WP-Ban basta fornecer este valor: todos os visitantes provenientes deste endereço sequer acessarão seu blog: eles serão saudados com uma mensagem de bloqueio, simples assim. Qual a vantagem disto? Além de não serem incluídos registros na sua tabela de comentários o processamento do seu servidor para este usuário será significativamente menor. Qual o resultado no meu servidor? Mais memória livre, menos consultas ao SGBD e um desempenho superior aos usuários que realmente me interessam: vocês!

Dica importante: o spammer nunca usa um único IP como na imagem acima. Normalmente é um range. O Wp-Ban me permite incluir máscaras. Sendo assim, incluindo o valor 93.174.*.* já excluí todas as máquinas do spammer acima. Simples e direto.

Otimizando seu banco de dados

Claro, você não irá banir todos os IPs do planeta, sendo assim ainda haverá um ou outro spammer te atazanando de tempos em tempos. Dá pra melhorar ainda mais a situação. Como? Automatizando a exclusão de spam do seu banco de dados.

Se você usa Linux, basta criar uma tarefa com o CRON que esporadicamente exclua todos os registros da tabela comments que possuam o valor ‘spam’ no campo comment_approved. Você perderá a chance de evitar a exclusão de mensagens que não são indesejadas, mas em contrapartida garantirá que sua tabela só contenha comentários reais e mantenha-se com o menor tamanho possível.

No caso de /dev/Kico, esta tarefa é executada agora de duas em duas horas.

Troca do Apache HTTPD pelo Nginx

nginx-logo-1

Sou um cara muito sortudo: mês passado troquei o meu servidor web. Como o número de acessos ao blog vêm crescendo muito, uma ideia que passou de imediato na minha cabeça foi aumentar a capacidade do servidor. Como gosto muito de uma economia, antes de fazer o upgrade, por que não experimentar o Nginx?

Fiz a troca e não me arrependi: o desempenho melhorou significativamente e o consumo de memória foi bastante reduzido. Acredito que se não tivesse feito esta troca o estrago deste mês teria sido muito maior. Sendo assim, fica a dica: se puder, troque seu Apache pelo Nginx pois vale muito à pena.

No final das contas

Estas mudanças no WordPress foram muito fáceis de serem feitas e resolveram por enquanto meu problema com spam. Com elas consegui postergar em alguns meses o upgrade do servidor. Com certeza há soluções mais interessantes ou eficientes, mas o objetivo foi apenas mostrar que com custo mínimo é possível lidar bem com este problema.

A propósito, algum tempo atrás escrevi sobre o primeiro “upgrade” do /dev/Kico. Você pode ler o post neste link.

chaplin_tempos_modernos

Produtividade pra que, quem e como?

Diversas vezes caio nestas conversas em que a palavra produtividade pula como pipoca. Terminado o diálogo me afasto das pessoas, relembro o que dissemos e fico com a certeza de que só falamos bobagem. Por que?

O que é produtividade afinal?

Se você trabalha com desenvolvimento de sistemas ou qualquer outra atividade que envolva a geração de algum produto o termo produtividade sempre surge em conversas com gestores ou colegas ao tratarmos o modo como executamos nossas tarefas. E sabem o que é mais interessante? Não é raro vermos alguém sair chateado destas conversas. Quem é esta danada? Da forma mais ingênua possível, poderíamos defini-la como

Quanto você produz em determinado período de tempo.

Quantas linhas de código, funcionalidades, casos de uso, módulos, textos, imagens você produz por dia? Será que você consegue superar sua média? Existe uma meta em nosso ambiente de trabalho: será que você vai conseguir batê-la nesta sprint?

Percebem algo errado em todas estas perguntas e na própria definição? Eu sim: são vazias. Por que vazias? Por que raríssimas vezes tem um contexto. Não existe produtividade, mas produtividades.

As produtividades

Existe ferramenta de mais alta produtividade que o velho copiar e colar? Precisamos criar uma série de páginas, o tempo é mínimo, seu aperto máximo, sua mente em transe te diz para copiar e colar diversos trechos de código HTML e JavaScript em todas aquelas páginas. Você não pensa, age! O relógio, assim como você, não para: ctrl-c pra cá, ctrl-v pra lá, executa aqui, executa ali e voilá: as páginas estão prontas no prazo e você conseguiu! Algum gestor passa por você e te encara com satisfação naquele momento de cumplicidade efêmera.

Aquele dia foi de imensa produtividade, mas sempre a criatura volta para visitar seus pais cobrando as falhas de sua formação. E de repente o criador se vê sofrendo buscando tratar os traumas de sua criatura. Você fica horas (quando não dias ou meses) pagando o preço da sua economia porca.

A criatura sempre volta

A criatura sempre volta

No nosso amigo copiar e colar vemos um tipo específico de produtividade: a de curtíssimo prazo. É possível ter altíssima produtividade a curto prazo de tal modo que nossa criatura, ao visitar-nos, traga boas notícias? Sim, mas são raras estas situações.

Há também aquela outra ferramenta interessante que nos permite uma produtividade média a curto prazo (para a aflição dos gestores ansiosos) que nos propicia entregar bem próximo do prazo o que nos foi proposto fazer: se chama “pensar com calma”. A usamos quando projetamos aquilo que desejamos obter. Por algum tempo nossa criatura não irá se mostrar de forma concreta, e dependendo de quão rico é o seu conhecimento a respeito do problema, pode ser que o prazo não seja cumprido.

A diferença é que sua criatura é melhor formada: as cicatrizes quando existem são mais discretas e fáceis de serem corrigidas. Seu cliente pode estar até chateado devido ao leve atraso, mas ele a vê funcionando e, ainda mais legal, você sente orgulho da sua criatura e  mostra suas entranhas para seus colegas!

A criatura sempre volta

A criatura sempre volta

Todos sabemos que a maior parte da vida de um software ocorre após este ter sido entregue (em média 85% do tempo é gasto em manutenção). Aquele seu custo inicial transforma-se em lucro. Sua produtividade agora é altíssima na época que mais importa: manutenção.

Há uma balança aqui: alta produtividade no início, baixa no fim e vice-versa. Claro: quando você reaproveita conhecimento é possível ter altíssima produtividade durante todo o ciclo de vida do seu sistema, mas infelizmente estas situações são muito raras (ainda).

Kico: aonde você quer chegar com este papo?

Produtividade e valor. O que é valor?

enso

Este é o ponto fundamental deste post. O termo produtividade só possuí sentido quando pensado como valor. “Valor” é outra destas palavras que usamos em vão. Algum tempo atrás passei a buscar seu real significado e isto mudou radicalmente (e de forma muito positiva) minha visão do mundo. Segue sua definição:

Valor é a justificativa por trás da escolha.

Por que você diz que seu Macintosh vale mais que um PC? Por que pagar mais pelo produto ou profissional X? Quanto vale Y? Produtividade por que? Pra quem? O que quero com isto?

Você comprou um Mac talvez por que considere uma máquina melhor montada, com excelentes componentes e um sistema operacional superior que não irá estragar tanto quanto o oferecido pela concorrência. Você pagou a mais pelo profissional X por que sabe que ele lhe entregará um resultado positivo dentro dos seus padrões e expectativas de qualidade. Estas razões são justificativas. Valorizar é apresentar justificativas para uma escolha. O tal do valor agregado? Um conjunto de justificativas a mais que mostrem que você estava certo.

Quando tratamos produtividade como valor a história muda. Aqui seguem dois exemplos baseados nas situações que falei acima:

  • Pode usar e abusar do copiar e colar, pois o que você está fazendo será usado uma única vez para em seguida ser jogado fora e não temos dinheiro o suficiente para algo melhor elaborado. (uma justificativa tosca, mas uma justificativa!)
  • Invista na arquitetura do seu sistema o máximo que puder pois queremos algo que durará 10, 15 anos e sabemos que 85% deste tempo será gasto em manutenção.

Percebe agora por que aquela conversa com seu gestor sobre produtividade te incomodava? Este é o tal do “contexto” que falei acima: as justificativas necessárias para que lhe seja cobrado determinado nível de produtividade.

Ainda mais importante: para quem você está sendo produtivo? Será que todos os seus clientes exigem o mesmo nível de produtividade? Esta questão deixo como dever de casa para você.

Produtividade e ferramentas

toolbox

Ouvimos muito o termo produtividade quando o assunto é ferramental. “Programadores .net geram X pontos de função por hora, enquanto profissionais Java Y”. Sério? Em quais contextos e restrições? Entende agora por que estas métricas normalmente não fazem sentido?

É aquela velha história da ferramenta certa para o trabalho certo. Programadores Java escrevem X linhas de código por hora. Me pergunto quanto produzirão caso precisem escrever algo de baixíssimo nível. Será que se aplica? Acho que o cara do Assembler ganha hein?

E tem também toda aquela história sobre o mito da bala de prata que o Fred Brooks fala com absoluta autoridade no “Mythical Man Month”. O que é uma ferramenta valiosa?

É aquela que você adota em um dado contexto e se sente seguro com sua escolha por ter se baseado em um número significativo de justificativas. Dica: uma justificativa isolada não é suficiente para adotar um framework/linguagem/etc. E se a justificativa for apenas preferências pessoais… abre o olho!

Conclusões

A mensagem é simples: não existe produtividade em si. O termo produtividade só faz sentido com base em uma série de justificativas que, na prática, serão as restrições do seu problema.

E a produtividade? Em si é outro valor. Você a usará como um dos parâmetros para delinear seu caminho. Ela te responderá coisas do tipo: “este projeto é viável no prazo que recebi pois minha produtividade, baseada nestas justificativas, é X”.

Uma justificativa, baseada em justificativas: uma meta-justificativa. :)