segunda-feira, 30 de agosto de 2010

A Escassez Relevante

Um dos blogs que leio regularmente é o Marginal Revolution, do economista Tyler Cowen. No blog e em um dos livros dele, Discover Your Inner Economist, ele diz que todo bom economista ataca um problema perguntando, "qual é a escassez relevante que impede um resultado melhor?"  Essa é uma pergunta profunda e importante para o desenvolvimento de software, mas como esse não é um blog de economistas, deixem-me explicar melhor.

Todo esforço humano é motivado por alguma escassez. Plantamos porque não há comida em abundância para todos na natureza. Construímos casas porque não há abrigos em abundância. Abrimos restaurantes porque para muitos falta tempo, habilidade ou vontade para cozinhar. Guardamos dinheiro em bancos porque falta segurança em nossas casas para deixar nosso dinheiro lá, ou para o carregarmos conosco. Cada solução útil que existe ataca alguma escassez. Essa é a escassez relevante ao problema.

Quando falamos de projeto de software, qualquer gerente pode te falar sobre escassez: falta tempo, falta dinheiro e faltam bons desenvolvedores. Agora, e quando falamos sobre um produto de software? O que é a escassez relevante para um sistema?

Ora, falar sobre a "escassez relevante" é apenas uma forma concreta de se determinar qual é o problema que um sistema resolve (releia A Mesa Errada para entender mais sobre a importância de se resolver o problema certo). Se todo esforço humano é motivado por alguma escassez, então todo sistema de software bem sucedido também deve atacar alguma escassez.

Na maioria dos casos, a escassez que o software ataca é a escassez de tempo. O Microsoft Word existe porque é mais rápido escrever um texto com ele do que com um lápis ou uma máquina de escrever. O Excel existe porque é mais rápido fazer contas com ele do que com uma calculadora. E-mail existe porque é mais rápido se comunicar com ele do que usando os correios. Diminuir o tempo necessário para se executar uma tarefa é um dos grande motivadores por trás dos primórdios da indústria de software.

Outra grande escassez, essa atacada mais recentemente, é a de informação. A Google inteira se baseia nessa escassez, seja ela genérica (google.com) ou específica (google maps). Grande parte da internet ataca esse problema.

Às vezes, no entanto, a escassez relevante não é tão óbvia. Façamos um pequeno exercício. Qual a escassez relevante em cada um dos sistemas abaixo?

  • Twitter
  • Google Wave
  • Orkut

No caso do Twitter, desconfio que a escassez relevante seja a atenção. É preciso ter alguns minutos livres para se concentrar e ler um artigo como esse, mas bastam alguns segundos para se ler várias mensagens de 140 caracteres. O mesmo vale para se escrever: poucos tem a paciência de escrever um texto, mas qualquer pessoa consegue pensar em algo para se dizer em uma frase. O twitter não faz nada que não fosse possível fazer antes dele, mas ataca uma escassez diferente.

Colocar o Google Wave nesse exercício é um truque pra ver se vocês estão prestando atenção. É um produto que não foi bem sucedido, talvez porque, apesar de tecnologicamente avançado, não atacasse nenhuma escassez relevante.

E o orkut? É um produto bem sucedido, mas qual o problema que ele resolve? Com certeza ele existe, mas deixo a solução desse problema como exercício para o leitor. Eu é que não vou me arriscar a responder.

sexta-feira, 27 de agosto de 2010

Palestras na UFV

Ontem estive na Universidade Federal de Viçosa para ministrar duas palestras:
  • Terminei, e daí? Optando entre a carreira acadêmica e a indústria de software.
  • Desenvolvimento de aplicativos web usando Google Web Toolkit e Google App Engine.
Tudo como parte da semana de informática. Foi muito divertido e eu ainda pude conhecer o bonito campus da Universidade e bater um papo com os professores do depto. de Informática.

Muito obrigado ao pessoal da UFV por me receber tão calorosamente!

