Práticas extremas de programação tornam um aplicativo mais propenso a erros? [fechadas]


8

Estou conduzindo pesquisas acadêmicas sobre o tópico Extreme Programming e se suas práticas levam à criação de espaço para mais erros e bugs nos aplicativos.

Das experiências que recolhi de muitos, tenho comentários que se enquadram nos dois lados. Muitos o apóiam e o consideram uma necessidade diária, com dinâmica que pode facilitar a alteração dos requisitos do projeto. Muitos outros argumentam que isso leva a muitos problemas, como:

  • O envolvimento excessivo com o cliente no processo leva à expressão dos desejos do cliente e não das necessidades

  • Muitos produtos têm vários clientes, o que leva a necessidades e opiniões conflitantes, criando bloqueios desnecessários

  • Muitos produtos não têm clientes externos, onde o produto é fabricado para uso interno ou para ser vendido no futuro. Nesses casos, a equipe em si está interpretando o usuário e o desenvolvedor, matando a eficácia do processo.

  • Não existem muitas coisas na documentação formal; essa informalidade leva a uma visão vaga e pode criar problemas nos quais o cliente pode dizer que não é isso que pedimos etc. etc.

A questão é por que existem opiniões conflitantes sobre o XP. É uma questão de diferentes cenários? Existe algo mais? Até que ponto a alegação (conforme escrita no título) é verdadeira?

Gostaria que as pessoas que estão trabalhando ou que trabalharam com o XP aqui contribuam com seus aprendizados e experiências do mundo real. Seria ideal se você tiver quaisquer fatos ou referências para ajudá-lo a responder.


6
Olá e bem-vindo ao Programmers.SE! Existe a possibilidade de que essa pergunta seja encerrada como "não construtiva", o que significa que provavelmente criará debates e argumentos (embora eu ache que ela deve permanecer aberta porque você solicita especificamente referências e experiências concretas). Nesse caso, você provavelmente deve refinar a pergunta e perguntar especificamente sobre um ou outro dos seus pontos de bala. : (BTW parabéns por fazer a pergunta 25000!)
Kilian Foth

3
Obrigado por apontar, tive uma ideia de que isso pode levar a discussões não construtivas e, portanto, passei por essas diretrizes antes de publicá-las. E as perguntas subjetivas? e acho que as cumpri, pois minhas perguntas pedem experiências, fatos e números, em vez de opiniões pessoais. Espero que os moderadores considerem isso. enquanto eu também tentarei melhorar minha pergunta o que achar necessário. ps sobre a 25.000ª pergunta, uau agora eu posso contar isso como a conquista do dia.
precisa saber é o seguinte

2
XP cria mais erros e bugs em comparação com o que ? Todo o resto? Desenvolvimento de salas limpas? Grande design na frente?
Joris Timmermans

1
todos esses pontos são problemas com qualquer processo de design
jk.

2
Como as respostas de várias pessoas sobre suas várias experiências podem ser uma resposta a uma pergunta? Quem terá a melhor experiência, ou seja, como essa pergunta pode ter uma resposta aceita?
Jeffo

Respostas:


10

O envolvimento excessivo com o cliente no processo leva à expressão dos desejos do cliente, e não das necessidades.

Isso pressupõe que o cliente seja algum tipo de oráculo perfeito para os requisitos do sistema. Um dos princípios fundamentais do XP é que o cliente não é um oráculo perfeito e que é necessário um feedback constante baseado em software de remessa real para determinar as verdadeiras necessidades do mercado, dos clientes e, finalmente, das partes interessadas.

Muitos produtos têm vários clientes, o que leva a necessidades e opiniões conflitantes, criando bloqueios desnecessários.

Sim, e o envolvimento regular desses clientes ajudará a explicitar esses conflitos e a resolvê-los ao longo do tempo. Esconder o problema não o fará desaparecer.

Muitos produtos não têm clientes externos, onde o produto é fabricado para uso interno ou para ser vendido no futuro. Nesses casos, a equipe em si está interpretando o usuário e o desenvolvedor, matando a eficácia do processo.

