Stressed+out

Boas empresas dão boas condições de trabalho a seus funcionários. Ótimas empresas dão ótimas condições de trabalho.

Isso não tem nada a ver com mérito dos empregados ou mesmo com alguma causa por melhores condições de trabalho. Estamos falando de produtividade e qualidade.

Neste artigo abordarei algo que afeta diretamente todos os profissionais de TI, principalmente desenvolvedores, ainda que não se restringe à esta categoria: hardware.

Empresas de TI jogam dinheiro no ralo

Muitas empresas estão jogando dinheiro fora oferecendo equipamentos ruins para seus desenvolvedores.

Há algum tempo fiz uma estimativa de que um desenvolvedor desperdiça no mínimo 20% de seu tempo diário aguardando a resposta de um PC ou notebook lento. Um computador com CPU defasada ou pouca memória RAM não suporta adequadamente uma IDE moderna e outras ferramentas utilizadas no desenvolvimento.

O tempo desperdiçado pode ser bem maior, dependendo do caso. Enquanto um programador aguarda 5, 10 ou 15 segundos por alguma ação a ser completada, sua mente pode divagar em lugares longínquos, colegas podem interromper, ele pode decidir ir ao banheiro ou tomar um café e assim por diante. O problema aqui não está em todas essas coisas, mas no raciocínio quebrado. Existe vasta literatura sobre como interrupções prejudicam a produtividade.

compiling

O investimento de 2 ou 3 mil reais num equipamento novo, equivalentes a um mês de remuneração de um programador júnior ou pleno, pode gerar um retorno em poucos meses.

Por outro lado, economizar em equipamentos básicos numa empresa de software é jogar no ralo o mais importante e mais caro: mão de obra qualificada.

Bons profissionais, boas ferramentas

Em qualquer profissão, os melhores profissionais irão precisar de boas ferramentas. Eles valorizam o próprio trabalho e querem fazer o melhor. Embora algumas pessoas não tenham comprometimento algum com o resultado daquilo que fazem, somente cumprem ordens, os bons profissionais prezam pela qualidade. Condições ruins de trabalho os desmotivarão.

Em várias pesquisas realizadas com desenvolvedores, verificou-se que o salário importa muito menos para eles do que outras questões como crescimento profissional, equipe competente, boa gerência, hardware e ferramentas.

Para um bom desenvolvedor, ter um hardware rápido e softwares de sua preferência fazem grande diferença. Ele vai produzir software melhor e mais rápido, ser mais feliz no trabalho e ainda vai sobrar tempo para ele investir em melhorias e aprendizado.

Alternando com Alt+Tab

Programadores trabalham com muita informações. Não é incomum um programador precisar alternar continuamente entre uma IDE como o Eclipse, um documento PDF e o navegador com algumas abas do Stack Overflow. 🙂

Na prática, o cenário acima pode ficar muito pior, mas não vou estender o texto com ainda mais exemplos.

A questão é que desenvolvedores precisam de múltiplos monitores, de preferências com telas grandes.

Pode parecer frescura, mas tenha em mente que programar um software é uma tarefa intrinsecamente intelectual que exige muita concentração. Se o programador precisa constantemente alternar entre vários programas e navegador por um código que não cabe na tela, as chances de erros aumentam muito. Produtividade e qualidade estão em jogo.

Programadores não são meros usuários

Muitos gerentes pensam que programadores são digitadores de código, ou pelo menos não consideram o suficiente a natureza do seu trabalho.

Usuários “comuns”, incluindo gerentes, utilizam softwares básicos como a suíte do Office, cliente de e-mail e navegador com duas ou três abas.

Programadores são outro tipo de animal completamente diferente. 😀

Criar um software, por definição, exige muito mais poder de processamento e memória do que executar um software já pronto.

Além disso, programadores podem utilizar várias ferramentas ao mesmo tempo, além de muitas vezes executar servidores de teste localmente, bancos de dados e depuradores.

Em termos práticos, 4 Gigabytes de memória RAM são mais do que suficientes para um usuário comum acessar o Facebook e criar um documento no Word, 8 Gigabytes são o mínimo necessário para desenvolver uma aplicação Java de forma razoável.

Mobilidade

Bons programadores não ficam o dia inteiro sentado numa cadeira digitando. Eles interagem com outros desenvolvedores, trabalham em equipe, discutem em reuniões, treinam, palestram, apresentam.

Um notebook ou laptop é essencial para que o profissional tenha a flexibilidade necessária para desenvolver sistemas num momento, apresentar o software ao cliente em seguida e, ao final do dia, dividir os resultados com a equipe numa sala de reunião.

Porém, algumas empresas usam notebooks ou máquinas genéricas para reuniões, visitas ao cliente e apresentações.

Considere o tempo perdido em cópia de arquivos e preparação de ambiente para cada um dos eventos citados. Isso inclui o tempo de todos os participantes de um evento que demora a começar porque o anfitrião não conseguiu configurar tudo a tempo. Isso sem considerar limitações por causa de algum software que não pode ser instalado.

Ecossistema de desenvolvimento

Já afirmei que bons desenvolvedores não vivem isolados. Mas, além de interagir com pessoas, bons programadores precisam de um ambiente tecnológico favorável para explorar.

Muitas empresas que apostam alto no capital humano parem se esquecer de fornecer, além do hardware individual, todo o aparato instrumental que gira em torno do desenvolvimento de software.

Por exemplo, quantas empresas querem investir em Integração Contínua e Automação de Testes, mas não possuem sequer servidores onde os desenvolvedores possam instalar seus “brinquedinhos”?

