Premessa
--------
Quest'articolo e' stato scritto per suggerire alcune tecniche di studio, acquisite con l'esperienza negli anni, a tutti coloro che vorrebbero imparare da autodidatti la cultura dei computers e in particolare quella della programmazione.
Questo perche' il maggior problema cui ho dovuto far fronte qualche anno fa, quando cominciai a programmare, non fu l'"imparare da soli" di per se, ma piuttosto il "saper cominciare". Con questo testo spero di fornire un valido aiuto per tutti gli apprendisti autodidatti, consentendo loro un notevole risparmio di tempo ed energie per apprendere tutti i trucchi e segreti di questa tenica di studio (sempre nell'ambito della programmazione, se stavate cercando testi riguardanti filosofia provate altrove :).

L'inizio della fine
-------------------
L'inizio puo' rivelarsi gia' dai primi approcci allo studio, la fine dell'esperienza. Cominciate a leggere qualcosina sui linguaggi di programmazione, non ci capite niente, al primo errore "read memory address couldn't be read" andate in crisi, buttate via tutta la documentazione scaricata da internet e tutti i manuali appena comprati. E' un classico, io dico che almeno il 40% degli autodidatti viene "rasoiato" ai primi tentativi proprio per motivi simili a questi. A questo proposito e' bene pianificare uno schema preciso di " motivazioni" che vi spingono ad imparare la programmazione. Se non avete motivazioni, potete anche smettere di leggere questo articolo: non andrete lontano con l'autodidattica.
A questo proposito, motivarsi psicologicamente e' la prima cosa da fare. Volete imparare a fare un virus per leggere le e-mail della vostra ragazza? Questo potrebbe essere un motivo (non e' stato il mio, personalmente... :). Volete imparare la programmazione perche' il vostro vicino si e' divertito a cancellarvi l'hard disk e volete fargliela pagare? Anche questo va bene. Meglio ancora se le motivazioni sono piu' profonde; piu' profonde sono e piu' lontano andrete.

Cominciare
----------
La fase piu' critica: non conoscete niente, non avete mai sentito parlare di puntatori allo stack, classi, metodi, variabili e non sapete da dove cominciare. Un buon punto di partenza, potrebbe essere la famosa "cultura generale". Non serve uno studio, aprite il motore di ricerca "google" e cercate qualcosa tipo "linguaggi di programmazione", "panoramica sulla programmazione" o simili. Cercate tra i risultati e fatevi un idea generale su tutti i linguaggi di programmazione piu' comuni. Dopodiche' sceglietene uno. Su quel linguaggio ci dovrete sbatterete la testa fino ad avere l'emicrania, ma alla fine di tutte le sofferenze, lo conoscerete alla perfezione. E' preferibile scegliere un linguaggio cosiddetto "ad alto livello", che significa "piu' semplice rispetto ad altri". Personalmente ho iniziato con il Visual Basic 6, (anche se tutt'ora avrei scelto di iniziare col Pascal) e prima di costruirci qualcosa di utile, ho passato ore e ore ad esplorare il suo ambiente di sviluppo, dopodiche' ne ho perse altrettante per costruire un'applicazione perlomeno funzionante.
Una volta scelto il vostro linguaggio, dovrete applicarvi con costanza ed impegno. Se prenderete la cosa con leggerezza, non andrete da nessuna parte.

I manuali
---------
I vostri migliori amici. Per l'autodidatta, il manuale e' l'unica fonte di informazione che tratta tutti gli aspetti di un linguaggio. Internet e' da usare come ausilio per cose piu' specifiche, ma la base e' da imparare su un manuale! Se credete di poter imparare un linguaggio (soprattutto il vostro primo linguaggio!) su internet, commetterete un errore e vi ritroverete una conoscenza dell'argomento frammentata e confusa.
Quindi 1° regola da seguire: recarsi in libreria e comprare un manuale.
La scelta del manuale non e' difficile: se non avete mai imparato un linguaggio, scegliete qualcosa di facile, per iniziare (nel momento in cui scrivo, l'apogeo pubblica i manuali della "for Dummies" letteralmente "per gli zucconi", ne ho letti alcuni e sono veramente chiari per chi deve iniziare :), successivamente potrete buttarvi su qualcosa di piu' tenico.

