Rafa Nascimento

Software Product Studios: desenvolvendo aplicações inovadoras e profissionais competentes

Posted in cultura by Rafa Nascimento on 06/08/2013

No Brasil, a quase totalidade do mercado de tecnologia é composta por fábricas de software e consultorias de desenvolvimento de software. Nestes modelos, o principal foco é vender mão-de-obra. Há, basicamente, 2 formas de se fazer dinheiro nestes modelos: projetos de software e manutenção de software. As fábricas e consultorias dispõem de mão-de-obra (nem sempre) qualificada, e cobram às empresas pela utilização de sua capacidade de produção, relegando projetos de software e a manutenção dos mesmos a meros contratos de prestação de serviço de desenvolvimento de software.

O surgimento das fábricas e consultorias de software
Antes de revolução industrial, todo trabalho era realizado de forma manual. No máximo, com a ajuda de uma ou outra pequena ferramenta. Quando a demanda era muita, os trabalhadores organizavam-se em grupos para atender a necessidade. Com a competição cada vez mais acirrada promovida pela revolução industrial, estes trabalhadores viram seu trabalho ser industrializado e reproduzido em larga escala. Eles não precisavam mais se preocupar com os custos de matéria-prima, mas também perderam seus lucros para os donos de indústrias. O modelo industrial de produção em larga escala espalhou-se por todo o mercado de trabalho, firmando-se como regra. Para atender às indústrias surgiam, em paralelo, as grandes corporações para prestação de serviços administrativos.
Com o crescimento da tecnologia e a explosão da computação nos anos 70, as corporações e indústrias passaram a utilizar computadores para automatizar processos repetitivos e economizar em mão-de-obra, gerando a necessidade por profissionais que soubessem operar e programar os computadores. Surgia, então, o departamento de processamento de dados, que posteriormente viraria o departamento de TI. Porém, rapidamente o alto custo destes departamentos fez com que eles passassem por um processo de downsizing, que manteve nas empresas apenas gestores e analistas de sistemas à época. Como resultado deste processo, as empresas ficaram responsáveis apenas por manter seus sistemas funcionando e solicitar o desenvolvimento de novos sistemas à empresas terceiras, detentoras de mão-de-obra qualificada: as fábricas de software e consultorias de desenvolvimento de software.

Os problemas do modelo
Os problemas deste modelo de negócio são inúmeros. Tenho certeza que, com quase 15 anos de carreira, só conseguirei enumerar alguns de muitos outros que você pode apontar. É inegável que o modelo é lucrativo se pensarmos que o software pode ser montado como um carro. Pena que não é. Além disso, o modelo é danoso para o mais importante dos 3 pilares (produtos, processos, pessoas) de uma empresa: pessoas.
Neste modelo, o principal foco é o cumprimento de um contrato baseando-se em alocação de mão-de-obra especializada. Seja em um projeto, em uma equipe remota de suporte à produção ou diretamente no ambiente do cliente. Como os contratos, em sua grande maioria, são formatados em valor-hora, o cliente fica obrigado a garantir que o dinheiro está sendo bem investido. Ou seja, que as pessoas destinadas ao seu contrato estão produzindo cada minuto das horas contratadas, ou das horas que estão sendo pagas. Daí surge o primeiro problema: além de cobrar-se por um trabalho abstrato de forma exata e concreta, não há investimento na competência dos profissionais, e frases como “porque dar treinamento se as pessoas vão embora?” surgem. Com isso, gera-se a famosa rotatividade de profissionais nas fábricas e consultorias de software. É bom frisar que cada um é responsável pelas suas próprias competências. Também é bom frisar que uma empresa, um conjunto de pessoas, também é responsável por suas competências. Que reside nas pessoas. Principalmente quando falamos em trabalhadores do conhecimento. Junta-se a isso o fato de que, se considerarmos que todo software é composto de conhecimento sobre tecnologia e conhecimento sobre negócio, podemos dizer que metade do conhecimento do software vai embora com cada pessoa que busca uma recolocação no mercado. Invariavelmente, a insatisfação é a mesma: cobrança baseada em cronogramas ou em contratos e falta de investimento em competência.
O segundo problema é o foco no produto errado. Quando se trabalha com alocação de mão-de-obra no modelo homem-hora, o produto passa a ser as horas produtivas das pessoas. E, para os clientes, as horas produtivas dos profissionais das fábricas e consultorias são as horas que os desenvolvedores utilizam resolvendo problemas em produção através de uma linguagem de programação ou despejando código em um projeto, onde ele faz parte de uma “equipe”, porque em “equipe” o sistema não demora tanto para ser desenvolvido.
Segundo Julio Sergio Cardozo, professor e ex-CEO da Ernst & Young, no artigo “O Fim do Taxímetro”, o modelo de negócio utilizado nos últimos 200 anos pelas empresas de serviços profissionais pode ser expresso pela seguinte equação:

