Não consigo entender um certo ponto nos Princípios do Manifesto Ágil


24

Eu estava lendo Princípios do Manifesto Ágil . Tudo parece claro e razoável, exceto por um ponto:

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

Eu não entendo isso. Isso significa que o trabalho que não foi realizado deve ser exagerado? Se assim for, realmente não faz sentido.


2
+1 para combater a votação negativa - você tem uma pergunta surpreendentemente interessante aqui.

11
Veja também Wu Wei e imagine como ele pode ser aplicado ao desenvolvimento de software em geral. É a progressão natural da filosofia expressa em sua pergunta.

Respostas:


30

Remova o comentário entre parênteses. O que resta é "A simplicidade é essencial", que por sinal é uma aplicação do princípio à sua própria expressão.

A simplicidade é essencial, porque você destilou o que realmente precisa, removendo o que está tornando a tarefa mais pesada e menos elegante: complexa.

Eu sempre interpretei no sentido da brevidade de Pascal : " Eu teria escrito uma carta mais curta, mas não tinha tempo. " Você precisa evitar o que não está programado (da carta, do código) e isso é uma tarefa ativa e não fácil. Não é algo que acontece por si só.


35

A idéia é evitar o trabalho desnecessário, ou seja, "maximizar a quantidade de trabalho não realizado".

Portanto, se em um projeto tradicional você planejasse e construísse um ótimo sistema básico abstrato para permitir todas as suas necessidades possíveis mais tarde, basta pular isso e criar a coisa mais simples possível para os requisitos atuais . Não construa coisas que você não precisa.

YAGNI é um conceito relacionado.


5
Coincidentemente, este é provavelmente o princípio ágil com o qual eu concordo menos . Levada ao extremo, a visão abstrata é o que nos separa de outros animais ... Eu digo que precisamos usá-la sempre que pudermos. É claro que sei a que tipo de atrocidades o princípio deve ser uma reação - mas um pouco de previsão não vai doer. Às vezes é YAGNI, mas já vi alguns desenvolvedores tão dogmáticos que nem param para pensar algumas horas à frente (e percebem que a simplicidade que estão implementando agora não será suficiente em 4-8 horas).
Max

2
@ Max, acho que é necessário ver prever possíveis mudanças futuras. Aqui é onde a previsão é uma grande ajuda. E os desenvolvedores que você descreve são mais parecidos com avestruzes, que se escondem na areia.
SuperM

7
Os clientes do @Max não querem pagar pelo que você acha que eles podem precisar no futuro, eles querem pagar pelo que precisam agora, o mais rápido possível . Todos os meses, há bilhões de dólares em esforço desperdiçado, com boas intenções de "isso economizará muito tempo depois" e que "mais tarde" nunca chega, mas as coisas são complexas, com erros e atrasadas por causa de toda essa "previsão"

15
@ Max: YAGNI é adiar as decisões para o último momento responsável . O que você está falando é adiar a decisão para o último momento possível , o que é realmente uma Bad Idea ™. O problema é que você nunca terá menos informações para basear uma decisão do que no momento. Na pior das hipóteses, você terá as mesmas informações amanhã. Mas, geralmente, você terá aprendido alguma coisa até então. No caso que você mencionou, você sabe que você está vai precisar dele, então YAGNI simplesmente não se aplica. Tentar aplicá-lo é realmente estúpido nesse caso.
Jörg W Mittag

2
@ Max: O que você está descrevendo aqui é exatamente o oposto de maximizar a quantidade de trabalho não realizado. Está fazendo o dobro do trabalho.
Pd

5

Costumávamos chamar isso de "revestimento de ouro". O requisito para um martelo é que ele possa bater um prego em um pedaço de madeira. Não funciona melhor por ser um martelo banhado a ouro.

Muitas vezes, um desenvolvedor sugeria o uso de uma nova estrutura legal ou a adição de recursos que, embora legais, não fossem necessários. Anotaríamos essa idéia, mas para esta versão não faremos. Maximizaremos o trabalho não realizado. Já é difícil fornecer software a tempo, portanto, não forneça mais código do que o necessário. Se precisar ser feito, eventualmente ele entrará no plano e será feito no momento apropriado.


4

Essa ideia é muito semelhante a um conceito do Sistema Toyota de Produção (TPS) , que levou ao Lean Manufacturing mais genérico e, em seguida, à aplicação dessas técnicas ao desenvolvimento de software Lean . O TPS antecede significativamente o movimento ágil, com suas raízes na fabricação no final da década de 1950.

O conceito de maximizar a quantidade de trabalho não realizado é semelhante à eliminação de desperdícios. No ambiente de fabricação, o desperdício inclui coisas como superprodução de mercadorias, espera por recursos, movimentação desnecessária de pessoas ou produtos, excesso de estoque e produtos defeituosos. No desenvolvimento de software enxuto, esses resíduos foram traduzidos em funcionalidades desnecessárias, atrasos no processo de desenvolvimento, requisitos pouco claros que atrasam a produção de software, falta de testes e atrasos na comunicação.

A idéia geral de ambos os conceitos é a mesma - coisas que não agregam valor são um desperdício e devem ser minimizadas. O objetivo final é aumentar a qualidade e reduzir o tempo e o custo de produção.

Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.