Seleziona una pagina
io che programmo a sedici anni
Io che faccio un hackthon back in the days…

Abbiamo visto perché iniziare con la fotografia, oggi invece vediamo perché ha senso iniziare con la programmazione 🙂

Un bel giorno, lontano lontano, quando avevo a malapena 16 anni… quindi ormai ben 16 anni fa… decisi che era arrivato il momento per imparare a programmare!

L’avrei voluto fare prima solo che non avendo internet all’epoca c’erano pochi libri che spiegavano come imparare a programmare. E quelli che c’erano io non li conoscevo.

Quando finalmente riuscii a ottenere una bellissima e vetusta.. ADSL cominciò la mia peripezia su internet e, qualche mese dopo, decisi finalmente di buttarmi e imparare.

Iniziai con il Python. Un linguaggio bellissimo che anche adesso ancora ha il suo perché. Facendo bot e script per Wikipedia, diventandone amministratore poco dopo.

Maaa.. ora siamo qui per parlare del perché dovresti iniziare a programmare. E se non ora, quando? 🙂 e giusto per darci un obiettivo numerico, oggi ti elencherò quelli che secondo me sono i 7 motivi principali per cui non puoi proprio fare a meno di iniziare.. si, proprio oggi!

Puoi fare il programmatore come lavoro

programmatore per lavoro

Ovviamente non è un discorso che vale per tutti, ma potresti essere interessato a fare il programmatore per lavoro.

Sei interessato a questi temi? Seguimi su instagram per non perdere i prossimi articoli! 🙂

Generalmente il processo per fare soldi in un qualsiasi campo applicativo (anche non la programmazione) segue queste fasi:

  • 1-2 anni di apprendimento: impari i rudimenti di quello che stai facendo.
  • 3-4 anni di apprendimento: diventi intermedio/avanzato e hai una buona consapevolezza di quello che stai facendo
  • 5-6 anni: solidifichi le tue conoscenze e diventi avanzato. Tendenzialmente inizi anche ad insegnare a qualcuno quello che hai imparato.
  • 9-10 anni: riesci a consolidare abbastanza le tue conoscenze da essere visto come un maestro in quello che fai. E le persone iniziano a ritenerti un punto di riferimento.
  • 12-15 anni: se riesci ad arrivare fino a questo punto, puoi essere considerato un advocate/angel/elite nel tuo ambito e cominci a farci seriamente soldi.

Piccola nota: è vero che ho iniziato a programmare 16 anni fa, ma questa tabella ha senso nell’ambito in cui vuoi porti. Nel senso, se mi mettessi a fare software open source o per Wikipedia o insomma come lo facevo a 16 anni, verrei visto come un programmatore “elite” visto che poche persone con la mia professionalità sono disposte a lavorare gratuitamente.

In ambito lavorativo invece è come se valessero “solo” i miei 9 anni di esperienza lavorativa professionale. Perché in quei 7 anni di programmazione saltuaria / studentesca non ho dovuto programmare con la stessa intensità, concentrazione e professionalità dei successivi 9 anni. Motivo per cui i neolaureati hanno poco valore a livello lavorativo.

Il “problema” è che questo processo non si applica solo alla programmazione, ma anche a molte altre qualità che puoi acquisire. In sostanza quello che dovresti fare è avere una serie di conoscenze a T:

conoscenze a T

Nell’esempio ci sono una serie di competenze che ti servono se vuoi venderti come esperto di SEO. Per la programmazione invece le competenze fondamentali possono essere:

  • capacità di rapportarsi con i colleghi. Sembra una cavolata, ma ragazzi che ho seguito e che conosco che sono passati da un altro lavoro a fare il programmatore hanno scalato molto più velocemente a livello di stipendio di me o altri neolaureati proprio perché avevano maggiore competenza su come rapportarsi con i colleghi in ambito lavorativo.
  • ingegneria del software. Parlando con un ragazzo che ha fatto un corso intensivo di programmazione, le sue mancanze principali stavano proprio nell’incapacità di stimare quanto ci avrebbe messo a fare il lavoro che doveva fare. Come fare analisi dei requisiti, progettazione, ecc. Quali erano le domande da fare al cliente, come strutturare il prodotto, ecc.
  • agile/testing. In realtà fa un po’ parte dell’ingegneria del software, ma anche la capacità di testare il tuo codice e delle pratiche agile su come creare codice di qualità (e non solo che “funziona” ma anche che sia mantenibile) è fondamentale.
  • design. Avrai comunque una qualche interazione con designer o front-end developer se non dovrai fare tu attivamente qualcosa al riguardo. Sarà quindi molto utile approfondire temi come user experience, design, usabilità, customer journey, ecc.
  • dev-ops / capacità sistemistiche. Anche se fai app mobile, probabilmente dovrai deployare un sito. Oppure saper lanciare un docker, un tomcat o un qualcosa che in un qualche modo si interfaccia con AWS o comunque un cloud. Non è “programmazione nuda e cruda”, ma ti servirà saperlo.
  • marketing per vendersi bene sui social e riuscire ad avere molte persone che ti seguono e ti ritengono esperto nei temi che vai a trattare.
  • ecc.

