Em um ambiente ágil, responsável pela arquitetura de software

19

Em uma equipe ágil, quem é responsável por tomar decisões de arquitetura e design de alto nível que afetam todo o sistema, não apenas o trabalho que está sendo feito no sprint atual?

Talvez o proprietário do produto, o scrum master, a equipe do scrum ou outra pessoa?

insira a descrição da imagem aqui

DWD
fonte
10
Isso ... não faz sentido ...
Telastyn 16/10
3
A presença de backlogs do Produto e da Sprint não afeta quem é responsável pela arquitetura do software. Uma pergunta melhor pode ser: em um ambiente ágil, quem é responsável pela arquitetura de software?
ChargerIIC
Tentei atualizar a pergunta para que pelo menos ela pudesse ser entendida. Não 100% de certeza se eu entendi direito ...
FrustratedWithFormsDesigner
relacionados (possível duplicata): Como é feito o design arquitetônico em um ambiente ágil?
mosquito

Respostas:

24

"A arquitetura do software é realizada por toda a equipe. Essa prática não elimina a necessidade de um arquiteto de software, apenas significa que o arquiteto contribui para a discussão com uma perspectiva mais ampla e provavelmente mais experiente, mas todos os membros da equipe contribuem para a arquitetura do software ".

Alexander Hunt
fonte
5
O Pure Agile tende a rejeitar funções tradicionais descendentes, como "gerente de projetos" e "arquiteto de sistemas", preferindo refatorar essas funções e distribuir suas responsabilidades tradicionais por toda a equipe.
Jonathan Eunice
6
@ JonathanEunice: Como isso pode ser praticamente possível? Nem todo desenvolvedor também é um bom arquiteto.
Giorgio
2
@ JonathanEunice: Então a pergunta feita ao DWD faz sentido, afinal. Eu não entendo todos os votos negativos.
Giorgio
3
@DaveHillier: Talvez esses projetos sejam grandes, mas a arquitetura seja simples o suficiente: os desenvolvedores precisam preencher as partes em um esquema repetitivo bastante simples (por exemplo, escreva centenas de formulários semelhantes em um aplicativo baseado na Web com um modelo de domínio existente) . Por outro lado, eu sei que, assim que um aplicativo se torna suficientemente complexo, você precisa de alguém para cuidar da arquitetura (geralmente inicial), caso contrário, você terá uma grande bagunça.
Giorgio
6
"Big Upfront Design" é o argumento ágil típico para chegar à conclusão de que não deve haver nenhum design inicial: uma abordagem é levada ao extremo, o extremo comprovadamente errado e o extremo oposto é proposto como uma solução. Concordo que um grande projeto inicial raramente é uma boa abordagem, mas algumas decisões arquiteturais fundamentais devem ser tomadas antecipadamente para evitar uma grande refatoração ou reescrita completa posteriormente. Esta não é uma atividade que possa ser improvisada "quando alguém sente que o código está ficando muito confuso e precisa ser refatorado". A experiência ajuda a encontrar um bom equilíbrio.
Giorgio
19

Arquitetos, é claro, mas talvez não os tipos tradicionais de arquitetos.

Não quero dizer o tipo de arquiteto cirurgião-chefe que pensa e depois deixa os macacos para digitar. Refiro-me a um programador líder experiente que entende as vantagens e desvantagens de decisões difíceis de reverter e que aconselha as equipes sobre o que fazer.

É difícil encontrar arquitetos eficazes, mas pode ser uma posição fantástica e, portanto, você provavelmente tem pelo menos um programador experiente e atencioso que poderia fazê-lo bem. Essa pessoa precisa

  • Tome boas decisões de arquitetura, é claro, mas também
  • Saiba como dar conselhos de forma eficaz, para que outros se sintam à vontade em tomá-los, e também
  • Delegar lentamente as decisões de arquitetura para as equipes