O termo brinquedo denota não apenas que os desenvolvedores precisam, por exemplo, de um servidor Jenkins. Eles devem ter o poder se mexer e configurá-los de forma a sempre melhorar o processo de desenvolvimento. Muitas empresas levantam uma estrutura grande, mas se esta for inflexível pode travar o desenvolvimento ao invés de acelerar.

Minha experiência pessoal na GFT

Para quem não acompanha o blog, trabalho atualmente na GFT. Há poucos meses, iniciei em um novo projeto liderando uma equipe com 4 desenvolvedores envolvendo uma séria de integrações para uma instituição financeira em nível global.

Nesse projeto recebi um outro equipamento e, após algumas semanas, comecei a “sofrer” com problemas de lentidão. O PC não era muito novo e algumas atualizações do anti-vírus McAfee, adotado pela empresa, passaram a consumir disco e CPU de forma absurda devido a regras estritas relacionadas à programas Java. Para piorar, havia recebido um monitor pequeno.

Particularmente, não tenho muitos problemas de me adaptar a situações difíceis, mas nesse caso estava sendo realmente sofrível. Algumas vezes, devido à lentidão, tive que trabalhar até mais tarde para concluir as tarefas. Tudo o que escrevi nos tópicos anteriores aplica-se a este caso. A qualidade do meu trabalho caiu, a produtividade despencou, não tinha tempo para mais nada, afinal tudo era consumido ao tentar fazer as tarefas mais básicas.

Até então, nada na empresa havia me deixado com uma impressão negativa, exceto agora trabalhando numa máquina extremamente lenta. Nunca havia pensado em deixar o projeto ou a empresa por qualquer motivo, mas pela primeira vez essas ideias me incomodaram.

Porém, se você puder levar daqui apenas uma lição, que seja a de não fugir dos seus problemas, mas encará-los e superá-los.

Demorei mais do que deveria para tomar uma atitude, mas acabei comunicando vários dos pontos deste artigo para meus gerentes. Me preparei como pude, desde argumentos técnicos, coleta de estatísticas sobre uso de memória e CPU, até fiz pesquisas sobre preços e políticas de renovação de hardware. Pensei que iria enfrentar vários obstáculos burocráticos.

Entretanto, para meu espanto, positivamente falando, a gerência da GFT acatou minhas reclamações e em poucos dias trocaram meu computador por um Core i7 3770 com 16 GB de RAM, sem que eu tenha solicitado nada em específico. E estão também melhorando as coisas para minha equipe e para o restante da empresa, dentro do possível, colocando no mínimo processadores Core i5, instalando novos pentes de memória e definindo a política de dois monitores como padrão para desenvolvedores a partir de um determinado nível.

Minha mesa na GFT

]4 Minha mesa na GFT atualmente

Na verdade, não posso tomar o mérito dessa mudança para mim. Me parece que a gerência da GFT já tinha em mente muito do que eu disse e provavelmente minha atitude tenha apenas acelerado um pouco o processo.

Enfim, toda empresa tem seus problemas. Cabe a nós, desenvolvedores, fazermos com que os nossos gerentes estejam a par dos nossos problemas. Cabe então, aos gerentes, fazer o possível para atender as essas demandas, para o bem deles mesmos e da empresa, considerando o impacto na produtividade e na qualidade.

Muita calma nessa hora

Um aviso importantíssimo: este artigo não tem o intuito de gerar desculpas para desenvolvedores que são pouco produtivos porque não se esforçam ou para alimentar eternos insatisfeitos com argumentos.

Note que a todo momento me referi a bons profissionais, que tem paixão pelo que fazem, que prezam pela qualidade e por um bom trabalho mesmo quando ninguém está olhando.

Esse tipo de profissional será inevitavelmente valorizado pela gerência e assim um pedido ou reclamação será bem recebido.

Este artigo não diz que todo programador merece hardware de primeira qualidade.

Infelizmente muitos programadores fazem seu trabalho muito mal. Eles procrastinam de todas as formas, não testam o código adequadamente, não tem preocupação nem compromisso com o resultado daquilo que fazem. Ninguém vai lhes dar hardware de última geração para sobrar mais tempo para navegar no Facebook ou conversar em bate-papo.

Você se inclui numa dessas categorias? Então reclamar não apenas não vai melhorar sua situação, como pode piorá-la.

Considerações

Os principais intuitos deste artigo são:

  1. Esclarecer e munir os bons desenvolvedores sobre as barreiras que um equipamento ruim pode gerar, pois eles muitas vezes não percebem que poderiam ter um desempenho melhor.

  2. Mostrar aos gestores de TI algumas das necessidades dos desenvolvedores, as quais somente quem realmente cria programas entende.

Entender as próprias necessidades, assim como as necessidades alheias, é o ponto de partida para melhorar a comunicação entre o pessoal técnico e não-técnico. Isso terá impacto direto nos produtos da empresa e em seu lucro.

Se você quer ler de forma mais aprofundada sobre como atrair e manter bons desenvolvedores, sugiro a leitura dos artigos A Field Guide to Developers e Standing Out & Attracting Top Talent, ambos de Joel Spolsky.

Algumas discussões interessantes sobre hardware estão nas publicações Making Devs Happy With Hardware e Why don’t all companies buy developers the best hardware?.

E por último, mas não de menor importância, fica meu agradecimento público à GFT por cuidar bem dos seus desenvolvedores. Sucesso! 🙂