Pertanto, non è così scontato iniziare a fare “soldi” davvero. Tuttavia, l’entry level per la programmazione è abbastanza basso visto che la richiesta di programmatori è altissima. Per cui anche se dovessi solo saper un po’ programmare e neanche tanto bene, potresti comunque trovare qualcuno che è disposto a darti anche uno stipendio discreto.

Tuttavia, potrai avere numerosi problemi perché il software non è testato bene e ci sono bug che fai fatica a risolvere. Oppure ti chiedono di fare il design dell’applicazione e le tue conoscenze in merito sono basse o nulle. Più competenze avrai, più sarà facile venderti sul mercato anche ad aziende molto importanti.

Ti interessa approfondire questo argomento? Seguimi su instagram e scrivimelo nei commenti 🙂

E’ fondamentale se sei hr / manager / imprenditore

programmare è fondamentale se fai l'imprenditore

Molto spesso ci sono persone che hanno un’interazione molto vicina e diretta con gli sviluppatori… però non hanno la minima consapevolezza di quello che è il mondo di un programmatore

Nell’ordine di gravità (si fa per scherzare :-)), a mio avviso ci sono:

  • imprenditori
  • responsabili marketing
  • manager
  • HR (risorse umane)

Imprenditori (& manager)

Fare un’azienda tech e non avere grandi competenze di programmazione, è un suicidio annunciato o quasi.

E’ vero, un imprenditore giornalmente non avrà richieste tecniche o non dovrà programmare. Tuttavia, non riuscirà a comprendere innumerevoli problemi e fattori critici che invece fanno la differenza.

Partiamo da un concetto centrale, ovvero che se tu stai costruendo un’azienda tech, il valore della tua azienda è dato dal team non dal prodotto.

Il prodotto in media ha un ciclo di vita che ha un suo inizio, un suo momento di culmine e mantenimento che può durare anche anni e poi un declino inevitabile.

ciclo di vita del prodotto

Pensa a un videogioco. C’è un momento in cui si inizia a pensare al concept del videogioco, poi questo viene sviluppato fino a raggiungere alcune release alpha, beta.. e poi una release candidate pronta a essere rilasciata. Nel momento in cui il prodotto viene ritenuto adeguato viene lanciato e si raggiunge sempre di più la maturità del prodotto. Per allungarne la vita si possono fare varie cose:

  • creare espansioni o customizzazioni. Pensa agli expansion pack dei videogiochi
  • accessori da aggiungere a qualcosa che hai già acquistato.
  • creare lo stesso gioco di nuovo, ma con innovazioni varie ed eventuali (es: football manager 2022 creato dopo 2021 con le nuove squadre e nuove funzionalità).

Pertanto un’azienda non è altro che una macchina che crea prodotti che hanno ognuno il suo ciclo di vita. Un singolo prodotto può reggere gli stipendi della singola azienda, ma non è tanto il prodotto a funzionare, quanto il team di sviluppo che ci sta dietro che lo rende sempre migliore, qualitativo e si adatta.

Il valore vero della Ferrari non è la sua automobile, ma il suo team di meccanici che è capace di sfornare ad ogni gara un’auto sempre più competitiva. Il suo team di ricerca e sviluppo, ecc. Dessero in mano domani la Ferrari a un team di incompetenti, nel giro di pochi mesi tutto andrebbe allo sfascio.