Receita = quantidade de profissionais x eficiência x taxa horária

Nessa equação, a quantidade de profissionais representa todo o contingente de profissionais que possa ser destacado para prestar serviços aos clientes; a eficiência corresponde à combinação de horas disponíveis e a taxa média de débito a clientes ou de utilização desses profissionais; e a taxa horária, ou taxa de realização, significa o valor médio por hora cobrado pela empresa.
No artigo, Julio sugere a aposentadoria do timesheet e um modelo de precificação por mérito ou benefício gerado, expresso pela seguinte equação:

Lucratividade = capital intelectual x preço x eficácia

Essa equação, quando comparada com a equação que representa o modelo tradicional, mostra alterações substanciais no modelo de negócio. A troca de receita por lucratividade como resultado da equação se deve ao fato de que a gestão sadia do negócio não busca o crescimento pelo crescimento, e sim a solidez financeira do empreendimento.
Outra troca igualmente notável é de taxa horária por preço, pois, afinal, o cliente não está comprando horas, o que, aliás, nada significa para ele, que busca soluções para suas necessidades. No novo modelo de negócio aqui proposto, a precificação está diretamente correlacionada com o valor entregue ao cliente, ao benefício que lhe é proporcionado. É uma quebra de paradigma para a qual os profissionais precisam estar mental e emocionalmente preparados e dispostos. E não é rápida.

Os 2 pilares do desenvolvimento de software
Há 2 pilares essenciais no desenvolvimento de software, que funcionam em retro-alimentação: produto e pessoas. Se você tem um produto, ou uma visão, relevante e inspirador o suficiente, você consegue boas pessoas trabalhando ao redor da causa. Se você tem pessoas cada vez mais competentes e autônomas trabalhando ao redor do seu produto ou da sua visão, ele pode se tornar cada vez mais relevante, útil e bem-sucedido. E é este equilíbrio que precisa ser atingido através de processos que maximizem as interações positivas e minimizem as interações negativas no ambiente de trabalho, criando um ambiente produtivo e próspero para o produto e para as pessoas envolvidas em seu desenvolvimento.
Felizmente, o mercado brasileiro vê, hoje, uma nova forma de trabalhar o software. Alguns já falam na “era da economia de software”. Ironicamente, uma forma bem-sucedida há décadas no Vale do Silício. Vemos o surgimento de cada vez mais startups com foco em um produto e que conseguem, na grande maioria das vezes, as melhores cabeças pensantes da indústria e investem pesado no desenvolvimento de suas competências. Não por acaso, muitos desenvolvedores, experientes ou não, estão migrando para as startups de produtos. Não é só a autonomia de uma empresa-bebê que seduz. É, também, o foco em um único objetivo que chama a atenção. Ainda mais quando é um objetivo com o qual você se identifica em seus valores.
Em uma fábrica de software, normalmente temos unidades de negócio (organizadas de forma hierárquica e, por conseguinte, errônea) atendendo cada uma a um cliente (ou “conta”) específico. Nesta unidade, há a disponibilidade de diversos desenvolvedores, que são alocados de acordo com o seu conhecimento em determinada tecnologia. Ou seja: há os profissionais que cuidam de sistemas em Java, há profissionais que cuidam de sistemas em .NET, há os que cuidam de Cobol, há os DBAs e assim por diante. Normalmente, estas unidades de negócio prestam serviços de desenvolvimento de novos sistemas e suporte a sistemas já existentes. Assim, há uma frequente alocação e desalocação de desenvolvedores em frentes diferentes de trabalho, fazendo com que os mesmos acabem precisando focar em mais de 1 sistema ao mesmo tempo, para garantir que suas horas estão 100% preenchidas em um dia de trabalho.
Já em uma empresa focada em produtos, é possível ter equipes mais homogêneas, focadas em 1 problema por vez e em problemas menores, possibilitando o crescimento da qualidade do produto que está sendo desenvolvido e disponibilizado aos clientes. Pode haver equipes focadas em produtos distintos (37 Signals), ou equipes focadas em partes distintas de um grande produto (Facebook), mas todas as equipes são orientadas a um aspecto de negócio, com uma grande mistura de tecnologias, e não são orientadas a determinadas tecnologias, gerando, assim, equipes verdadeiramente multidisciplinares.

