Blog

usa il cervello per realizzare la tua idea

Perché saper programmare non è abbastanza

Business

Perché saper programmare non è abbastanza

Credi che basti saper programmare per cercare lavoro nella grande azienda di turno o realizzare un tuo progetto?

Il ruolo dello sviluppatore di software, recentemente, è cambiato. I giorni dove era possibile imparare -per esempio – il C++, scrivere un programma utile e venderlo sono finiti.

Prima c’era il C, poi è arrivato il C++, dopo Java e oggi Python. Con il passare del tempo, la scrittura del software è diventata sempre più astratta. Oggi è possibile creare un’applicazione web completa con poche righe di codice (pensa a Python/Django o Ruby/ROR).

Il prossimo passo quale sarà dunque? Un linguaggio ancora più astratto di Python? No.

Il futuro sarà nell’utilizzo di piattaforme già fatte: microservizi, tools, web services, infrastrutture cloud. Il codice servirà solo a incollare tutti questi pezzi, magari tramite API o frameworks dedicati.

Non sono qui a parlarti dei massimi sistemi del mondo, voglio farti un esempio pratico: facciamo che parti da zero e spendi i prossimi mesi della tua vita a studiare Python e JavaScript. Magari diventando anche bravo. Cosa ci fai? Scriverai un’app TO-DO? Scriverai l’ennesimo sito di incontri? Realizzerai un blog da zero?

serve programmare e avere un'idea
Come realizzare un’idea di successo?

Ci sono così tanti software di questo genere che è davvero difficile portare sul tavolo qualcosa di nuovo. Allora magari penserai che è il caso di scrivere una soluzione alternativa a un sito già esistente, per esempio ipotizziamo Tinder.

L’interfaccia utente del tuo sito probabilmente sarà mediocre, perché non sei un designer o un artista. La tua infrastruttura non sarà nemmeno in grado di reggere un traffico alto, anche se le cose andassero bene. Non si tratterà davvero di un software affidabile e scalabile. Inoltre le performance saranno deludenti, rispetto a quelle dei tuoi concorrenti.

Alla fine il tuo sito di incontri non sarà davvero innovativo, sarà semplicemente un mix di immagini e un po’ di testo.

A meno che il tuo sito non offra la possibilità di avere “interazioni” tra gli utenti (ovviamente scherzo) utilizzando VR, AR, algoritmi di Machine Learning e Real-time Streaming Video non andrai da nessuna parte.

Ma quindi come realizzare un’applicazione web con performance elevate? Come costruire qualcosa che sia DAVVERO di tecnologia superiore sul quale i blogger/giornali vorranno scrivere articoli in merito? Come raggiungere tale livello di efficacia?

Se ti affiderai solo alle tue capacità di programmare non farai molta strada. Serve molto più che un po’ di codice per realizzare un prodotto.

Una volta bastava saper realizzare qualche prototipo con Java e le Swing e potevi farti assumere come programmatore. Oggi la musica è cambiata completamente:

  • HTML/CSS/JavaScript come base per le interfacce web
  • un linguaggio lato server
  • conoscere l’ambiente Linux
  • smanettare con i web server
  • gestire e configurare certificati SSL
  • realizzare all’occorrenza VM, Container, Load Balancer
  • … e mi fermo qui.

Inoltre, qualunque sia il tuo prodotto, ti serve sicuramente anche un bel sito web con un interfaccia responsive, visibile da telefono, tablet, PC, TV.

Servono anche dei sistemi di analisi del traffico, sistemi di login e gestione utenti. Non dimentichiamo l’attività di SEO, che da sola potrebbe richiedere mesi di studio e lavoro.

Il tuo software dev’essere affidabile, quindi serviranno anche dei sistemi di test e di replicazione dei dati.

Infine, anche se non è in tema con questo articolo, la cosa più importante per vendere rimane il marketing.

Tutte queste cose vanno molto oltre la conoscenza di una singola persona – in questo caso il programmatore – che vuole realizzare la sua alternativa a Tinder.

serve conoscere troppe cose
Sono necessarie troppe competenze per affrontare il mercato

Il nostro compito come sviluppatori non sarà più solo quello di programmare ma anche di capire tutte le piattaforme e i servizi qui fuori, che servono a gestire quello che va oltre le nostre competenze.

Sevizi come AWS, Azure o Google Cloud permettono di ottenere in modo facilissimo un’infrastruttura scalabile, gestibile e pronta a qualsiasi carico di utenti, a basso costo.

Backends completamente gestiti come Firebase permettono di eliminare tantissime procedure delicate.

