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?
fonte
Respostas:
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
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:
fonte