Software Product Studios
Em um mercado cada vez mais focado em pessoas, há cada vez menos espaço para o modelo de fábricas e consultorias de software. Um modelo ainda industrial, de altos lucros e que acredita que o trabalho de desenvolvimento de software pode ser padronizado e replicado em larga escala através da contratação de mais e mais desenvolvedores. Teorias como Management 3.0, empresas como a Evernote e o Facebook, as experiências das agências digitais e dos estúdios de aplicativos móveis já nos provaram que a criatividade essencial para o desenvolvimento de softwares inovadores e realmente úteis está muito longe do modelo de fábricas e consultorias.
Trabalhar o software como produto, e não como serviço, pode ser a maneira mais eficaz de gerar inovação, por ser um modelo que depende e muito da autonomia, do conhecimento e da maestria de seus profissionais, fazendo com que as empresas invistam cada vez mais em suas competências em troca de ideias colocadas em prática para produtos com os quais seus profissionais se identificam e querem ver crescendo e ganhando mercado.
Em um mercado mais justo, onde um produto, em grande parte, é vendido através de sua reputação, e não através de esforço de vendas de analistas comerciais e seus contatos, há espaço para cada um desenvolver o seu melhor em nichos específicos, e competir em um formato onde o vencedor tem mais qualidade, e não o menor preço.

Anúncios

O futuro da Agilidade não é bonito

Posted in futuro by Rafa Nascimento on 30/10/2012

Concordo com o que Jurgen Appelo diz em seu post I don’t care about “Agile”.

