{"id":1635,"date":"2024-09-26T07:41:00","date_gmt":"2024-09-26T10:41:00","guid":{"rendered":"https:\/\/www.semeru.com.br\/blog\/?p=1635"},"modified":"2024-09-20T15:46:20","modified_gmt":"2024-09-20T18:46:20","slug":"lean-agile-uma-abordagem-sistemica-para-entrega-de-software-em-diferentes-niveis-organizacionais","status":"publish","type":"post","link":"https:\/\/www.semeru.com.br\/blog\/lean-agile-uma-abordagem-sistemica-para-entrega-de-software-em-diferentes-niveis-organizacionais\/","title":{"rendered":"<em>Lean Agile<\/em>: Uma Abordagem Sist\u00eamica para Entrega de Software em Diferentes N\u00edveis Organizacionais"},"content":{"rendered":"\n<p>Eliminar requisitos detalhados, especifica\u00e7\u00f5es de design extensas, governan\u00e7a problem\u00e1tica ou por etapas que acabam por dificultar o progresso, aprova\u00e7\u00f5es desnecess\u00e1rias com atrasos independentes e todos os outros processos contraproducentes s\u00e3o os desafios que enfrentamos ao optar por implementar m\u00e9todos <em><strong>lean agile<\/strong><\/em>.<\/p>\n\n\n\n<p><\/p>\n\n\n\n<p>Certamente n\u00e3o existe um m\u00e9todo <em><strong>lean<\/strong><\/em> definitivo; no entanto, a estrutura \u00e9 ou deve ser padr\u00e3o em diferentes organiza\u00e7\u00f5es, independentemente da solu\u00e7\u00e3o ou modelo de neg\u00f3cios.<\/p>\n\n\n\n<p>A escalabilidade \u00e9 um fator chave aqui; as organiza\u00e7\u00f5es desejam um processo que atenda \u00e0s suas necessidades de neg\u00f3cios. Isso nem sempre tem ocorrido bem com todas as partes envolvidas na entrega de software, j\u00e1 que o que normalmente prevalece \u00e9 a pol\u00edtica de &#8220;fa\u00e7a o que eu mando&#8221;. Ou seja, uma abordagem concreta de cima para baixo, sem espa\u00e7o para feedback de baixo para cima, o que indiretamente impede a liberdade necess\u00e1ria para impulsionar a criatividade na entrega.<\/p>\n\n\n\n<p>E se uma organiza\u00e7\u00e3o pudesse &#8220;ter o bolo e com\u00ea-lo tamb\u00e9m&#8221;? Ou seja, um ciclo de feedback que permita \u00e0s equipes incorporar valores que se integram \u00e0 estrutura ou <em><strong>framework<\/strong><\/em> e que tamb\u00e9m retornem ao n\u00edvel da equipe, permitindo que todos tenham sua participa\u00e7\u00e3o. Isso geralmente parece mais f\u00e1cil do que realmente \u00e9, mas um simples <em><strong>framework lean agile<\/strong><\/em> pode fazer maravilhas se todas as partes tiverem paci\u00eancia suficiente para acompanhar o processo.<\/p>\n\n\n\n<p>Este artigo simplesmente destaca a vis\u00e3o geral de uma estrutura <em><strong>lean agile<\/strong><\/em> necess\u00e1ria para construir a solu\u00e7\u00e3o ou sistema complexo que resolve os problemas de hoje. Os tr\u00eas n\u00edveis que comp\u00f5em um <em><strong>framework lean agile<\/strong><\/em> s\u00e3o:<\/p>\n\n\n\n<ul>\n<li><strong>N\u00edvel de Equipe<\/strong><\/li>\n\n\n\n<li><strong>N\u00edvel de Programa<\/strong><\/li>\n\n\n\n<li><strong>N\u00edvel de Portf\u00f3lio<\/strong><\/li>\n<\/ul>\n\n\n\n<h3>N\u00edvel de Equipe<\/h3>\n\n\n\n<figure class=\"wp-block-image size-large\"><a href=\"https:\/\/www.semeru.com.br\/blog\/wp-content\/uploads\/2024\/09\/img-portfolio-01.jpg\"><img decoding=\"async\" loading=\"lazy\" width=\"1024\" height=\"683\" src=\"https:\/\/www.semeru.com.br\/blog\/wp-content\/uploads\/2024\/09\/img-portfolio-01-1024x683.jpg\" alt=\"\" class=\"wp-image-1639\" srcset=\"https:\/\/www.semeru.com.br\/blog\/wp-content\/uploads\/2024\/09\/img-portfolio-01-1024x683.jpg 1024w, https:\/\/www.semeru.com.br\/blog\/wp-content\/uploads\/2024\/09\/img-portfolio-01-300x200.jpg 300w, https:\/\/www.semeru.com.br\/blog\/wp-content\/uploads\/2024\/09\/img-portfolio-01-768x512.jpg 768w, https:\/\/www.semeru.com.br\/blog\/wp-content\/uploads\/2024\/09\/img-portfolio-01-1536x1025.jpg 1536w, https:\/\/www.semeru.com.br\/blog\/wp-content\/uploads\/2024\/09\/img-portfolio-01.jpg 2048w\" sizes=\"(max-width: 1024px) 100vw, 1024px\" \/><\/a><\/figure>\n\n\n\n<p>Esses s\u00e3o os soldados da linha de frente do processo de entrega <em><strong>agile<\/strong><\/em>, com a responsabilidade principal de escrever e testar os c\u00f3digos que entregam valor. Esta equipe geralmente \u00e9 composta por no m\u00e1ximo sete a nove membros, embora n\u00e3o seja o fim do mundo ter mais, considerando que algumas equipes est\u00e3o comprometidas em construir grandes funcionalidades, sendo assim um ou dois membros adicionais n\u00e3o fariam mal.<\/p>\n\n\n\n<p>Para que esse valor seja plenamente alcan\u00e7ado, a equipe de desenvolvimento deve ser apoiada por arquitetos, especialistas em garantia de qualidade (<a><em>Quality Assurance<\/em><\/a>), banco de dados e TI. Para satisfazer esse objetivo, algumas organiza\u00e7\u00f5es seguem um modelo de equipe multifuncional, em que cada equipe possui um grupo de desenvolvedores, QA\/testadores, especialistas em TI e engenheiros de banco de dados, algo ideal, mas na maioria dos casos impratic\u00e1vel, j\u00e1 que os recursos sempre ser\u00e3o escassos no mundo da entrega e gest\u00e3o de software.<\/p>\n\n\n\n<p>Em muitos outros casos, os membros da equipe podem ter mais de uma habilidade, o que pode ser \u00fatil para a equipe, mas isso deve ser incorporado no planejamento, pois um, dois ou tr\u00eas membros da equipe podem precisar dividir seu tempo para realizar mais de um tipo de atividade. Se isso \u00e9 ideal ou n\u00e3o, certamente n\u00e3o \u00e9 o tema de hoje, pois este artigo se concentra apenas em destacar a vis\u00e3o <em><strong>lean agile<\/strong><\/em>.<\/p>\n\n\n\n<p>Uma coisa que sabemos \u00e9 que as equipes s\u00e3o auto-organizadas e autogeridas para entregar funcionalidades ou componentes. Enquanto as equipes de funcionalidades se concentram em entregar iniciativas voltadas ao usu\u00e1rio, as equipes de componentes se concentram mais em construir plataformas compartilhadas ou camadas intermedi\u00e1rias que suportam a entrega de funcionalidades. A maioria das grandes organiza\u00e7\u00f5es ter\u00e1 ambas. Essas equipes autogeridas e auto-organizadas devem ser flex\u00edveis o suficiente para se adaptar \u00e0s poss\u00edveis mudan\u00e7as nas necessidades ou prioridades da organiza\u00e7\u00e3o, mas tamb\u00e9m devem ser est\u00e1veis o suficiente por pelo menos seis meses para passar pelas fases de tempestade, normatiza\u00e7\u00e3o e forma\u00e7\u00e3o.<\/p>\n\n\n\n<p>Os pap\u00e9is em uma equipe <em><strong>agile<\/strong><\/em> t\u00edpica s\u00e3o:<\/p>\n\n\n\n<ul>\n<li>O <strong>Scrum Master\/Agile Coach<\/strong><\/li>\n\n\n\n<li>O <strong>Product Owner<\/strong><\/li>\n\n\n\n<li><strong>Desenvolvedores<\/strong><\/li>\n\n\n\n<li><strong>Testadores<\/strong><\/li>\n<\/ul>\n\n\n\n<p>O <strong>Scrum Master\/Agile Coach<\/strong> \u00e9 sempre recomendado, mesmo que a equipe n\u00e3o esteja praticando <a><em><strong>Scrum<\/strong><\/em><\/a>. Ele\/ela tem o dever de servir \u00e0 equipe e ajud\u00e1-la a transitar para uma forma de trabalho <em><strong>agile<\/strong><\/em>, al\u00e9m de ajudar a gerenciar as cerim\u00f4nias <em><strong>agile<\/strong><\/em> relevantes. Al\u00e9m da equipe, o <em><strong>Agile Coach<\/strong><\/em> tamb\u00e9m ajuda a alinhar a organiza\u00e7\u00e3o com o <em><strong>framework agile<\/strong><\/em> proposto ou acordado, com o objetivo de entregar valor, e algumas organiza\u00e7\u00f5es podem chamar esse papel de gerente de projeto \u00e1gil (<em><strong>Agile Project Manager<\/strong><\/em>).<\/p>\n\n\n\n<p>O <strong>Product Owner<\/strong> \u00e9 respons\u00e1vel por priorizar os requisitos (<em><strong>User Stories<\/strong><\/em>) e gerenciar o backlog do produto. Este \u00e9 um papel que tamb\u00e9m \u00e9 muito importante, mesmo que a equipe n\u00e3o esteja praticando <em><strong>Scrum<\/strong><\/em>, pois provou ser um divisor de \u00e1guas na simplifica\u00e7\u00e3o do trabalho das equipes. Esse papel de <em><strong>Product Owner<\/strong><\/em> tamb\u00e9m se alinha claramente com o item n\u00famero quatro do princ\u00edpio <em><strong>agile<\/strong><\/em>: pessoas de neg\u00f3cios e desenvolvedores devem trabalhar juntos diariamente ao longo do projeto. O <em><strong>PO<\/strong><\/em> representa o neg\u00f3cio dentro da equipe.<\/p>\n\n\n\n<figure class=\"wp-block-image size-full\"><a href=\"https:\/\/www.semeru.com.br\/blog\/wp-content\/uploads\/2024\/09\/medium_gestao_028e53622d.jpg\"><img decoding=\"async\" loading=\"lazy\" width=\"750\" height=\"500\" src=\"https:\/\/www.semeru.com.br\/blog\/wp-content\/uploads\/2024\/09\/medium_gestao_028e53622d.jpg\" alt=\"\" class=\"wp-image-1640\" srcset=\"https:\/\/www.semeru.com.br\/blog\/wp-content\/uploads\/2024\/09\/medium_gestao_028e53622d.jpg 750w, https:\/\/www.semeru.com.br\/blog\/wp-content\/uploads\/2024\/09\/medium_gestao_028e53622d-300x200.jpg 300w\" sizes=\"(max-width: 750px) 100vw, 750px\" \/><\/a><\/figure>\n\n\n\n<p><strong>Desenvolvedores<\/strong> e <strong>testadores<\/strong> escrevem e testam c\u00f3digos e trabalham em <em><strong>sprints<\/strong><\/em>. Itera\u00e7\u00e3o \u00e9 a palavra-chave associada ao trabalho que eles realizam, \u00e0 medida que novas funcionalidades s\u00e3o constru\u00eddas em eventos curtos e com tempo delimitado chamados de itera\u00e7\u00f5es, tamb\u00e9m conhecidos como <em><strong>Sprints<\/strong><\/em> se a equipe estiver usando <em><strong>Scrum<\/strong><\/em>. \u00c9 importante notar que cada <em><strong>sprint<\/strong><\/em> entregar\u00e1 valor, que pode ser uma funcionalidade completa ou um incremento valioso que leva a uma funcionalidade completa.<\/p>\n\n\n\n<p>Os pap\u00e9is principais mencionados acima trabalhar\u00e3o juntos para planejar, construir, testar e demonstrar funcionalidades para as partes interessadas, inspecionar e adaptar, e finalmente repetir todo o processo.<\/p>\n\n\n\n<h3>N\u00edvel de Programa<\/h3>\n\n\n\n<p>O n\u00edvel de programa \u00e9 respons\u00e1vel pelo <strong>Agile Release Train<\/strong>, que tamb\u00e9m \u00e9 delimitado por tempo, mas com um escopo vari\u00e1vel, afastando-se, assim, do <a>tri\u00e2ngulo de ferro<\/a> da gest\u00e3o de projetos.<\/p>\n\n\n\n<p>Em uma metodologia <em><strong>lean agile<\/strong><\/em>, o n\u00edvel de programa \u00e9 composto por pap\u00e9is adicionais, processos e artefatos de requisitos, sendo geralmente adequado ou relevante ao construir sistemas ou produtos em larga escala.<\/p>\n\n\n\n<p>Este n\u00edvel do m\u00e9todo <em><strong>lean agile<\/strong><\/em> ajuda a gerenciar:<\/p>\n\n\n\n<ul>\n<li><strong>Releases<\/strong> e Incrementos Potencialmente Entreg\u00e1veis,<\/li>\n\n\n\n<li><strong>Vis\u00e3o, funcionalidades e o backlog do programa<\/strong><\/li>\n\n\n\n<li><strong>Planejamento de releases<\/strong><\/li>\n\n\n\n<li><strong>Roteiro e gest\u00e3o de produtos<\/strong><\/li>\n<\/ul>\n\n\n\n<h4>Releases\/Incrementos Potencialmente Entreg\u00e1veis:<\/h4>\n\n\n\n<p>O objetivo aqui \u00e9 criar uma estrutura que permita \u00e0s equipes produzir um incremento entreg\u00e1vel, mas, novamente, o que realmente deve ser considerado entreg\u00e1vel? Por que um determinado item deve ser enviado dentro de um determinado prazo? Como as expectativas do neg\u00f3cio ser\u00e3o atendidas? Quais s\u00e3o os padr\u00f5es para refatora\u00e7\u00e3o, teste e quais processos de conformidade est\u00e3o em vigor para garantir uma qualidade geral que atenda aos leg\u00edtimos objetivos de neg\u00f3cios?<\/p>\n\n\n\n<p>Fatores importantes como licenciamento do cliente e acordos de servi\u00e7o, sobrecarga do cliente e interrup\u00e7\u00f5es nos neg\u00f3cios, treinamento de usu\u00e1rios, potenciais interrup\u00e7\u00f5es das opera\u00e7\u00f5es existentes do cliente durante a regress\u00e3o ou defeitos s\u00e3o todos considerados e gerenciados adequadamente dentro da categoria de gest\u00e3o de releases no n\u00edvel de programa.<\/p>\n\n\n\n<p>Algumas organiza\u00e7\u00f5es ter\u00e3o um gerente de <em><strong>release<\/strong><\/em> dedicado para este papel, o que geralmente deve facilitar bastante as coisas para a equipe.<\/p>\n\n\n\n<h4>Vis\u00e3o, funcionalidades e o backlog do programa:<\/h4>\n\n\n\n<p>Assim como um gerente de <em><strong>release<\/strong><\/em> pode ser introduzido na categoria acima, um gerente de produto pode ser introduzido aqui. A responsabilidade ser\u00e1 manter a vis\u00e3o dos produtos. A vis\u00e3o responde a perguntas como:<\/p>\n\n\n\n<ul>\n<li><strong>Qual problema a solu\u00e7\u00e3o est\u00e1 resolvendo?<\/strong><\/li>\n\n\n\n<li><strong>Quais funcionalidades e benef\u00edcios ela fornecer\u00e1?<\/strong><\/li>\n\n\n\n<li><strong>Responde \u00e0s perguntas de quem, o qu\u00ea e por qu\u00ea<\/strong><\/li>\n\n\n\n<li><strong>Confiabilidade de desempenho<\/strong><\/li>\n\n\n\n<li><strong>Plataformas e padr\u00f5es que apoiar\u00e3o a solu\u00e7\u00e3o.<\/strong><\/li>\n<\/ul>\n\n\n\n<p>As respostas \u00e0s perguntas acima manter\u00e3o constantemente o foco da equipe e dos neg\u00f3cios em investir tempo e recursos apenas no que agrega valor ao objetivo e meta gerais do neg\u00f3cio.<\/p>\n\n\n\n<h4>Planejamento de releases:<\/h4>\n\n\n\n<p>A arte de trabalhar em cad\u00eancia, a beleza de dividir funcionalidades em <em><strong>stories<\/strong><\/em> e adicionar <em><strong>stories<\/strong><\/em> acordadas na cad\u00eancia de itera\u00e7\u00e3o com base no conhecimento de sua <a>velocidade<\/a>, origina o processo de planejamento de releases, que \u00e9 composto por entradas da vis\u00e3o, objetivos e as funcionalidades desejadas, formando assim um lote para a pr\u00f3xima <em><strong>release<\/strong><\/em> com base na prioridade.<\/p>\n\n\n\n<p>As equipes se re\u00fanem em um \u00fanico local e discutem suas interdepend\u00eancias, negociam o escopo com a gest\u00e3o de produtos, guiados pela compreens\u00e3o de sua velocidade conhecida, o que, por sua vez, determina quais <em><strong>stories<\/strong><\/em> podem estar vi\u00e1veis na(s) pr\u00f3xima(s) <em><strong>release(s)<\/strong><\/em>.<\/p>\n\n\n\n<p>Essa atividade tem tanto benef\u00edcios tang\u00edveis, como ter todos a bordo e participando por meio da colabora\u00e7\u00e3o na determina\u00e7\u00e3o do que deve estar no pr\u00f3ximo trem de <em><strong>release<\/strong><\/em>, quanto um benef\u00edcio intang\u00edvel, onde as equipes se esfor\u00e7am subconscientemente para cumprir seus compromissos.<\/p>\n\n\n\n<h4>Roteiro e gest\u00e3o de produtos:<\/h4>\n\n\n\n<p>Uma s\u00e9rie de <em><strong>releases<\/strong><\/em> planejadas e suas datas relevantes geralmente s\u00e3o mapeadas no <a>roteiro<\/a>, uma linha do tempo que mostra o plano de entrega para as funcionalidades da solu\u00e7\u00e3o. O objetivo do roteiro \u00e9 ajudar todos os envolvidos na entrega da solu\u00e7\u00e3o a se alinharem \u00e0 vis\u00e3o do produto.<\/p>\n\n\n\n<p>Este \u00e9 um exerc\u00edcio recorrente e as funcionalidades s\u00e3o revisadas, alteradas e movidas para cima ou para baixo, com base no feedback e nas metas e objetivos atuais do neg\u00f3cio, nas revis\u00f5es das <em><strong>release<\/strong><\/em> e nas poss\u00edveis mudan\u00e7as nos requisitos de conformidade.<\/p>\n\n\n\n<p>Mais uma vez, a equipe de produto ou gerente de produto.<\/p>\n\n\n\n<h3>N\u00edvel de Portf\u00f3lio<\/h3>\n\n\n\n<p>A vis\u00e3o geral composta por equipes ou indiv\u00edduos dedicados a gerenciar os investimentos da organiza\u00e7\u00e3o ou empresa, dirigindo a estrat\u00e9gia geral de neg\u00f3cios, se enquadra neste grupo. Os artefatos derivados aqui s\u00e3o:<\/p>\n\n\n\n<ul>\n<li><strong>Temas de Investimento<\/strong><\/li>\n\n\n\n<li><strong>\u00c9picos e Backlog de Portf\u00f3lio<\/strong><\/li>\n<\/ul>\n\n\n\n<h4>Tema de Investimento:<\/h4>\n\n\n\n<p>O estabelecimento dos objetivos de investimento para a organiza\u00e7\u00e3o, impulsionado pela vis\u00e3o de todos os programas, se enquadra neste grupo. Os gerentes de portf\u00f3lio, propriet\u00e1rios de neg\u00f3cios e outros pap\u00e9is de alto n\u00edvel s\u00e3o respons\u00e1veis por gerenciar essa categoria e ajudar\u00e3o a impulsionar os <strong>\u00e9picos<\/strong> que apoiam seus investimentos.<\/p>\n\n\n\n<p>Aqui, os gerentes de portf\u00f3lio s\u00e3o respons\u00e1veis por criar propostas de valor \u00fanicas que diferenciem a solu\u00e7\u00e3o do mercado existente e criem uma vantagem competitiva, sendo geralmente derivadas e propostas nesse n\u00edvel ao obter feedback tanto externamente quanto do n\u00edvel de equipe e programa.<\/p>\n\n\n\n<h4>\u00c9picos e Backlog de Portf\u00f3lio:<\/h4>\n\n\n\n<p>O n\u00edvel mais alto de express\u00e3o do cliente \u00e9 chamado de <strong>\u00e9pico<\/strong>. Eles s\u00e3o destinados a entregar o valor de um tema de investimento, e os gerentes de portf\u00f3lio far\u00e3o bem em identificar, priorizar, estimar e manter esses <strong>\u00e9picos<\/strong> dentro do backlog de portf\u00f3lio. As m\u00e9tricas de estimativa recomendadas para esse n\u00edvel podem ser o tamanho da camiseta (<em><strong>t-shirt sizing<\/strong><\/em>), ou seja, pequeno, m\u00e9dio e grande, que posteriormente ser\u00e3o decompostos ou divididos em funcionalidades, depois em <em><strong>stories<\/strong><\/em>, tornando-os prontos para implementa\u00e7\u00e3o pela equipe.<\/p>\n\n\n\n<p>Mais uma vez, para que tudo isso aconte\u00e7a sem problemas, deve haver uma boa colabora\u00e7\u00e3o entre o n\u00edvel de equipe, programa e portf\u00f3lio. Todos se re\u00fanem durante o planejamento de <em><strong>release<\/strong><\/em> e discutem qualquer diferen\u00e7a ou mal-entendido, orientando assim todos na mesma dire\u00e7\u00e3o para a entrega da pr\u00f3xima cad\u00eancia.<\/p>\n\n\n\n<h2>Treinamentos relacionados com essa postagem<\/h2>\n<a href=\"https:\/\/pub.erudio.com.br\/kr\/blog_agile\" target=\"_blank\" rel=\"noopener\">\n  <img decoding=\"async\" style=\"max-width: 100%;\" title=\"Agile desmistificado com Scrum, XP, Kanban, Spotify e Trello\" src=\"https:\/\/raw.githubusercontent.com\/leandrocgsi\/blog-images\/main\/05-agile.png\">\n<\/a>\n<a href=\"https:\/\/pub.erudio.com.br\/kr\/blog_trello\" target=\"_blank\" rel=\"noopener\">\n  <img decoding=\"async\" style=\"max-width: 100%;\" title=\"Trello 2023: Gest\u00e3o Otimizada de Equipes e Projetos Pessoais\" src=\"https:\/\/raw.githubusercontent.com\/leandrocgsi\/blog-images\/main\/04-trello.png\">\n<\/a>\n<a href=\"https:\/\/pub.erudio.com.br\/kr\/blog_spotify\" target=\"_blank\" rel=\"noopener\">\n  <img decoding=\"async\" style=\"max-width: 100%;\" title=\"Spotify Engineering Culture Desmistificado\" src=\"https:\/\/raw.githubusercontent.com\/leandrocgsi\/blog-images\/main\/06-spotify.png\">\n<\/a>\n<a href=\"https:\/\/pub.erudio.com.br\/kr\/blog_rest_spring_java\" target=\"_blank\" rel=\"noopener\">\n  <img decoding=\"async\" style=\"max-width: 100%;\" title=\"REST API's RESTFul do 0 \u00e0  AWS com Spring Boot 3, Java e Docker\" src=\"https:\/\/raw.githubusercontent.com\/leandrocgsi\/blog-images\/main\/07-rest-spring-java.png\">\n<\/a>\n<a href=\"https:\/\/pub.erudio.com.br\/kr\/blog_tests_java\" target=\"_blank\" rel=\"noopener\">\n  <img decoding=\"async\" style=\"max-width: 100%;\" title=\"Java Unit Testing com Spring Boot 3, TDD, Junit 5 e Mockito\" src=\"https:\/\/raw.githubusercontent.com\/leandrocgsi\/blog-images\/main\/24-tests_java.png\">\n<\/a>\n<a href=\"https:\/\/pub.erudio.com.br\/kr\/blog_ci_cd_java_aws\" target=\"_blank\" rel=\"noopener\">\n  <img decoding=\"async\" style=\"max-width: 100%;\" title=\"Java Continuous Integration e Continuous Delivery com AWS e Github Actions\" src=\"https:\/\/raw.githubusercontent.com\/leandrocgsi\/blog-images\/main\/27_CICD_JavaAWS.png\">\n<\/a>\n<a href=\"https:\/\/pub.erudio.com.br\/kr\/blog_ci_cd_java_azure\" target=\"_blank\" rel=\"noopener\">\n  <img decoding=\"async\" style=\"max-width: 100%;\" title=\"Java Continuous Integration e Continuous Delivery com Microsoft Azure e Github Actions\" src=\"https:\/\/raw.githubusercontent.com\/leandrocgsi\/blog-images\/main\/28_CICD_JavaAzure.png\">\n<\/a>\n<a href=\"https:\/\/pub.erudio.com.br\/kr\/blog_rest_asp_net\" target=\"_blank\" rel=\"noopener\">\n  <img decoding=\"async\" style=\"max-width: 100%;\" title=\"REST API's RESTFul do 0 \u00e0 Azure com ASP.NET Core 5 e Docker\" src=\"https:\/\/raw.githubusercontent.com\/leandrocgsi\/blog-images\/main\/01-rest-asp.png\">\n<\/a>\n<a href=\"https:\/\/pub.erudio.com.br\/kr\/blog_rest_spring_kotlin\" target=\"_blank\" rel=\"noopener\">\n  <img decoding=\"async\" style=\"max-width: 100%;\" title=\"REST API's RESTFul do 0 \u00e0 AWS com Spring Boot 3, Kotlin e Docker\" src=\"https:\/\/raw.githubusercontent.com\/leandrocgsi\/blog-images\/main\/18-rest-spring-kotlin.png\">\n<\/a>\n<a href=\"https:\/\/pub.erudio.com.br\/kr\/blog_microservices_java\" target=\"_blank\" rel=\"noopener\">\n  <img decoding=\"async\" style=\"max-width: 100%;\" title=\"Microservices do 0 com Spring Cloud, Spring Boot e Docker\" src=\"https:\/\/raw.githubusercontent.com\/leandrocgsi\/blog-images\/main\/14-microservices-java.png\">\n<\/a>\n<a href=\"https:\/\/pub.erudio.com.br\/kr\/blog_microservices-dotnet\" target=\"_blank\" rel=\"noopener\">\n  <img decoding=\"async\" style=\"max-width: 100%;\" title=\"Arquitetura de Microsservi\u00e7os do 0 com ASP.NET, .NET 6 e C#\" src=\"https:\/\/raw.githubusercontent.com\/leandrocgsi\/blog-images\/main\/15-microservices-dotnet.png\">\n<\/a>\n<a href=\"https:\/\/pub.erudio.com.br\/kr\/blog_ms_kotlin\" target=\"_blank\" rel=\"noopener\">\n  <img decoding=\"async\" style=\"max-width: 100%;\" title=\"Microsservi\u00e7os do 0 com Spring Cloud, Kotlin e Docker\" src=\"https:\/\/raw.githubusercontent.com\/leandrocgsi\/blog-images\/main\/22-ms-kotlin.png\">\n<\/a>\n<a href=\"https:\/\/pub.erudio.com.br\/kr\/blog_scrum_remote\" target=\"_blank\" rel=\"noopener\">\n  <img decoding=\"async\" style=\"max-width: 100%;\" title=\"Agile e Scrum para Times em Home Office com Trello\" src=\"https:\/\/raw.githubusercontent.com\/leandrocgsi\/blog-images\/main\/23-scrum-remote.png\">\n<\/a>\n<a href=\"https:\/\/pub.erudio.com.br\/kr\/blog_kanban_remote\" target=\"_blank\" rel=\"noopener\">\n  <img decoding=\"async\" style=\"max-width: 100%;\" title=\"Agile e Kanban para Times em Home Office com Trello\" src=\"https:\/\/raw.githubusercontent.com\/leandrocgsi\/blog-images\/main\/21-kanban-remote.png\">\n<\/a>\n<div align=\"right\"><div class=\"sharexyWidgetNoindexUniqueClassName\"><div id=\"shr_47984774\"><\/div><\/div><\/div>","protected":false},"excerpt":{"rendered":"<p>Eliminar requisitos detalhados, especifica\u00e7\u00f5es de design extensas, governan\u00e7a problem\u00e1tica ou por etapas que acabam por dificultar o progresso, aprova\u00e7\u00f5es desnecess\u00e1rias com atrasos independentes e todos os outros processos contraproducentes s\u00e3o os desafios que enfrentamos ao optar por implementar m\u00e9todos lean agile. Certamente n\u00e3o existe um m\u00e9todo lean definitivo; no entanto, a estrutura \u00e9 ou deve [&#8230;]<\/p>\n<div align=\"right\">\n<div class=\"sharexyWidgetNoindexUniqueClassName\">\n<div id=\"shr_47984774\"><\/div>\n<\/div>\n<\/div>\n","protected":false},"author":1,"featured_media":1637,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":[],"categories":[256,269,4,257,270,5],"tags":[259,263,258,271],"_links":{"self":[{"href":"https:\/\/www.semeru.com.br\/blog\/wp-json\/wp\/v2\/posts\/1635"}],"collection":[{"href":"https:\/\/www.semeru.com.br\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.semeru.com.br\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.semeru.com.br\/blog\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/www.semeru.com.br\/blog\/wp-json\/wp\/v2\/comments?post=1635"}],"version-history":[{"count":3,"href":"https:\/\/www.semeru.com.br\/blog\/wp-json\/wp\/v2\/posts\/1635\/revisions"}],"predecessor-version":[{"id":1641,"href":"https:\/\/www.semeru.com.br\/blog\/wp-json\/wp\/v2\/posts\/1635\/revisions\/1641"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/www.semeru.com.br\/blog\/wp-json\/wp\/v2\/media\/1637"}],"wp:attachment":[{"href":"https:\/\/www.semeru.com.br\/blog\/wp-json\/wp\/v2\/media?parent=1635"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.semeru.com.br\/blog\/wp-json\/wp\/v2\/categories?post=1635"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.semeru.com.br\/blog\/wp-json\/wp\/v2\/tags?post=1635"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}