Menu fechado

Os 3 ambientes de desenvolvimento de software

Em 2009 palestrei no Scrum Gathering São Paulo sobre minhas experiências desde 2007 atuando como Agile Coach usando Scrum e XP em diversas empresas. Quando estava preparando os dados dessa apresentação verifiquei que nossos clientes da época se enquadravam basicamente em 3 ambientes de desenvolvimento de software:

    1. Outsourcing
    2. Desenvolvimento Interno
    3. Produtos (ISV)

Resolvi voltar nesse assunto depois de 7 anos porque tenho observado que esse modelo dos “3 ambientes” tem influenciado muito a forma como eu converso, avalio e proponho mudanças para gestores e equipes no nosso programa de consultoria, especialmente depois que adotamos o modelo evolucionário do Kanban como política de Gestão de Mudanças. O fato é que cada um dos 3 ambientes tem modelos econômicos, problemas e potencialidades diferentes. Creio que muita gente não parou para pensar nisso, mas essas diferenças entre contextos causam uma grande confusão na forma como ideias, práticas e soluções são discutidas e apresentadas na comunidade de desenvolvimento de software. Na minha opinião ignorar as diferenças entre esses ambientes freia avanços importantes para a nossa área.

Vou dar alguns exemplos: numa discussão na conferência XPTO, o Huguinho 30480505diz “meus clientes jamais aceitariam trabalhar com Scrum por causa do escopo aberto” – nesse momento todos que são do ambiente 1 (Outsourcing) concordam, quem é do ambiente 2 (Desenvolvimento Interno) pode até se identificar um pouco, porém, para alguém do ambiente 3 (Produtos) tal colocação pode não fazer o mínimo sentido. Na palestra do Zezinho ele afirma “minha organização acha que a área de TI tem um custo alto”, mais uma vez, isso faz sentido para o ambiente 2, nem tanto para quem está no 1 e no 3. No Open Space o Luizinho desabafa: “não aguento mais dezenas de clientes todos os dias reclamando dos defeitos e da dificuldade de uso do nosso sistema!” – é uma frase típica de alguém do ambiente 3 (Produtos) e pode não ser uma dor presente nos ambientes 1 e 2. Sim, todos esses ambientes tem características comuns, porém, creio que o conhecimento iria avançar se cada palestra, livro, artigo, video e postagem fossem contextuais no mínimo a qual desses três ambientes o conteúdo proposto se destina.

3 ambientes, 3 animais diferentes

Sem dúvidas os 3 ambientes tem o mesmo objetivo que é resolver uma necessidade de alguém através de linhas de código, porém, os processos, a gestão e os produtos resultantes são bastante diferentes. Para destacar essas diferenças defini 6 temas, veja o quadro abaixo:

quadro_ambientes

Primeiramente este quadro é bastante generalista e fruto da minha experiência profissional, não deve ser tomado como regra rígida, mas sim para evolução de ideias e discussão. É plenamente possível uma empresa 1 (Outsourcing) prestigiar mais qualidade que prazo ao mesmo tempo que também faz manutenção de software, assim como uma empresa de produtos (3) pode relaxar com a qualidade. Este quadro é mais relacionado com o modelo econômico desses ambientes do que com as suas práticas. Esse quadro serve para direcionar meu próximo ponto que são os problemas comuns que enfrento nestes ambientes.

Problemas do Outsourcing (1)

Outsourcing atende o mercado de empresas que buscam se focar nas suas atividades principais terceirizando atividades “secundárias” – como o desenvolvimento de software – por não querer adquirir o know-how ou para ganhar escala. Uma outra razão seria a empresa optar por não ter a TI como passivo e colocar esses gastos como “Investimento em TI” ao invés de “Gastos Trabalhistas” no seu contábil. Nesse ambiente, como exemplo, o jogo começa quando um cliente necessita de um software para resolver um problema qualquer, geralmente um sistema precisa ser criado e integrado com outras soluções. Esse cliente chama o fornecedor outsourcing para solucionar isso. Um projeto nasce e então, neste ambiente, comumente o ciclo de vida é cascata usando-se métodos tradicionais; ou usa-se abordagem ágil como o Scrum. Em ambos os casos os problemas que observo são parecidos:

    1. O cliente sempre desconfia que o fornecedor “pode fazer mais”
    2. O fornecedor muitas vezes não é transparente
    3. A colaboração entre todos os envolvidos (inclusive terceiros) é fraca e desgastante
    4. As regras do jogo não são claras
    5. A percepção de qualidade do cliente é baixa

Reforçando, essa lista não deve ser tomada como o diagnóstico completo do ambiente 1. Dentro do ambiente Outsourcing você tem diversas raças de animais: grandes consultorias lidando com grandes clientes como o Governo, Bancos, Telecoms e temos também pequenos ateliês ágeis de software, atendendo startups, comércio e serviços. Muito dos problemas que observo nesse ambiente vem principalmente do modelo de contratação. Clientes desse ambiente sonham com projetos “turn-key” e muitas vezes, até involuntariamente, enxergam o projeto como uma grande transferência de risco para o fornecedor que se isola. Não há dúvidas que a maior alavancagem neste ambiente é mudar a forma de contratação. Diversas empresas de outsourcing já praticam um modelo ágil baseado em cobrar por Sprints – lotes menores sempre melhores que lotes maiores – se comparar com o cascata. Sprints são uma boa evolução, porém, vejo que o futuro desse ambiente é diminuir ainda mais o lote de precificação, negociação, avaliação de risco e entrega, porém, isso é assunto para outro artigo. No ambiente 1 a Gestão de Mudanças para melhorar o ambiente é muito difícil, pois envolve duas organizações e o relacionamento entre elas. Há muitos interesses contraditórios e em alguns cenários há abusos.