quinta-feira, 19 de agosto de 2010

Custos perdidos

Eu gosto de ler livros populares sobre economia, estilo Freakonomics. Assim vou aprendendo alguns conceitos que acho interessantes. Um dos conceitos de economia que acho mais relevantes não só para o trabalho mas para a vida em geral é o de sunk costs (em portugês, "custos perdidos", "custos irrecuperáveis" ou "custos enterrados").

Custos perdidos são aqueles que você já teve com um projeto qualquer e que não tem como recuperar. O importante sobre custos perdidos é que você não deve levá-los em conta para tomar decisões sobre o futuro. Afinal de contas, o que passou, passou. O que vale é o que se tem hoje e o que vem pela frente.

Por exemplo, suponha que você tenha uma caixinha de açafrão legítimo, a especiaria mais cara do mundo, mais cara que o ouro. Você deve fazer uma paella? Você vai ao supermercado e descobre que vai te custar 100 reais pra comprar os outros ingredientes. E aí, faz a paella ou não? Pois para tomar essa decisão, você só deve considerar o custo dos ingredientes restantes e o valor que você atribui à paella. Não importa se pelo açafrão você pagou 10 reais, 100 reais, 500 reais, ou se você ganhou de presente da sua vó. Mas se eu não fizer a paella, vou desperdiçar o açafrão! Vai sim, mas vai estar 100 reais menos pobre.

E o que isso tem a ver com desenvolvimento de software? Tudo. Projetos de software são cheios de surpresas: atrasam, precisam de mais máquinas do se imaginava, de mais pessoas, de mais dinheiro. À medida em que o projeto caminha, mais precisa fica nossa estimativa, como mostra a figura abaixo:


O que fazer quando percebemos que erramos nossa estimativa inicial e que tudo vai ser mais caro ou demorado do que se esperava? Nessa hora, é preciso decidir se devemos cancelar ou não o projeto. Para tomar essa decisão, não importa o quanto tempo e dinheiro já foram gastos com o projeto. O que importa é o quanto ainda vai ser gasto. Ou seja, o que devemos nos perguntar é, "acho que vou gastar X tempo ou dinheiro para terminar esse projeto. Eu tenho X tempo ou dinheiro? quero investir X nesse projeto?"

Essa é a ação racional a ser tomar.

Infelizmente (ou não), as pessoas não são racionais. Seres humanos têm aversão a perdas, e jogar fora algo que já se conquistou é dificílimo, mesmo que não fazê-lo seja irracional. Um exemplo clássico disso é o do ingresso de cinema. Imagine as seguintes situações:
Situação A: Você compra ingressos para o cinema pela internet, por 20 reais. Só que quando chega ao cinema, descobre que o bolso está furado e que perdeu os ingressos. Você tem 20 reais no outro bolso. Você vai ao cinema?
Situação B: Você vai ao cinema. O ingresso custa 20 reais. Só que quando você enfia a mão no bolso, você descobre que o bolso está furado e que perdeu uma nota de 20 reais. No outro bolso, você tem outra nota de 20 reais. Você vai ao cinema?
Se você é como a maioria das pessoas, você se sente mais confortável em ir ao cinema na situação B do que na situação A, apesar do resultado das duas situações serem idênticos, ou seja, você está 40 reais mais pobre e foi ao cinema, ou 20 reais mais pobre e não foi ao cinema. O fato de comprar de novo ingressos que você já comprou é dificílimo para a maioria. Um ótimo livro que trata desse tipo de comportamento é Previsivelmente Irracional, de Dan Ariely.

Você mesmo deve ser assim. Quantas vezes você continou assistindo a um filme muito ruim só porque já tinha assistido metade? Quantas vezes ficou em um lugar desagradável porque "já vim até aqui mesmo"? Quantas vezes comeu comida ruim só porque sua mãe ensinou que não se deixa comida no prato? Se você não comer, ninguém vai comer o resto do seu prato, então já era - custo perdido. Melhor não comer.