L'amico smanettone:
-----------------------
Ai primi tentativi di costruire un programma, riscontrate un errore e non sapete come risolverlo. La cosa spontanea e' quella di chiedere aiuto ad un conoscente (spesso quello che vi ha fatto avvicinare a questo mondo) piu' esperto di voi, in modo da avere una risposta sicura ed affidabile. Facendo cio' commetterete 2 errori:
1) Non capiterete cos'era il problema (anche se sapete risolverlo, in realta' non l'avete capito)
2) Ogni domanda che farete al vostro amico smanettone, sara' sempre di piu' una conferma della vostra ignoranza. In pratica: meno chiedete e meglio sara'.
Quindi il chiedere aiuto, tenetelo sempre come ultima risorsa. All'inizio puo' sembrare la soluzione piu' veloce e immediata (effettivamente lo e', ma dovrete imparare a farne a meno, senza sacrifici non si impara niente), ma col tempo puo' diventare una sorta di "dipendenza", sarete sempre legati ai consigli del vostro amico (che col tempo, si secchera' pure di rispondere alle insistenti domande e rimarrete senza supporto e senza amico).
Onde evitare cio', cercate la risposta alle vostre domande da soli! Non e' forse questo il modo piu' autodidattico esistente?

Internet
-------
Risorsa numero 2: la rete. Dentro questa rete, voi troverete tutto e quando dico tutto, dico proprio TUTTO.
"Google" sara' il vostro miglior amico quando cercherete la soluzione ad un vostro problema. Google e' attualmente il piu' grande e veloce motore di ricerca esistente al mondo, quotato in borsa e di supporto ai piu' grandi portali della rete. Mettetevi in testa questo concetto: "non siete i primi ad avere quel problema, su milioni di utenti c'e' SICURAMENTE qualcuno che ha gia' avuto il vostro stesso problema.".
Piccolo dettaglio: l'Italia e' relativamente "arretrata" nel campo informatico rispetto agli USA e alla Germania. Se dovete cercare la soluzione di un problema molto difficile (e raro da verificarsi), cercate nei siti in lingua inglese o tedesca. Difficilmente reperirete informazioni molto specifiche su risultati in lingua italiana. Per questo motivo, una conoscenza dell'inglese e' assolutamente necessaria!
Proprio per questo motivo, risolvere un problema e' relativamente facile:
- Non riuscite a dichiarare una variabile nel modo desiderato, dovete fare una calcolatrice, ma i numeri piu' alti di 32767 non vengono sommati e sembrano tornare all'indietro (vi vengono fuori valori come -345? O_o).
- Aprite google e cercate "variabili int pascal" oppure "problema pascal somma di numeri negativo" (usate parole che descrivano il vostro problema).
- Cercate tra i risultati la soluzione al vostro problema. Perdeteci ore se necessario, non arrendetevi mai (eccetto se avete raggiunto la fine dei risultati :-)
- Se non avete trovato niente (non ci credo...) malgrado l'aiuto di google provate a postare in qualche forum o sui newsgroup (ma ricordatevi il discorso dell'amico smanettone: non diventate dipendenti dai forum, o verrete considerati ignoranti e contemporaneamente danneggerete voi stessi).

Costanza
--------
Se non sarete costanti con lo studio, non riuscirete ad imparare molto. Ognuno ha un proprio ritmo personale, non c'e' uno standard definito per tutti. L'importante e' applicarsi sulla materia con costanza.
Avete 10 minuti la sera prima di andare a dormire? Leggete qualche pagina di manuale!
State aspettando di uscire con la vostra girl? Provate a costruire qualche programma d'esempio, applicando cio' che avete studiato i giorni scorsi, mentre aspettate!
Non volete essere costanti ed applicarvi quando vi fa comodo? Avete perso in partenza...

