Programmazione estrema per un singolo sviluppatore [chiuso]


10

Ho lavorato con alcuni concetti di programmazione estrema di base nelle ultime due settimane, per un gioco arcade su piccola scala, a scopo di lucro, multiplayer. Ho trascorso una settimana a sviluppare storie utente e determinare i requisiti per creare un piano di rilascio. Ho anche trascorso una settimana a programmare e applicare il primo piano di iterazione che mi è venuto in mente. Ho identificato alcuni dei concetti ovviamente utili per un singolo sviluppatore.

  • Integrazione continua
  • Non aggiungere mai funzionalità in anticipo
  • Test Driven Development
  • Scegli una metafora del sistema
  • Utilizzare un singolo punto di integrazione
  • Prova tutti i bug
  • Rifattore costante
  • Stabilisci un ritmo sostenibile
  • Semplicità
  • Rilasci frequenti

Sono curioso di sapere se mi manca qualcosa in particolare che potrebbe essere adatto a lavorare con un singolo progetto di sviluppo?

Inoltre, alla luce dell'idea di semplicità e di sviluppo guidato dai test, è meglio utilizzare piattaforme consolidate, ricche di funzionalità e pronte?

O dovrei lavorare da zero, quando possibile, per evitare di imbattermi nei problemi presentati con regole come il refactoring costante e mai l'aggiunta di funzionalità in anticipo?


5
Altrove, su c2.com (un sito che è stato creato in anticipo per alcune discussioni su concetti agili (e specificamente XP)) - Extreme Programming For One

È una risorsa straordinaria, grazie. Mi piace in particolare l'idea di XP Pledge of Allegiance.
Kody Manharth,

Se leggi attentamente, troverai nomi come Ron Jeffries e Kent Beck che commentano ... e beh, è il Wiki di Ward .

Quindi è stato scritto dai creatori del paradigma, è fantastico. Non so come non mi sia ancora imbattuto in esso. Stavo usando www.extremeprogramming.org
Kody Manharth il

2
Non esiste un solo punto nella domanda che sia obbligatorio per lo sviluppo di software di successo. La vera domanda è: di quali hai veramente bisogno?
Robert Harvey,

Risposte:


5

In definitiva, Extreme Programming riguarda una serie di pratiche e metodologie che portano a un miglioramento del valore aziendale. La migliore illustrazione di ciò che ho trovato è da http://c2.com/cgi/wiki?ExtremeProgrammingEnablingChart

Abilitazione estrema alla programmazione

Tutto in blu fa parte del nucleo di XP.

Ci sono parti di esso che si trovano all'esterno che aiutano a abilitare le cose all'interno dell'area blu e fanno parte di XP nel suo insieme, ma non sono fondamentali. Nota che personalmente non sono un professionista di XP e ho letto un bel po 'di critiche alle persone "quasi" a seguito di XP che varie persone hanno detto che non sono XP. Lasciamo per un po 'quell'aspetto del dogma di XP e guardiamo cosa abbiamo.

Renditi conto che una delle prime e per la maggior parte delle cose è quella di avere un impegno nel processo da parte del cliente. Un componente chiave di XP è il coinvolgimento del cliente. Ciò si presenta in una serie di punti come la pianificazione delle versioni, le versioni piccole, la valutazione dei clienti fuori sede. Queste sono le cose a cui i tuoi clienti dovranno abbonarsi se hai successo con XP come sviluppatore solista. Se invece chiedono un design e quindi un periodo di sviluppo e quindi test e simili, non avrai l'impegno da parte loro di andare oltre.

XP non significa nessuna pianificazione. Ci sono diversi punti in questo in cui la pianificazione ne fa parte: definizione delle priorità, stima della user story, pianificazione dell'iterazione e definizione delle attività. Anche se sei uno sviluppatore su questo, queste sono le cose che dovrai lavorare con i tuoi clienti per la consegna.

Punti come la proprietà collettiva del codice e la programmazione di coppie sono elementi che coinvolgono più di uno. Decidere cose come gli standard di codifica è molto più semplice, ma ciò non significa che non devi seguirli. La proprietà del codice collettivo si applica ancora - è solo che la proprietà è anche il prossimo sviluppatore - non scrivere codice che è solo per te. Si noti che questo è in un certo grado di conflitto con il "codice rivela tutte le intenzioni" che è abilitato dalla programmazione in coppia - non si ha quella persona per verificare che si sta scrivendo un codice gestibile, quindi anche la documentazione del codice è fondamentale.

Oltre a questi avvertimenti, molti dei principi di progettazione di XP si applicano ancora. Cose come test di progettazione iniziale, integrazione continua, incontri con il cliente, refactoring, YAGNI, soluzioni di picco: quelle chiamate possono essere fatte da sole.

Renditi conto che XP solo prende molta o più disciplina di XP normale. XP è spesso considerata una metodologia di alta disciplina in quanto richiede alle persone di mantenere una rigorosa aderenza alle migliori pratiche che cerca di incarnare. Quando non hai un allenatore o altre persone per supportare quella disciplina necessaria, può cadere in un miscuglio di pratiche che assomigliano a XP.

Lettura correlata:

Vorrei estrarre una citazione dal primo dei collegamenti c2:

Notato luminare del linguaggio Perl e scienziato pazzo, Damian Conway crede che Extreme Programming sia in realtà un termine improprio. Dal momento che incarna molte delle buone pratiche di programmazione insegnate ai programmatori ma che quasi sicuramente ignorano, ritiene che avrebbe dovuto essere chiamato Programmazione ultra conservativa


Illuminante, per non dire altro. Attualmente sto affrontando problemi in termini di TDD, in Flash usando Starling. Sto usando FlexUnit e non ha la capacità di gestire i test grafici in quanto è senza testa. Sarebbe appropriato in casi come questo semplicemente delegare questi test ai controlli manuali (ad esempio, il test per il logo è centrato sullo schermo). Questo sarebbe considerato un test di integrazione? (ovvero il modulo schermo Splash funziona correttamente con il modulo stage di Flash?) Devo usare un framework beffardo per simulare la situazione richiesta? I test possono essere costrutti puramente eterei?
Kody Manharth,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.