As partes interessadas internas não são fundamentalmente diferentes das partes externas. Você não explicou como as metodologias que não são XP lidam com esse problema.

Não existem muitas coisas na documentação formal; essa informalidade leva a uma visão vaga e pode criar problemas nos quais o cliente pode dizer que não é isso que pedimos etc. etc.

O XP envolve feedback frequente e incremental entre as partes interessadas e os desenvolvedores. Se essas falhas de comunicação existirem, elas poderão ser descobertas durante as iterações iniciais e poderão ser corrigidas antes que afetem significativamente as iterações posteriores. A alternativa é que essas falhas de comunicação não sejam descobertas até pouco antes do envio do produto.

Eu acho que o equívoco fundamental é que o XP não está criando esses problemas. É apenas expô- los. Os processos que expõem e corrigem problemas antecipadamente e geralmente são menos propensos a erros, e não mais.


na medida em que o primeiro ponto eu acho que você ter explicado de uma forma grande, dizendo: One of the fundamental principles of XP is that the customer is not a perfect oracle and that constant feedback based on real shipping software is needed to determine the true needs of the market, the customers, and ultimately the stakeholders.+1 para este
SajjadHashmi

Em relação a isso, multiple customers issueconsidero que a principal razão por trás dessa preocupação é que, quando dois concorrentes estão em uma equipe juntos (digamos, durante uma reunião), eles podem ficar desconfortáveis ​​e hesitantes em expressar sua lógica / necessidades de negócios na frente de outros concorrentes. o que matará a eficiência do processo.
precisa saber é o seguinte

4

Algumas reflexões:

  • O envolvimento excessivo do cliente no processo faz com que ele comece a expressar seus desejos, e não suas necessidades para o software.

Há sempre um equilíbrio entre ter uma especificação detalhada e estável e responder ao cliente. O Extreme visa aumentar a capacidade de resposta ao cliente e, é claro, é possível ir longe demais nessa direção. Portanto, essa é uma preocupação legítima (especialmente dependendo de como o projeto é cobrado: se for um contrato de preço fixo, você obviamente precisará especificá-lo).

Na minha experiência, no entanto, não importa quão boa seja sua especificação, você frequentemente precisa alterá-la para fazer "o que o cliente deseja" de qualquer maneira. O Extreme ajuda você a fazer essas alterações o mais rápido possível, e não depois de criar um programa enorme e complicado de especificação.

  • Muitos produtos têm vários clientes, o que leva a necessidades e opiniões conflitantes, levando a bloqueios desnecessários

Obviamente, resolver necessidades conflitantes em tal situação sempre será um problema com o qual você precisará de um bom processo. Se o processo de obtenção de feedback do cliente for demorado e complexo, tornaria a Programação Extrema menos eficaz, então acho que essa é uma preocupação legítima.

  • Muitos produtos não têm clientes externos (organização de produtos feita para eles ou para venda no futuro). Nesse caso, a equipe em si está interpretando o usuário e o desenvolvedor, matando a eficácia do processo.

Eu não acho que isso seja legítimo. A idéia por trás do Extreme é que os clientes não percebem o que querem até que você comece a fazê-lo. Isso é tão verdadeiro para os "clientes" internos quanto os externos.

E se você estiver desenvolvendo algo que ainda não tem clientes (como um produto ainda não lançado), deverá ter alguém (ou algum grupo) que esteja atuando como o cliente hipotético e decidindo o que as pessoas vão querer. O Extreme funciona tão bem quanto eles agindo como clientes.

Eu trabalhei em um produto como este, destinado a clientes externos, mas ainda não lançado. Embora não o rotulássemos como "Extreme Programming", usamos um processo de desenvolvimento iterativo semelhante sem uma especificação formal extensa e com compilações frequentes. Achei bastante eficaz.

  • Não existem muitas coisas na documentação formal, essa informalidade leva a uma visão vaga e pode criar problemas nos quais o cliente pode dizer que não é isso que pedimos etc. etc.

