Oggi mi sono reso conto penosamente che per alcune decisioni è necessaria una buona conoscenza generale del sistema. Altrimenti, il rischio è troppo alto perché la tua ipotesi si rivelasse sbagliata.
Immagina di essere uno sviluppatore di un negozio online. Per comprendere il sistema, devi comprendere molti sottosistemi collegati, ad esempio:
- Come ricevere ed elaborare le informazioni sui prodotti da vari fornitori
- In che modo il cliente può cercare e ordinare prodotti sul tuo negozio web
- In che modo gli ordini vengono elaborati e gestiti dal servizio clienti
- In che modo il sistema SAP gestisce il processo di fatturazione
- ...
Più grande diventa il sistema, più devi capire.
Se manca questa conoscenza, soluzioni sub-ottimali sviluppate quando team specializzati hanno lavorato insieme. Team specializzati, che hanno compreso solo in dettaglio la loro parte del sistema.
Per affrontare questo problema, la nostra azienda ha cambiato la strategia, in modo che un team di sviluppo debba sempre essere responsabile di tutti gli aspetti di una funzionalità. Anche se coinvolge l'intera catena di processi. (È una specie di team di caratteristiche, ma non di team che lavorano su diversi sottosistemi.)
Quali sono le strategie efficaci per gli sviluppatori per mantenere aggiornate le conoscenze relative al sistema e al processo operativo?
Penso che una buona documentazione di sistema sia una chiave, ma temo che ci sia un punto in cui la mente umana non può scalare alla velocità del sistema. A un certo punto di dover semplicemente, ma che ipotesi semplificate possono rivelarsi errori costosi. Quando devi implementare e mantenere il codice, devi solo conoscere i dettagli esatti.
Come sviluppatore, attualmente devo affrontare un conflitto di interessi difficile:
- Ho bisogno di dedicare più tempo alla comprensione del nostro sistema e del nostro processo operativo.
- Ho bisogno di sviluppare e mantenere il nostro codice.
Poiché il tempo è limitato, 2) vince per lo più. Il risultato è che per lo più ottengo una conoscenza più approfondita lungo il percorso e una certa metà delle conoscenze delle conversazioni casuali.
Sai quanto enormi aziende come Amazon risolvano questo problema? Suppongo che nessun singolo essere umano sia in grado di comprendere un processo così complesso e sia in grado di fornire il codice in più sottosistemi contemporaneamente.