Lidando com as interrupções

2007-09-25
Recebi o seguinte email de um colega:

  > On Monday 24 September 2007, Gustavo Chaves wrote:
>> E aí? Começou o trabalho?

> Comecei sim, e inúmeras vezes para ser sincero. Acho que você
> sabe como é o ambiente aqui no suporte, muitas interrupções...
> O pior é que eu não sei como lidar direito com isso (como você
> lida com isso???)...

É um ciclo. Geralmente começa quando eu volto das férias e não tenho nenhuma pendência acumulada. (A verdade é que eu acabo me esquecendo de todas as pendências não realizadas antes das férias.) Nesse momento eu estou feliz.

Daí eu começo a fazer uma coisa até ser interrompido e eu empilho o estado. Começo a tratar a interrupção e outra ocorre. Mais um push. Quando acaba o dia minha pilha começa a perder os links e no dia seguinte eu já não sei bem por onde começar. Normalmente eu começo por alguma atividade do meio da pilha, que deixa de ser uma pilha de verdade e passa a ser um balaio de tarefas mal-começadas.

Depois de um tempo algumas dessas atividades simplesmente saem do meu inconsciente (do consciente já saíram faz tempo) e ficam perdidas.

Algumas semanas disto e eu já estou estremamente irritado e convontade de dar um basta, falando com o chefe, passando a usar headphones, colando uma placa de não-perturbe nas costas, planejando trabalhar em casa e sonhando com o ambiente de trabalho idealizado no livre Peopleware e no blog do Joel Spolsky.

Mas… pro bem ou pro mal o peso dos anos serve pra frear estes impulsos. Mais de dez anos trabalhando em TI sem ter conseguido resolver o problema me deixam deprimido pensando que ou não há solução ou eu não sou capaz de encontrá-la.

Pra evitar o incômodo da dissonância cognitiva eu acho que meu inconsciente acaba resolvendo o problema dando um dispose geral e zerando minha pilha de atividades. Normalmente as próximas férias já estão chegando e a expectativa de começar zerado de novo já me conforta.

(Não desanime… nada garante que este seja um problema insolúvel.)


Trabalho em casa

2007-04-07

O “trabalho em casa”, ou home office, parece ser uma tendência irreversível para as empresas do setor de tecnologia. Isso é fácil de explicar tendo em vista os baixos custos de conectividade à Internet via banda-larga e a disponibilidade de ferramentas de colaboração remota eficientes como VoIP, mensagens instantâneas, correio-eletrônico, além do acesso direto e seguro via VPN a todas as ferramentas de suporte ao desenvolvimento.

Sun, IBM, HP, Cisco e Accenture são algumas das empresas de tecnologia que têm oferecido aos seus empregados a possibilidade de adotarem um horário mais flexível de trabalho, permitindo que eles trabalhem parte do tempo em casa. Algumas delas vão mais longe e arcam com os custos de conexão à Internet e com o computador que o empregado utiliza em casa. Mas não são apenas as empresas de tecnologia que estão experimentando esta novidade. BMW, Shell, Royal Bank of Scotland, Nationwide Building Society e Marks & Spencer também têm programas semelhantes.

O gerente da IBM na Índia explica desta maneira as vantagens deste modelo:

“Acreditamos que um ambiente de trabalho flexível dá aos empregados mais flexibilidade e controle sobre seu trabalho, tornando-se um meio importante para conquistar um maior equilíbrio entre suas vidas e seu trabalho, além de aumentar sua produtividade. Nós (na IBM) somos flexíveis sobre como e em que local o trabalho é realizado e somos focados nos resultados do negócio e não no “tempo de cadeira”. Flexibilidade, no ambiente de trabalho da IBM, é um grande fator de atração para novos talentos, aumentando a efetividade, o foco e a produtividade.”

Há economias óbvias que esta abordagem traz às empresas, como a redução no custo de infra-estrutura de suporte aos empregados, particularmente em espaço físico, mobiliário, equipamentos, linhas telefônicas, transporte e serviços em geral.

Outra vantagem menos óbvia desta flexibilização é libertar a empresa das restrições geográficas para contratar seu pessoal. Com uma boa infra-estrutura de suporte, uma empresa pode contratar os melhores candidatos de qualquer parte do Brasil e do mundo para constituir sua força de trabalho. Para uma empresa com clientes internacionais, a possibilidade de contar com empregados trabalhando em fuso horários diferentes pode ser fonte de economia para atividades de atendimento ao cliente, por exemplo.

O empregado ganha com a redução no tempo e nos custos de transporte e com a possibilidade de trabalhar perto da família. Além disso, muitos teriam a chance de trabalhar num ambiente mais confortável, mais amplo e menos susceptível a interrupções, o que pode proporcionar ganhos de produtividade significativos.

Obviamente, nem todos os empregados preferem trabalhar em casa, seja por não possuírem um ambiente adequado, seja por não conseguirem separar suas atividades domésticas das atividades de trabalho. Alguns sentem-se isolados, apesar do acesso fácil aos seus colegas através de ferramentas de comunicação eletrônicas. Outros perdem contato com a cultura da empresa. É preciso encontrar o equilíbrio ideal entre a quantidade de horas trabalhadas na empresa e a quantidade de horas trabalhadas em casa, para cada empregado.

Há dificuldades para a empresa também. Os gerentes precisam se acostumar a gerenciar seus subordinados remotamente. A avaliação de desempenho e a manutenção da capacitação dos empregados também podem ser mais difíceis. Sem mencionar os riscos de segurança envolvidos no acesso remoto aos sistemas da empresa por um grande número de funcionários.

