Una guida completa per diventare un programmatore autodidatta

Parte II: Pensa, pianifica ed esegui come un programmatore

Ora che sai come risolvere i problemi, ragionare sulla soluzione e comunicare fluentemente le tue idee, è tempo per te di mettere queste abilità in pratica, come fa un programmatore.

Donald Knuth: giù le Mani, uno dei più grandi Scienziati del Computer il campo l’ha mai visto.

In questa parte, ci sono tre cose che devi imparare. In primo luogo, imparerai il C++ come seconda lingua, che è più vicino alle descrizioni a livello di macchina rispetto a Python. Python è più vicino allo spettro dell’inglese semplice, mentre C++ è più vicino alla fine dello spettro di 0 e 1. Imparare il C++ ti renderà familiare con più costrutti di programmazione come i puntatori. In secondo luogo, migliorerai la tua velocità di codifica praticando intensamente, leggendo la documentazione e perfezionando ulteriormente le tue abilità di debug. Infine, imparerai la ricorsione, che è la magia che i programmatori e gli informatici usano per sfruttare la potenza del calcolo.

Impara il C++ e inizia a scrivere programmi semplici

Hai già imparato Python nella parte precedente. Python è un linguaggio programmatore-friendly, in quanto nasconde un sacco di dettagli di basso livello dal programmatore per facilità d’uso. Tuttavia, se vuoi progredire, è assolutamente necessario imparare i fondamenti della programmazione in C++.

Su cosa concentrarsi: Scrivere codice in C++ ti farà sentire più simile al programmatore, perché stai andando più verso descrizioni a livello di macchina. Impara la differenza tra sintassi e semantica. Trascorri del tempo ad imparare la digitazione statica e dinamica, la gestione della memoria e i puntatori. Impara a implementare condizionali, loop, funzioni, tipi di dati e cose che hai imparato in Python tutto da capo in C++. Se tutto questo sembra greco e latino, non ti preoccupare. La sezione risorse renderà tutto chiaro a voi.

Gestione degli errori: ogni volta che ricevi un errore, non scoraggiarti. Anche i programmatori più esperti hanno errori e bug nei loro programmi. Tutto quello che dovete fare è leggere l’errore, fare una rapida ricerca su Google, e risolvere il problema nel codice. Mentre lo fai, capisci dove hai commesso un errore, correggi la tua comprensione e procedi. A volte potrebbe essere necessario leggere un po ‘ di documentazione. Controlla la sezione successiva.

Leggere la documentazione dovrebbe essere una seconda natura per te

Proprio come fare una ricerca su Google, l’abilità di un programmatore è decisa da quanto bene può capire la documentazione e scrivere programmi utili. Mentre impari a leggere la documentazione, imparerai anche a commentare il tuo codice, scrivere codice leggibile e scrivere documentazione per il codice che scrivi.

Perché dovresti imparare questo? Molte persone lottano con l’apprendimento di nuove tecnologie e cercano corsi pronti da cui imparare. Mentre questo va bene nelle fasi iniziali, man mano che la tua conoscenza si approfondisce, non troverai tutorial già pronti per nutrirti con il cucchiaio. Dovrai leggere la documentazione e raccogliere ciò di cui hai bisogno. Ancora una volta, imparare a filtrare le informazioni e prendere esattamente ciò che è necessario per ottenere il lavoro fatto.

Pratica. Ripetere. Praticare.

Ora devi solo continuare a praticare. Vai a Hackerrank e risolvi tutti i problemi facili nella sezione di riscaldamento e implementazione lì. Se c’è un problema che non puoi risolvere, leggi le discussioni, leggi l’editoriale e vedi come puoi risolverlo da solo. Se c’è qualcosa che non capisci, usa Google.

Se hai fatto le letture nella parte precedente, non dovresti avere un problema qui. Se stai lottando, ti suggerirei di tornare indietro e rivedere quelle sezioni. Devi diventare bravo a scrivere codice, quindi non saltare questa parte. L’idea è di essere fluente nell’esprimere le tue soluzioni in semplice inglese nei loro equivalenti di programmazione. Una volta che non sei impantanato dalle specifiche della lingua, puoi procedere. Prendi tutti i programmi che hai scritto in Python e codificali in C++.

