Uma organização com várias equipes ágeis do Scrum também possui um pequeno grupo de pessoas nomeadas como "arquitetos corporativos". O grupo EA atua como controle e gatekeeper para qualidade e aderência às decisões. Isso leva a sobreposições entre a decisão da equipe e as decisões da EA.
Por exemplo, a equipe pode querer usar a biblioteca X ou o REST em vez do SOAP, mas o EA não aprova isso.
Agora, isso pode levar à frustração quando as decisões da equipe são anuladas. Levando longe o suficiente, pode levar a uma situação em que o pessoal da EA "agarra" todo o poder e a equipe acaba se sentindo desmotivada e não muito ágil.
Os guias do Scrum têm a dizer sobre isso:
Auto-organização: ninguém (nem mesmo o Scrum Master) diz à equipe de desenvolvimento como transformar o Backlog do produto em incrementos de funcionalidade potencialmente liberável.
Isso é razoável? A equipe da EA deve ser dissolvida? As equipes devem recusar ou simplesmente cumprir?
A escolha da tecnologia usada faz parte dos requisitos do software, o que significa que faz parte da solicitação de recurso que você não use determinadas tecnologias, por qualquer motivo.
Os arquitetos falam pelos sistemas e pela base de código porque os sistemas e a base de código não podem falar por si mesmos. Ter um arquiteto geralmente é do interesse de longo prazo de uma empresa, especialmente uma que se baseia em software construído internamente.
Os arquitetos não estão dizendo aos desenvolvedores como transformar o backlog em incrementos (sprints), estão dizendo quais tecnologias podem ou não ser usadas. Você está confundindo duas questões diferentes.
A solução é não mudar nada. Se suas equipes estão frustradas porque os arquitetos são muito restritivos ou arrogantes, esse é um problema de pessoal que não tem nada a ver com o SCRUM e deve ser tratado com as partes interessadas da empresa como uma questão de satisfação dos funcionários e, se possível, os resultados finais ("Levamos
x%
mais tempo para desenvolver recursosy
porque o arquitetoz
não nos permite usar o Turbo Pascal.")fonte
Esse tipo de coisa é necessária para manter o equilíbrio entre a necessidade de uma equipe grande para concluir o projeto e a necessidade de manter as equipes ágeis pequenas.
Geralmente, o 'scrum do líder da equipe' é composto por um membro eleito de cada uma das equipes menores. Isso fornece parte da natureza auto-organizada e também fornece algum tipo de representação para que as decisões tomadas pelo grupo de alto nível sejam aceitas pelo grupo ágil.
Para o seu cenário específico, algo deve ser feito para interromper a desmotivação ágil da equipe, mas provavelmente não a rebelião ou a simples aceitação. A equipe precisa perceber que você está lá para criar um bom software, e não respeitar os ideais. Ter um monte de equipes diferentes, cada uma usando tecnologias diferentes para fazer coisas semelhantes no mesmo projeto, levará a um software pior. Ter um monte de equipes diferentes usando diferentes padrões de codificação no mesmo projeto levará a um software pior.
Então, você precisará de alguma maneira de chegar a um consenso sobre como o projeto vai funcionar. O scrum do líder da equipe é usado em outros lugares de maneira eficaz. Pode ser necessário fazer algo diferente ou investigar por que seu grupo não está fazendo isso de maneira eficaz.
fonte
A pergunta é: Qual é o motivo pelo qual essa equipe de arquitetos existe? A única razão pela qual consigo pensar é impor a interoperabilidade entre várias equipes. Ou as equipes estão trabalhando em várias partes do único produto e essa equipe de arquitetos existe para manter todas as partes trabalhando juntas.
Realmente não acho que esse esquema possa funcionar bem em ambiente ágil, por motivos exatos que você diz. As várias equipes devem ser independentes e, assim, suas entradas e saídas. Portanto, restringir suas saídas só deve fazer parte dos requisitos de entrada. Mas essas restrições devem ser razoáveis. Algo como "Não deve usar a biblioteca X" não é um bom requisito, mas dizer "Deve limitar o número de bibliotecas de terceiros usadas ao mínimo" ou "A adição de novas bibliotecas que não são usadas em outras equipes deve ser limitada". deve ficar bem.
Depois, eu dissolvia a equipe do arquiteto em todas as equipes e usava seus conhecimentos em questões de arquitetura. Ao se tornar parte da equipe, eles poderão ver melhor os problemas que a equipe está enfrentando e podem ter idéias melhores ou opiniões mais instruídas sobre a alteração das principais partes da arquitetura. Também deve ser incentivado que os arquitetos das equipes se comuniquem para garantir que a arquitetura permaneça consistente entre as equipes.
fonte
O grupo no Scaled Agile Framework fala muito bem disso. A maioria de nós lida com o nível de equipe, mas ao expandir, precisamos reconhecer que há papéis a desempenhar também no nível de programa e portfólio. As decisões de arquitetura precisam ser tomadas em toda a organização, e isso deve alimentar o que está acontecendo nos níveis mais baixos da organização. Não há nada de errado em tomar decisões arquitetônicas!
Relacionado a isso, o livro recente de Dean Leffingwell sobre requisitos de software ágil é uma boa leitura sobre esse tópico, eu mesmo já o li.
fonte
Também temos várias equipes ágeis (algumas fazem Kanban, outras Scrum) e arquitetos. Os arquitetos são responsáveis pela infraestrutura que abrange todos os nossos produtos (bibliotecas auxiliares, autenticação, construção de infraestrutura) etc. Eles tomam decisões técnicas, mas também implementam coisas, principalmente componentes de infraestrutura.
Isso funciona bem, e geralmente não há conflito. Eu acredito que um ponto crucial é:
Os arquitetos não têm autoridade formal sobre as equipes e não podem simplesmente substituí-las. Normalmente, os arquitetos tomam decisões que se aplicam a todos os produtos e as equipes tomam decisões para seus produtos. Se houver um conflito, o arquiteto e a equipe precisam apenas chegar a um acordo ou encaminhar para o gerenciamento (embora isso raramente aconteça).
Eu acho que é realmente importante fazer com que arquitetos e desenvolvedores sejam pares. Ambos trabalham em direção a um objetivo comum, apenas em áreas diferentes. Se ninguém pode simplesmente "anular" o outro, a cooperação será melhor.
fonte
Não vejo nenhum conflito aqui. Pelo que entendi, todo o EA (como um pomposo título que acho que é) deve fazer é o controle de qualidade. Todo mundo deveria estar ciente disso.
Você deve considerar que, em qualquer metodologia de desenvolvimento (que mereça ser considerada uma), a coleta de requisitos é uma etapa crucial, seja iterativa ou inicial.
Alguns desses requisitos são definidos pela política da empresa. E eles estabelecem as regras básicas:
Mas de qualquer forma, um requisito é atendido ou não. Se essa determinação é difícil de fazer, o requisito está ausente e você precisa reiterá-lo para se tornar verdadeiramente testável (em um sentido mais amplo). Você deve lidar com isso como qualquer reiteração de requisitos.
fonte
Seu arquiteto não deve anular as decisões tomadas por suas equipes ágeis. Seu arquiteto deve incluí-los nos requisitos / histórias passados para as equipes. Eles devem manter as equipes atualizadas quando o cenário do projeto mudar e novos requisitos de interoperabilidade forem introduzidos.
Arquitetos dando ordens e examinando decisões técnicas é uma falha cultural. Eles se vêem como o "chefe", em vez de simplesmente manter um objetivo / visão compartilhada e manter equipes separadas na mesma página. Metodologias ágeis são baseadas em comunicação e contato. Quando seus arquitetos não se envolvem até que as decisões sejam tomadas, eles falham na agilidade.
fonte
Martin, acho que você pode ter uma idéia errada sobre como uma equipe auto-organizada funciona em seu ambiente.
Você citou o Guia Scrum: "Ninguém (nem mesmo o Scrum Master) diz à equipe de desenvolvimento como transformar o Backlog do produto em incrementos de funcionalidade potencialmente liberável".
Essa não é uma licença para a equipe do Scrum fazer o que quiser (desde que seja entregue) sem levar em consideração as necessidades de tecnologia e negócios da empresa como um todo e as necessidades das outras equipes.
Claro que as partes interessadas podem abusar de sua influência. Esse é um dos desafios da colaboração e certamente não se limita ao EA. Mas a colaboração não termina nos limites da equipe.
fonte
Waterfall ou Scrum (isso parece misturar dois, o que sim, não vai funcionar), isso parece uma camada de gerenciamento bastante inútil para mim em primeiro lugar. Os guardiões das decisões de tecnologia devem ser os principais desenvolvedores, o gerente geral de desenvolvimento, cujo trabalho deve ser impedir que as preferências dos desenvolvedores transformem seu aplicativo em uma hidra de opções tecnológicas, e quem quer que o orçamento tenha que pagar a conta em potencial.
Nada continua me impressionando, como os não-desenvolvedores realmente tendo a ousadia de tomar decisões tecnológicas sem sequer consultar as pessoas reais que sofrem as conseqüências dessas decisões.
fonte