E daí? E daí que, mesmo sabendo que você não deve levar custos perdidos em conta para tomar decisões, você precisa se lembrar que as pessoas levam os custos perdidos em conta. Todos ficam tristes e aborrecidos quando seu tempo e esforço são inúteis. Já dizia meu querido orientador Don Cowan, "não se apaixone pelo seu trabalho, você pode ter de jogá-lo fora." Se já é doloroso jogar fora seu próprio trabalho, imagine se outra pessoa é quem decide jogá-lo fora. A reação natural é de raiva, revolta, desgosto. Se você trabalha em uma equipe e decide cancelar um projeto, lembre-se que é preciso valorizar e compensar o esforço que já foi feito. Então, muito cuidado quando for você o responsável por essa decisão.

Resumindo:
  • se for tomar uma decisão para você mesmo, não leve em conta os custos perdidos;
  • se for tomar uma decisão para sua equipe, lembre-se que os outros (mas não você, claro) são irracionais e não vão entender bem esse lance de "custos perdidos"

terça-feira, 17 de agosto de 2010

O ambiente de trabalho e a produtividade

Sem querer, o artigo mais polêmico desse blog até hoje foi um em que falei mal de móveis. Um dos fatos que achei mais curiosos sobre a reação dos leitores foi que muitas pessoas parecem não se importar com a qualidade do espaço físico em que trabalham. De fato, existem muitos fatores importantes ao se escolher um emprego - o respeito, a autonomia, os desafios, as possibilidades de crescimento, entre outras. Hoje, no entanto, gostaria de refletir sobre a importância do espaço onde trabalhamos.

Todos nós prezamos pelo conforto dos nossos lares. Gastamos quantidades imensas de tempo e dinheiro para fazer de nossas casas lugares agradáveis de se passar o tempo, bonitas, serenas e confortáveis. No entanto, a maioria de nós passa muito menos horas acordados dentro de nossas casas do que passamos no trabalho. Por que, então, não fazemos o mesmo com o local onde trabalhamos? Por que passar o dia em lugares apertados, barulhentos, estéreis, iluminados de forma desagradável? Eu não entendo.

O tratado mais interessante sobre espaço físico que já li está no livro Peopleware: productive projects and teams, um clássico do Tom DeMarco e Timothy Lister. O livro trata da produtividade de profissionais da área de informática e dedica um dos seus seis capítulos inteiramente aos efeitos do espaço físico na produtividade. Vou resumir aqui algumas das conclusões do livro a ainda incluir outros estudos. Vamos por partes.

1. Espaço de trabalho

O Peopleware cita um estudo muito interessante feito pela IBM em 1978, motivado pela construção de seu novo campus em Santa Teresa, Califórnia. Durante o estudo, observaram o trabalho no dia-a-dia de inúmeros profissionais da IBM e chegaram à conclusão que profissionais dessa área precisam de, no mínimo, 9 m2 de espaço individual por trabalhador, sendo que 3 desses 9 m2 devem ser de área de trabalho - ou seja, mesas. Valores inferiores a esses levavam à reduções na produtividade devido ao barulho, interrupções e dificuldade em se manejar materiais. Essas reduções levariam a perdas maiores do que o custo de se manter o espaço adicional.

E que custo é esse? Não sei dizer o preço vigente de aluguéis de escritórios pelo Brasil, mas em uma rápida busca descobri que em São Paulo o metro quadrado de salas está por volta de R$ 50,00 por mês. Ou seja, se hoje a empresa tem 4 m2 por desenvolvedor, o custo para se passar para os 9 m2 recomendados pela IBM seria de R$ 250,00 por mês, por desenvolvedor. O custo de se mobiliar esse espaço com os 3 m2 de mesa de boa qualidade é bem menor do que esse se considerarmos a amortização com o tempo. Se a produtividade média aumentar em 10%, é um investimento que vale a pena. Mas será que a produtividade aumentaria em 10%? Vamos continuar.