Potresti incontrare l’hype intorno alla programmazione competitiva, ti consiglierei di stare lontano da esso in questa fase perché farà più male che bene. Una volta terminata la parte III, puoi sperimentarlo e, se fatto bene, può migliorare enormemente le tue capacità di problem solving.

Capire la ricorsione bene

Questo vi aiuterà a capire la ricorsione meglio. Haha.

Il cuore di uno scienziato informatico sta nella capacità di comprendere la ricorsione. Ricorrere significa esprimere qualcosa in termini di se stesso. Tutto ciò che puoi fare usando i loop può essere fatto in modo ricorsivo e in modi molto eleganti. Cerca di capirlo intuitivamente e guarda i video che ho fornito nelle risorse. Se sei uno sviluppatore di software che non capisce abbastanza bene la ricorsione, ti consiglio di farlo subito.

Sommario

Finora, conosci un linguaggio di basso livello e di alto livello e puoi apprezzare sufficientemente le differenze nel “controllo” che hai sui tuoi programmi. A questo punto, dovresti essere in grado di scrivere programmi semplici usando Python e C++ e apprezzare la differenza tra entrambe le lingue.

Da qui, molte persone vanno nel solco di imparare più lingue che non è altro che un esercizio inutile di per sé. Una delle domande più comuni che mi vengono poste dai principianti è ” Quante lingue conosci?”, il che mi porta a capire come i principianti sbagliati siano generalmente in relazione alla capacità di programmazione di conoscere più lingue. Programmare non significa conoscere molte lingue. La lingua che usi è solo un modo per esprimere e risolvere il tuo problema in modo efficace. In questa fase, sei un “programmatore”, ma non è abbastanza. Ora è necessario imparare l’informatica per prendere il vostro skillset al livello successivo.

Parte III: Il tuo appuntamento con l’informatica

Una solida comprensione delle risorse in questa fase ti renderà migliore della maggior parte dei programmatori del tuo gruppo di pari. Si può anche diventare migliore rispetto alla maggior parte degli studenti di ingegneria 2nd / 3rd anno in India. Il tuo progresso da qui dipende dalla tua sete di materiale in questa sezione. Quindi concentrati.

Per aggiungere il mio tocco filosofico, approfondendo informatica è come aprire il vaso di Pandora.

La maggior parte degli argomenti in questa sezione sono trattati nel 2 ° anno di un corso di ingegneria informatica undergrad. Li ho avvicinati in modo un po ‘ diverso per soddisfare al meglio gli obiettivi di questa guida.

In che modo questo differisce da un normale curriculum universitario? Regolari corsi di laurea sono pesantemente caricati con la teoria. I corsi che ho suggerito nella sezione risorse hanno un buon mix di teoria e pratica. Mentre questo può essere una buona cosa per gli aspiranti ingegneri, per il laico là fuori, non è molto utile. Si perde traccia di dove finisce la teoria e inizia la pratica. Indicherò esattamente ciò di cui hai bisogno per imparare la teoria in modo da poter andare dritto e praticare. La teoria è solo uno strumento per aiutarti a scrivere codice migliore in questa fase, quindi non impantanarti troppo pesantemente.

Fatto divertente: nel mio 2 ° semestre di ingegneria, avevamo un soggetto chiamato DBMS (Database Management Systems). Sono rimasto sorpreso di trovare persone che disegnavano i migliori diagrammi ER per i loro progetti di database, ma quando si trattava di progettare effettivamente un database per applicazioni pratiche, fallivano miseramente. Erano così concentrati sull’ottenere i dettagli del diagramma, che avrebbero dimenticato la vera ragione per cui lo stavano facendo in primo luogo. Non li biasimo, perché non è mai stato insegnato che il diagramma è lì per loro per costruire database migliori, non migliorare le loro abilità di schizzo.

Matematica discreta

Hai già usato la matematica discreta inconsapevolmente. La matematica discreta è una combinazione di aree della matematica applicata che sono state ripetutamente utilizzate nell’informatica. Gli esperti del settore hanno deciso di club tutto insieme e mettere un nome ad esso — che ora chiamiamo matematica discreta.

non preoccupatevi ragazze, ha scritto il primo programma

