ANAIS FERRAMENTAS DO MODELO DE GESTÃO LEAN APLICADAS EM UMA FÁBRICA DE SOFTWARE FELIPE SANTOS BATISTA DE SOUZA ( [email protected] ) USP - FEA - FACULDADE DE ECONOMIA, ADMINISTRAÇÃO E C. CONTÁBEIS ALVAIR SILVEIRA TORRES JUNIOR ( [email protected] ) USP - FEA - FACULDADE DE ECONOMIA, ADMINISTRAÇÃO E C. CONTÁBEIS Resumo Este caso de ensino tem por objetivo retratar uma situação ocorrida em uma fábrica de software que se viu pressionada a reduzir custos. A solução adotada foi a utilização ferramentas do modelo de gestão Lean para aumentar a eficiência de seu processo produtivo e diminuir possíveis impactos sobre suas margens. Neste processo de implementação de melhorias foram utilizadas ferramentas como o Kaizen e também o formulário A3. Ao final do processo de implementação das melhorias foi possível verificar através de indicadores qual foi o ganho obtido com a utilização do modelo de gestão Lean e suas ferramentas. Palavras chave: Lean, Agile, TI, Fábrica de Software, Kaizen, Formulário A3 Introdução Este caso se passa em uma empresa brasileira especializada no desenvolvimento de software ou como alguns preferem “Fábrica de software”. Esta empresa, chamada aqui através do nome fictício “Pontual”, possuia uma estreita relação de mais de 10 anos com um grande cliente nacional (da área de Telefonia) que realiza o outsourcing da manutenção e evolução de alguns de seus sistemas de informação com a Pontual. Esta relação duradoura sempre foi marcada por grandes projetos, em geral de alta complexidade e prazos agressivos impostos pelo cliente dada a natureza de seu negócio. Neste contexto, dentro do portfólio de sistemas mantidos pela fábrica havia um deles (que será chamado “Sistema ABC”) caracterízado pela sua alta complexidade e projetos de alto esforço de implementação e em geral com prazos curtos, estas características estiveram presentes desde que o sistema passou a ser mantido pela Pontual em meados de 2006. O time de desenvolvedores envolvido com o “on-going” (manutenção evolutiva e corretiva) do Sistema ABC era composto por cerca de 15 funcionários dedicados exclusivamente à manutenção da aplicação. Comparativamente em relação aos outros times da fábrica, estes funcionários possuiam razoável especialização (em média, indivíduos com mais de 3 anos de experiência no sistema). 1/16 ANAIS O Desafio Em meados de Novembro de 2013 o cliente introduziu uma forte demanda para a redução dos custos dos contratos com os fornecedores (incluindo a Pontual). Desta forma, os gerentes se viram obrigados a cortar custos a fim de que as margens fossem mantidas sem que houvesse comprometimento com a qualidade e presteza na entrega do software ao cliente. Sendo assim, algumas medidas a nível gerencial foram tomadas para promover restruturações em todas as equipes tornando-as menos custosas. Porém, no caso da equipe dedicada ao Sistema ABC diversos recursos chave (em geral experientes) da equipe tiveram que ser mantidos o que dificultava economias relevantes para a gerência. A ideia dos gestores então foi a de aumentar a eficiência/produtividade dos processos envolvidos com a manutenção do Sistema ABC. Existia ainda um fator complicador à situação, a forte pressão da alta gerência da empresa para que alterações fossem realizadas em curto prazo (cerca de 3 meses no máximo) em função do fechamento dos resultados da Pontual para aquele ano fiscal (as alterações já deveriam surtir algum efeito nos resultados). Para implementar estas melhorias necessárias, algumas questões precisariam ser respondidas: • Por onde começar ? • O que deveria ser feito ? • Existiria alguma metodologia que poderia ser utilizada para guiar o trabalho a ser realizado ? A ideia da gerência então foi a de reunir dois dos líderes de desenvolvimento mais experientes da fábrica que atuam com o Sistema ABC e montar uma equipe que iria conduzir um programa de melhoria da eficiência da fábrica (porém neste primeiro momento restrito ao sistema ABC). O trabalho da equipe era o de propor alternativas viáveis e factíveis para melhoria dos processos da fábrica e implementá-las de tal forma que fossem gerados resultados concretos (que pudesem ser quantificados) e em curto espaço de tempo. O modelo de Gestão Lean Para responder às questões levantadas, uma das sugestões/alternativas que surgiu dentro da equipe do programa de melhoria, foi a de adotar algumas das ideias do modelo de gestão Lean e aplicá-las ao processo de desenvolvimento de software. O termo Lean foi criado por uma equipe de pesquisa liderada por Jim Womack Ph.D do MIT, para descrever o modelo/filosofia de produção existente (Toyota Production System TPS) na companhia automotiva Toyota em meados do final da décade de 1980. Posteriormente, as características de uma organização Lean foram descritas por Womack e Dan Jones no livro “Lean Thinking” eles também foram os fundadores do Lean Enterprise Institute. O modelo de gestão LEAN propõe uma forma diferenciada de se “enxergar” as organizações procurando promover o fluxo de valor contínuo e a diminuição do desperdício, principalmente através do engajamento das pessoas. O objetivo, portanto, é maximizar o valor entregue enquanto o desperdício é reduzido, ou seja, com menor quantidade de recursos. Para tal, o modelo LEAN também apresenta algumas ferramentas e métodos. 2/16 ANAIS Segundo este modelo, a forma ideal para se chegar ao melhor resultado (alto valor gerado e baixo desperdício), é procurar ao invés de atuar em pontos isolados da produção como máquinas ou tecnologias, melhorar todo o fluxo de produtos e serviços através de todo o fluxo de valor. Isto irá propiciar processos com menor dependência humana, esforço e tempo para produzir produtos com menor custo e maior qualidade (comparativamente à abordagem tradicional). Segundo Bell e Orzen (2011), o modelo de gestão Lean possui 5 princípios que podem ser usados em uma vasta gama de campos de atuação (de desenvolvimento de software à produção automotiva). São eles: • Valor ao cliente (entender o que o cliente valoriza); • Fluxo de Valor (processos que ligados geram o produto/serviço desejado pelo cliente); • Fluxo Contínuo (manter o fluxo do processo de forma contínua evitando desperdícios e tempos de espera); • Produção Puxada (fazer/produzir o que e quando o cliente demanda, evitando estoques); • Perfeição (melhoria contínua dos processos). Uma das “ferramentas” mais importantes do modelo de gestão Lean é o “Kaizen” (que em japones significa melhoria) trata-se da ideia de que melhorias incrementais sejam realizadas nos processos de trabalho (BELL; ORZEN, 2011). Segundo Bell e Orzen (2011), existem duas categorias/tipos de Kaizen: • O Kaizen de sistemas, em geral conduzido pela gerência, no qual se busca a melhoria no fluxo de valor como um todo, através de ajustes nos fluxos de materiais, informação, etc. • O Kaizen de processos, realizado muitas vezes por times e indivíduos, no qual o foco é a redução do desperdício em áreas específicas dentro do fluxo de valor. Especificamente no contexto de uma fábrica de software, algumas formas de desperdício e suas consequências são: • Defeitos, causados por má execução do trabalho e que podem ter como consequência a realização de re-trabalho; • Espera, pode ser gerada por aplicações lentas e afeta a produtividade dos trabalhadores; • Transporte, pode ocorrer em função do deslocamento excessivo de pessoas gerando custos altos; • Conhecimento não utilizado, os funcionários realizam tarefas que não agregam valor ou atividades repetitivas. Isto os previne de contribuir mais com seu conhecimento para atividades que poderiam gerar mais valor ao produto. 3/16 ANAIS Processos de Desenvolvimento Ágeis Uma abordagem alternativa e/ou complementar ao Lean que também foi sugerida para se aumentar a eficiência da fábrica de software é a utilização de metodologias de desenvolvimento de software ágeis (amplamente conhecidas como metodologias “Agile”) que vem tendo uma rápida disseminação desde os anos 2000. A filosofia de desenvolvimento Agile compreende um conjunto de metodologias/técnicas que se baseiam em desenvolvimento iterativo e incremental em que os requerimentos e soluções são analisados e pensados dentro de equipes que em geral são autogeridas e com diferentes bagagens funcionais (desenvolvedores, especialistas no negócio relacionado ao software sendo desenvolvido, etc.). Os valores, princípios e métodos do Agile foram compilados e publicados em 2001 no Manifesto Agile que entre outras coisas diz que “Indivíduos e Interações são mais importantes que processos e ferramentas. A colaboração do cliente é mais importante que a negociação de um contrato. Software funcionando é mais importante que uma documentação completa.” (BECK et al., 2001) . O Scrum, particularmente, é um das formas de implementação do processo de desenvolvimento de software Agile, com um foco direcionado para a flexibilidade em que a realidade de que o cliente pode desejar alterar requisitos ou a sequencia em que os mesmos devem ser entregues é incluída no processo de desenvolvimento de software. Isto é possível através da característica do Scrum (derivada da filosofia Agile) de ser um modelo de desenvolvimento iterativo (com feedbacks/testes frequentes para cada um dos requisitos sendo implementados) e incremental (em que os requisitos podem ser desenvolvidos e entregues de forma menos acoplada, ou seja, o cliente não recebe uma versão final do software com todos os requisitos implementados, mas sim versões que vão agregando mais requisitos/funcionalidades com o decorrer do processo de desenvolvimento). Estas características permitem uma maior flexibilidade nas decisões sobre o que e quando os requisitos devem ser implementados. Comparação entre os modelos Agile e Lean Duas questões que surgiram dentro da equipe do programa de melhoria ao analisar os diferentes modelos: Até que ponto um modelo se relaciona com o outro e qual seria o mais adequado em cada situação. Realizando-se uma análise entre as abordagens Agile e Lean, concluiu-se que existiam algumas características que determinariam qual das duas mais se adequaria a uma determinada necessidade. O modelo de gestão Lean seria mais amplo abrangendo toda a cadeia de valor dentro de um processo organizacional focando na redução ou remoção de tarefas que não agregam valor ao produto (inclusive em áreas de apoio). De forma similar, o modelo/técnica Agile busca otimizar (através de boas práticas e métodos parecidos com aqueles presentes no modelo Lean – como redução do desperdício de esforço em atividades que não agregam valor), porém especificamente no processo de desenvolvimento do software em si, ou seja, um escopo mais restrito. 4/16 ANAIS Em uma situação hipotética em que uma fábrica de software necessita entender como o “todo” está funcionando, o mapeamento do fluxo de valor (proposto pela modelo de gestão Lean) poderia permitir identificar etapas que geram desperdício e que, mesmo com a implementação de processos de desenvolvimento Agile, poderiam fazer com que o resultado final (software a ser produzido) ainda fosse criado/desenvolvido de forma ineficiente. A ideia de utilizar a metodologia Lean Levando-se em consideração todas as características mencionadas acima, a equipe do programa de melhoria concluiu que a alternativa de utilização de metodologia Agile não seria a mais adequada pois o modelo de desenvolvimento por si só não era um ofensor à eficiência da fábrica, já que vinha sendo utilizado e aperfeiçoado há muitos anos. Não que isso excluísse qualquer possibilidade de uma mudança futura. Restava então, como uma saída, analisar o processo de desenvolvimento de software como um todo (não apenas a metodologia de desenvolvimento) na busca de possíveis melhorias para o aumento da eficiência da fábrica de software. Sendo assim, o modelo de gestão Lean (pelas suas características já mencionadas acima) e suas ferramentas permitiria realizar este estudo de forma orientada e sistemática. A utilização do modelo Lean aplicado à Tecnologia da Informação se mostrou interessante por algumas razões principais, como: sua ampla utilização em outras áreas relacionadas à produção (e geração de valor); possuir uma metodologia bem definida direcionando as etapas a serem seguidas desde a identificação das possíveis fontes de desperdício até a forma com que a implementação de melhorias poderia ser realizada. Através desta metodologia, portanto, seria possível obter todo um direcionamento para o trabalho a ser realizado e com relativo baixo custo já que os conceitos são amplamente divulgados e não seria necessário (pelo menos para a adoção da metodologia) a adoção de ferramentas ou softwares específicos. As considerações foram então coletadas pela equipe do programa de melhoria e levadas à gerência, como uma forma de mostrar que o trabalho estava sendo realizado e também para obter o consentimento (e também comprometimento) dos gerentes sobre o caminho a ser seguido. Tomada a decisão conjunta (equipe do programa de melhoria e gerência) pela utilização da metodologia Lean para a resolução do referido problema, passouse a verificar quais características/aspectos do “Lean Thinking” poderiam ser transportados para a realidade da fábrica de software e em particular para a equipe do Sistema ABC. Aplicando o Lean Thinking O Lean Thinking é um forma de se pensar subjacente ao modelo Lean segundo à qual, deve-se buscar, entre outras coisas: a definição de valor sob a ótica do cliente, alinhar da melhor forma possível as atividades que criam valor para o cliente e realizar estas atividades da forma mais eficiente (menor desperdício) possível. Inicialmente, como prega a abordagem de desenvolvimento Lean, o primeiro passo foi realizar o “Genchi Genbutsu”, ou seja, a equipe do programa de melhoria voltou seus olhos para o processo de desenvolvimento atualmente utilizado pela equipe que mantém o Sistema ABC. Procurou-se neste momento abrir um canal de comunicação com os desenvolvedores e 5/16 ANAIS entender quais eram suas maiores dificuldades e colher sugestões sobre como seu trabalho poderia se tornar mais eficiente/produtivo. Esta interação preliminar se mostrou fundamental, pois os desenvolvedores se engajaram com o esforço da gerência pela redução dos custos. Buscou-se então verificar quais das ferramentas deste modelo melhor se aplicariam à situação enfrentada pela empresa. O modelo de gestão Lean apresenta duas ferramentas que, na visão da equipe do programa de melhoria, poderiam ser utilizadas para que as fontes de desperdício fossem identificadas: o formulário A3 e o mapeamento do fluxo de valor. A questão que se seguiu foi então qual ferramenta utilizar: ambas ou apenas uma delas ? O mapeamento do fluxo de valor consiste em mapear através de um diagrama os fluxos de informação, materiais e trabalho que ocorrem entre células funcionais do processo sob análise, incluindo-se outros dados como a qualidade e o tempo necessário para cada processo. Além disso, durante sua concepção é possível, e por vezes necessário, envolver e integrar equipes de áreas funcionais distintas na tarefa de caracterizar e posteriormente melhorar os processos existentes. Já o “A3” não é apenas um formulário, mas antes um modelo/framework de pensamento que acaba por forçar a utilização de um método estruturado “científico” para a resolução de problemas. Este método inclui as fases de observação, descrição de causa e efeito (hipótese), predição, teste e avaliação. Alguns dos benefícios do A3 são: decisões baseadas em fatos, consenso entre as áreas envolvidas na análise do problema, definição de metas e formas de acompanhamento para garantir que as melhorias serão alcançadas. A partir das conversas preliminares com os desenvolvedores, foi constatado que o problema principal não era externo ao ambiente de desenvolvimento do software, ou seja, não envolvia outros entes como o cliente, processos/procedimentos internos da empresa, problemas com transferência de informação (requisitos de software, por exemplo) entre diferentes elementos do processo de desenvolvimento, etc. Aparentemente o gargalo existia dentro dos times de desenvolvimento na rotina de trabalho que os mesmos realizavam. Sendo assim, entendeu-se que o mapeamento de todo o fluxo de valor do processo de desenvolvimento, apesar de válido, poderia representar um esforço maior, dada sua abrangência, do que o necessário para o problema de eficiência atualmente existente dentro da fábrica. Parecia claro para a equipe após a analise realizada até o momento que, dentro da “caixa de ferramentas” Lean, uma forma de realizar este trabalho seria a execução de um Kaizen de processos, já que seria envolvido um escopo menor (interno ao fluxo de valor) buscando-se a redução de desperdício. Esta atividade então, poderia seria suportada pela criação de um formulário A3, pois a partir do mesmo seria possível entender quais as possíveis fontes de desperdício, soluções e um plano de mudança (inclusive com indicadores que permitiriam acompanhar a transição). Identificando as fontes de desperdício A partir do retorno recebido durante as interações preliminares com os envolvidos no processo de desenvolvimento, foi possível identificar algumas reclamações recorrentes e que indicavam possíveis fontes de desperdício. 6/16 ANAIS Historicamente, o Sistema ABC sofre diversas modificações ao longo de cada ano sendo que em média 20 projetos inserem alterações no código fonte do sistema. Sendo assim, o código-fonte da aplicação posssui milhares de alterações realizadas ao longo do tempo. Em fábricas de software uma atividade crucial é o versionamento do código-fonte, ou seja, armazenar as alterações realizadas no código da aplicação em um repositório (servidor) e disponibilizar o acesso a estas alterações, através deste repositório (que contém a última versão do código), para todos os outros desenvolvedores envolvidos em um dado projeto/desenvolvimento. No dia-a-dia cada desenvolvedor deve obter a versão mais atual do código-fonte e realizar a suas alterações e ao final do dia “subir”, ou seja, atualizar o código contido no repositório com suas alterações de tal forma que os outros desenvolvedores possam considerálas também em seu trabalho. Esta atividade é ainda mais crítica no caso do Sistema ABC devido ao alto paralismo de trabalho entre desenvolvedores (em média, 10 desenvolvedores realizam alterações simultâneas no mesmo código-fonte). Uma consequência destas características foi a de que o repositório se tornou lento, tornando o trabalho dos desenvolvedores menos eficiente. A equipe do programa de melhoria então entendeu que o repositório do código-fonte, poderia ser uma das fontes de desperdício dentro do processo. Outro ponto destacado pelos desenvolvedores foi o tempo necessário para que a aplicação fosse executada na estação de trabalho dos mesmos. Isto ocorria pois o servidor de aplicação (software/sistema utilizado para executar aplicações) utilizado nos ambientes de desenvolvimento era o mesmo utilizado pelo cliente no ambiente de produção (que é efetivamente aquele utilizado pelos usuários finais do sistema). A cada vez que o sistema era executado nos ambientes de desenvolvimento, o desenvolvedor precisava esperar 10 minutos para que pudesse realizar seus testes. Adicionalmente, a estação de trabalho como um todo fica em seu limite de consumo de memória RAM, o que dificultava ao programador realizar outras tarefas de forma paralela. Este foi outro ponto identificado como um ofensor à eficiência do trabalho dos desenvolvedores. As duas fontes de despedício identificadas podem ser enquadradas na categoria de “Espera” em uma das categorias de desperdício em desenvolvimento mencionadas por Taiichi Ohno. A Erro! Fonte de referência não encontrada.Erro! Fonte de referência não encontrada.Erro! Fonte de referência não encontrada.Erro! Fonte de referência não encontrada.Figura 1 apresenta de forma macro as atividades que compõem a rotina do desenvolvedor, conforme descrito acima. 7/16 ANAIS Cliente Envia requisitos do software a ser desenvolvido Servidor de Aplicação Realiza testes Codifica o software e o executa Programador Atualiza o repositório com códigofonte alterado Repositório Obtém o código-fonte mais atualizado Cliente Software desenvolvido é entregue ao cliente Figura 1: Fluxo do processo de Desenvolvimento de Software Elaboração do A3 Para a elaboração do A3, foram promovidos alguns encontros no decorrer de duas semanas entre um representante da equipe que estava envolvida com a condução do programa de melhoria e os desenvolvedores (não líderes) mais experientes da fábrica. Vale ressaltar que o contato poderia ter sido realizado apenas com os líderes de desenvolvimento, mas houve o entendimento que essa abordagem poderia inserir “filtros” entre o “chão de fábrica” e os gestores o que não seria ideal do ponto de vista do “Gemba”. Após o entendimento de que algumas atividades específicas poderiam ser as fontes de desperdício no processo, foram definidas variáveis que permitiriam avaliar quantitativamente qual seria esse desperdício e se de fato estas atividades seríam responsáveis por uma perda de eficiência da fábrica: • Tempo médio para a realização do gravação de um arquivo no repositório (Tgravação); • Tempo médio para download de um arquivo do repositório (Tdownload); • Tempo médio de inicialização da aplicação (Tinicializaçao); • Consumo médio de memória RAM da estação do desenvolvedor com a aplicação sendo executada (Cestação). A partir daí realizaram-se as medições necessárias para a aferição de cada uma delas. Para tal, foi solicitado que alguns dos desenvolvedores medissem os tempos envolvidos nas atividades durante 3 dias (a escolha por medir os tempos durante mais de um dia, foi feita para que se evitasse que circunstâncias/instabilidades de infra-estrutura pudessem contaminar os resultados medidos). Os dados obtidos foram: 8/16 ANAIS Tgravação Resultados antes da implementação das mudanças 85 segundos (s) Tdownload 45 s* Variável Tinicializaçao 10 min Cestação 1 Gbyte Tabela 1: Métricas anteriores ao processo de melhoria de eficiência * Tempo para o download de um arquivo individualmente, quando o download era de todo o código-fonte a taxa era de aproximadamente 0,2 segundos por arquivo Com os dados em mãos era necessário compreender qual o impacto que estas “esperas” causavam na eficiência da fábrica. Isto pôde ser realizado através da análise da frequência com que cada uma destas atividades era realizada. Foram então, identificados os seguintes números: • A partir de uma extração das métricas do repositório de código que estava sendo utilizado, foi identificado que para cada novo projeto do sistema são realizadas em média aproximadamente 0,6 gravações de código / hora de desenvolvimento; • Desenvolvedores atuando num mesmo projeto precisam sempre atualizar o códigofonte presente em suas máquinas a cada novo arquivo que é criado/atualizado no repositório por outro desenvolvedor, como em geral os projetos são desenvolvidos por 2 desenvolvedores cada gravação no repositório gera a necessidade de pelo menos um download, ou seja, 2 x 0,6 downloads / hora de desenvolvimento (já que um desenvolvedor precisa se atualizar com o código gerado pelo outro). • Ao se analisar o histórico de projetos desenvolvidos pela fábrica chegou-se à conclusão que são realizadas em média aproximadamente 2.000 horas de desenvolvimento mensal. Neste ponto já se poderia estimar o tempo total de espera causado pelo repositório: • Tempo Total de Espera de Gravação por Mês: Tgravação x 0,6 x 2.000 = 28 horas mensais ou aproximadamente 1,8 horas mensais por desenvolvedor; • Tempo Total de Espera de Download por Mês: Tdownload x 1,2 x 2.000 = 30 horas mensais ou aproximadamente 2 horas mensais por desenvolvedor. Ou seja, duas das atividades que poderiam estar tornando o processo ineficiente consumiam no total 58 horas mensais (ou aproximadamente 4 horas mensais por desenvolvedor). Faltava ainda analisar o tempo de espera gerado pelas variáveis Tinicializaçao e Cestação. Através das observações realizadas durante a coleta de informações junto aos desenvolvedores foi possível verificar que em média a aplicação era inicializada no ambiente de cada desenvolvedor 4 vezes por dia. Logo, 9/16 ANAIS • • Tempo Total de Espera para Inicialização da Aplicação = 4 x Tinicializaçao x (2.0000 h / 8 horas de trabalho diário) = 166 horas mensais (considerando-se toda a equipe de 15 desenvolvedores) ou 11 horas mensais por desenvolvedor. Com relação ao consumo de memória, o maior impacto era gerado pelo fato que os desenvolvedores tinham a capacidade das estações de trabalho comprometidas já que as mesmas contavam com 4 Gbytes de memória, quando considerado o consumo de memória do próprio sistema operacional, do ambiente de desenvolvimento e outras aplicações, a estações de trabalho tinham em média um consumo de cerca de 95% da memória Ram quando a aplicação era executada nas estações de desenvolvimento. A conclusão foi que aproximadamente 15 horas mensais (ou quase dois dias de trabalho) por desenvolvedor eram consumidas em espera (algo que não agrega valor ao produto a ser desenvolvido). Ficou mais claro então para todos os envolvidos que estas atividades elencadas pelos desenvolvedores representavam um volume de esforço/tempo relevante dentro do contexto da equipe de desenvolvimento. Porém, antes de continuar a busca pela eficiência combatendo o desperdício nestas atividades, foi necessário realizar uma consulta prévia junto à equipe de infra-estrutura para determinar o quanto seria possível melhorar em relação à situação atual. Após conversas com este time ficou claro que havia sim espaço para melhorias com uma possível troca do software utilizado para gerenciar o repositório do código-fonte. Esta sinalização foi importante para manter a confiança dos agentes responsáveis pelo programa de melhoria e também para justificar a continuidade da linha que vinha sendo seguida pela do programa de melhoria junto à gerência Foi interessante notar durante as interações com os desenvolvedores que a ideia de mudar a situação atual e implementar mudanças que facilitariam o trabalho dos mesmos foi muito bem aceita. Havia inclusive um sentimento de alívio por parte deles pois naquele momento eles poderiam externar todas as suas críticas e também propor sugestões. Em geral, havia abertura na fábrica de software para que as pessoas trouxessem novas ideias e formas de trabalho. Porém a diferença desta vez foi o comprometimento da gerência em patrocinar um “programa” estruturado de mudanças e que provavelmente (essa era a esperança de todos) seria aplicado, não se tratava mais, portanto, de uma conversa de corredor com o líder imediato ou com algum outro colega sobre ideias ou reclamações relacionadas à rotina de trabalho. Posteriormente, seguindo o plano de análise traçado anteriormente, passou-se a elaboração de um A3 focado nas duas fontes de desperdício mencionadas acima (o repositório e o servidor de aplicação). Mais importante do que a criação do A3 foi o processo para a análise das fontes de desperdício e quais as possíveis saídas para solucionar o problema, bem como o plano e cronograma para a implementação das mudanças. Como mencionado anteriormente, todo este processo permitiu um grande engajamento por parte das equipes envolvidas o que também gerou ganhos durante a criação efetiva do A3, pois todos já haviam tido algum contato com o trabalho que vinha sendo realizado, sabendo de sua importância no dia-a-dia da fábrica e também para com a gerência (que estava patrocinando esta iniciativa). 10/16 ANAIS A seguir serão descritos brevemente alguns detalhes relacionados à cada uma das partes do formulário A3 criado durante este programa de melhoria da eficiência da fábrica. Condições Atuais Inicialmente foram identificadas as atividades que poderiam ser afetadas/impactadas pelos processos que haviam sido criticados pelos desenvolvedores. A partir deste ponto foram coletados os tempos necessários para a realização destas atividades (processo já descrito anterioremente neste texto). Metas e Objetivos De forma conjunta entre a equipe do programa de melhoria, desenvolvedores e equipe de infra-estrutura da empresa, procurou-se determinar quais seriam os tempos adequados para as atividades comprometidas com elevada espera. Análise Neste momento, o objetivo foi entender porque a situação havia chegado aquele ponto e quais os motivos principais levavam a fábrica a ainda utilizar ferramentas que não se mostram mais tão eficientes. A equipe de infra-estrutura trouxe à discussão, quais seriam as opções viáveis para a substituição das ferramentas atuais. Vale ressaltar que existe um conjunto limitado de ferramentas homologadas disponíveis para a utilização na fábrica de software. Isto poderia ter sido um complicador (restrição) à escolha da solução ótima. Os desenvolvedores também puderam coloborar na escolha de novas ferramentas, propondo opções com as quais já haviam trabalhado em outras ocasiões. Contramedidas propostas A partir do entendimento da situação atual e do que levou à mesma, foram analisadas as opções disponíveis e as contra-medidas foram acordadas entre a equipe do programa de melhoria e os desevolvedores, com uma definição clara do que deveria ser feito e quais os benefícios esperados pelas ações a serem tomadas. Isto também trouxe um maior engajamento entre os envolvidos. Plano Para a definição do plano a ser seguido foi necessário estabelecer quem seriam os responsáveis por cada uma das ações, prazo e como a execução das mudanças seria acompanhada (estabelecimento de indicadores). O envolvimento nas atividades anteriores fez com que o comprometimento dos envolvidos na execução do plano fosse conseguido com maior facilidade (logo não houve resistência ou conflito na atribuição das equipes responsáveis pelas ações) e como era de consentimento geral dos envolvidos que as melhorias trariam benefícios para todos, foi geral a determinação em fazer a mudança acontecer o mais rápido possível, desta forma o tempo para a implementação foi aquilo que todos entendiam como o sendo o melhor possível. Acompanhamento 11/16 ANAIS Para a realização do monitoramento a proposta foi realizar reuniões com as equipes envolvidas e acompanhar os indicadores previamente estabelecidos. O A3 desenvolvido pode ser verificado na seção de anexos do presente trabalho. Implementação das mudanças Com a aprovação da gerência o plano contido no A3 foi colocado em prática pela equipe do programa de melhoria, as equipes envolvidas foram reunidas e com o suporte da gerência o processo de mudança foi iniciado. O acompanhamento por parte da equipe do programa de melhoria era diário e desde o início da implantação das alterações, foram realizadas análises dos tempos envolvidos nas atividades ofensoras. A melhora observada foi significativa em todas as variáveis. A seguir serão detalhados brevemente alguns aspectos do processo de mudança que foi realizado. Troca do Repositório Existia uma diferença conceitual na utilização do novo repositório em relação ao antigo, desta forma inicialmente foi necessário envolver os líderes de desenvolvimento para que fosse estabelecida uma política de utilização do novo repositório de acordo com suas características particulares (por exemplo, qual seria o procedimento em caso de projetos concorrentes entre si, qual seria o procedimento quando uma versão do software que estava sendo desenvolvida fosse colocada em produção pelo cliente, etc.). Isto foi importante para evitar que os líderes tomassem decisões divergentes quando situações como estas ocorressem. O que seria muito ruim pois abalaria a confiança dos desenvolvedores no trabalho que estava sendo realizado. Posteriormente foi elaborado um guia de utilização do novo repositório explicando como realizar as tarefas cotidianas. Após os devidos esclarecimentos junto aos desenvolvedores, o novo repositório do codigo-fonte foi liberado para utilização, e os desenvolvedores envolvidos com novos projetos foram solicitados a utilizar o novo repositório. Todo o trabalho preparatório contribuiu para que o nível de resistência à mudança fosse baixo. Os desenvolvedores perceberam que os líderes e os agentes responsáveis pelo programa de melhoria de eficiência sabiam o que estavam fazendo e propondo. Troca do Servidor de Aplicação A troca do servidor de aplicação foi mais tranquila, já que a nova aplicação era mais leve e simples. Logo no início da utilização do novo software os desenvolvedores perceberam o ganho de tempo obtido e se mostraram bastante satisfeitos com a nova situação. Como resultado a resistência à alteração foi mínima ou até inexistente. O papel da liderança no processo de implantação das mudanças O acompanhamento da transição pela gerência foi realizado através de reuniões com a equipe do programa de melhoria e os líderes de desenvolvimento onde eram revisados os 12/16 ANAIS indicadores principais delineados no A3 (como: “percentual de sistemas migrados para o novo repositório” e “percentual de desenvolvedores utilizando o novo servidor de aplicação”). O suporte da gerência “patrocinando” a iniciativa foi de fundamental importância para a aceitação das alterações realizadas. Desde o início do processo a gerência deixou claro que os envolvidos na mudança que contribuíssem para que a mesma ocorresse de forma suave e com sucesso seriam reconhecidos. Adicionalmente, era clara a grande expectativa da liderança com relação ao sucesso da empreitada, o que motivou os envolvidos (desenvolvedores e equipe de infraestrutura) a trabalhar com afinco e dedicação nesta mudança. Resultados das alterações implementadas Apesar dos ajustes pontuais necessários no processo de trabalho para que os desenvolvedores passassem a utilizar as novas ferramentas (servidor de aplicação e repositório), a transição ocorreu dentro do cronograma previsto no A3, em cerca de um mês todos os desenvolvedores envolvidos com novos projetos para o Sistema ABC já estavam utilizando o novo ferramental. Na Tabela 2 é possível verificar os valores aferidos ao final do processo de implantação das mudanças para melhoria do processo de desenvolvimento: Tgravação Resultados antes da implementação das mudanças 85 segundos (s) Resultados após a implementação das mudanças 3s Tdownload 45 s 3s Tinicializaçao 10 min 3 min Cestação 1 Gbyte 0,7 Gbyte Variável Tabela 2: Comparação de métricas (antes x pós) processo de melhoria de eficiência Desta forma, os novos tempos totais mensais apurados foram: • Tempo Total de Espera de Gravação por Mês: T’gravação x 0,6 x 2.000 = 1 hora mensais ou aproximadamente 4 minutos mensais por desenvolvedor; • Tempo Total de Espera de Download por Mês: T’download x 1,2 x 2.000 = 2 horas mensais ou aproximadamente 8 minutos mensais por desenvolvedor; • Tempo Total de Espera para Inicialização da Aplicação = 4 x T’inicializaçao x (2.0000 h / 8 horas de trabalho diário) = 50 horas mensais (considerando-se toda a equipe de 15 desenvolvedores) ou 3 horas mensais por desenvolvedor. Na situação original, o tempo total de espera de cada desenvolvedor era de 15 horas mensais, após a implementação das melhorias este tempo caiu para 3 horas e 12 minutos mensais, uma redução de 80% no tempo de espera dos desenvolvedores, em outras palavras, os desenvolvedores tem agora pouco mais de 10 horas produtivas a mais por mês para trabalhar em atividades que irão agregar valor aos produtos (softwares) desenvolvidos pela fábrica. Adicionalmente, houve uma redução de 300 Mbytes no consumo de memória RAM das estações o que representa um ganho de 30% em relação à situação anterior e um 13/16 ANAIS comprometimento da memória das estações de aproximadamente 87,5% (próximo ao objetivo inicial de 85% presente no A3). Os resultados impressionaram a gerência da fábrica. Apesar de o tempo de inicialização da aplicação não ter alcançado os 2 minutos estabelecidos como alvo no A3, a melhora nos indicadores e no tempo total foi bastante satisfatória. Os funcionários ficaram entusiasmados pelo fato de terem sido ouvidos, que melhorias em sua rotina de trabalho foram implementadas na prática e em um curto espaço de tempo. Isto pode trazer ganhos a longo prazo na medida em que eles agora entendem a importância de se fazerem ouvir e a gerência que agora entende a importância de ouvir os funcionários que estão na linha de frente no dia-a-dia. A utilização do formulário A3 (ferramenta obtida do modelo Lean) foi de importância vital para o processo, pois auxiliou a definir a linha de pensamento a ser seguida pelos agentes de mudança, auxiliou a engajar os funcionários e equipes envolvidos através do consenso do que precisava ser alterado, como, quando e por quem. Apesar de o processo ter sido aplicado pontualmente para a resolução de uma situação específica e não nos processos da fábrica como um todo, ficou evidente para a gerência que a adoção da metodologia Lean na fábrica (inclusive com o mapeamento do fluxo de valor e a realização de um Kaizen de sistema) pode trazer benefícios ainda maiores a médio e longo prazo através de ganhos de eficiência. Os funcionários agora estão mais motivados a realizar sugestões e os líderes de desenvolvimento entendem que a partir de ideias originadas no chão da fábrica podem surgir inovações que podem vir a gerar ganhos operacionais. Questões para Discussão • • • • • Considerando os ganhos de eficiência obtidos na experiência de aplicação da metodologia Lean pela fábrica, pode se dizer que o processo foi exitoso ? O mapeamento do fluxo de valor seria aplicável à esta situação ? Além do A3 e do Mapeamento do Fluxo de Valor, existe alguma outra ferramenta Lean que poderia ter sido aplicada nesta situação ? A razão para não utilização da metodologia Agile como uma possível forma de melhoria de eficiência é válida ? Existem outras formas de desperdício mencionadas no caso que poderiam ser abordadas no programa de melhoria de eficiência ? 14/16 ANAIS Bibliografia BELL, Steven C.; ORZEN, Michael A.. Lean IT: Enabling and Sustaining Your Lean Transformation. Chicago: Productivity Press, 2011. 370 p. BECK, Kent et al. Manifesto for Agile Software Development. 2001. Disponível em: <http://www.agilemanifesto.org/>. Acesso em: 04 mar. 2014. LOCHAN, Rupesh. Lean or Agile? A Comparison of Approach. 2011. Disponível em: <http://www.processexcellencenetwork.com/lean-six-sigma-businesstransformation/articles/using-lean-in-agile-software-development-a-compari/>. Acesso em: 25 fev. 2014 15/16 ANAIS Anexos Formulário A3 Desenvolvido Título: Melhoria na eficiência do processo de Desenvolvimento de Software I. Contexto V. Contramedidas propostas Existe uma previsão de desenvolvimento de projetos grandes com prazos agressivos. Porém existe baixa produtividade atualmente: • Repositório de códigos fonte lento; • Interface de desenvolvimento lenta e que demanda alto consumo computacional; • Especificações com pouco nível de detalhe do que deve ser realizado. Causa A Contramedida Descrição Benefício Troca da Efetuar a troca da ferramenta Melhoria no tempo necessário ferramenta de Migrar arquivos em manter para versionamento dos versionamento histórico de versões com mais arquivos. de 3 meses Responsável/ Suporte Aréa de Infraestrutura Problemas de produtividade podem comprometer os prazos e qualidade da entrega. Troca do servidor de aplicação B II. Condições Atuais Dados sobre versionamento e ambiente de desenvolvimento •Tempo médio para a realização do gravação de um arquivo no repositório: 1 min e 45 segundos •Tempo médio para download de um arquivo do repositório: 45 segundos •Tempo médio de inicialização da aplicação: 10 min •Consumo de memória da estação do desenvolvedor com a aplicação sendo executada: 95% •Alto custo (em termos de tempo) para a realização de análises (em que é necessário que a aplicação esteja sendo executada) pelo analista •Alto custo (em termos de tempo) para a realização de testes pelo desenvolvedor •50% do tempo de correção de defeitos durante o projeto é devido à inicialização da aplicação para testes e versionamento no repositório. III. Metas e Objetivos Vesionamento: •Download / Upload de arquivos em 5 s Ambiente de Desenvolvimento: •Inicialização da aplicação em 2 min •Máximo consumo de memória durante execução da aplicação: 85% •Redução do tempo gasto com inicialização e versionamento durante correções em 50% VI. Plano Troca do repositório Responsável: Ação a ser realizada pela equipe de infra-estrutura Prazo: 100% migrado em 1 mês a partir da solicitação Indicador de progresso: Percentual de sistemas migrados para o novo repositório,. Alteração no ambiente de Desenvolvimento Responsável: Equipe de Desenvolvimento Prazo: 100% migrado em 1 mês a partir da solicitação Indicador de progresso: Percentual de desenvolvedores utilizando o novo servidor de aplicação. VI. Acompanhamento • • IV. Análise Não é necessária a utilização Redução no tempo necessário Equipe de do mesmo servidor de para a execução da aplicação no Desenvolvim aplicação da produção no ambiente de desenvolvimento ento ambiente de desenvolvimento. Portanto, pode ser utilizada uma alternativa mais "leve". Monitorar semanalmente os indicadores de progresso; Manter reuniões com os líderes de desenvolvimento sobre o progresso da alteração. Vesionamento (Causa A): •Ferramenta de Versionamento utrapassada e com histórico dos arquivos muito antigo o que aumenta o tempo necessário para a utilização dos mesmos. Ambiente de Desenvolvimento (Causa B): •O servidor de aplicação* (mesmo utilizado no ambiente de produção) demanda muita capaciadade computacional para a execução da aplicação em ambiente de desenvolvimento. * Software utilizado para a execução de aplicações em ambiente WEB. Figura 2: A3 desenvolvido durante o programa de melhoria de eficiência 16/16