Programação extrema para um único desenvolvedor [fechado]


10

Eu tenho trabalhado com alguns conceitos básicos de programação extrema nas últimas duas semanas, em um jogo de arcade em pequena escala, com fins lucrativos, multiplayer e arcade. Passei uma semana desenvolvendo histórias de usuários e determinando requisitos para criar um plano de liberação. Também passei uma semana codificando e aplicando o primeiro plano de iteração que criei. Eu identifiquei alguns dos conceitos obviamente úteis para um único desenvolvedor.

  • Integração contínua
  • Nunca adicione funcionalidade antecipadamente
  • Desenvolvimento Orientado a Testes
  • Escolha uma metáfora do sistema
  • Use um único ponto de integração
  • Teste todos os erros
  • Refatorar constantemente
  • Defina um ritmo sustentável
  • Simplicidade
  • Lançamentos frequentes

Estou curioso para saber se está faltando algo em particular que possa ser adequado para trabalhar com um único projeto de desenvolvedor.

Além disso, sob essa luz, dada a idéia de simplicidade e desenvolvimento orientado a testes, é melhor usar plataformas estabelecidas, ricas em recursos e prontas para uso?

Ou devo trabalhar desde o início, quando possível, para evitar os problemas apresentados com regras como refatoração constante e nunca adicionar funcionalidades antecipadamente?


5
Elsesite, em c2.com (um site que foi criado cedo para alguma discussão sobre ágil (e especificamente XP) conceitos) - Extreme Programming For One

Esse é um recurso incrível, obrigado. Eu particularmente gosto da idéia do XP Promessa de Fidelidade.
Kody Manharth

Se você ler atentamente, encontrará nomes como Ron Jeffries e Kent Beck comentando ... e bem, é o Wiki de Ward .

Então, é escrito pelos criadores do paradigma, isso é fantástico. Não sei como eu não tinha tropeçado nisso ainda. Eu estava usando www.extremeprogramming.org
Kody Manharth

2
Não há um único marcador em sua pergunta que seja obrigatório para o desenvolvimento bem-sucedido de software. A verdadeira questão é: quais você realmente precisa?
Robert Harvey

Respostas:


5

Por fim, Extreme Programming trata de um conjunto de práticas e metodologias que levam a um melhor valor comercial. A melhor ilustração disso que encontrei é de http://c2.com/cgi/wiki?ExtremeProgrammingEnabledChart

Capacitação extrema de programação

Tudo em azul faz parte do núcleo do XP.

Há partes dele que estão do lado de fora que ajudam a habilitar coisas dentro da área azul e fazem parte do XP como um todo, mas não são críticas para ele. Observe que eu pessoalmente não sou praticante de XP e li muitas críticas às pessoas "quase" após o XP que várias pessoas disseram que não é XP. Vamos deixar um pouco de lado esse aspecto do dogma do XP e ver o que temos.

Perceba que uma das primeiras e para a maioria das coisas é ter um compromisso com o processo do cliente. Um componente chave do XP é o envolvimento do cliente. Isso aparece em vários pontos, como planejamento de lançamentos, lançamentos pequenos, avaliação de clientes externos. Essas são as coisas pelas quais seus clientes precisarão se inscrever para obter sucesso no XP como desenvolvedor solo. Se, em vez disso, eles solicitarem um design, um período de desenvolvimento e, em seguida, testarem, você não terá o compromisso deles de ir mais longe.

XP não significa nenhum planejamento. Existem vários pontos em que o planejamento faz parte dele - priorização, estimativa da história do usuário, planejamento da iteração e definição de tarefas. Mesmo que você seja um desenvolvedor disso, são coisas que você precisará trabalhar com seu cliente na entrega.

Pontos como propriedade coletiva do código e programação de pares são coisas que envolvem mais de um. Decidir sobre coisas como padrões de codificação é muito mais fácil, mas isso não significa que você não precisa segui-las. A propriedade do código coletivo ainda se aplica - é apenas que a propriedade também é o próximo desenvolvedor - não escreva o código que é somente para você e você. Observe que isso está em algum grau de conflito com o 'código revela todas as intenções' que é ativado pela programação em pares - você não tem essa pessoa para verificar se está escrevendo código de manutenção, para que a documentação do código também seja crítica.

Além dessas advertências, muitos dos princípios de design do XP ainda se aplicam. Coisas como design do primeiro teste, integração contínua, reuniões com o cliente, refatoração, YAGNI, soluções de pico - essas chamadas podem ser feitas individualmente.

Perceba que o XP solo requer tanta ou mais disciplina quanto o XP regular. O XP é frequentemente considerado uma metodologia de alta disciplina, pois exige que as pessoas mantenham rigorosa adesão às melhores práticas que ele tenta incorporar. Quando você não tem um treinador ou outras pessoas para apoiar essa disciplina necessária, pode cair em apenas uma mistura de práticas que têm alguma semelhança com o XP.

Leitura relacionada:

Gostaria de obter uma citação do primeiro dos links c2:

Luminoso notável da Perl Language, e cientista louco, Damian Conway acredita que a programação extrema é realmente um nome impróprio. Como ele incorpora muitas das boas práticas de programação que os programadores são ensinados, mas quase certamente ignoram, ele acredita que realmente deveria ter sido chamado de Programação Ultra Conservadora


Iluminador, para dizer o mínimo. Atualmente, estou lidando com problemas em termos de TDD, no Flash usando Starling. Estou usando o FlexUnit e ele não tem a capacidade de lidar com testes gráficos, pois é decapitado. Em casos como esse, seria apropriado simplesmente delegar esses testes para verificações manuais (por exemplo, o teste do logotipo está centralizado na tela). Isso seria considerado teste de integração? (ou seja, o módulo da tela Splash funciona corretamente com o módulo de estágio do Flash?) Devo usar uma estrutura de simulação para simular a situação necessária? Os testes podem ser construções puramente etéreas?
precisa saber é o seguinte
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.