Quando l’apprendimento di matematica discreta, seguire lo stesso principio che ho descritto nella Parte I. a Pensare in termini di strutture matematiche e le procedure utilizzate per manipolare a loro. La matematica discreta aumenta semplicemente il numero di strumenti a tua disposizione per affrontare i problemi. Se hai superato la tua paura della matematica, ti godrai a fondo il corso che ho collegato nella sezione risorse.

Strutture dati e algoritmi

Questa è la spina dorsale del tuo intero viaggio. In effetti, hai già utilizzato strutture dati e algoritmi per tutto questo tempo, ancora una volta inconsapevolmente. Ora lo formalizzeremo e lo studieremo più in dettaglio.

Linus Torvalds ha costruito il Kernel Linux — qualcosa senza che Android non sarebbe stato quello che è oggi

Come un programmatore esperto, si prevede di utilizzare algoritmi e strutture di dati ovunque. Comprenderlo abbastanza bene estenderà le tue abilità matematiche e gli strumenti per costruire strutture computazionali efficaci per affrontare problemi comuni. Imparerai anche diverse tecniche di progettazione degli algoritmi, che sono come progetti per risolvere alcuni temi in informatica.

Molti tutorial ti diranno di iniziare ad imparare algoritmi e strutture dati verso l’alto. Il motivo per cui non l’ho fatto è perché entreresti in Einstellung, che ha una mentalità fissa e un approccio ai problemi. Fidati di me, questo paralizza il tuo pensiero perché non pensi fuori dagli schemi. Alla fine di questo, sarai un grande risolutore di problemi e codificatore.

Best Practices

Scrivere software non significa solo mettere insieme il codice a casaccio per fare le cose. Nella maggior parte degli ambienti professionali, non sarai l’unico programmatore che lavora su una base di codice. È importante che tu segua determinate linee guida e convenzioni per semplificare la programmazione della base di codice per tutti i membri del team. Questo rende più facile capire il codice scritto da qualcun altro e successivamente rende più facile per gli altri capire il tuo codice. Se sei uno sviluppatore di software junior, concentrati su questa sezione.

Cosa puoi fare? Trascorri del tempo a capire e mettere in pratica il principio SECCO (non ripeterti). Non scrivere codice ripetitivo, in quanto ciò ti rallenta e ti rende più incline agli errori. Scrivi commenti e documentazione utili ovunque tu possa. Quando ho iniziato, ho pensato che fosse una cosa stupida da fare fino a quando, un giorno, ho aperto un vecchio progetto e mi sono reso conto che tutto il mio codice era incomprensibile. Come programmatore, non è necessario memorizzare molto. Memorizzi ciò che è importante e cerchi ciò che è necessario.

Controllo di versione (Git)

Questo è qualcosa che ho iniziato a fare presto e aiuta enormemente a mantenere il codice organizzato. Tieni traccia delle modifiche e sai esattamente quali modifiche hai bisogno per implementare determinate funzionalità. Si impara anche come prevenire e correggere rapidamente i bug. Vedo un sacco di giovani ingegneri che non sanno nemmeno cosa sia Git, ed è estremamente triste. Trascorreranno tutta la loro carriera usando il controllo della versione: se sei uno di loro, vai direttamente alle risorse qui sotto.

Programmazione orientata agli oggetti

Un’introduzione a un modo completamente nuovo di programmare. Finora, abbiamo fatto la programmazione procedurale. Ora passiamo alla programmazione orientata agli oggetti, che è un nuovo paradigma del tutto. Un’introduzione all’incapsulamento e all’astrazione dei dati ti aiuterà ulteriormente ad apprezzare il modo in cui questa guida è stata progettata. In OOP, tutto è un oggetto e l’idea è di separare chiaramente l’interfaccia e l’implementazione. Imparerai anche le lezioni e l’ereditarietà. Alla fine, inizierai a progettare soluzioni orientate agli oggetti e imparerai come creare scatole nere intelligenti per risolvere i problemi. Imparare Java è un buon modo per iniziare con questo nuovo paradigma di programmazione. Python supporta anche OOP, quindi prova ad esplorarlo!

Pratica duro

Pratica ogni abilità/concetto / algoritmo in questa sezione scrivendo frammenti di codice. Riscrivi il vecchio codice con le nuove conoscenze acquisite. Continua a scrivere piccoli programmi e impara qualcosa di nuovo da esso in ogni fase.

