Un mio amico, un programmatore PHP principiante, ha bisogno di collegare il prodotto che la sua azienda sviluppa con un prodotto di terze parti (una serie di servizi web). Ha ricevuto la documentazione "rilevante" (poche centinaia di pagine di materiale illeggibile) da questa terza parte, ha letto la documentazione PHP relativa al client SOAP, ha letto su SOAP e WSDL, ma non ha una minima idea da dove cominciare . Invece di un'esercitazione passo-passo, ha molta documentazione eccessivamente prolissa.
Gli ho suggerito di utilizzare la prototipazione:
- Immagina lo scenario di base in cui è possibile utilizzare i servizi Web di terze parti,
- Seleziona la documentazione pertinente,
- Costruisci (da zero) lo script PHP più semplice che riprodurrà questo scenario,
- Una volta che il prototipo funziona, integra la funzionalità nel prodotto esistente,
- refactoring,
- Espandi il prodotto esistente con funzionalità aggiuntive.
Sebbene ciò possa aiutare a spingere questa persona nella giusta direzione, sento che il mio suggerimento è solo parzialmente utile. Mi immagino sei anni fa senza sapere nulla su WSDL e SOAP e dover cercare all'interno di centinaia di pagine di documentazione: sarei già scoraggiato ai passaggi 2 e 3.
Gli sviluppatori esperti hanno un sacco di schemi, pratiche e processi che aiutano a risolvere i problemi di base che si incontrano frequentemente nello sviluppo del software:
-
Gli aspetti tecnici di una funzionalità sono incerti? Utilizza la prototipazione.
-
L'applicazione "non risponde"? Utilizza il profilo per trovare i colli di bottiglia.
-
I requisiti sono soggetti a frequenti cambiamenti? Usa Agile.
-
I programmatori devono essere sicuri che il loro codice non contenga omissioni? Utilizza le revisioni del codice.
-
Le versioni successive di un prodotto non vengono distribuite abbastanza velocemente? Usa DevOps.
Mentre questi modelli e pratiche aiutano gli sviluppatori a risolvere problemi puramente tecnici / organizzativi (come "So come implementare Web Sockets in Java, Python e Node.js, ma ora ho bisogno di farlo in Haskell."), il Stessi schemi e pratiche non sono utili per i programmatori meno esperti che hanno bisogno di risolvere problemi più sostanziali e meno tecnici (come "Credo che i Web Socket siano una specie di HTTP ma succede nell'altro modo, qualcosa del genere; per implementarlo nella mia app, ma non sono sicuro del perché ne abbiamo bisogno. ")
Invitare il programmatore a trascorrere tre anni al college o dodici mesi a leggere libri legati alla programmazione non è sempre un'opzione: alcune persone devono lavorare per pagare le bollette, devono completare il progetto per la prossima scadenza e non vengono pagate leggere libri.
Quindi quali sono le altre opzioni?