2. Ruído e interrupções

O trabalho intelectual exige concentração. A maior produtividade do desenvolvedor vem quando ele entra no estado chamado de fluxo, em que está totalmente absorvido pela sua atividade e não vê o tempo passar. Você já teve desses dias, não teve? Aquele dia em que se sentou na frente do computador e quando viu, já eram duas horas da manhã. Esse é o estado de fluxo.

Um indivíduo leva entre 10 e 15 minutos para entrar nesse estado. Isso implica que, a cada interrupção, o estado de fluxo é quebrado e é difícil retomar a atividade anterior. Para se produzir mais, é preciso minimizar as interrupções. Em uma entrevista recente, Jason Fried, fundador da 37signals, declarou que lá se faz de tudo para minimizar interrupções - evita-se usar o telefone quando possível e prefere-se usar e-mail. Também alocam longos blocos de tempo para o trabalho produtivo em que as pessoas evitam interromper quem está trabalhando.

Os estudos citados no Peopleware confirmam essa necessidade. Trabalhadores que consideram seu ambiente silencioso cometem, em média, menos erros que os que o consideram barulhento. Quanto maior a densidade de pessoas, maior o ruído e mais frequentes as interrupções. Como é possível trabalhar quando a todo instante um telefone toca, ou alguém está contando algum caso, ou há uma discussão intensa acontecendo a dois metros de distância?

Ora, quando mais apertado o espaço de trabalho, maior o ruído percebido. Um estudo interessante da Cornell University demonstrou que níveis de ruído altos trazem diversos prejuízos à saúde e ao desempenho, mesmo quando as pessoas expostas ao ruído não acham que o ruído está atrapalhando.

O que as pessoas fazem hoje para escapar do ruído é refugiar-se em seus headphones, ouvindo música alta para fugir das interrupções, o que também não é bom para a concentração.

3. Iluminação

A maioria dos ambientes de trabalho hoje em dia, especialmente os ambientes de empresas de informática, é iluminado em excesso. É provável que nada tenha contribuído mais para a desumanização dos espaços interiores do que o advento da luz fluorescente longa. Por ser de baixo custo, ela permeia os interiores com um espectro desagradável e que ainda pode causar dores de cabeça, fadiga e stress. O fato é que a maioria dos ambientes pode ser iluminado durante o dia apenas com a luz natural que vem das janelas e algumas luzes indiretas.

Eu não entendo porque praticamente se aboliu o uso da luz natural, que é mais saudável e agradável. Se você não acredita em mim, experimente ir ao escritório em um fim de semana, desligar as luzes e abrir todas as persianas. Depois tente trabalhar durante algumas horas e me diga se não se sente melhor. Se você ainda não acredita, pergunte a qualquer arquiteto ou decorador. Você não usa essas luzes fluorescentes compridas na sua casa e há um bom motivo para isso. Não use no trabalho também.

Resumindo

O trabalho produtivo precisa de:

  • espaço
  • silêncio
  • iluminação adequada
O custo para se ter isso não é alto e é mais do que justificado em ganhos de produtividade e na satisfação e saúde dos trabalhadores. Mais do que isso, no entanto, trabalhar em um local agradável é uma necessidade humana. Todos somos atraídos pelo que é bonito, estético, confortável. O grande arquiteto Christopher Alexander (aquele que inspirou a gang dos quatro a criar os padrões de projeto) chama espaços com essas características de orgânicos - espaços que mesclam as necessidades do indivíduo com as necessidades coletivas, que exibem personalidades que harmonizam com a natureza.

Trabalho é vida e todos queremos viver bem. Cuide de seu ambiente de trabalho como sua casa, porque assim ele é.

Se você quer ler mais sobre o assunto, essa página tem um bom apanhado de links.