Este último ponto leva muitas pessoas. Quando agilistas bem-intencionados dizem coisas como "A equipe é dona da arquitetura", eles têm esse "certo", mas eu acho o conselho quase completamente sem sentido em sua aplicação. Se você confiasse que as equipes assumissem a responsabilidade por sua própria arquitetura, então você não faria a pergunta em primeiro lugar, agora? Portanto, suponho que você faça a pergunta porque há alguma preocupação ou que

  • Ninguém assumirá a responsabilidade e teremos uma arquitetura ruim, ou
  • As pessoas erradas assumirão a responsabilidade e teremos uma arquitetura ruim, ou
  • Quem assumir a responsabilidade se tornará um bode expiatório e você espera evitar isso.

Se você precisar que alguém assuma a responsabilidade, entregue-o a quem quiser aceitá-la. Seriamente. Essa pessoa pelo menos se importa. Dê a essa pessoa os recursos necessários para realizar o trabalho e ajude-os quando necessário. Provavelmente não importa o quão competente a pessoa é, porque se ela se importa, ela tenta aprender o que precisa aprender. Naturalmente, essa pessoa precisa de apoio na forma de bons livros para ler e de uma comunidade de colegas e mentores a quem possam pedir ajuda e conselhos.

Se você se preocupa com a responsabilidade da pessoa errada, espero que saiba quem é a "pessoa certa" e lute para instalá-la como arquiteto. Um livro como The New Strategic Selling ajudará você a aprender as técnicas de vendas para que isso aconteça.

Se você só precisa de um bode expiatório, então silenciosamente leve os outros a dar a responsabilidade a quem quer que seja a carreira que você mais gostaria de destruir ou prejudicar. Pelo menos seja honesto sobre isso.

Voltando ao trabalho de um arquiteto eficaz, eles podem pensar em seu trabalho como uma posição gerencial, em vez de meramente uma posição de tomada de decisão. Se eles não delegarem pelo menos as decisões mais rotineiras às equipes, tornar-se-ão um gargalo e diminuirão a velocidade de toda a organização . Adicionar mais arquitetos ao topo não torna isso mais rápido. Cultivar melhores decisões de arquitetura a partir do zero. A técnica do quadro de delegações ajudará seu arquiteto a ficar mais confortável ao longo do tempo, delegando cada vez mais decisões às equipes, à medida que essas equipes ganham confiança mostrando competência.

Penso em um grande arquiteto como alguém que me ajuda a entender como projetar melhor meus sistemas, que me aconselhará pacientemente quando eu pedir e que ocasionalmente me impedirá de tomar uma decisão muito ruim. Esse arquiteto age como um líder no sentido mais verdadeiro da palavra: alguém que outros seguem voluntariamente .

Eu sei que isso foi muito.

Referências

Miller, A Nova Venda Estratégica . Este livro inclui um modelo para entender por que você não conseguiu fechar uma venda específica. Acho isso inestimável para entender por que os colegas de trabalho não fazem a coisa obviamente maravilhosa que estou sugerindo.

Weinberg, tornando-se um líder técnico . Este livro me ajudou a aprender como fazer a parte não-arquiteta do trabalho efetivo do arquiteto.

Appelo, Quadros de Delegações e Poker de Delegação . Não subestime o quão difícil é a delegação e o quanto é ruim para ela. Aprenda a fazê-lo de forma mais eficaz e confortável.

JB Rainsberger
fonte
1
Sua chave 'h' é desonesta? ;)
Dave Hillier 21/10
3
Não, Dave. Eu usei pronomes Spivak (gênero neutro).
JB Rainsberger
Por causa de perguntas como o @DaveHillier, eu costumo usar "s / he" ... (Obrigado por esta ótima resposta, a propósito, coloca a realidade de volta em "a equipe é / tem / tem / é dona ..." clichês)
Marjan Venema
1
@ controle jdl134679 Versão para o resgate: softwareengineering.stackexchange.com/posts/260541/revisions
JB Rainsberger
1
@ Walfrat Depois de mais reflexão, decidi esclarecer um pouco mais esse ponto. Uma pessoa que se importa tentará aprender o que precisa aprender, mas provavelmente precisa de apoio, como um mentor.
JB Rainsberger
10