Pertanto, è fondamentale sapere cose come:

  • le pratiche agile. Cos’è una retrospective, cos’è un 1:1, perché e quando ha senso fare pair programming, cos’è il test driven development, ecc. Come fai a gestire un team se non hai meccanismi per ricevere feedback dal tuo team? Come fai a fare sviluppo software se non hai pratiche efficaci per fare validazione del codice creato?
  • le varie fasi dello sviluppo di un software. Dall’analisi dei requisiti, alla progettazione, allo sviluppo a soprattutto alla validazione. Molto spesso l’analisi dei requisiti e la validazione o non vengono fatte o vengono fatte in modo sbrigative “per essere più agili” 🙂 non è essere agili, è non saperle fare.
  • Continuous Integration e Continuous Delivery. Ovvero la capacità di validare velocemente il software tramite test automatici a ogni cambiamento in modo da poterlo integrare rapidamente. E quindi la capacità di avere meccanismi di rilascio automatici per poter fare build settimanalmente o comunque a cadenza costante e veloce per ricevere feedback dai tuoi clienti.
  • Come si sviluppa software nel pratico. Molti imprenditori non capiscono concetti come il debito tecnico e quindi come fare a gestire codice non aggiornato, con evidenti problemi strutturali e con bug frequenti.
  • Ecc.

In sostanza, il problema è che molti imprenditori devono fare un cambio di mentalità e smettere di investire gran parte del budget sul prodotto di punta che tanto fra 4 o 5 anni sarà obsoleto, ma sul creare un polo tecnologico di altissimo profilo investendo in formazione e nel trattenere i talenti. In modo da arrivare al punto che i programmatori più forti non vedano l’ora di avere l’opportunità di lavorare per te.

HR (& altre figure non tech)

Anche gli HR dovrebbero imparare a programmare

Storia a parte fanno HR, responsabili marketing, ingegneri meccanici ecc. e tutte quelle figure che devono interagire con i programmatori.

E’ ovvio che il loro problema non è creare un prodotto che spacchi e trattenere i talenti (anzi, gli HR devono essere bravi.. a mandarli via :-)) ma la parte difficile è parlare la stessa lingua dei programmatori.

hr meme

Questo meme fa però capire quanto è triste e demoralizzante fare un colloquio con un HR che non ha la minima idea di quello che stai dicendo.

Domande come: “ma il team in cui andrò fa i test?” oppure “come sono organizzati? Fanno SCRUM? C’è un product owner?” oppure “quali tecnologie utilizzano nell’app?” sono domande lecite che ha senso che un HR sappia rispondere quantomeno a grandi linee.

Molto spesso infatti la prima chiamata con l’HR è totalmente inutile visto che valuta la tua “propensione attitudinale” (???), chiederti se vuoi lavorare da remoto o meno (quando hai culo, quando non hai culo neanche quello) e quanto vuoi di RAL. Giusto per capire se sei in fascia oppure non lo sei.

Tutte domande abbastanza inutili che potrebbe farti benissimo un responsabile tecnico a fine processo. O, meglio, che potrebbero essere specificate nella job description (es: la RAL e il remote work).

Avere un HR invece che sa fare domande tipo se sai o meno il SOLID. Se sai o meno validare il software, farti delle domande tecniche base sul linguaggio per cui applichi (anche preparate dal team tecnico) ecc. potrebbe dare un gran valore aggiunto al processo e scremare davvero dei candidati interessanti da quelli che non lo sono. Evitando di togliere tempo ai programmatori nella selezione del personale.

Lo stesso vale per marketers e tutte le altre figure, dove molto spesso delegano qualsiasi cosa ai programmatori. Quando con un minimo impegno potrebbero imparare a programmare nelle tecnologie che gli servono e fare (o quantomeno abbozzare) delle soluzioni. Utilissimo anche per capire se quello che pensano ha senso o sono delle stronzate mondiali.

Il problema è che non abbiamo tempo per imparare x o y e quindi no, meglio non farlo. Personalmente ho fatto vari corsi di marketing e penso di poter fare un’ottima selezione del personale, quindi non vedo perché figure altamente specializzate come HR o Marketers non debbano avere queste competenze. Infatti ho conosciuto infatti persone di alto profilo che fanno questi lavori che le hanno.

Puoi automatizzare il tuo lavoro

con la programmazione puoi automatizzare il tuo lavoro

Nel caso in cui non vuoi fare la programmazione il tuo lavoro principale, puoi comunque usare la programmazione per automatizzare il tuo lavoro e ridurre notevolmente i costi. E’ vero che potresti assumere uno sviluppatore per fare esattamente le stesse cose, ma spesso il costo non varrebbe la spesa. E non sapresti comunque esattamente cosa vuoi dato che non sai neanche cosa è davvero possibile.

Sei interessato a questi temi? Seguimi su instagram per non perdere i prossimi articoli! 🙂

