{"id":5488,"date":"2022-08-23T08:31:18","date_gmt":"2022-08-23T11:31:18","guid":{"rendered":"https:\/\/elemarjr.com\/engenhariadesoftware\/?p=5488"},"modified":"2022-08-23T08:31:18","modified_gmt":"2022-08-23T11:31:18","slug":"criterios-efetivos-para-organizar-equipes-de-engenharia","status":"publish","type":"post","link":"https:\/\/elemarjr.com\/livros\/engenhariadesoftware\/criterios-efetivos-para-organizar-equipes-de-engenharia\/","title":{"rendered":"Crit\u00e9rios efetivos para organizar equipes de engenharia"},"content":{"rendered":"<strong>De todos os aspectos relevantes para uma organiza\u00e7\u00e3o de engenharia de alto desempenho, a estrutura das equipes \u00e9 o mais importante<\/strong>.\n<hr \/>\n<p>Equipes bem organizadas t\u00eam responsabilidades bem definidas, sem ultrapassar os limites de carga cognitiva das pessoas, conferindo autonomia para fazer o trabalho e gerar valor percebido.<\/p>\n<p>Neste cap\u00edtulo, abordamos crit\u00e9rios efetivos para organizar equipes de engenharia, estruturando organiza\u00e7\u00f5es de engenharia para maximizar resultados.<\/p>\n<h2>Equipes bem planejadas &#8220;entregam&#8221; mais<\/h2>\n<strong>A forma mais efetiva de &#8220;planejar&#8221; as equipes de uma organiza\u00e7\u00e3o de engenharia \u00e9 considerando, primeiro, as &#8220;entregas&#8221; esperadas desses times.\u00a0<\/strong>Genericamente, podemos assumir quatro tipos diferentes de entregas associadas a times de engenharia de software. De maneira \u00f3tima, cada time dever\u00e1 realizar apenas um tipo de entrega.\n<div class=\"card-insight\" style=\"background-color: #f0f0f0; width: 100%; padding: 35px 30px 20px 35px; border-radius: 5px 5px 5px 5px; margin-top: 30px; margin-bottom: 35px; font-size: 16px; box-shadow: 0px 4px 0px 0px #dddddd;\">\r\n<p style=\"font-size: 24px; font-weight:bold; line-height: 28px; font-family: Montserrat;\">SRP e organiza\u00e7\u00e3o dos times<\/p>\r\n<\/p>\n<p>O princ\u00edpio da responsabilidade \u00fanica, geralmente associado ao\u00a0<em>design\u00a0<\/em>de sistemas, que indica que <strong>cada componente tenha uma, e somente uma, responsabilidade<\/strong>, \u00e9 aplic\u00e1vel, tamb\u00e9m, a organiza\u00e7\u00e3o das equipes.<\/p>\n<p>A ideia \u00e9 que <strong>cada equipe se comprometa com um, e apenas um, tipo de entrega.<\/strong><\/p>\n<p><\/div>\n<p><strong>O primeiro tipo de entregas associado a equipes de engenharia \u00e9 o atendimento, direto, dos objetivos do neg\u00f3cio.<\/strong> Ou seja, a capacidade de converter &#8220;requisitos funcionais&#8221; em software, geralmente, pelo desenvolvimento de features que os usu\u00e1rios percebem e interagem. Externamente, \u00e9 o desempenho de equipes que endere\u00e7am esse tipo de expectativas que ir\u00e1 dar a &#8220;fama&#8221; da organiza\u00e7\u00e3o de engenharia.<\/p>\n<div class=\"card-insight\" style=\"background-color: #f0f0f0; width: 100%; padding: 35px 30px 20px 35px; border-radius: 5px 5px 5px 5px; margin-top: 30px; margin-bottom: 35px; font-size: 16px; box-shadow: 0px 4px 0px 0px #dddddd;\">\r\n<p style=\"font-size: 24px; font-weight:bold; line-height: 28px; font-family: Montserrat;\">O mito dos requisitos<\/p>\r\n<\/p>\n<p>Costuma-se dizer que as demandas do &#8220;neg\u00f3cio&#8221; s\u00e3o &#8220;requisitos&#8221;. Entretanto, o que o neg\u00f3cio tem, geralmente, s\u00e3o &#8220;anseios&#8221; e hip\u00f3teses de como atend\u00ea-los.<\/p>\n<p>O fato \u00e9 que essa &#8220;presun\u00e7\u00e3o&#8221; de que o que se tem s\u00e3o requisitos atrapalha mais do que ajuda. Assume-se uma certeza que, na maioria dos casos, n\u00e3o existe.<\/p>\n<p><\/div>\n<p><strong>O segundo tipo de entregas associado a equipes de engenharia \u00e9 o desenvolvimento de partes mais complicadas, geralmente, basilares para as funcionalidades que o usu\u00e1rio deseja.<\/strong> Em uma plataforma como a Uber, por exemplo, a defini\u00e7\u00e3o das rotas das viagens \u00e9 algo importante, sobretudo porque tem impacto direto nos custos, por outro lado, n\u00e3o \u00e9 uma parte do sistema que recebe requisi\u00e7\u00f5es frequentes por parte dos usu\u00e1rios da plataforma.<\/p>\n<div class=\"nota-insight\">\r\n<table class=\"tabelainsight\" style=\"width: 100%;\">\r\n<tbody>\r\n<tr>\r\n<td class=\"nota-coluna-1\" valign=\"top\"><img decoding=\"async\" class=\"img-insight\" src=\"\/livros\/engenhariadesoftware\/wp-content\/uploads\/2022\/03\/ico-lamp-2.png\" alt=\"\" width=\"70\" height=\"70\" \/><\/td>\r\n<td class=\"nota-coluna-2\"><img decoding=\"async\" class=\"nota-img\" src=\"\/livros\/engenhariadesoftware\/wp-content\/uploads\/2022\/03\/ico-lamp-2.png\" alt=\"\" width=\"70\" height=\"70\" \/> <\/p>\n<p>N\u00e3o raro, essas partes complexas entregam os &#8220;diferenciais competitivos&#8221; para o neg\u00f3cio.<\/p>\n<p><\/p>\r\n<\/td>\r\n<\/tr>\r\n<\/tbody>\r\n<\/table>\r\n<\/div>\n<p><strong>O terceiro tipo de entregas associado a equipes de engenharia est\u00e1 no suporte a &#8220;requisitos n\u00e3o-funcionais&#8221;, como seguran\u00e7a e observabilidade.<\/strong> A ideia \u00e9 fornecer recursos que garantam para as equipes que atendem os objetivos de neg\u00f3cio artefatos t\u00e9cnicos suficientes para focar no neg\u00f3cio e n\u00e3o em demandas t\u00e9cnicas. Esse tipo de de entrega geralmente \u00e9 atendido por equipes dedicadas em organiza\u00e7\u00f5es maiores, com centenas ou milhares de desenvolvedores.<\/p>\n<p><strong>Finalmente, o quarto tipo de entrega associado a equipes de engenharia \u00e9 apoio consultivo para pr\u00e1ticas e padr\u00f5es.<\/strong> A ideia \u00e9 garantir a ado\u00e7\u00e3o continuada das melhores pr\u00e1ticas na organiza\u00e7\u00e3o sem desviar o foco, principalmente das equipes que est\u00e3o &#8220;na linha de frente&#8221;. S\u00e3o comuns equipes dedicadas a facilitar atividades relacionadas a agilidade, opera\u00e7\u00f5es e arquitetura de software.<\/p>\n<h2>Quatro tipos de equipes<\/h2>\n<p><strong>Como j\u00e1 foi dito, uma equipe, para ser mais eficiente, dever\u00e1 atender apenas um dos quatro tipos de entrega relacionados \u00e0 engenharia de software.<\/strong><\/p>\n<div class=\"nota-livro\">\r\n<table class=\"tabelalivro\" style=\"width: 100%;\">\r\n<tbody>\r\n<tr>\r\n<td class=\"nota-livro-coluna-1\" valign=\"top\"><img decoding=\"async\" src=\"https:\/\/m.media-amazon.com\/images\/I\/412ZE+BU5cL.jpg\" alt=\"\" width=\"150\" \/><\/td>\r\n<td class=\"nota-livro-coluna-2\"><img decoding=\"async\" class=\"nota-img\" src=\"https:\/\/m.media-amazon.com\/images\/I\/412ZE+BU5cL.jpg\" alt=\"\" width=\"150\" \/>\r\n<p style=\"font-size: 24px; font-weight: bold; color: #4c4c4c; line-height: 1.1; font-family: Montserrat; margin-bottom: 10px;\">Team Topologies: Organizing Business and Technology Teams for Fast Flow<\/p>\r\nA terminologia que adotamos aqui foi sugerida, primeiro, nesse excelente livro.<p><a class=\"botao-livro\" href=\"https:\/\/www.amazon.com\/-\/pt\/dp\/B09JWT9S4D\" target=\"_blank\" rel=\"noopener\">Acessar livro<\/a><\/td><\/p>\r\n<\/tr>\r\n<\/tbody>\r\n<\/table>\r\n<\/div>\n<p><strong>O primeiro tipo de equipe, identific\u00e1vel como <span style=\"text-decoration: underline;\"><em>stream-aligned t<\/em><\/span><i><u>eams<\/u><\/i>, \u00e9 aquele que comprometido de atender as demandas do neg\u00f3cio.<\/strong> Em organiza\u00e7\u00f5es saud\u00e1veis, equipes desse tipo s\u00e3o as mais numerosas. Ali\u00e1s, todos os outros tipos de equipes devem ter, como objetivo prim\u00e1rio, reduzir a carga cognitiva para as equipes <em>stream-aligned<\/em>. O foco \u00e9 minimizar o<em> lead-time<\/em>, custos e riscos.<\/p>\n<p><strong>O segundo tipo de equipe, identific\u00e1vel como <span style=\"text-decoration: underline;\"><em>complicated-subsystem t<\/em><\/span><i><u>eams<\/u><\/i>, cumpre a expectativa de desenvolver as partes mais complicadas dos sistemas.<\/strong> Geralmente, s\u00e3o formados por especialistas t\u00e9cnicos, que, atrav\u00e9s da equaliza\u00e7\u00e3o das unidades de distribui\u00e7\u00e3o e de reuso, diminuem a fric\u00e7\u00e3o para os equipes <em>stream-aligned<\/em> sem interven\u00e7\u00e3o direta.<\/p>\n<div class=\"card-insight\" style=\"background-color: #f0f0f0; width: 100%; padding: 35px 30px 20px 35px; border-radius: 5px 5px 5px 5px; margin-top: 30px; margin-bottom: 35px; font-size: 16px; box-shadow: 0px 4px 0px 0px #dddddd;\">\r\n<p style=\"font-size: 24px; font-weight:bold; line-height: 28px; font-family: Montserrat;\">Deployment\/Reuse Equivalence Principle<\/p>\r\n<\/p>\n<p>C\u00f3digo n\u00e3o deveria ser reutilizado copiando-o de uma trecho e colando-o em outra. Afinal, se o autor original corrigir algum bug no c\u00f3digo original ou adapta-lo para atender alguma nova demanda, h\u00e1 riscos de inconsist\u00eancia. Seria necess\u00e1rio, sempre, descobrir o que mudou, para, ent\u00e3o, alterar as c\u00f3pias.<\/p>\n<p>A melhor alternativa \u00e9 fazer com que c\u00f3digo que deve ser reutilizado atrav\u00e9s de biblioteca ou blocos de expans\u00e3o.<\/p>\n<p><\/div>\n<p><strong>O terceiro tipo de equipe, identific\u00e1vel como <span style=\"text-decoration: underline;\"><em>platform t<\/em><\/span><i><u>eams<\/u><\/i>, \u00e9 aquele que atende os requisitos n\u00e3o-funcionais e aspectos operacionais, garantindo a autonomia para os equipes <em><span style=\"text-decoration: underline;\">stream-aligned<\/span> <\/em>fa\u00e7am entregas ponta-a-ponta.<\/strong><\/p>\n<p><strong>Finalmente, o quarto tipo de equipe, identific\u00e1vel como <span style=\"text-decoration: underline;\"><em>enablers<\/em><\/span>, \u00e9 aquele que cumpre a expectativa de dar consultoria em padr\u00f5es e pr\u00e1ticas para os demais.<\/strong> Geralmente, essas equipes operam em forma de &#8220;colegiado&#8221;, infiltrados no dia-a-dia das outras equipes, de forma tempor\u00e1ria.<\/p>\n<h2>Modos de intera\u00e7\u00e3o<\/h2>\n<p><strong>Havendo diversas equipes em uma organiza\u00e7\u00e3o, \u00e9 fundamental buscar maneiras eficientes para que as intera\u00e7\u00f5es aconte\u00e7am de maneira assertiva.<\/strong> Generalizando, temos entregas <em>as-a-service<\/em>, por colabora\u00e7\u00e3o ou facilita\u00e7\u00e3o.<\/p>\n<p>Equipes <em>platform<\/em> geralmente atendem equipes <em>stream-aligned<\/em> e <em>complex-subsystem<\/em> fornecendo facilidades em modalidade <em>as-a-service<\/em>, ou seja, com \u00eanfase em reuso e baixa customiza\u00e7\u00e3o, tendo trabalho facilitado &#8211; ou seja, com orienta\u00e7\u00e3o direta &#8211; recebida de times <em>enablers<\/em>.<\/p>\n<p>Equipes <em>complicated-subsystem<\/em> atendem times <em>stream-aligned<\/em> fornecendo facilidades em modalidade <em>as-a-service<\/em> ou atrav\u00e9s de colabora\u00e7\u00e3o para o desenvolvimento de solu\u00e7\u00f5es customizadas. Essas equipes tamb\u00e9m t\u00eam trabalho facilitado por times <em>enablers<\/em> e consomem servi\u00e7os de times <em>platform<\/em>.<\/p>\n<p>Equipes <em>enablers<\/em> atendem todas as demais equipes da organiza\u00e7\u00e3o atrav\u00e9s de facilita\u00e7\u00e3o. Eventualmente, colaboram para forma\u00e7\u00e3o de <em>capabilities<\/em> muito espec\u00edficas. Raramente demandam das demais equipes.<\/p>\n<p>Equipes<em> stream-aligned<\/em>, idealmente, n\u00e3o atendem outras equipes de engenharia. Em contrapartida, s\u00e3o suportadas por todas as demais equipes.<\/p>\n<h2>M\u00e9tricas! M\u00e9tricas!<\/h2>\n<p><strong>A organiza\u00e7\u00e3o das equipes tem impacto direto nas quatro m\u00e9tricas fundamentais: <em>development lead-time<\/em>, frequ\u00eancia de <em>deploy<\/em>, MTTR e taxa de falhas.<\/strong><\/p>\nGarantir que cada equipe tenha como atribui\u00e7\u00e3o apenas um tipo de expectativa colabora para a assertividade e, consequentemente, para redu\u00e7\u00e3o na taxa de falhas.\n<hr \/>\nDe maneira mais espec\u00edfica, equipes <em>platform<\/em> e <em>enablers<\/em> garantem a ado\u00e7\u00e3o das melhores pr\u00e1ticas, com facilidades, ajudando a reduzir o <em>development lead-time<\/em>, aumentar a frequ\u00eancia de <em>deploy<\/em> e melhorar o MTTR. Equipes <em>complicated-subsystem<\/em> tamb\u00e9m ajudam a reduzir drasticamente a taxa de falhas.\n<hr \/>\nFinalmente, a forma\u00e7\u00e3o de times <em>stream-aligned<\/em> independentes habilitam a redu\u00e7\u00e3o do <em>development lead-time<\/em>.\n<h2>Para pensar\u2026<\/h2>\n<p>Desenvolver software \u00e9 muito mais sobre achar formas efetivas para pessoas trabalharem juntas, atingindo o m\u00e1ximo de potencial, do que sobre tecnologias.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Equipes bem organizadas t\u00eam responsabilidades bem definidas, sem ultrapassar os limites de carga cognitiva das pessoas, conferindo autonomia para fazer o trabalho e gerar valor percebido. Neste cap\u00edtulo, abordamos crit\u00e9rios efetivos para organizar equipes de engenharia, estruturando organiza\u00e7\u00f5es de engenharia para maximizar resultados. Equipes bem planejadas &#8220;entregam&#8221; mais O primeiro tipo de entregas associado a [&hellip;]<\/p>\n","protected":false},"author":2,"featured_media":5497,"comment_status":"open","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"_acf_changed":false,"footnotes":""},"categories":[],"tags":[],"url":[72],"apendices":[],"capitulos":[28],"class_list":["post-5488","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","url-permanente","capitulos-capitulo-3-1"],"acf":[],"_links":{"self":[{"href":"https:\/\/elemarjr.com\/livros\/engenhariadesoftware\/wp-json\/wp\/v2\/posts\/5488","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/elemarjr.com\/livros\/engenhariadesoftware\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/elemarjr.com\/livros\/engenhariadesoftware\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/elemarjr.com\/livros\/engenhariadesoftware\/wp-json\/wp\/v2\/users\/2"}],"replies":[{"embeddable":true,"href":"https:\/\/elemarjr.com\/livros\/engenhariadesoftware\/wp-json\/wp\/v2\/comments?post=5488"}],"version-history":[{"count":10,"href":"https:\/\/elemarjr.com\/livros\/engenhariadesoftware\/wp-json\/wp\/v2\/posts\/5488\/revisions"}],"predecessor-version":[{"id":5500,"href":"https:\/\/elemarjr.com\/livros\/engenhariadesoftware\/wp-json\/wp\/v2\/posts\/5488\/revisions\/5500"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/elemarjr.com\/livros\/engenhariadesoftware\/wp-json\/wp\/v2\/media\/5497"}],"wp:attachment":[{"href":"https:\/\/elemarjr.com\/livros\/engenhariadesoftware\/wp-json\/wp\/v2\/media?parent=5488"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/elemarjr.com\/livros\/engenhariadesoftware\/wp-json\/wp\/v2\/categories?post=5488"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/elemarjr.com\/livros\/engenhariadesoftware\/wp-json\/wp\/v2\/tags?post=5488"},{"taxonomy":"url","embeddable":true,"href":"https:\/\/elemarjr.com\/livros\/engenhariadesoftware\/wp-json\/wp\/v2\/url?post=5488"},{"taxonomy":"apendices","embeddable":true,"href":"https:\/\/elemarjr.com\/livros\/engenhariadesoftware\/wp-json\/wp\/v2\/apendices?post=5488"},{"taxonomy":"capitulos","embeddable":true,"href":"https:\/\/elemarjr.com\/livros\/engenhariadesoftware\/wp-json\/wp\/v2\/capitulos?post=5488"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}