Sim, qualquer coisa que não esteja documentada é um problema. O Extreme, como não é orientado por uma especificação formal, pode facilitar a não documentação das coisas. Mas Extreme não significa automaticamente "as coisas não estão documentadas". Você ainda deve fazer a documentação, mas ela é criada ao lado do programa e não antes. E, em alguns casos, isso significará documentar o comportamento após a implementação. Isso não é um problema por si só.

Quando se trata de cobrança, muitas vezes você precisa de documentação escrita exatamente do que será entregue antes de iniciar o trabalho. Isso pode ser mais difícil com a Extreme Programming.

Conclusão : Extreme é uma metodologia que, como qualquer coisa, tem vantagens e desvantagens. Você precisa ter em mente os dois ao usá-lo (ou ensiná-lo).


o que você quer dizer exatamente aqui quando diz documentation should be created alongside the program... quero perguntar por que documentação você está sugerindo o que devemos fazer juntamente com o programa. A preocupação do ponto era principalmente a falta de documentação, como especificações, etc. nas fases de planejamento, nas quais decidimos o escopo do projeto ou a iteração específica.
precisa saber é o seguinte

@SajjadHashmi, essa parte da resposta não se aplica à questão das especificações, isso é verdade. Meu ponto é que, mesmo se a criação do programa não é impulsionado pela especificação, você ainda precisa de documento que faz, como funciona, etc.

3

Suas perguntas estão tratando apenas de dois tópicos principais do XP: "comunicação direta com o cliente" e "pouca documentação formal". Portanto, no meu ponto de vista, essa não é realmente uma pergunta "XP"; esses são tópicos que fazem parte de qualquer outro processo de desenvolvimento ágil que eu conheça.

Aqui estão os meus pensamentos:

O envolvimento excessivo do cliente no processo faz com que ele comece a expressar seus desejos, e não suas necessidades do software.

Bem, se você tiver um processo semelhante a uma cascata, com uma especificação totalmente detalhada previamente, com muitos requisitos, poderá ter problemas com quais desses requisitos são apenas desejos e quais são necessidades reais. A maneira mais fácil de esclarecer isso é IMHO conversando com o cliente e mostrando-lhe diferentes alternativas - sempre que você chega a um ponto em que o esclarecimento é necessário. Portanto, o oposto é verdadeiro - o "desenvolvimento ágil" ajudará você a lidar melhor com as "necessidades versus desejos".

Muitos produtos têm vários clientes, o que leva a necessidades e opiniões conflitantes, levando a bloqueios desnecessários

Sim, com uma especificação totalmente detalhada previamente, esses conflitos podem ter sido resolvidos antes do início do desenvolvimento (se você tiver sorte). A solução para esse problema em um processo ágil é ter apenas poucas pessoas do lado do cliente conversando diretamente com os desenvolvedores e um representante responsável pelos clientes que podem tomar decisões finais em caso de conflitos.

Muitos produtos não têm clientes externos (organização de produtos feita para eles ou para venda no futuro). Nesse caso, a equipe em si está interpretando o usuário e o desenvolvedor, matando a eficácia do processo.

Não, isso não está correto, se você tiver apenas usuários internos pertencentes à mesma empresa que os desenvolvedores, o "cliente no local" será muito mais fácil de instalar do que quando você tiver apenas clientes externos. Se você não possui usuários diretos, isso pode ser um problema, mas não é um problema específico do Agile - você precisará encontrar alguém que assuma o papel de um usuário em potencial (e essa pessoa normalmente não é da equipe de desenvolvedores).

Não existem muitas coisas na documentação formal, essa informalidade leva a uma visão vaga e pode criar problemas nos quais o cliente pode dizer que não é isso que pedimos etc. etc.

Para minha experiência, se você desenvolver seguindo uma especificação formal sem comunicação constante com o cliente, a chance de desenvolver algo em que os clientes digam "não foi isso que eu pedi" é> 100 vezes maior do que quando você conversa diariamente com o cliente. Se você ainda tiver esse problema, existe uma solução simples: após cada sessão do cliente, faça uma breve nota escrita sobre o que você concordou. Se necessário, envie essa nota ao cliente e dê a ele a chance de fazer as correções. Isso funciona em um processo ágil e em qualquer outro tipo de projeto.