Per fare un esempio, dovessi fare il personal trainer come lavoro quello che farei è: automatizzare la creazione delle schede. Molti utilizzano excel. Il che è uno strumento molto limitante per la creazione di schede. Il motivo è che potresti valutare ogni sessione fatta dal tuo cliente in ambito di: errori tecnici, fatica percepita, eventuali mancanze a livello di crescita muscolare.

Un programma potrebbe dunque “pensare” al posto tuo e suggerirti di aggiungere un goodmorning o una military press o un RDL monopodalico o uno squat discesa / salita lenta ecc. a seconda dei problemi riscontrati. Oltre a tenere traccia degli esercizi correttivi delle settimane scorse e proporti di cambiare i complementari in modo da non battere sempre sugli stessi angoli e rafforzare sempre le stesse cose.

Oltre a suggerirti le progressioni in base a eventuali errori tecnici o la loro mancanza e alla fatica percepita. E’ ovvio che si può fare anche manualmente, ma avere un programma che ti assiste con queste logiche ti farebbe risparmiare un sacco di tempo.

E il motivo per cui molte aziende per il loro lavoro usano dei gestionali. Molte realtà, specialmente i piccoli professionisti, non seguono queste logiche e non hanno dei software dedicati che li aiutino nei problemi di tutti i giorni.

Penso a parrucchieri, personal trainer appunto, ma anche fotografi, pizzerie, ecc. che hanno un lavoro in proprio e magari non hanno neanche idea che esistono o possono utilizzare dei gestionali che si prendono cura del loro lavoro (e no, excel non è un gestionale 🙂 è un foglio di calcolo per sopravvivere).

E’ ovvio che un software gestionale ben fatto, che funziona sempre ecc. è qualcosa che serve commissionare a un’azienda specializzata. Ma qualche programma per fare delle prove banali e vedere cosa si può fare e cosa no, è qualcosa che può fare chiunque e già ottenere degli ottimi risultati.

Anche senza software complessi è possibile fare script o comunque programmini che mandano email o che automatizzano molti dei task ripetitivi che devi fare ogni giorno con il computer.

Puoi abbattere (di tanto) i costi

con la programmazione puoi abbattere i costi

Una cosa che molti non sanno è che la programmazione si può “mischiare” con la statistica e diventare data mining (letteralmente: scavare nei dati.. per trovare risposte e informazioni). Ci sono tantissimi algoritmi e logiche che si possono utilizzare per automatizzare di molto il lavoro delle persone.

Per esempio, se ho un ristorante o una palestra, quanti personal trainer mi servono in sala nelle varie fasce orarie? Che orari dovrei tenere aperto e quando no per massimizzare la qualità percepita dal cliente e fare più soldi?

Oppure ancora, come posso fare ad abbattere i costi togliendo fattori non fondamentali ma che mi costano tanto mantenere?

Per esempio, IKEA ha risparmiato milioni semplicemente ottimizzando come creano i vari pacchetti degli oggetti che vendono e trasportano.

Banalmente, se un ristorante o una palestra avesse un algoritmo che le permettesse di risparmiare lo stipendio di metà del team che è presente nel negozio/palestra, vorrebbe dire una diminuzione dei costi di circa la metà. Motivo per cui i centri più grossi e organizzati hanno programmi che fanno queste previsioni e che prendono decisioni basate sui dati.

Sembrano cose iper complicate da fare… in realtà all’università con OPL feci un programma molto veloce per l’esame di ricerca operativa che andava a rispondere ai problemi di un ristorante. Con un impegno abbastanza anche contenuto. E’ ovvio che maggiore è la difficoltà, più bisognerà avere capacità tecniche. Ma se ti interessano questi temi, anche in autonomia è possibile studiare i contenuti necessarie per avere qualcosa che possa funzionare e fare delle prove. O semplicemente… pagare un professionista che lo faccia per te, ma almeno con cognizione di quello che gli stai chiedendo.

Puoi schiavizzare i tuoi dispositivi

puoi schiavizzare i tuoi dispositivi

Ormai si può fare davvero quasi di tutto. Da parlare con Alexa e dirle di lanciare il robot che pulisce la casa ad accendere le luci di casa.

Quando ero giovane e sbarbato 16enne, sono arrivato a fare 684mila modifiche automatiche su Wikiepedia tra il mio primo account e il secondo. Tutte modifiche che, altrimenti, sarebbero state dovute essere fatte a mano.

Fa sorridere che il mio lavoro attuale sia proprio questo, ovvero quello di fare app per robottini che automatizzano la pulizia della casa.