La terra di mezzo
-----------------
Una volta partiti, il peggio e' fatto. Padroneggiate in modo sufficiente le vostre applicazioni e conoscete i termini specifici del linguaggio. Una volta finito un manuale ne comprate un altro e acquisite ogni giorno sempre piu' conoscenza. E' un periodo in cui si saldano le proprie esperienze e si cominciano a produrre i primi programmi "semi-professionali". Puo' essere un periodo che puo' tuttavia ingannarvi. Vi sentite padroni, vi sembra di sapere, ma in realta' non sapete niente... a questo pro, continuare lo studio approfondendo ogni minimo argomento e' essenziale e soprattutto, bisogna cercare di essere i piu' umili possibili.

Lo skill
--------
"skill", una parola inglese che letteralmente tradotta significa "abilita'". Lo skill e' differente in ogni programmatore e lo si puo' osservare da come scrive i sorgenti, da come li commenta, da come posta nei forum e da come scrive le e-mail. Lo skill mostra il tuo grado di abilita' nella programmazione e nel discutere riguardo a certi argomenti specifici. E' una sorta di biglietto da visita nel "mondo virtuale". Una sorta di stile, differente da soggetto a soggetto. La parola d'ordine per avere un buon "skill" e' la modestia.
I programmatori piu' esperti, non vedono di buon occhio i presuntuosi (d'altronde nessuno vede i presuntuosi di buon occhio, che sia programmatore o meno).
Piu modesti sarete e piu' gente disposta ad aiutarvi troverete. Fate i presuntuosi? Nessuno vi aiutera'...
Anche dando risposte bisogna essere umili. Quando qualcuno vi chiede un argomento di cui non siete a conoscenza, non fate i falsi guru rispondendo che conoscete l'argomento, dite semplicemente che non lo conoscete. Eviterete molti problemi.

Il computer non e' intelligente
-------------------------------
Una regola preziosa: qualsiasi inconveniente vi capiti, non date la colpa al computer. Il computer e' una macchina, un essere incapace di pensare, se il vostro programma non viene compilato correttamente, non e' colpa sua. Sbatteteci la testa a lungo contro i problemi, non datevi per vinto. Alla fine trovare la soluzione e' la miglior soddisfazione del mondo.

Si puo' sapere tutto?
---------------------
Risposta semplice. No.
L'informatica e' un argomento talmente vasto, che nessun essere umano puo' conoscere nella sua totalita'. Si puo' imparare molto, questo si. Ma quando vi dicono "ma tu sai tutto!", rispondetegli semplicemente "non si puo' sapere tutto". Non partite neanche con l'idea di poter imparare tutto, perche' non raggiungerete mai quel fine.

Tempo, tempo e ancora tempo
---------------------------
Ogni cosa richiede tempo (non si va forse a scuola per 13 anni?). L'autodidattica in particolare, richiede tempo, molto tempo, il tempo di apprendimento di un programmatore autodidatta e' 3 volte piu' lento (se non di piu') rispetto al tempo che impiega un qualsiasi programmatore "munito" di insegnante personale. Tuttavia l'autodidatta una volta finito un argomento, e' capace di passare ad un altro senza per forza aver bisogno di aiuti esterni, provera' soddisfazioni che altrimenti non proverebbe e riuscira' a cavarsi da qualsiasi impiccio senza l'aiuto di nessuno.
Tutto questo richiede tempo, tempo, tempo... non esiste una data precisa, non esiste una fine, il concetto e' questo: "piu' studierai, piu' saprai, piu' soddisfazione avrai".

La scuola
---------
Se siete studenti, non sperate nell'aiuto della scuola. Il livello di insegnamento scolastico dell'informatica in vigore tuttora nelle scuole italiane, e' disastrosamente basso! Se sperate di imparare molto dalla scuola, beh, vi sbagliate di grosso. Come ogni materia d'altronde, per essere ben appresa, va studiata e approfondita fuori dall'ambiente scolastico.

Conclusioni
-----------
Per qualsiasi commento o domanda, contattatemi sul sito http://www.pierotofy.it