Quali sono alcune cose di base che un buon ingegnere informatico dovrebbe sapere?

1) Strutture di dati e algoritmi

Se vuoi diventare un programmatore allora devi conoscere bene la struttura dei dati e gli algoritmi; non c'è modo di evitarlo. Questo è uno degli argomenti importanti di qualsiasi colloquio di lavoro di programmazione e senza conoscere le strutture dati di base non è possibile scrivere un'applicazione del mondo reale.

Questo è il motivo per cui ogni programmatore dovrebbe impegnarsi seriamente per imparare le strutture dati e gli algoritmi durante il suo corso di informatica.

Se sei un programmatore autodidatta, allora anche tu devi conoscere le strutture dati e gli algoritmi; infatti, molti boot camp di programmazione ti insegnano strutture dati e algoritmi come prima cosa.

2) Controllo delle fonti

Il controllo delle fonti è usato per memorizzare il codice e se vuoi diventare un programmatore o uno sviluppatore di software, devi conoscere strumenti di controllo delle versioni come Git e SVN.

Grazie a Dio Git e Github hanno snellito il mercato e ora più del 70% delle organizzazioni usa Git, quindi probabilmente puoi cavartela imparando solo Git.

Tra l'altro, dovreste mettere un po' di impegno nell'imparare bene Git, e dovreste essere a vostro agio con i concetti avanzati di controllo della versione come il branching e il merging così come lo strumento stesso usando sia la linea di comando che l'interfaccia grafica. Per i principianti,

3) Editor di testo

Non c'è un solo giorno in cui non ho usato un editor di testo mentre lavoravo come programmatore. È uno degli strumenti essenziali anche per i non programmatori e per chiunque lavori con i computer.

Ho usato soprattutto NotePad su Windows e VI in Linux, ma avete un sacco di scelte disponibili in termini di editor avanzati come Sublime e NotePad++, che fornisce funzionalità simili all'IDE.

Ti suggerisco di passare un po' di tempo ad imparare il tuo editor preferito e le scorciatoie da tastiera, i suggerimenti per la produttività sono qualcosa che puoi imparare.

4) IDE

L'IDE moderno è il singolo strumento più importante per qualsiasi programmatore. Per i programmatori C, C++ e C#, la scelta è chiara: Visual Studio. E per gli sviluppatori Python, Jupiter Notebook sta migliorando di giorno in giorno.

Per i programmatori Java, ci sono tre IDE principali da scegliere: Eclipse, NetBeans e IntelliJ. Mentre Eclipse è il mio preferito, IntelliJ IDEA non è affatto male.

5) Database e SQL

SQL è un classico. È stato in giro per più di 30 anni e penso che sarà in giro per altri 30 anni. Data l'onnipresenza del database, ci si aspetta che un programmatore conosca i concetti essenziali del database come la normalizzazione e la progettazione di tabelle insieme all'SQL.

Ci sono molti database, ma conoscerne uno solo è sufficiente. Il punto chiave è che si dovrebbe avere familiarità con il database. Dovreste sapere come inserire/aggiornare/cancellare dati e scrivere query SQL per recuperarli.

6) UNIX o Linux

Come SQL, anche UNIX ha resistito alla prova del tempo. È stato anche in giro per più di 30 anni e spero che ci sarà per molti altri anni a venire. Dal momento che la maggior parte dei programmatori deve lavorare in una macchina UNIX ad un certo punto, una buona conoscenza della linea di comando Linx va molto lontano.

Ti permette di lavorare efficacemente. È possibile cercare i file, sapere cosa sta succedendo nel sistema controllando l'utilizzo della CPU e della memoria, ed eseguire attività di base e avanzate.

7) Microsoft Excel

Excel è uno degli strumenti principali per programmatori, sviluppatori di software, project manager, commercianti e uomini d'affari. È molto più di un semplice software per fogli di calcolo. Fornisce molte caratteristiche e funzioni utili per eseguire sofisticate analisi dei dati.

Ho usato Excel per tenere traccia dei progressi, riconciliare i dati, analisi dei dati, controlli di qualità dei dati e per la pianificazione dei progetti.

Ha molti usi ed è per questo che esorto ogni programmatore a imparare Excel in profondità. Invece di limitarsi a copiare e incollare i dati, dovresti conoscere le funzioni di base come la ricerca, l'ordinamento, il filtraggio e VLOOKUP per confrontare le cose.

8) Linguaggi di programmazione

Come programmatore, devi conoscere un linguaggio di programmazione: C++ o Java, o forse Python o JavaScript. Puoi scegliere quello che vuoi, ma il mio suggerimento personale è che dovresti conoscere almeno Java.

È molto facile iniziare e per questo è una buona scelta per i principianti. È anche immensamente potente e permette di fare virtualmente qualsiasi cosa.

Ha librerie per fare cose di base come lo sviluppo web a compiti più complessi con Big Data e così via.

9) Fondamenti di Networking

Oggi il mondo è interconnesso e ovunque andiate, troverete reti di computer, a partire da casa vostra, dove state usando il Wi-Fi su molti dispositivi, fino a scuole, college e uffici che usano la Local Area Network (LAN) fino a Internet.

La maggior parte delle applicazioni che scriverete non saranno standalone ma applicazioni di tipo client-server dove la richiesta andrà attraverso la rete a un server. I clienti accederanno alla vostra applicazione da qualsiasi parte del mondo.

La linea di fondo è che dovete capire le basi della rete per capire, sviluppare e supportare la vostra applicazione. Se volete saperne di più, vi suggerisco di iscrivervi al corso The Complete Networking Fundamentals su Udemy. È un buon punto di partenza per i principianti.

10) Linguaggi di scripting

Nel punto #8 ti ho chiesto di imparare un linguaggio di programmazione, e ora ti sto chiedendo di imparare un linguaggio di scripting? Perché? Lo stesso linguaggio di programmazione non può essere usato come linguaggio di scripting?

Bene, ci sono certamente alcuni linguaggi che sono buoni sia per la codifica OOP che per lo scripting come Python, ed è per questo che ti ho chiesto di imparare almeno quello. Ma se ti capita di imparare il C/C++ o Java allora non puoi tirare fuori qualcosa così velocemente come può fare uno sviluppatore Python o Perl.