Bruce Lee: Il super-umano umano. R. I.P legenda

Continua ad imparare man mano che avanzi. Ho costruito calcolatrici, sistemi di gestione delle librerie, script di calcolo numerico in tanti modi diversi, e ogni volta, ho imparato qualcosa di diverso. Alla fine si arriva a rendersi conto che non esiste un proiettile d’oro per risolvere tutto. La vita è piena di compromessi. Questa è la bellezza dell’imperfezione.

Sommario

Si sa più che sufficiente per costruire software che cambia il gioco. Devi interiorizzare tutto fino a qui per passare al passo successivo. Da qui, più teoria non ti farà bene. Si dovrebbe investire esclusivamente tempo nella pratica e la costruzione di progetti utili. La programmazione è una scienza applicata-seguire la regola 80/20, il che significa spendere l ‘ 80% del tempo di pratica e il 20% del tempo di lettura teoria.

Parte IV: È tempo per te di costruire alcune cose interessanti

Se hai seguito la guida fino a qui, sei ben equipaggiato per andare avanti e costruire alcuni grandi progetti che puoi mettere sul tuo CV, mostrare ai tuoi amici o persino generare entrate dal tuo lavoro. In questa fase, voglio insegnarti come imparare le cose lungo la strada. Ogni nuovo progetto si prende o sono assegnati a richiederà imparare qualcosa di nuovo. È importante che ti avvicini a questo con l’atteggiamento giusto.

io sono sempre stato ispirato da Mark Zuckerberg per il suo eterno atteggiamento verso annullando di fatto il fallimento

Ci sono alcune linee guida che si possono seguire ogni volta che si prende qualsiasi progetto. Ho sviluppato questa rubrica per me stesso e ho capito che sarebbe stato utile per voi gente che intraprende nuovi progetti.

  1. Identifica il problema su cui stai lavorando e sii molto specifico sui dettagli. Sii chiaro sui tuoi obiettivi e obiettivi.
  2. Cerca progetti esistenti o simili e identifica dove eccellono e dove mancano. Scopri dove si inserisce la tua idea, come il progetto si allinea con gli obiettivi e gli obiettivi che hai in mente e prendi nota di tutto.
  3. Fare un elenco di tutte le competenze necessarie per imparare a fare il progetto e la misura in cui è necessario sviluppare l’abilità per ottenere il progetto fatto. Conosci i tuoi punti di forza e di debolezza.
  4. Crea un piano per apprendere le abilità necessarie. Identificare le persone giuste per aiutarvi e tutorial necessari per iniziare. Concentrati esclusivamente sullo sviluppo dell’abilità per portare a termine il tuo progetto. È facile lasciarsi trasportare nell’andare in profondità. Ricorda, stai imparando l’abilità per completare il progetto e non scrivere una tesi di dottorato su di esso. A meno che non sia il tuo obiettivo.
  5. Inizia con il progetto, aggiorna i tuoi obiettivi e obiettivi e sii molto chiaro sui tuoi punti di forza e di debolezza. Suddividere il progetto in sottoattività fattibili e assegnare una metrica di obiettività per ciascuna. Ciò significa che è necessario sapere quando smettere di inseguire la perfezione e concentrarsi sul quadro generale.
  6. Esegui con impazienza. Ripetere fino a quando tutti i vostri obiettivi sono soddisfatti.

Leggi questo per suggerimenti e trucchi su come diventare uno studente migliore.

Data la vostra conoscenza esistente, si può imparare a costruire siti web, applicazioni mobili, giochi, piccoli script, plugin Chrome, applicazioni desktop, e software di analisi dei dati. Fornirò ulteriori informazioni su questo nel prossimo post. Una volta che avete alcuni progetti completati sotto la cintura, vi sarà uno sviluppatore abbastanza buono per freelance e fare soldi sul lato, che è una grande fonte di reddito se sei uno studente. Se vieni da un altro campo, questo ti dà una base abbastanza solida per essere in grado di aumentare il tuo lavoro attuale con la tecnologia. Quello che puoi con il tuo attuale set di abilità è infinito, anche un intero blog-post non può rendere giustizia a questo.



Lascia un commento

Il tuo indirizzo email non sarà pubblicato.