Dichiarazione di non responsabilità: lo scopo di questa domanda non è discernere cosa è meglio per il singolo sviluppatore, ma per il sistema nel suo insieme.
Ho lavorato in ambienti in cui piccoli team gestivano determinate aree. Ad esempio, ci sarebbe un piccolo team per ognuna di queste funzioni:
- UI
- Codice quadro
- Logica di business / applicazione
- database
Ho anche lavorato a team in cui gli sviluppatori erano responsabili di tutte queste aree e di più (QA, analsyt, ecc ...). Il mio ambiente attuale promuove lo sviluppo agile (in particolare la mischia) e tutti hanno le mani in tutte le aree sopra menzionate.
Anche se ci sono pro e contro per ogni approccio, sarei curioso di sapere se ci sono più pro e contro di quelli elencati qui sotto, e anche quale sia la sensazione generale su quale sia l'approccio migliore.
Devs Do It All
Pro
1. Gli sviluppatori possono essere più a tutto tondo
2. Gli sviluppatori conoscono meglio il sistema
Contro
1. Ognuno ha le mani in tutte le aree, aumentando la probabilità di creare risultati non ottimali in quell'area
2. Può essere necessario più tempo per fare qualcosa con cui non sei familiare (jack of all trades, master of none)
Devs Specialize
Pro
1. Gli sviluppatori possono creare politiche e procedure per la propria area di competenza e applicarle più facilmente
2. Gli sviluppatori hanno più possibilità di acquisire una profonda conoscenza della propria area specifica e di renderla la migliore possibile
3. Altri sviluppatori non attraversano i confini e degradano un'altra area
Contro
1. Come ha detto un collega: "Perché vorresti incasellare te stesso in quel modo?" (Significa che alcuni sviluppatori non avranno la possibilità di lavorare in certe aree.)
È facile dire quanto sia agile e meravigliosa, e dovremmo fare tutto, ma sono un po 'fan delle aree di competenza. Senza quell'esperienza, ho visto il degrado del codice, gli schemi del database diventano difficili da gestire, il codice dell'interfaccia utente, ecc ... Diciamocelo, alcune persone rendono le carriere fuori dal semplice lavoro di interfaccia utente o semplicemente il lavoro nel database. Non è così facile compilare e fare un lavoro come esperto in quella zona.