Rimanere in flusso
(... o , Perché sono diventato ossessionato dalla programmazione a file singolo e dovresti farlo anche tu)
La grande bugia che ci viene raccontata, a scuola e di nuovo all'inizio della carriera, è che essere "bravi" nella programmazione significa risolvere problemi sempre più difficili in un modo più elegante. La verità è molto più banale: essere bravi a programmare significa risolvere in modo efficiente un'ampia serie di problemi per lo più banali, in modo rapido e pulito. Ciò che è vero, tuttavia, è quanto sia prezioso lo "stato di flusso" per farlo. Essere in grado di rimanere immersi nel lavoro consente di passare rapidamente da un dominio all'altro, monitorando il flusso di stato dall'utente alla logica aziendale fino all'archivio dati e viceversa.
Molte pratiche di programmazione "buone" aggiungono complessità:
- Modelli, visualizzazioni e controller separati.
- Mantieni tutti i tuoi test in file e cartelle parallele.
- Non incorporare CSS: mantienilo in una gerarchia di file CSS separati, referenziati per classe e ID.
- Non scrivere nemmeno CSS: usa un preprocessore e generalo da un linguaggio intermedio.
- Utilizza spazi dei nomi nidificati di pacchetti e moduli, ciascuno con le proprie convenzioni standard per la denominazione di thin_gs.
Più o meno allo stesso modo in cui le scale del sondaggio sono tracciate rispetto alla capacità di discriminazione dell'essere umano medio (di solito 5-7 scelte, mai più di 9), strutture che si basano su meno file, di meno tipi e organizzate in una gerarchia il più piatta possibile sono più semplici da imparare per i nuovi sviluppatori e più facile per TUTTI rimanere nello stato di flusso quando ci si lavora.
I programmatori "buoni" adorano denigrare PHP e javascript per essere linguaggi "cattivi"; eppure entrambi sono noti per il supporto di semplici schemi "a file singolo". Javascript lo fa tramite JSX; PHP consente semplicemente a ogni script php di contenere anche HTML arbitrario. Ho deciso di ricreare la gioia dello sviluppo Single-File, ma per Python. Si spera che ciò colmi le evidenti lacune tra le comunità di data science Python "Notebook", le comunità di sviluppatori di software "Boot Camp" e le prime linee dello sviluppo di applicazioni web.
Nei prossimi post del blog, parlerò di molte delle "cattive" pratiche che ho adottato per semplificare e ottimizzare la mia esperienza di sviluppo. Ancora meglio, annuncerò le varie librerie open source che ho scoperto, esteso o sviluppato lungo il percorso.