Muitos fatos e experiências levam-me a crer que o Agile não tem um futuro necessariamente bonito. Embora a vontade, obviamente, seja oposta, é inegável o momento controverso pelo qual a filosofia passa. Compartilho abaixo alguns fatores que chamam a minha atenção e convido-os a uma reflexão.

  1. A figura mais emblemática rumo à adoção da agilidade e à mudança cultural necessária à agilidade, o Scrum Master, é um papel cada vez menos requisitado nas empresas. No ano de 2011, uma média de 8 a 10 anúncios de emprego buscando um Scrum Master eram encontrados para a cidade do Rio de Janeiro. Hoje, nenhum é encontrado. Muitos Scrum Masters que emergiram, emergiram de vontade de ver um novo ambiente de trabalho. Poucos têm o preparo necessário para exercer o papel, que, hoje, é mesclado por muitas empresas ao cargo de desenvolvedor, ao papel de líder técnico ou até mesmo ao papel do gerente de projetos. “Mas o Scrum Master é um papel!”, muitos dirão. Sim. Segundo o PMBoK, o Gerente de Projetos também.
  2. Não houve e nem está havendo uma mudança substancial na disciplina de gerenciamento de projetos, documentada hoje em dia pelo PMI. Muitos anúncios buscando gerentes de projetos que citam os métodos ágeis passam a impressão de que o conhecimento requerido é um “backup” para o caso de aparecerem projetos que fujam aos tradicionais, guiados pelo RUP. Resta a esperança de que gerentes de projetos tradicionais incorporem os princípios ágeis e que os líderes ágeis compreendam que o conhecimento sobre gerenciamento de projetos só tem a acrescentar ao trabalho. E resta a esperança de que a nova versão do PMBoK traga uma mudança substancial na disciplina considerando-se a gestão ágil, e não apenas citações.
  3. Uma sensação de final de “oba-oba” paira no ar. O Scrum foi inegavelmente o framework ágil de maior sucesso que apareceu, o método Kanban, até então, não tem mostrado grandes resultados e nenhum dos frameworks ágeis, nem mesmo o XP, pelas experiências que tive até hoje, conseguem manter as pessoas imbuídas em manter o processo funcionando minimamente bem. No mínimo respeitando os princípios do Agile e do Lean. Isso se deve a uma adoção mecanizada dos processos e a ausência de um trabalho de mudança cultural, que é muito mais complexo e demorado. Fica a impressão de modismo. A impressão de que a agilidade não vai ultrapassar a barreira da novidade. Vale lembrar que, apesar de a filosofia ágil ter mais de 10 anos, somente entre 2006 e 2008 ela começou a adentrar grandes empresas.
  4. Muitas empresas que adotaram a agilidade, hoje, estão tendo uma “recaída”de comando-controle, basicamente, por expectativas de produtividade não atendidas. Mais uma vez, fruto da falta de mudança profunda na cultura, que faz aferir a produtividade da mesma forma como aferia-se antes da “mudança” e da subestimação do fator humano no ambiente de trabalho. Além disso, empresas famosas por seus ambientes favoráveis aos profissionais da informação e criação, como a Google e o Facebook, evitam afirmar que utilizam métodos ágeis.
  5. A crença de que a filosofia ágil é algum método milagroso que transforma todas as pessoas que são tocadas em pessoas altamente comprometidas. É fato que a atenção ao fator humano na agilidade é imensamente maior, mas pessoas que não são comprometidas com as metas da empresa estão por toda a parte. Apesar da agilidade tratar essas pessoas de forma diferenciada, com compaixão e buscando encontrar a melhor equipe e projeto para elas, em certos casos não há solução que não a dispensa do profissional. Nem sempre há final feliz. E profissionais “espertos” e imaturos existem em qualquer lugar.
  6. Foco exagerado no processo e baixo na gestão do ambiente de trabalho. Uma das formas mais efetivas de provocar uma mudança cultural é mudar o próprio ambiente de trabalho e fazê-lo fluir “no sangue”. E exemplos não faltam: Google, Microsoft, Facebook, Philips. Na minha opinião, a parte mais efetiva de uma mudança concreta rumo aos princípios do Agile e do Lean é a mudança do ambiente de trabalho e a sua adequação ao trabalho com a informação e criatividade. E mais do que fazer a transformação: garantir que as novidades são úteis e são utilizadas pelos profissionais. Cansei de ver videogames e salas de descompressão “espetaculares” disponíveis aos profissionais que são vigiadas ou só podem ser usadas fora do horário do expediente. Acreditar que as mudanças podem gerar aumento de produtividade e incentivar o funcionamento de todas as iniciativas de ambiente. Se o foco estiver todo no processo, há grandes chances de ser só mais um processo que foi experimentado pela empresa.
  7. Negligência ao histórico dos times. A filosofia ágil é baseada em experimentação. E não há experimentação se não há estado anterior e estado atual. Métricas de performance são importantes para que as ações de melhoria contínua possam ter chance de ser efetivas. Métricas de satisfação do cliente são importantes para garantir que o planejamento dos esforços está apontando para a melhor direção possível.

Enfim, se continuarmos ignorando estes e outros fatores que, talvez, nem eu perceba, definitivamente há grandes chances de a filosofia ágil ser só mais uma moda. Assim como a Qualidade Total e a mais recente Re-Engenharia.

Como medir a produtividade de times ágeis

Posted in métricas by Rafa Nascimento on 22/10/2012