pode ser que eu não tenha explicado em algum lugar, mas eu quero dizer XP de cor, incluindo todos os seus 5 princípios em mente e não qualquer outro método ágil. Em relação primeiro ponto (na opinião geral) devsPara- customerdiscussão direta não são geralmente considera melhor opção, pois ambos têm diferentes paradigmas devs são geralmente em lados técnicas extremas e clientes são geralmente falando em termos de negócios, é por isso que as equipas têm analista entre quem realmente como muita documentação, você não acha que essa discussão poderia criar mais problemas em vez de resolvê-los.
precisa saber é o seguinte

sua resposta até o último ponto é realmente útil e clara. Obrigado +1
SajjadHashmi

@SajjadHashmi: Trabalhei em equipes nas quais você tem analistas entre os desenvolvedores e o cliente - e trabalhei em equipes nas quais o "analista" era um desenvolvedor da equipe que simplesmente não havia se esquecido de como evitar termos técnicos ao conversar com negócios. pessoas. IMHO o último é> 10 vezes mais eficaz.
Doc Brown

@SajjadHashmi: veja minha introdução alterada por que sua pergunta não é realmente uma pergunta "XP". Mas acho que isso realmente não importa.
Doc Brown

0

Too much involvements of the customer in the process make him start expressing his wishes rather than his needs to the software

Você está desenvolvendo software com base nas necessidades de um cliente? E se um cliente quiser? Você negará o cliente porque "ei cliente, eu apenas construo software com base na necessidade! ??"

Estagiei em uma loja de programação ágil e extrema. Vi interações semanais com clientes em primeira mão que às vezes deixavam o controle de qualidade e os desenvolvedores malucos. Mas eles entregaram exatamente o que o cliente queria, quando ele queria, e ficou claro durante o "Show and Tell" com o cliente o que ele fez, o que ele não fez e o que deveria ser o que ele queria.

Many products have multiple customers which lead to conflicting needs and opinions leading unnecessary blockades

Bloqueios desnecessários se a loja extrema e ágil deixar claro os objetivos da implementação e o que será e não será incorporado ao produto. Versões diferentes do mesmo produto também são possíveis e dependem do que é negociado. Isso não precisa ser um ponto de discórdia que interrompa a produtividade ou leve a bloqueios desnecessários.

Many products don’t have any external customers (products organization made for them or to be selling in future). In this case the team itself is playing the user as well as the developer hence killing the effectiveness of the process.

Não necessariamente. Até mesmo uma interface de usuário externa, na qual se entrevista pessoas aleatoriamente na rua, para determinar o que uma interface para um dispositivo em particular pareceria interessante para eles é uma possibilidade.

Not many things exists in formal documentation, this informality leads to vague vision and can create problems where the customer might say that this is not what we asked etc. etc.

Então a documentação formal precisa ser empregada. A documentação formal prende os pés do cliente ao fogo e um cartão perfurado de uma linha "isto é o que você nos disse que queria" coincide com a documentação e a interação do cliente, para que não haja desculpas. Como tive a oportunidade de ver isso em ação como estagiário em uma loja extrema e ágil, o cliente assinou a documentação semanalmente. O cliente também teve a chance de implementar mudanças e precisou assinar também. Se houver falta de documentação, há um convite para o desastre.

The questions is why such conflicting opinions exists regarding XP, is it the matter of different scenarios or is there something else and till what extent the claim (as written in the title) is true.

Eu diria que depende da inteligência da loja. XP e Agile são diretrizes e não instruções. Para operar com sucesso com o XP e o Agile, ele deve ser incorporado às práticas operacionais e utilizado em toda a organização. A quilometragem sempre varia e alguns indubitavelmente afirmam que é ruim, outros dizem que é bom. onde estagiei, foi sem dúvida bom e teve muito sucesso.

