Non reinventare la ruota

Pubblicatodi il Mag 29, 2018 in Informatica, Riflessioni
Nessun commento

Vuoi mettere la soddisfazione di scriverti tutto il codice da solo?

Per anni ho sviluppato software cercando il più possibile di scrivermi tutto ciò di cui avevo bisogno.

Dà molta soddisfazione, ti permette di avere il controllo totale del tuo codice e soprattutto di imparare come funzionano realmente le cose.

E’ una cosa che consiglio a tutti quelli che vogliono imparare a programmare.

All’università mi hanno sempre detto che non bisogna reinventare la ruota ma io ti dico che è meglio se lo fai.

Vuoi pubblicare il tuo blog? Non usare wordpress, scriviti il tuo CMS.

Scrivi ogni singola funzione da zero, ogni singolo template e ogni singola query da dare in pasto al DBMS.

Solo per fare le funzioni base ti ci vorranno probabilmente diverse settimane ma la soddisfazione di vedere in funzione qualcosa interamente scritto da te non ha paragone.

Ora che l’hai fatto, ora che ci sei riuscito, passa pure a wordpress.

No no, non ho le idee confuse. Lasciami spiegare.

Quando stai imparando a programmare è fondamentale che tu ti scriva da solo tutto. Solo così puoi capire come realmente funzionano le cose.

Quando troverai un bug e ti ci vorranno due giorni per risolverlo ti accorgerai che il bug era lì perché fino ad ora non avevi capito come un determinato meccanismo funzionava. Ora che l’hai capito puoi scrivere il codice corretto.

Quando poi avrai raggiunto un certo grado di maturità nello scrivere codice smetti di scriverti tutto da zero e passa a soluzioni già pronte.

Ad ogni linguaggio di programmazione corrispondono N framework, ognuno con le sue caratteristiche, i suoi pro e i suoi contro.

I framework, se non lo sapessi, sono una raccolta di strumenti pronti all’uso con cui puoi scrivere software in maniera molto più agile.

Com’è possibile? Semplice. Non devi scrivere tutto da zero.

Lo so, potrebbe sembrare assurdo passare dal scrivere tutto da zero, dall’avere il controllo totale di ogni singolo bit, al delegare tutto a qualcosa di già fatto. Ma lascia che ti racconti alcune cose.

Chi l’ha scritto forse ne sa più di te.

E’ dura da digerire ma si, c’è gente molto più brava di noi.

Chi ha sviluppato un determinato framework probabilmente conosce molto bene lo strumento che sta usando e magari ha pure una certa esperienza e quindi sa a quale problemi andrai in contro.

Hai quindi a disposizione uno strumento pensato proprio per risolvere quei problemi.

Il tuo tempo è prezioso.

Mantenere codice è un lavoro impegnativo.

Più il tuo software diventa grande più diventerà impegnativo metterci mano.

Probabilmente salterà fuori un bug dopo molto tempo che sta in quella funzione che avevi scritto all’inizio. Magari, essendo il tuo primo progetto serio, non hai speso troppo tempo nel lasciare commenti qui e là.

Dovrai quindi prima capire nuovamente cosa fa quella funzione, capire dove sta il problema, correggerlo e verificare che la tua correzione non abbia rotto qualcos’altro perché magari quella variabile che apparentemente non serve a niente in realtà aveva un’utilità ben precisa in un’altra funzione.

Usando un framework questo diventa meno impegnativo.

Un framework ti dà già una struttura predefinita, uno scheletro se vogliamo, su cui modellare le tue applicazioni.

Questo è un vantaggio incredibile perché anche quando andrai a distanza di tempo a leggere quelle righe di codice nel giro di poco tempo saprai già dove mettere le mani perché la struttura ti è nota a priori.

Molti problemi sono già stati risolti.

Ti serve una funzione per mandare una mail? Ti serve un sistema per creare form? Molto probabilmente è già tutto fatto.

Mandare una mail può essere un lavoro complicato.

Devi non solo preoccuparti dei parametri di connessione ma anche di tutti gli header per assicurarti che la mail venga recapitata e interpretata correttamente. E non parliamo della codifica.

E quando crei un form ti devi ricordare che l’input dell’utente va validato. Non vogliamo che inserisca un numero dove ci va una lettera o che faccia l’upload di un .exe quando noi ci aspettiamo un .pdf.

