Di recente ho avviato un progetto che non sembrava troppo difficile da realizzare, il concetto era un'applicazione abbastanza semplice che doveva accettare input ogni tanto (forse 10 volte al giorno), e provare a eseguire alcune operazioni su di essi e raccogliere tutti i risultati alla fine. Questa applicazione otterrebbe quindi un portale Web front-end che i clienti potrebbero utilizzare per visualizzare i risultati, non esattamente la scienza missilistica.
Per questo inizialmente ho fatto un uso intelligente delle librerie di concorrenza integrate di Python ( ThreadPoolExecutor
) e ho usato una libreria di facile utilizzo per il front-end (ho scelto Flask perché è facile per i principianti ed è relativamente facile da mantenere e testare).
Una volta a metà del progetto, il PM ha dichiarato che dovevamo utilizzare le funzionalità di coda dei messaggi di terze parti anziché i thread e che dovevamo implementare il bilanciamento del carico, ciò che alla fine è accaduto è che alla fine abbiamo iniziato a lavorare con Celery, Redis, RabbitMQ, Nginx, uWSGI e un sacco di altri grandi servizi di terze parti con cui nessuno ha avuto alcuna esperienza reale.
Alla fine questo ha portato a un sacco di spaghetti code, compiti non verificabili (a causa della complessità delle librerie di terze parti, l'applicazione di patch al codice non funzionava nemmeno) e un sacco di mal di testa perché nessuno sapeva nemmeno quale fosse il valore aggiunto di questi servizi .
Prima di dire "Sì, dovresti usare quei servizi", tieni presente che nessuno sa come usarli o sa anche cosa fanno oltre a introdurre il codice afflitto dalle condizioni di gara.
Cosa dovrei fare al riguardo? A questo punto sarebbe semplicemente troppo costoso tornare a quello che avevamo e il PM è impegnato a utilizzare questi servizi, anche se il prodotto finale è ora peggio di quanto non fosse all'inizio. C'è qualche utilità nel discuterne con lui? Chiedo più tempo? O la dura risposta, sono semplicemente troppo stupido per il mio lavoro?