Pela minha experiência, quão rígidos são os princípios do XP e do Agile parecem determinar se, quando incorporados à "rotina diária", qual o êxito do desenvolvimento de software. Onde estagiei, a interação com o cliente levou tudo e nada foi feito sem que um cliente tivesse declarado pela primeira vez que deveria ser feito. A maneira como esta loja executou suas operações proporcionou um sucesso bom e mensurável, usando princípios sólidos de desenvolvimento como parte da estrutura XP e Agile, fortemente integrada a tudo o que fazem.


é claro que satisfazer o cliente é importante, mas desejos e vontades podem estar sempre acontecendo, um ser humano pode desejar tudo e ele continuará fazendo, e não podemos continuar facilitando-o, porque, se o fizermos, isso não mataria o princípio XP, ou seja, KIS> Keep it simple?
precisa saber é o seguinte

Se o cliente estiver disposto a pagar por isso, quem se importa? Cada alteração e cada ajuste significa tempo de desenvolvimento que pode ser cobrado do cliente. Ainda está trabalhando no XP, mas o dinheiro ditará quando for a hora de parar tudo isso e aquilo. A loja também pode cortá-lo determinando o que eles estão dispostos a desenvolver.
Mushy

0

Se mantivermos a questão original de

Estou conduzindo pesquisas acadêmicas sobre o tópico Extreme Programming e se suas práticas levam à criação de espaço para mais erros e bugs nos aplicativos.

Não tenho certeza de que as preocupações expressas sejam relevantes para a questão.

Se houver um medo do envolvimento do cliente, levando a desejos e não a necessidades, eu procuraria a equipe para ter certeza de que eles estão dividindo os itens corretamente em pequenos lançamentos com designs simples. Depois disso, priorize esses itens de forma que a equipe possa trabalhar em um ritmo sustentável.

Se o esforço tiver vários clientes que não podem concordar com necessidades e opiniões, que esperança há de poder testar se o software atende às necessidades do cliente? É melhor esclarecer essas coisas no início do SDLC do que depois.

Se a equipe precisar ser o usuário do XP, isso não interromperá o processo do XP. De fato, é afirmado especificamente que o cliente é um membro da equipe. Às vezes, esse membro da equipe é um funcionário interno e não um "verdadeiro cliente"; é importante que o indivíduo tenha poderes para representar as necessidades do cliente. Não vejo como essa preocupação é mais relevante para o XP em comparação com qualquer outra abordagem, seja ágil ou tradicional.

Não existem muitas coisas na documentação formal? Se feito corretamente, as equipes do XP gastam mais tempo planejando do que uma equipe tradicional. Além disso, como as especificações são escritas em conjunto entre os membros da equipe de espírito técnico e de negócios no início de cada iteração, as especificações tendem a ser mais precisas quando comparadas ao grande projeto antecipadamente.

O XP se concentra nos aspectos de desenvolvimento (engenharia) de um projeto. As coisas que devem ser discutidas ao considerar o XP são:

  • A curva de aprendizado para o desenvolvimento orientado a testes interfere no desenvolvimento de um produto de qualidade.
  • Quão difícil é criar testes de qualidade que resultem em código de qualidade.
  • Qual a probabilidade de os desenvolvedores "trapacearem" o ciclo de desenvolvimento orientado a testes e escreverem o código primeiro e depois o teste posteriormente. Isso importa?
  • Qual a eficácia dos desenvolvedores que trabalham em pares quando comparados ao desenvolvimento mais tradicional (uma pessoa escrevendo o código para uma função).
  • O design iterativo / emergente leva a sistemas escaláveis ​​e mais estáveis ​​do que os sistemas projetados com antecedência.
  • Qual é a eficácia da integração contínua na prevenção proativa de defeitos de software.

Para mim, essas são as questões a serem consideradas no XP. As preocupações levantadas acima parecem ser mais adequadas para uma discussão sobre Scrum (que geralmente é pareada com o XP).

Para referências eu veria:

http://xprogramming.com/index.php

ou

http://www.objectmentor.com/resources/omi_reports_index.html

Felicidades e boa sorte com sua pesquisa.

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.