Prévia do material em texto
Muitas or ganizaçõ es e equipes encontra m dificulda des para ter suces so com o desenvo lvimento ágil. Um grande número delas consegue se beneficiar das facilidades oferecidas pelo framework Scrum na hora de começar uma estratégia de adoção ágil. Mesmo sendo um bom caminho, o Scrum não endereça aspectos técnicos e de negócios e é apenas uma das engrenagens necessárias para uma adoção ágil eficaz. Infelizmente, as empresas ainda falham na adoção do ágil porque deixam as práticas de engenharia ágil em segundo plano. Até mesmo aqueles que reconhecem a necessidade de serem ágeis na engenharia estão falhando devido a uma falta de sinergia entre desenvolvimento de software, gestão de projetos e estratégia do negócio. A importância do equilíbrio das forças ágeis Que tal refletir um pouco sobre estas questões: Eu entendo claramente o que significa valor para o cliente? Todos os colaboradores conhecem claramente a visão da empresa? Meu código fonte está preparado para que eu possa reagir com segurança e rapidez às mudanças de mercado? Tenho total controle e visibilidade sobre o valor sendo entregue? Tenho confiança plena e total na equipe? Sei que minha equipe irá me entregar o melhor produto possível e eu não preciso ficar me preocupando em controlá-los ou em como eles irão fazer? O que me impede de entregar software hoje? Para ter sucesso na adoção ágil é fundamental compreender o equilíbrio necessário de esforços nas ações estratégicas, gerenciais e de engenharia de software, de modo que se possa responder positivamente às questões anteriores. Equílibrio das Forças Ágeis Como as empresas podem criar uma cultura ágil e qual a melhor estratégia para essa mudança? A Pirâmide Lean é um modelo para engenharia de software que visa auxiliar as empresas a equilibrar corretamente o uso de práticas, princípios e valores em todos os níveis de uma organização, com o objetivo de promover uma evolução segura e sustentável na cultura interna e nos métodos de desenvolvimento. A Pirâmide Lean apresenta uma estrutura que irá ajudar as empresas a iniciarem de forma eficaz a adoção de uma estratégia ágil. Através de um maior aprofundamento dos princípios fundamentais do Lean, você vai aprender como eles se traduzem em desenvolvimento ágil de software com o objetivo de criar uma cultura forte e de sucesso em sua organização. O modelo da Pirâmide Lean foi criado para ajudar a explicar os conceitos que estão envolvidos em uma adoção ágil eficaz. Visão Produtos Projetos Gestão de portfólios Engenharia Arquitetura Tecnologia Processos Planejamento Controle da produção Cultura Princípios valores A Pir âm ide Le an A Pirâmide Lean possui no topo os aspectos culturais e os prin- cípios necessários para criar uma organização centrada no ser humano, possibilitando um ambiente de aprendizado contínuo. Esses aspectos alinham a estratégia de negócios com pessoas, processos e ferramentas para fomentar uma organização de alta performance. Estratégia de ação: • Princípios do Lean • Formação da cultura • Estratégia de negócios e visão • People Empowerement No centro da Pirâmide os princípios do Lean são implementados de forma eficaz para gerar maior valor na gestão do portfólio de produtos e no planejamento e controle da produção, de modo que a empresa possa atingir suas metas com menor custo e menor time-to-market. Estratégia de ação: • Transformar a visão em objetivos específicos e mensuráveis • Planejar e controlar o fluxo de valor com Scrum e Kanban • Rastrear e tornar visível • Melhorar o todo continuamente A base a Pirâmide Lean fornecerá os fundamentos essenciais das práticas ágeis de engenharia de software que permitirão que você responda com segurança às mudanças do negócio, enquanto mantém uma estratégia de desenvolvimento de produtos de alta qualidade, produtividade e com baixos custos. • Construir com integridade • Tornar simples e emergir sem desperdícios • Compartilhar conhecimento • Automação inteligente de testes e deployment Estratégia de ação: Jo y In n ov at io n Cr ea ti vi ty St ro ng rel ati ons hips TRUST Cohesion Agility Respect Sel f-m an agem ent Responsibility Discipline Owners hip Tea mw or k O conceito por trás da Pirâmide Lean ajuda a criar uma organização produtiva, mantendo as pessoas motivadas e inovadoras. Conheça alguns conceitos que fazem parte da Pirâmide Lean e suas principais contribuições nesse framework. Lean Identificar e separar desperdícios de valor. O Lean nos ajuda a entender desperdícios categorizando-os em 3 tipos de desperdício: No Lean a atividade mais fundamental é buscar em todo o ciclo de desenvolvimento e em toda a cadeia de valor esses desperdícios e eliminá-los completamente. Mura (Defeitos): são as irregularidades, bugs e outros problemas que consomem recursos, danificam a credibilidade e impedem um serviço ou produto de qualidade plena. Muri (Sobrecarga): o mais danoso dos desperdícios pois, geralmente é muito difícil de ser identificado e seus efeitos colaterais desencadeiam uma série de problemas devastadores na organização. Muda (Valor não agregado): é tudo aquilo que consome recursos sem adicionar valor ao cliente. Em software, funcionalidades extras, documentações burocráticas, processos extras, espera, filas, são desperdício. Jidoka JIDOKA Jidoka é a automação inteligente, utilizada no Lean com o objetivo de aumentar a produtividade para tarefas repetitivas e também para eliminar a variabilidade de resultados quando tal variabilidade é indesejada. O Jidoka é atividade essencial no desenvolvimento ágil de software e pode ser utilizada para, dentre outras coisas, compilar, empacotar, efetuar o deployment, testar software e coletar métricas de forma automatizada. Processos totalmente manuais Jidoka + poka-yoke Processos automatizados com detecção automática de erros. Não requerem monitoramento humano. Processos automatizados que requerem monitoramento humano time Just in JUST IN TIME Just in Time significa eliminar desperdícios fazendo somente o necessário, na quantidade neces- sária, no momento necessário, no local necessário e nada mais. Em desenvolvimento ágil de software, utilizamos o Just in Time largamente em todas as fases do desenvolvimento, eliminando complexidades com o detalhamento do escopo só previamente ao seu desenvolvimento e também no desenho da arquitetura, que é criada de forma emergente para suportar as novas funcionalidades incrementadas ao longo do tempo. O que é Just In Time? O que o Just in Time faz? Principais mantras do Just in Time Eliminação total de desperdícios Sistema puxado de produção Redução de trabalho em progresso Zero defeitos O que é necessário no JIT? Participação ativa dos colaboradores Pequenos lotes de trabalho Controle total de qualidade Engenharia O que se assume com o Just in Time Ambiente estável Compromisso com a qualidade e eliminação de deseperdícios Envolvimento de todos os níveis da organização Poka-Yoke POKA-YOKE Poka-yoke é a criação de mecanismos a prova de erros. Em outras palavras é criar sistemas ou processos que não per- mitam que erros ocorram. Poka-yokeé largamente utilizado juntamente com o Jidoka para criação de mecanis- mos de detecção automática de erros. Como exemplos de Poka-Yoke temos a utilização de TDD (Test Driven Development), a criação de suítes de testes automatizados ou, em sua forma mais simples, porém extremamente efetivos, check-lists que podem ser utilizados facilmente em qualquer parte do processo. Pré-processo Um erro está prestes a ocorrer Poka-Yoke do tipo controlar ou remover Impede que um erro ocorra Um erro ocorreu Poka-Yoke do tipo aviso ou atenção Alerta quando um erro ocorre Pós-processo Cultura Stop line the CULTURA STOP THE LINE Utilizada sozinha ou em conjunto com Jidoka e Poka-Yoke, a cultura stop the line é a abordagem comportamental das pessoas que compartilham do Lean mind-set e param absolutamente todas as suas atividades quando erros ocorrem. Esta parada tem por objetivo executar uma análise aprofundada para identificação da causa raiz dos problemas, de modo que, uma vez solucionados pela causa raiz, tais problemas nunca mais voltem a ocorrer. Kaizen KAIZEN Kaizen é o processo de melhoria contínua que é a parte mais essencial do Lean. A melhoria contínua é aplicada sistematicamente em todas as áreas da organização, seja para a evolução da arquitetura e da base de código, dos métodos de gestão da produção ou também da estratégia de negócios. Sua base é experimentação, inspeção e adaptação contínua e é fundamental para criação do pensamento sistêmico e para melhoria do todo. Plan Display ClearAcknowlege Problem Finding Act Check Do Os princípios fundamentais do Lean dispostos no topo da pirâmide são implementados nas camadas inferiores através das demais práticas ágeis. Agile Business Analysi s Agilie Business Analysis é peça fundamental na Pirâmide Lean para que haja um claro entendimento do que é valor de negócio e de qual a visão se está buscando. Proporciona ferramentas simples e poderosas para identificação de valor e comunicação efetiva para toda a comunidade do produto. É também a base da gestão ágil de portfólios e do planejamento de entregas. Dentre suas ferramentas mais importantes temos MVP (Mininum Viable Product) e MMF (Minimum Marketable Features) muito utilizadas em Lean Start-up. AGILE BUSINESS ANALYSIS Business Model Validation Customer Development SolutionCustomer Feedback Product Product Development Kanban KANBAN Kanban é uma poderosa ferramenta para a gestão do fluxo de produção. Possibilita a redução de desperdícios ao passo em que expõe os gargalos através da gestão visual e da participação ativa dos colaboradores na melhoria contínua. Kanban é um dos elementos que habilita o Just-in-Time e produção puxada para criação de ambientes de alta performance. Entre suas práticas fundamentais estão: • Visualização do e gestão do fluxo de trabalho: torna visível o que normalmente fica escondido nas organizações, permitindo a visão do todo e a responsabilidade compartilhada; • Limite para o trabalho em progresso (Limited WIP): reduz estoques e aumenta o fluxo de prouduto acabado, mantendo o foco no valor e na redução de desperdícios; • Criação de políticas explícitas: as politicas que definim a gestão do fluxo de valor e os diferentes estados pe- los quais este passa, bem como as regras para entrada e saída de cada estado são explícitas. Todos comprometem- se a respeitá-las e adotá-las. • Feedback Loops: implementação de ciclos de melho- ria onde avaliam-se o fluxo de trabalho, demanda vs capacidade produtiva e métricas e indicadores vitais para mudança evolucionária. • Colaboração ativa: kanban encoraja a colaboração ativa de todos os envolvidos na busca por pequenos incrementos de melhoria, criando um ambiente evolucionário para as pessoas e o sistema como um todo. Analysis Dev Test Deploy Scrum SCRUM Scrum é um poderoso porém simples framework para gestão de projetos que implementa os princípios do Lean. Scrum é uma das principais ferramentas para ges- tão ágil de projetos e na Pirâmide Lean ele desempenha um papel fundamental na criação de um ambiente de entrega e melhoria contínua. É um dos elementos essenciais para iniciar uma adoção ágil e permite conectar com eficácia estratégia e execução, para a criação de produtos inovadores que entreguem real valor aos seus usuários. Baixe nosso Whitepaper com “7 passos para saber se você está utilizando o Scrum corretamente”. Quer saber mais sobre Scum? AUTOMAÇÃO Na engenharia de software a automação inteligente (Jidoka) deve ser usada largamente para automatizar atividades como: compilação, empacotamento, gestão de dependências, coleta de métricas, testes e instalação. A automação auxilia na redução de deseperdícios eliminando variabilidades indesejadas e aumentando extraordinariamente a produtividade na execução de tarefas repetitivas. TDD Test Driven Development refere-se ao conjunto de técnicas utilizadas para condificação onde o desenvolvedor trabalha em pequenos ciclos de melhoria de código, primeiro codificando um teste que falha, depois o criando código de produção mímino para que esse teste passe, depois a refatorando o código para levá-lo aos padrões de qualidade estabelecidos. TDD implementa o conceito de Test-First (teste primeiro) que pode ser usado não só no código mas em diversas áreas da organização. O TDD fomenta o desenvolvimento de arquiteturas mais simples, com menor acoplamento e encoraja um maior nível de pensamento no problema e na solução antes de ser implementada, eliminando desperdícios e criando maior confiança para o desenvolvedor. RED GREENREFACTOR TDD 1. Write a test that fails 2. Make the code work 3. Eliminate redundancy REFACTORING Refactoring ou refatoração “em português” é uma prática imprescindível para fomentar a melhoria contínua da base de código existente. Refactoring consiste em uma série de padrões de refatoração que tem por objetivo melhorar a estrutura do código sem contudo alterar sua funcionalidade. Visa tornar o código mais legível e mais fácil de ser mantido, testado e evoluido. Utililzado em conjunto com testes automatizados, simplicidade e arquitetura emergente torna-se uma ferramenta insanamente poderosa para criação de produtos de alta qualidade. ARQUITETURA EMERGENTE Arquitetura emergente é uma prática de engenharia de software que visa criar arquiteturas com design simples, somente com o mínimo necessário para suportar as capacidades de negócios que estão sendo construídas no momento, buscando rapidez e agilidade no desenvolvimento. É a implementação do Just-in-Time na criação de arquiteturas capazes de evoluir na medida em que o negócio evolui, evitando a criação de estruturas desnecessárias que aumentam o custo do desenvolvimento e manutenção do produto. TESTE S AUTOM AT IZAD OS De todas as práticas de engenharia que estão na base da Pirâmide, a utilização de testes automatizados é a mais importante. Os testes automatizados são blocos de código, chamados códigos de testes, que exercitam o código de produção e podem ser organizados em builds, podendo executar milhares de testes na aplicação em poucos minutos. Testes automatizados adicionam qualidade severamente ao produto e possibilitam segurança para o desenvolvedor e para a organização em responder às mudanças de mercado com agilidade, produtividade e baixo custo. • Testes unitários: testam cada menor trecho de código do sistema; • Testes integrados: testamclasses ou módulos do sistema de forma integrada; • Testes funcionais: testam funções específicas do sistema de ponta a ponta, abrangendo todo o fluxo da informação e das regras de negócio; • Testes de aceitação: testes inspirados na condição de aceitação do cliente ou usuário. Geralemente são aplicados diretamente na interface do sistema. Acceptance Functional Tests Unit Tests Integration Tests View Layer Business layerD atabase layer Stress Load Tests Os testes podem ser categorizados como: INTEG RAÇÃO CONTÍN UA Integração contínua é uma prática que aprimora a gestão de configuração e o controle de versões do código do produto. Em essência, consiste em o desenvolvedor efetuar o commit de código com frequência de várias vezes ao dia no sistema de controle de versoes. Em processos maduros, a integração contínua é assistida por mecanismos automatizados que executam automaticamente todos os testes da aplicação, provendo feedback instantâneo e também o deploy automático do produto em caso de sucesso na execução dos testes. A Integração Contínua extrai valor de todos os processos automatizados citados anteriormente para agregar vantagem competi- tiva ao cliente e proporcio- nar um elevado nível de per- formance da organização. A Pirâmide Lean foi criada para auxiliar organizações na difícil tarefa de promover uma adoção ágil efetiva e a conduzir a transformação organizacional necessária de forma harmoniosa. Esta é nossa contribuição para ajudar a tornar a indústria de software mais produtiva, humana e sustentável. “Samuel Crescêncio” Através da Pirâmide Lean, sua estratégia de adoção ágil terá mais sucesso e será mais eficaz. Você irá perceber importantes transformações que trarão muito mais valor para suas relações com clientes e colaboradores. Entregar rapidamente um fluxo contínuo de valor para os clientes; Criar uma organização que aprende; Criar um ambiente de melhoramento contínuo. Construir com integridade; Valorização das pessoas e do time; Mais agilidade, criatividade e inovação. Confiança no grupo e dos clientes. Sobre a OnCast A OnCast é uma empresa de desenvolvimento de software e também de serviços de conhecimento que pratica o que há de mais moderno na indústria de software global, um conceito que visa auxiliar as empresas a equilibrar corretamente o uso de práticas, princípios e valores em todas os níveis de uma organização, com o objetivo de promover uma mudança segura e sustentável na cultura interna e nos métodos de desenvolvimento. Mais sobre a OnCast em: www.oncast.com.br