Sempre quando ero più giovane però feci un sacco di altre cose:

  • un tool per il fantacalcio che permetteva di scaricare la tua squadra di calcio, le quotazioni dei giocatori e la lista delle squadre che giocavano o meno della gazzetta e incrociare questi dati. In modo da sapere quali dei tuoi giocatori sarebbero stati titolari o meno e quanto era cambiata la loro quotazione nel tempo.
  • un programma per giocare a briscola. In quel periodo universitario ero particolarmente fomentato con la briscola e volevo qualcuno di forte che giocasse con me. Mi programmai dunque una mia intelligenza artificiale che giocasse con me e che fosse capace di contare le carte e farmi il culo a strisce 🙂
  • ecc.

Sei interessato a questi temi? Seguimi su instagram per non perdere i prossimi articoli! 🙂

Ammetto che questa cosa poi nel tempo si è ridotta molto. Principalmente perché se già programmi 8-9 ore al giorno, avere la voglia per mettersi a programmare per progetti personali non è così banale. Ma se non fai come lavoro il programmatore, puoi davvero divertirti a fare programmi solo per divertimento. Ovvio, non saranno stabili, testati o con l’interfaccia più bella al mondo.. ma faranno quello che ti serve!

Il mio gioco della briscola… era da linea di comando! 🙂 ma andava benissimo così.

Lo stesso vale per programmi che girano sul tuo telefono… o persino su dispostivi connessi alla tua lavatrice! 🙂

Diventi un maker: puoi lanciare la tua azienda

diventare un maker

Il problema di molti startupper e quindi imprenditori novelli è proprio che non hanno alcuna competenza nella creazione di un prodotto.

L’abbiamo già visto prima, ma in queste fasi diventa ancora più cruciale saper produrre del software da proporre agli investitori. Qualcosa su cui cominciare a lavorare, qualcosa che possa attrarre qualcuno di molto forte tecnicamente che ci possa aiutare nel nostro cammino.

Va detto che oggi giorno tutti vogliono lanciarsi a fare una startup, anche se hanno zero competenze. Ormai il livello è altissimo e non è più possibile spaccare di brutto senza serie competenze di programmazione o di vendita o di marketing, ecc.

Non è questione di avere una certa età o particolari talenti, è questione di essere organizzato e capire cosa serve per creare un grandissimo prodotto tecnologico. Dalla sua realizzazione, al marketing, alla vendita, al design, ecc.

Imparare a programmare dunque ti permette di “abilitarti” a poter pensare come un maker, come qualcuno che crea davvero dei prodotti che vengono utilizzati da dei clienti reali. E non un fuffaro che fa promesse, ha idee, visions ecc. ma non sa neanche quello di cui sta parlando.

Diventi un nerd: mentalità logica

programmare ti fa diventare nerd

Può sembrare una cosa secondaria.. ma forse è quella più importante di tutte.

La programmazione ti obbliga a essere chiaro. Il computer fa esattamente ciò che gli dici. Non una cosa di più, non una cosa di meno.

Molte persone non danno istruzioni precise e comprensibili. Danno per scontati molti elementi che scontati non sono e pretendono che le persone li comprendano ed eseguano ciò che gli viene detto. Un nerd è al massimo “esageratamente prolisso” nello spiegarti tutto nel dettaglio (io lo sono di sicuro :-)) ma sarà molto difficile che lascerà spazio alle interpretazioni o che ometta qualche pezzo fondamentale. Semplicemente perché, nella programmazione, non se lo può permettere!

La programmazione dunque la ritengo fondamentale soprattutto per i creativi. Ovvero persone che hanno magari poco una mentalità logico/razionale ma molto più emotiva e creativa. Tratti bellissimi ma che se diventi capace a imbrigliarli e dargli una razionalità e un modo nerd di vedere le cose, ti permettono di fare tanti più soldi! E anche lavori più sensati, apprezzati dai tuoi clienti e riproducibili.

L’organizzazione, la chiarezza e l’essere attento ai dettagli sono cose fondamentali per un programmatore. Seguire e replicare dei pattern vincenti nella creazione del codice ancora di più. Tutte caratteristiche vitali se vuoi avere successo nella vita in qualsiasi ambito.

Conclusione

Spero di averti dato un po’ di motivi per cui iniziare a programmare potrebbe essere una grande idea 🙂 se ti posso aver appassionato e interessato, seguimi su instagram per non perdere i prossimi articoli!