As melhores arquiteturas , requisitos e projetos emergem de equipes auto-organizadas

- Manifesto Ágil

Portanto, a equipe se auto-organiza para tomar decisões arquitetônicas da maneira que achar melhor. Não existe uma regra rígida; ela pode variar de consenso a um "conselho" dos membros mais antigos, a designação de um membro em particular como autoridade de arquitetura, a deixar que o arquiteto escolha se existe um membro com esse cargo. .

guillaume31
fonte
9
Eu gosto do Agile, mas essa é uma grande fraqueza - a arquitetura geralmente é negligenciada ou misturada.
user949300
1
@ user949300 "Agile", como no manifesto, diz muito pouco sobre arquitetura. De quais métodos exatos você está tirando essa conclusão? O XP o incentivaria a refatorar sem piedade. Você é a favor do BUFD?
Dave Hillier 21/10
"O XP encorajaria você a refatorar sem piedade": até você gastar mais tempo refatorando do que escrevendo um novo código. Acho que a melhor solução é encontrar um equilíbrio entre as decisões arquiteturais fundamentais que você toma antecipadamente após uma análise cuidadosa e as decisões menores de design que você implementa ao longo do caminho através da refatoração.
Giorgio
@ user949300 é porque a equipe não é auto-organizada, se estivesse, estaria em comunicação frequente com o restante da equipe sempre que uma decisão de arquitetura precisar ser tomada e documente / discuta / discuta adequadamente essas idéias.
Rudolf Olah
3

Sinto que a resposta "" a quem é responsável por tomar decisões de arquitetura e design de alto nível? "Depende do tamanho e do número de equipes.

Para uma ou duas equipes com 3-7 em cada equipe, a equipe auto-organizada pode lidar com a liderança dos membros seniores.

Para 3 ou mais equipes, o aumento da complexidade leva à necessidade de uma equipe de arquitetura que possa ver se as várias sub-equipes estão fazendo um trabalho que fará interface com as outras equipes. Na minha experiência, esse ponto é alcançado quando há aproximadamente 8 equipes ou cerca de 50 pessoas.

Michael Durrant
fonte
1

Existem ótimos recursos da equipe do Scaled Agile Framework (SAFe) em seu site.

Essencialmente, ajuda a expandir o ágil em toda a organização, indo acima de uma única versão e no planejamento de portfólio e programa. A documentação deles mostra sugestões sobre como envolver seus arquitetos corporativos e de sistema no processo de introdução de épicos arquitetônicos no trem de lançamento.

Edite para maior clareza para abordar a questão mais diretamente:

Em um ambiente ágil em escala, existem várias camadas de propriedade sobre a arquitetura. A equipe de implementação ágil será proprietária da arquitetura emergente de baixo nível, refatorando conforme necessário para continuar a implementação de seus pedidos em atraso. As decisões de arquitetura de nível superior (sistemas operacionais, navegadores, plataformas, bibliotecas) são de responsabilidade dos arquitetos do sistema e da empresa. Eles apresentarão os casos de negócios para quando essas mudanças precisam ocorrer e recomendarão que essas alterações de arquitetura sejam adicionadas ao treinamento de liberação para as equipes de implementação.

Portanto, no que diz respeito às decisões de arquitetura de alto nível que vão além do sprint, geralmente você as toma em um nível acima da equipe. Esses profissionais tradicionalmente já têm um papel de "arquiteto" dentro da empresa.

Jay S
fonte
2
como isso responde à pergunta "quem é responsável por tomar decisões de arquitetura e design de alto nível"?
mosquito
1
Obrigado, mosquito, tentei editá-lo para deixar mais claro qual era minha intenção de responder à pergunta. Eu dei alguns pulos na minha cabeça, mas esqueci de anotá-los :) #
Jay S #
1