Problemas do Desenvolvimento Interno (2)

“TI é gargalo” – se você trabalha no ambiente 2 já deve ter ouvido essa reclamação. Departamentos de TI em geral tem a dura missão de construir e manter ativos de software que solucionam os problemas de negócio da organização. Diferente do Outsourcing, o Desenvolvimento Interno não tem (não deveria ter) uma restrição comercial/contratual entre a área usuária e a TI, sendo assim mais simples aproximar esses agentes. O relacionamento entre usuários e as equipes de TI no ambiente 2 são regidos por políticas da empresa, algumas mais formais e explicitas e outras mais flexíveis, tácitas e colaborativas. Os problemas que geralmente vejo nesse ambiente são os seguintes:

    1. Sobrecarga de trabalho (e possível burocratização buscando performance)
    2. Fraca gestão de portfólio
    3. Modelo de gestão baseado em estruturas centralizadas/especializadas
    4. Comunicação fraca ou intermediada entre as equipes de projeto e os usuários finais
    5. Demanda de falha (defeitos, emergências) em níveis moderados

O ambiente 2 sofre pela departamentalização estanque presente na maioria das organizações. Um departamento de TI atendendo diversas outras áreas é a síntese da especialização [Taylor] que visa ganho de economia em escala. Essa separação do trabalho pode ser questionável, mas raramente é. Além disso, alguns desses problemas são causados pela falta de conhecimento da capacidade de produção do sistema de trabalho. Por incrível que pareça, após uma análise minuciosa do fluxo, apesar de todas as acusações, em muitos casos o gargalo não é o desenvolvimento. Como sempre digo, a área que todos acham que é gargalo é inocente até que se PROVE o contrário. Entre os 3 ambientes, salvo exceções, vejo que o Desenvolvimento Interno é o menos complicado: o Custo do Atraso é simples de se calcular e problemas de gestão e comunicação mais fáceis de se resolver. Caso queira transformar esse ambiente a Gestão de Mudanças pode encontrar algumas dificuldades ao tocar no relacionamento com os usuários e com certas tribos que têm interesse em manter burocracias. Motivar as pessoas da maneira correta e no tempo certo é a chave.

Produtos – ISV (3)

Em meados dos anos 90 o termo ISV – Independent Software Vendor – era bastante conhecido, antes dele nós falávamos “software house”, mas por alguma razão esses termos caíram em desuso. Entre as empresas de produtos de software do ambiente 3 nós também temos diversas raças de animais, e o modelo econômico de cada raça pode variar bastante. Empresas de Internet, de e-commerce, da economia compartilhada e de conteúdo estão nesse ambiente, assim como empresas que vendem soluções client-server e stand-alone usando linguagens de 3a. geração. Startups baseadas na economia digital (ainda longe do break-even), grandes corporações fornecedoras de soluções ERP (que faturam milhões), a indústria de games e apps de celulares – todos eles – estão nessa mesma caixa “Ambiente 3”. A fonte de financiamento, as tecnologias, os usuários e os processos dos ISVs são bastante variados, porém, compartilham problemas semelhantes:

    1. Dificuldade em acessar os usuários e entender seus reais problemas
    2. Lidar com novas implementações e alta manutenção complica o modelo de gestão
    3. Código legado, práticas técnicas ruins e arquiteturas inflexíveis podem matar a inovação
    4. Diversificação, portfólio e posicionamento do produto são complexos
    5. O modelo geralmente é outside-in, deveria ser inside-out

O ambiente 3 (Produtos) tem semelhanças com o ambiente 2 (Desenvolvimento Interno). A grande diferença entre os dois é que produtos podem ter milhares de usuários, com expectativas e problemas diferentes.No ambiente 3 você pode até escolher quem irá atender, no ambiente 2 isso não acontece! Um ISV com um produto estabelecido e renda recorrente gerando lucros é um dos melhores negócios do mundo. O grande desafio do Ambiente 3 é chegar nesse ponto e manter inovando mais que os concorrentes. A Gestão de Mudanças para melhorar um ambiente 3 geralmente encontra menos resistências se comparado com o ambiente 2. A mágica começa quando obtemos concordância entre todos na empresa que o cliente é a parte mais importante da corrente de valor. Se esse direcionamento é claro, com algum suporte da liderança, o processo evolui.

Na prática você deve estar se perguntando: “Como esse modelo dos 3 ambientes pode me ajudar?”. Bem, inicialmente é saber “onde você está” e avaliar como outros conteúdos como livros, blogs, artigos, videos, palestras, tweetadas e outros te ajudam ou não no seu ambiente.

O objetivo deste artigo é lançar o modelo “3 ambientes de software” para o mercado, a academia e a comunidade avaliarem, criticarem e melhorarem essa visão. Ainda preciso desenvolver formalmente o que seriam as diferenças dos modelos econômicos de cada um dos ambientes e arranjar um lugar para iniciativas Open Source. Fiquei um bom tempo sem escrever e tenho muito conteúdo para por no papel, entretanto, muitas das coisas que quero escrever – conteúdos exclusivos – precisam de alguns pilares para os leitores. O conteúdo que vem por aí nos próximos artigos envolve assuntos da Gestão Moderna de TI como Complexidade, Modelos Econômicos Lean, Cynefin, Gestão de Mudanças, Enterprise Services Planning e Kanban/Agilidade em Escala no Nível Corporativo.

Se você se identificou com os problemas listados aqui e busca soluções entre em contato conosco para conhecer como temos ajudado nossos clientes.

Se você quer mais conteúdos, videos, e-books e games sobre gestão de TI, assine a nossa Newsletter!

Deixe um comentário

O seu endereço de e-mail não será publicado. Campos obrigatórios são marcados com *