Molto probabilmente il tuo framework ha già al suo interno funzioni per gestire tutto questo per evitare a te di doverti ricordare tutto.

La sicurezza.

Soprattutto quando lavori con il web la sicurezza dei tuoi dati diventa una questione di vitale importanza.

Ogni query che fai al database deve essere controllata. Lo sai cosa sono le SQL Injection? Ecco, dovresti occupartene.

Quasi tutti i framework che ho visto in grado di appoggiarsi a un database, hanno già al loro interno librerie e funzioni per scrivere agevolmente query sicure e performanti.

E non dimentichiamo le performance. Una query scritta nel modo non corretto può allungare i tempi di esecuzione di diversi secondi.

Le performance.

Chi ha scritto il framework probabilmente ne sa più di noi ma soprattutto è molto probabile che lo faccia di mestiere.

Questo significa che hanno anche molto più tempo di noi da dedicare al debug e quindi sicuramente avranno trovato quella riga di codice che fa perdere preziosi millisecondi durante l’esecuzione.

Questa è una problematica che diventa molto difficile quando abbiamo un’enorme quantità di codice da gestire perché dobbiamo occuparci di tutto e il nostro tempo è limitato.

Puoi concentrarti su quello che conta davvero.

Delegando tutta una serie di questioni a un framework puoi concentrati solo ed esclusivamente su quello che conta davvero, ovvero le funzionalità che vuoi realizzare.

Se devi anche preoccuparti di come rendere quella query più efficiente o di assicurarti che tutti gli input degli utenti siano correttamente validati, stai rubando tempo a quelle che sono le funzionalità che hai in mente e vuoi realizzare.

Lascia che sia il framework a gestire tutta una serie di questioni e tu concentrati solo a scrivere dell’ottimo software.

Quale framework dovresti usare?

Non esiste una risposta univoca a questa domanda.

Questione numero 1: che tipo di applicazione vuoi realizzare?

Questione numero 2: con che linguaggio di programmazione vuoi lavorare?

Queste sono le prima due domande a cui devi rispondere. Quando avrai risposto a queste una ricerca su Google ti aiuterà a schiarirti le idee.

Ricorda però che qualsiasi framework deciderai di usare avrà una curva di apprendimento molto ripida.

Non riuscirai a scrivere immediatamente software. Dovrai prima capire come “ragiona”, come metterlo in funzione e come iniziare a realizzare ciò di cui hai bisogno.

Assicurati quindi di scegliere un framework che abbia un’ottima documentazione perché fidati, ne avrai bisogno.

Inizialmente potresti trovarti a dire “Cavolo… se mi fossi scritto da zero tutto probabilmente ci avrei messo meno”. E’ normale, pure io l’ho pensato, ma fidati che una volta che avrai imparato sarà tutto più facile.

Io uso da quasi due anni Django, framework scritto in Python per realizzare web app.

E’ stata dura iniziare, ho dovuto nel corso del tempo riscrivere molte parti di codice quando scoprivo che in realtà quello che avevo scritto lo faceva già Django, probabilmente anche meglio di come l’avevo fatto io.

Gestisco software di grandi dimensioni, con codice scritto nel corso del tempo, e se non l’avessi fatto usando questo framework adesso mi ritroverei con un software impossibile da espandere perché ogni volta dovrei districarmi in funzioni con centinaia di righe di codice magari a loro volta basate su altre funzioni scritte anni fa.

Ogni applicazione scritta con Django segue un determinato pattern di sviluppo e quindi quando devo fare una modifica, un’aggiunta o semplicemente correggere un bug, so già dove devo guardare, sia che quella parte di codice sia stata scritta qualche giorno fa sia che sia stata scritta un anno fa.

E ricordati di una cosa: i commenti possono risparmiarti ore e ore di lavoro. Prendi la buona abitudine di commentare il tuo codice.

Ricapitolando se sei nella fase in cui stai ancora imparando come funziona il mondo della programmazione ti incoraggio a reinventare la ruota.

Se sei già abbastanza pratico ti consiglio di mettere da parte quello che hai imparato perché fidati che, in un modo o nell’altro, ti servirà ma ora è arrivato il momento di passare al livello successivo e iniziare a delegare parte del tuo lavoro a un altro strumento.

# # #

Rispondi