Eu acho que a maioria das outras respostas está pensando sobre isso da perspectiva de estar dentro de um projeto.

Se esse é o único nível de arquitetura em uma organização, o resultado será francamente o caos. Eu testemunhei esse caos em primeira mão, infelizmente isso acontece.

De acordo com o TOGAF, o Departamento de Arquitetura Corporativa faz planos de alto nível para e com os negócios para criar e substituir o ambiente de TI. O arquiteto corporativo terá princípios de arquitetura definidos e os assinará nos níveis mais altos da organização e ajudará a criar a arquitetura e os requisitos de alto nível para cada projeto. Cada projeto é iniciado para fornecer um bloco de construção arquitetônico nessa arquitetura de alto nível.

Portanto, no nível do projeto, o Arquiteto de Soluções criará a arquitetura do projeto (possivelmente iterativamente) e será aprovado pelo Arquiteto Corporativo.

Agora, concentre-se em um projeto ágil. Um projeto ágil tem requisitos. Eles não estão na forma de um "Documento de Requisitos" maciço, mas são épicos e histórias. Esses épicos ainda exigem planejamento. Você não envia uma equipe de desenvolvedores em algumas corridas para o desconhecido. Você sabe em alto nível o que o sistema precisa fazer, quais outros sistemas ele precisa interagir e quais restrições de hardware / sistema operacional / idioma a organização possui e isso orienta e restringe as opções de arquitetura abertas ao Solution Architect. Por exemplo, se você está comprometido com o .NET e SQL Server, teria que fazer uma extremamentecaso convincente para implementar um site de comércio eletrônico baseado no Magento usando PHP e MySQL por causa dos custos envolvidos no suporte a dois bancos de dados, duas linguagens, dois servidores da web etc. Como alternativa, um projeto pode optar por usar uma biblioteca completamente diferente ou uma aparência e sentir e isso pode ter implicações para todos os outros projetos de bordo. É essencial ter a supervisão de um arquiteto corporativo para impedir que esse tipo de "dívida arquitetônica" ocorra.

mcottle
fonte
0

Depende do design organizacional da organização e se o produto está em um portfólio. Organizações maiores e orientadas a funções podem nomear arquitetos seniores para liderar esse tipo de atividades.

Geralmente, um arquiteto sênior facilita e orienta as decisões de design, pois não afetam apenas a lista de pendências de produtos, podem afetar vários produtos em um portfólio de produtos.

Empresas menores e ágeis podem contar com desenvolvedores especialistas em sistemas para liderar a equipe de desenvolvimento a se alinhar ao projeto arquitetônico.

Por fim, as decisões de arquitetura precisam ser acordadas pela equipe de entrega que trabalha no produto. Arquitetos e líderes de tecnologia experientes estarão mais focados em facilitar a discussão sobre como o design deve ser, em vez de ditar o design.

WBW
fonte
0

Acho que a maioria das respostas já destaca que a equipe nem uma única pessoa deve tomar essas decisões.

O que eles não tocam é outro princípio do Agile:

A simplicidade - a arte de maximizar a quantidade de trabalho não realizado - é essencial.

Pensar em arquiteturas de alto nível e decisões de design muitas vezes não é tomado com simplicidade, possivelmente levando a desperdiçar muito esforço e adicionando complexidade desnecessária que poderia dificultar a extensão das coisas.

Pense em 'jardinagem' em vez de 'arquitetar' - crie uma cultura de vida, design crescente

Durante sua iteração atual, você deve tomar decisões de arquitetura e design para suas necessidades atuais. Em vez de olhar para o futuro que nunca pode se tornar, concentre-se apenas no que você precisa agora. Provavelmente YAGNI uma arquitetura bem pensada agora, deixe a equipe lidar com isso pouco a pouco.

Outras leituras:

Niels van Reijmersdal
fonte