La programmazione è difficile?
Questa è una domanda che molti non programmatori mi fanno. Questo la colloca al livello di domande come “i programmatori lavorano da casa” e “che tipo di istruzione serve per essere un programmatore? Menti curiose vogliono sapere.
Ma a differenza di alcune di queste domande, questa è in realtà piuttosto difficile. È una domanda semplice, ma la risposta è molto sfumata.
Perciò immergiamoci in essa, in dettaglio, e aiutiamo a capire se la programmazione è difficile o no.
La programmazione è difficile? La risposta breve
Prima di tutto, affrontiamo la domanda con una risposta breve e diretta. Questo porrà le basi per il resto del post.
Programmare è difficile?
Beh, come piace dire ai consulenti, “dipende”. Se la programmazione è difficile o meno dipende da molti fattori, come il tipo specifico di programmazione e come tu, come individuo, pensi. Quindi la risposta breve è che la programmazione va davvero dal sorprendentemente facile al follemente difficile.
Pensate a questo modo. Prova a rispondere ad alcune di queste domande basandoti sulla tua esperienza:
- È difficile giocare a basket?
- È difficile parlare portoghese?
- E guidare una macchina? È difficile?
Si può capire perché sto nascondendo e dicendo, “ehhh… dipende.”
La gente tende ad essere eccessivamente intimidita dalla programmazione
Io, tuttavia, offrirò un’opinione qualificante. In particolare, penso che i non programmatori tendano a sopravvalutare drammaticamente quanto sia difficile la programmazione.
Hai mai sentito qualcuno dire qualcosa del genere:
Oh, non sono proprio una persona da matematica!
Beh, lo sento spesso. Ma sento di più la stessa cosa sulla programmazione. E lo considero ironico perché, mentre alcune aree della programmazione richiedono davvero la matematica, molte non lo fanno. La programmazione, secondo me, è un insieme di preoccupazioni molto più vario della “matematica”.
Credo davvero che molte persone pensino che non ce la farebbero mai come programmatori, ma si sbagliano completamente. È una materia molto più accessibile di quanto il mondo sembra credere.
Sfatiamo alcuni miti sulla programmazione, oltre a quello della matematica
Per portare davvero il punto a casa, diamo un’occhiata ad alcune idee sbagliate aggiuntive sulla programmazione, oltre al mito che i programmatori devono essere davvero bravi in matematica.
Misconcezione 1: I programmatori sono hacker d’élite, come il tizio di Mr. Robot
A prescindere dalla tua età, c’è qualche film dei tuoi tempi d’oro che presenta i programmatori come hacker alla Bond (o alla Bond-villain). Crescendo, per me, è stato il film Sneakers. Se sei cresciuto un po’ più tardi di me, potresti essere stato abbastanza sfortunato da incontrare Hackers o Swordfish. In questi giorni, il genere è migliorato, e potresti goderti Mr. Robot.
Ma sia che il film sia fantastico, come Sneakers, o terribile, come Hackers, hai ancora protagonisti hacker e antagonisti hacker che sembrano essere sia quasi sociopatici che programmatori incredibilmente brillanti.
Questa non è la vita reale. Non è nemmeno vero hacking, per non parlare della programmazione quotidiana. Quindi non date per scontato che programmare richieda di muovere cubi su uno schermo, o qualsiasi cosa stia facendo Hugh Jackman in Swordfish. Di solito, richiede solo un sacco di Googling.
Misconcezione 2: Hai bisogno di una laurea in informatica
Lo abbiamo coperto in molti dettagli, quindi non mi soffermerò sul punto qui. Ma no, non hai bisogno di una laurea in informatica per programmare. Non hai bisogno di una laurea in commercio, e potresti anche non aver bisogno di frequentare un bootcamp.
Queste cose renderanno più facile ottenere quel primo lavoro, ma non sono necessarie. Quindi quando vi state chiedendo, “è difficile programmare”, probabilmente state confondendo i cerchi che dovete saltare con l’attività. Non ci sono prerequisiti per programmare al di là di un Notepad e del download di un singolo interprete o compilatore.
Misconcezione 3: I programmatori hanno terribili abilità sociali
Questo potrebbe farvi grattare un po’ la testa. Probabilmente starai pensando: “Cosa ha a che fare l’idea che i programmatori abbiano terribili abilità sociali con me, o con il motivo per cui programmare è difficile?”
Beh, è sottile, ma reale. Il mondo guarda programmi televisivi e film in cui si possono identificare i programmatori esperti attraverso la loro tendenza a “smanettare”.”
Così la logica inversa si insinua e si pensa, “Se non sono follemente impacciato socialmente, potrei mai essere un ‘vero’ programmatore?”
Sì. Sì, è possibile. I programmatori partecipano a molte conferenze e meetup, tengono conferenze, formano comunità e hanno una vita sociale grande e normale.
Misconcezione 4: I programmatori sono immediatamente bravi in tutte le cose dei computer
Io personalmente ho preso una laurea in informatica, e poi un lavoro di programmazione. E, quando l’ho fatto, tutti hanno immediatamente dato per scontato che fossi un esperto in tutte le cose del computer.
- Erik, il mio computer sta facendo questo strano suono – cosa pensi che non vada?
- Ehi, ricevo l’errore #90314 quando provo a chiudere MS Word. Cosa significa?
- Quale di queste schede video è la migliore?
Tutti questi erano i tipi di domande che sentivo. E fondamentalmente, mi limitavo a cercare la risposta su Google (se non dicendo “wow, davvero non lo so”). Mi sono guadagnato da vivere scrivendo software, ma questo non significava che sapessi tutto e niente sui computer.
Lo dico perché non dovreste pensare che dovete sapere tutto e niente sui computer per essere un programmatore.
C’è molta varietà nella programmazione
Dopo aver sfatato alcuni miti, guardiamo la realtà della programmazione. E la realtà è che è davvero molto varia. Ecco solo un piccolo campione delle cose che la gente fa sotto l’ombrello generale della “programmazione”:
- Progettare il layout e le proprietà visive di una pagina web.
- Creare algoritmi di intelligenza artificiale.
- Scrivere compiti manuali per automatizzarli.
- Modellazione statistica complessa.
- Costruire applicazioni mobili semplici e ripetibili.
E questo è solo un piccolo campione dei diversi tipi di programmazione. Non affronta nemmeno tutti i diversi ruoli che potresti occupare e che contribuiscono a questi sforzi.
C’è tanta varietà nell'”essere un programmatore” quanto nell'”essere un uomo d’affari”.”
Alcuni ruoli di programmazione sono più accessibili
Data questa varietà, mi piacerebbe scavare un po’ in quali ruoli potrebbero sembrare più accessibili.
Ho intenzione di allontanarmi un po’ dallo spettro “facile a difficile”, solo perché questo dipende molto da ciò che voi, come individuo, trovate difficile. Per esempio, ho sempre fatto molto bene con la matematica e gli algoritmi, ma sono francamente terribile nel design e nel layout. Potreste avere inclinazioni opposte e pensare che sia ridicolo dire “programmare un algoritmo di ordinamento è facile” e controbattere con qualcosa che troverei altrettanto ridicolo: “impaginare una bella pagina web è facile.”
Capite quindi che non sto categoricamente chiamando le cose facili o difficili. Invece, sto sottolineando cose che potresti non aver considerato, se hai sempre pensato alla programmazione solo come altamente matematica.
- Alcune persone in ruoli di programmazione si concentrano in gran parte sul layout e sull’esperienza dell’utente. Questo significa preoccuparsi molto dell’estetica dell’applicazione e di come gli utenti interagiscono con essa.
- Altri programmatori si concentrano in gran parte su dati e database. Invece di costruire grandi pezzi di software usando istruzioni complesse, si concentrano molto di più sui dati effettivi e sul ragionamento su quei dati.
- Un’altra disciplina è più vicina alle operazioni e al supporto. Alcune persone lavorano un bel po’ con i computer come “power user” e imparano a programmare imparando qua e là come automatizzare e rendere più efficiente ciò che fanno manualmente.
E questi sono solo alcuni esempi. Quindi capite che, anche se la programmazione vi sembra difficile, ci potrebbero essere ruoli al suo interno che in realtà sembrano più accessibili.
La programmazione è, comunque, aliena, il che può significare che programmare è difficile
A questo punto, vorrei cambiare un po’ marcia. Mi sembra di aver passato un bel po’ di tempo sul tema “ehi, programmare non è così difficile come si pensa”. Ed è vero. Penso che molte persone risponderebbero alla domanda “è difficile programmare” con un “sì” semplicemente perché non sanno cosa comporta la programmazione.
Ma qui voglio moderare un po’ la cosa. Programmare è difficile nel senso che ti chiede di pensare in un modo a cui non sei abituato.
Per capire cosa voglio dire, pensa a trattare con Alexa.
Alexa può rispondere a molte domande tattiche, e a volte ti delizia e ti sorprende. Ma è anche molto frustrante. Il suo essere computerista si mostra a volte, quando comicamente fraintende le interazioni umane di base.
Ora, considerate che, per quanto riguarda i programmi per computer, Alexa è completamente ottimizzata per fare del suo meglio per capirvi. Devi essere estremamente preciso, letterale e ottuso mentre parli con lei, e lei è lì per capirti.
Il compilatore (la cosa che traduce il tuo codice in azione) è come Alexa, ma non è progettato per renderti la vita facile. È progettato per massimizzare l’utilità. Quindi, se devi essere preciso nel trattare con Alexa, preciso non inizia nemmeno a descrivere ciò che il compilatore vuole. Scambia un punto e virgola per due punti e puoi mandare in crash un computer.
Perciò programmare è difficile? Sì, nel senso che richiede di pensare in un modo in cui la maggior parte delle persone normalmente non pensa.
Programmare lo stato dell’arte è legittimamente difficile
Per continuare con il tema del “sì, programmare è difficile”, consideriamo che ci sono sacche del mondo della programmazione che richiedono molta abilità e pratica per entrare. Non pensateci troppo. A volte programmare è davvero difficile.
Fare cose avanzate con la robotica, la catena di blocchi, l’intelligenza artificiale, gli algoritmi di trading, ecc. richiede molta abilità, pratica, talento e spinta competitiva. Alcune delle grandi aziende della Silicon Valley pagano stipendi enormi agli sviluppatori di software, e non hanno intenzione di farlo per chiunque passi di lì per caso.
Ci sono specialità nel mondo della programmazione che richiedono un fulmine in una bottiglia, nel senso che hai bisogno di pratica, talento, intelligenza e fortuna. E oltre a questo, ci sono ruoli, posizioni, sfide e situazioni che non molte persone possono soddisfare adeguatamente. Programmare può essere abbastanza difficile.
Come ogni altra cosa, è molto vario
Ma, alla fine, varia davvero. Ripensate a quello che ho detto all’inizio.
Il basket è difficile? No, se intendi “chiunque può prendere una palla e lanciarla verso un canestro? Sì, se intendi “quante probabilità ci sono che Golden State mi ingaggi per giocare accanto a Steph Curry?”
È difficile parlare portoghese? Beh, probabilmente no se sei nato in Brasile o in Portogallo. Ma probabilmente sì se hai 70 anni e non hai mai parlato altro che giapponese.
Quindi, è difficile programmare? Sì e no. Sì, è difficile farlo ad un livello elitario o in un settore altamente specializzato e competitivo. Ma no, non è difficile iniziare. E certamente non è oltre voi.
Questo post è stato scritto da Erik Dietrich. Erik è un veterano del mondo del software e ha occupato praticamente ogni posizione al suo interno: sviluppatore, architetto, manager, CIO e, infine, consulente indipendente di gestione e strategia. Questa ampiezza di esperienza gli ha permesso di parlare a tutte le persone del settore e di scrivere diversi libri e innumerevoli post di blog su decine di siti.