De qualquer modo, isso me parece uma tendência inevitável. E eu sei que eu preferiria trabalhar onde estou agora. 🙂


Diferenças individuais de produtividade

2007-03-22

É uma percepção comum que há diferenças significativas de produtividade entre desenvolvedores de software. De fato, esta grande variação parece existir em todos os trabalhos intelectuais, coisa que não acontece com tanta ênfase em trabalhos mecânicos.

O livro Peopleware – Productive Projects and Teams é um clássico da gerência de projetos de software que eu sou incapaz de elogiar o suficiente. Seus autores, DeMarco e Lister, realizaram um estudo para verificar a extensão desta diferença de produtividade e como ela se distribui entre os desenvolvedores. O estudo consistiu em uma série de competições nas quais programadores de diferentes organizações realizavam várias atividades de programação e de testes. Ganhava quem terminasse primeiro e com o menor número de defeitos. A série de competições durou vários anos e os resultados se mantiveram constantes.

O gráfico abaixo mostra o resultado de uma das competições, considerando como métrica de produtividade o tempo que cada participante levou para terminar a tarefa. Segundo DeMarco e Lister, a característica da curva é a mesma, independentemente da métrica de produtividade que se empregue. Em particular, isto também vale para métricas de qualidade expressas em quantidade de defeitos.

As três regras gerais que eles puderam inferir sempre que mediram a variação de produtividade entre um grupo de indivíduos são seguintes:

  • A diferença de produtividade entre o melhor e o pior é da ordem de 10 vezes.

  • A diferença de produtividade entre o melhor e o mediano é da ordem de 2,5 vezes.

  • A diferença de produtividade entre a metade mais eficiente e a metade menos eficiente é da ordem de 2 vezes.

Analisando estes resultados eles procuraram correlacioná-los com fatores do ambiente de trabalho dos participantes. Alguns fatores que não tiveram grande influência na produtividade foram os seguintes:

  • Linguagem de programação: Não houve correlação entre a linguagem usada pelos participantes e sua produtividade.

  • Anos de experiência: Programadores com até seis meses de experiência na linguagem de programação utilizada saíram-se pior que programadores mais experientes. Contudo, a partir daí a variação passou a não ser significativa. Por exemplo, programadores com dez anos de experiência não se saíram melhor que programadores com apenas dois anos de experiência.

  • Número de defeitos: Aproximadamente um terço dos participantes completaram os exercícios sem nenhum defeito. Este nível de qualidade não teve impacto negativo na produtividade do grupo. De fato, eles levaram, em média, um pouco menos de tempo que os demais participantes que completaram o exercício com um ou mais defeitos.

  • Salário: Os níveis salariais variaram significativamente entre os participantes. Apesar disto, houve uma correlação muito fraca entre salário e produtividade. A metade mais produtiva dos participantes recebia, em média, 10% a mais que a metade menos produtiva, mas a diferença de produtividade foi de 100%. Já a variação de produtividade dentro de cada nível salarial era quase tão grande quanto sobre o total de participantes.

Um fator que teve surpreendente influência na produtividade dos participantes foi a sua origem, i.e., a organização em que trabalham. O estudo mostrou que a diferença de produtividade entre participantes da mesma organização foi de aproximadamente 21%. Já a diferença entre os grupos de desenvolvedores das 92 organizações que participaram da competição foi marcante. O melhor grupo trabalhou 11 vezes mais rápido que o pior e todos os desenvolvedores da organização campeã desenvolveram código sem defeitos.

Esta observação é ainda mais surpreendente quando se considera que os grupos não trabalharam como equipe durante a competição. Cada desenvolvedor trabalhou individualmente, no seu próprio ambiente de trabalho dentro da sua organização.

A conclusão é que os melhores desenvolvedores tendem a se concentrar em algumas organizações enquanto os piores tendem a se concentrar em outras. Isto contradiz um certo fatalismo manifestado por alguns gerentes em relação às diferenças individuais. Eles crêem que estas diferenças são inatas, de modo que não se pode fazer muito a respeito. Mas fica difícil ser fatalista sobre o efeito de concentração observado. Deve haver algo relacionado ao ambiente de trabalho e à cultura corporativa que afaste ou que atraia os bons desenvolvedores.

Uma das conjecturas mais fortes que DeMarco e Lister sugerem como explicação para o problema da improdutividade é o fato de que o ambiente de trabalho na maioria das empresas é tumultuado, barulhento e cheio de interrupções. Para testar esta hipótese, cada participante da competição preencheu um questionário sobre as condições físicas de trabalho, antes de executar o exercício. A Tabela 1 sumariza os resultados dos questionários respondidos pelo melhor e pelo pior quartil dos desenvolvedores. A diferença de produtividade entre os dois grupos foi de 2,6 vezes.

O ambiente de trabalho do primeiro quartil de produtividade é mais quieto, oferece maior privacidade, é menos susceptível a interrupções e mais espaçoso.

Os dados apresentados não provam que um ambiente de trabalho melhor vai ajudar os desenvolvedores a trabalhar melhor. Eles podem também estar indicando que os melhores desenvolvedores tendem a procurar trabalhar nas organizações que proporcionam um melhor ambiente de trabalho. Em última análise, porém, o importante é que um bom ambiente de trabalho tende a ser usado por bons desenvolvedores.