Dipende da cosa si intende per ingegnere del software. La migliore risorsa per l'ingegneria del software che ho trovato è l'esperienza. Portate con voi un momento. La maggior parte delle risposte qui sembrano riguardare la programmazione, e ci sono davvero molte risorse eccellenti sulla programmazione (con molti buoni esempi nelle risposte qui). Ho sempre sentito che il problema si suddivide in tre categorie:
- Programmazione. Scegliete un linguaggio ragionevole per il tipo di problemi che vi piace affrontare oggi. Imparatelo bene. Molta pratica. Tanta lettura del codice di altri esperti rispettati. Scrivete ancora un po'. Aggiungete un linguaggio se necessario o se vi interessa.
- Algoritmi, strutture dati, linguaggi comparativi, e il corpo di conoscenze generalmente indicato come informatica. Questo è ciò che eleva il gioco dal risolvere problemi nel piccolo, al risolvere grandi problemi, risolvendoli efficacemente (non solo efficientemente), e comprendendo i limiti delle soluzioni in modo da poterle spiegare.
- "L'ingegneria del software" è per me una cosa diversa dalle due idee precedenti. È il processo con cui il software viene consegnato ai "clienti". È una consegna coerente, ripetibile e affidabile della soluzione. È capire che una GUI è bella per costruire soluzioni iniziali di proof-of-concepts/prototipo sul tuo desktop, ma insufficiente per consegnare in "produzione". È la comprensione della pipeline di consegna ad ogni passo, e perché ogni passo è fatto. È tutta l'automazione e la disciplina. Senza disciplina, il software non scala. Devo ancora vedere un corso su questo, perché per la maggior parte è una formazione sul lavoro. E molti posti sbagliano. Gli errori sono costosi.
Forse la migliore metafora che posso darvi è la cucina. Puoi imparare a cucinare per te stesso abbastanza velocemente. Puoi diventare bravo in una manciata di ricette e la pratica ti rende veloce. Se si arriva a cucinare un pasto sofisticato per amici e familiari, si esce un po' dalla propria zona di comfort, forse si ha bisogno di nuove abilità, nuovi strumenti, nuove ricette. Prendete un corso o due e potrete migliorare drasticamente il vostro gioco, e i corsi spaziano da quelli serali al college locale a Le Cordon Bleu. Poi c'è il passo al "ristorante" che cambia tutto. Ora si tratta di consegnare in modo affidabile e ripetibile il cibo a persone con delle aspettative. Ci si rifornisce, ci si suddivide in lotti, si pre-stampa, si prepara e ci si attrezza in modo diverso. L'"industrializzazione" del processo è "ingegneria". E ora fai parte di una squadra. E c'è un cliente. Non importa se sei un chiosco di tacos o un ristorante stellato Michelin, è diverso. Nessuna quantità di lavoro in classe ti prepara completamente per tutto l'apprendimento sul lavoro.
E puoi iniziare a imparare tutte e tre le cose insieme. Basta capire su quale delle tre abilità si sta lavorando, e non dimenticare le altre due abilità. Le prime due tendono a venire con la pratica, ma l'ultima viene con l'esperienza.