Um dos mantras mais repetidos em uma cultura ágil é “melhoria contínua”. Porém, pouco se faz de fato para facilitar o surgimento de um verdadeiro fluxo de melhoria contínua em um time ágil. Na maioria das vezes, apenas retrospectivas lúdicas com dinâmicas que visam diminuir o tormento de mais uma reunião e que, com o passar do tempo, por conta de resultados superficiais, perdem o efeito “suavizante” que deveriam ter para que a reunião gere um bom plano de ação. Então, como podemos tornar nossas retrospectivas mais produtivas e factuais? Como podemos ajudar nossos times na árdua tarefa de aferir a sua própria performance? Eis a maneira que encontrei de endereçar estes problemas.

Segundo Patrick Lencioni, em seu livro The 5 Dysfunctions of a Team, um time não pode ser considerado um time de verdade se o mesmo não é capaz de aferir os seus próprios resultados e reagir conforme a informação conhecida. Isso porque não é possível melhorar o seu processo se não há um histórico no qual se basear. A melhoria contínua, enfim, só se torna realidade quando é possível concluir que aspectos do processo são passíveis de melhoria, através de métricas.

Em muitas empresas, métricas são vistas como vilãs pelos times de desenvolvimento de software. Isso porque, durante muito tempo, as métricas foram utilizadas, em grande parte, para promover verdadeiras “caças às bruxas” em times que não vinham colhendo bons resultados. Ou seja, as métricas eram utilizadas, tardiamente, para buscar culpados por falhas e insucessos em projetos. Algumas vezes, métricas eram utilizadas sem um propósito claro, e sim pelo simples fato de que elas deveriam existir, perdendo-se excelentes oportunidades de descobrir problemas antes que eles acontecessem.

Para facilitar o processo de melhoria contínua no meu time, me fiz a seguinte pergunta: o que é interessante como métrica para o meu time, e ao mesmo tempo enxuto? Que métricas deveriam estar presentes em seu dashboard? E para responder a estas perguntas, recorri ao livro Agile Project Management, de Jim Highsmith, e ao triângulo da agilidade proposto por ele.

Segundo Highsmith, projetos ágeis devem buscar o equilíbrio entre valor agregado ao negócio, qualidade técnica e as restrições tradicionais de um projeto (tempo, custo e escopo). Tendo em vista estes prismas, criei um dashboard que oferece métricas para aferir os dados de cada um deles. O dashboard, então, fica dividido em 3 partes: o quão efetivo o time está sendo em trazer valor para a empresa que comprou o projeto, o quão efetivo o time está sendo em desenvolver um produto de alta qualidade e o quão efetivo o time está sendo em entregar valor e qualidade dentro das restrições de tempo, escopo e custo do projeto.

Para o prisma de valor agregado, por exemplo, utilizo-me de métricas como velocidade (quantidade de story points que um time á capaz de entregar por iteração), lead time (tempo decorrido entre o pedido de uma feature e a disponibilização da mesma em produção) categorizado por story points, tail (tempo decorrido entre a conclusão de uma feature e a utilização da mesma pelo usuário final) e cumulative flow (representando o tempo que cada passo do processo consome durante o desenvolvimento das features).

Para o prisma de qualidade interna, realizo, por exemplo, medições como a quantidade de pares distintos que estão sendo formados por iteração, a quantidade de releases com features e com bug fixes e a quantidade de quebras do CI por iteração.


Por fim, utilizo, por exemplo, um burndown por story points do trimestre e um gráfico de alocação de horas do time categorizado por tipo de atividade para o prisma das restrições de projeto (um empréstimo da galera da Globo.com!).

Desta forma, deixo visível para o meu time a performance de cada iteração e podemos discutir de uma forma mais factual as possíveis melhorias no nosso processo. Retrospectivas lúdicas são úteis em determinadas ocasiões e momentos do time, mas há momentos em que a melhor opção é vasculhar os dados históricos para encontrarmos possíveis pontos de melhoria que talvez não seriam vistos a “olho nu”.

%d blogueiros gostam disto: