La migliore risposta
La vera risposta è “Dipende!”. Dipende da quale slice ti interessa di più: Front-end, Full-stack, Backend, Data-science, ecc. Le basi di tutto ciò possono essere astratte come di seguito:
- Scegli il tuo preferito linguaggio di programmazione. E impara ogni concetto di quel linguaggio esercitandoti a usarlo in qualche problema di codice o in un altro. Ciò getterà una buona base per lapprendimento di un altro linguaggio di programmazione, anche se il suo paradigma è completamente diverso. Per apprezzare A dovresti avere un gusto per B, perché in un certo senso tutto è relativo. Inizieresti a confrontare le lingue in base a come risolve alcuni problemi.
- Fai Code Katas. Prova a risolvere lo stesso problema in modi diversi. Pensa ai diversi approcci che hai provato. Fallo per ogni altro kata di codice che fai. Aiuta!
- Fai un mini-progetto per risolvere qualche problema. Rivisitalo dopo un po di tempo e vedi se puoi aggiungere funzionalità. Molto probabilmente dovresti abusare di te stesso per il pessimo lavoro che hai fatto. Questa è una buona realizzazione. Pensa ai tuoi errori, pensa a qual è il modo migliore che hai preso. Impara dai tuoi errori. Questa è la vera esperienza. Lesperienza non è nel numero, ma in ciò che impari mentre lavori.
- Scegli un mini-progetto o codice libreria da Github e leggi il codice per vedere come viene risolto qualche problema. Leggere e pensare attraverso altri codici aiuta.
- Leggi libri, blog, ecc.
- Inizia a scrivere i tuoi pensieri tramite i blog. Aiuta sicuramente il tuo apprendimento.
- Partecipa a meetup e conferenze, per conoscere ciò che sta accadendo intorno. Potrebbe indurre il tuo apprendimento. Dopotutto, tutti abbiamo bisogno di una dose di motivazione e di uno scopo indotto di volta in volta.
- Prova a condividere le tue conoscenze in incontri e conferenze. Funziona magicamente su di te, sul serio.
Suggerimento speciale: ho già detto, lungo la strada, che probabilmente incontrerai molti burloni che perderebbero la tua energia e il tuo tempo, scoraggiandoti dal ciò che fai. Imparare a differenziare i critici dai burloni è un enorme risparmio di vita.
Questo è quello che ho fatto dallinizio della mia carriera e continuo a farlo anche oggi.
Risposta
Dipende da cosa intendi per ingegnere del software. La migliore risorsa per lingegneria del software che ho trovato è lesperienza. Abbi pazienza un momento. La maggior parte delle risposte qui sembra riguardare la programmazione, e ci sono davvero molte risorse eccellenti sulla programmazione (con molti buoni esempi nelle risposte qui). Ho sempre pensato che il problema si suddividesse in tre categorie:
- Programmazione. Scegli un linguaggio ragionevole per il tipo di problemi che ti piace affrontare oggi. Imparalo bene. Molta pratica. Molta lettura del codice di altri esperti rispettati. Scrivine ancora. Aggiungi una lingua in base alle necessità o alle esigenze.
- Algoritmi, strutture di dati, linguaggi comparativi e il corpo di conoscenza generalmente indicato come informatica. Questo è ciò che solleva il gioco dalla risoluzione di problemi piccoli, alla risoluzione di problemi grandi, risolvendoli in modo efficace (non solo efficiente) e comprendendo i limiti delle soluzioni in modo da poterli spiegare.
- “Ingegneria del software “È una cosa diversa per me rispetto alle due idee precedenti. È il processo mediante il quale il software viene fornito ai “clienti”. È una consegna affidabile e ripetibile costante della soluzione. È chiaro che una GUI è utile per creare soluzioni di prototipi / prove di concetti iniziali sul desktop, ma insufficiente per la consegna in “produzione”. È la comprensione della pipeline di pubblicazione in ogni passaggio e il motivo per cui ogni passaggio viene eseguito. È tutta lautomazione e la disciplina. Senza disciplina, il software non scala. Devo ancora vedere un corso su questo, perché per la maggior parte si tratta di formazione sul lavoro. E molti posti lo sbagliano. Gli errori sono costosi.
Forse la migliore metafora che posso darti è cucinare. Puoi imparare a cucinare da solo abbastanza velocemente. Puoi diventare bravo con una manciata di ricette e la pratica ti rende veloce. Passa a cucinare un pasto elaborato per amici e familiari e esci un po dalla tua zona di comfort, forse avendo bisogno di nuove abilità, nuovi strumenti, nuove ricette. Prendi una o due lezioni e puoi migliorare notevolmente il tuo gioco, e le lezioni spaziano da tutto, dalle lezioni serali al college locale a Le Cordon Bleu. Poi cè il passaggio al “ristorante” che cambia tutto. Ora si tratta della consegna ripetibile e affidabile di cibo a persone con aspettative. Approvvigionate, raggruppate, preparate, preparate e lavorate in modo diverso. L “industrializzazione” del processo è “ingegneria”. E ora fai parte di una squadra. E cè un cliente. Non importa se sei o meno un chiosco di taco o un ristorante stellato Michelin, è diverso. Nessuna quantità di lavoro in classe ti prepara completamente per tutto lapprendimento sul posto di lavoro.
E puoi iniziare a imparare tutti e tre in una volta. Devi solo capire su quale dei tre set di abilità stai lavorando e non dimenticare gli altri due set di abilità. I primi due tendono a venire con la pratica, ma il secondo con lesperienza.