Frameworks e piattaforme open-source come WordPress permettono di avere il 90% del lavoro di realizzazione di un blog già fatto.

Immagina il ruolo dello sviluppatore come una persona che spende la sua giornata semplicemente a leggere documentazione e a imparare tutto quello che serve riguardo queste piattaforme e servizi web. Alla fine il codice che questo professionista andrà a scrivere servirà solo a incollare le varie parti dell’infrastruttura e a effettuare qualche analisi.

Chi è che si metterà a riscrivere il proprio blog? Perché scrivere l’ennesimo servizio di video streaming? Serve davvero l’ennesimo chat server?

So che il mio discorso può sembrarti un po’ strano o ambiguo ma voglio ricordarti che il ruolo dello sviluppatore – per principio – è risolvere problemi. Il modo in cui vengono risolti (realizzando un portale web, creando uno script, ecc…) è secondario.

Oggi creare un nuovo sito o app non offre nessuna sfida interessante, basta scrivere due righe di codice con il framework di turno e qualche clic sull’hosting web. Non vi è nessuna sfida, non vi è più nulla di interessante.

Un altro esempio: facciamo che tu voglia creare un negozio di t-shirt. Ipotizzando di spendere, nella fase iniziale, 80 ore del tuo tempo hai 2 possibilità:

  • Comprare la tua VPS, aprire il tuo editor di codice con Java/Spring, Python/Django o quello che ti piace, scrivere codice su codice, mettere in produzione un servizio che tecnicamente potrà essere anche discreto – comunque inferiore rispetto alla imprese più grosse della tua – ma che peccherà in tutto il resto perché il marketing e la vendita di vestiti non è il tuo mestiere
  • Andare su 99design e delegare a qualcuno i disegni delle magliette, mandare le immagini ad Alibaba e farti stampare le magliette, mandare il prodotto ad Amazon FBA per lo stock e la vendita in Italia, registrare un bel domino e mettere su un bel sito con una bella landing-page su Squarespace o Flazio, avviare una campagna di email con qualche servizio come SendGrid, infine comprare qualche Ads su Facebook/Instagram/Amazon. Ecco che hai realizzato il tuo e-commerce business senza scrivere nemmeno una riga di codice.

Nota bene: le procedure effettuate nel secondo caso non possono essere fatte da chiunque, è comunque richiesta una mentalità tecnica (come quella di un programmatore, per esempio).

Nonostante non ci sia stato bisogno di programmare è comunque necessario comprendere tutti questi pezzi di software diversi, capire come possono essere legati insieme e come ottimizzarli.

Al massimo potrà servire scrivere un po’ di codice per generare dei report, realizzare delle metriche o incollare assieme qualche piattaforma tramite le rispettive API. Ecco dove saper programmare è particolarmente utile.

L’attività del programmatore si sta evolvendo per riguardare più l’uso di API e framework e meno le implementazioni individuali di strutture dati e algoritmi specifici.

Chiaramente rimane essenziale saper programmare, conoscere le strutture dati, gli algoritmi, i design patterns, non voglio essere frainteso.

Quello che però è davvero in grado di rendere impressionante un CV e un background professionale sono i progetti, non il codice che hai scritto in sè. Lo stesso discorso è valido anche quando si parla di un business individuale.

Imparare a usare un’infrastruttura come AWS o Azure, piuttosto che una piattaforma come Firebase ha lo stesso valore dell’imparare a usare un framework come NodeJS. Questo perchè queste piattaforme accellerano il tuo lavoro di 10X e ti permettono di avere risultati:

  • Molto complessi in modo semplice
  • Di qualità superiore
  • Più performanti
  • Scalabili
  • Affidabili

Basterà semplicemente incollare, con un po’ di codice, tutti questi pezzi assieme. Non dovrai reinventare la ruota ogni volta ma limitarti a usare software già pronto, realizzato da professionisti più esperti di te nel loro campo.

Nel futuro sarà il framework/piattaforma a scegliere in linguaggio che vorrai usare e non viceversa. Se andrai a usare una piattaforma open-source scritta in Ruby, ecco il linguaggio che vuoi imparare.

Non essere troppo fiero del tuo codice, non hai bisogno di mandare tonnellate di codice scritto da te in produzione per stare bene. Se puoi affidarti a qualcosa di già testato, fallo.

Il compito di uno sviluppatore non è scrivere codice il 100% del tempo ma è risolvere problemi, quindi non essere fiero di aver scritto del codice, sii fiero di aver risolto un problema.


Articolo ispirato da questo video.

Leave your thought here

Il tuo indirizzo email non sarà pubblicato. I campi obbligatori sono contrassegnati *

Copyrighted Image