Ci saranno troppi ingegneri del software nel (prossimo) futuro?

Prima di tutto, una risposta autorevole ad una domanda come questa è quasi sempre impossibile. Potremmo parlare di tendenze nel settore, potremmo parlare di proiezioni di crescita futura, ecc. Tuttavia, prevedere il futuro senza errori rimane un'abilità sfuggente (che sarebbe la migliore abilità da avere, in realtà). Tuttavia, potremmo costruire un'ipotesi educata.

1 - Ci saranno troppi medici? Ci saranno troppi avvocati (ci sono già?) Ci saranno troppi professori di letteratura americana? Sono le stesse domande, in realtà. La differenza è che le barriere all'entrata sono percepite come più alte in queste professioni. Non ci sono vie tortuose per diventare un medico o un avvocato o per acquisire un dottorato di ricerca. Quindi, sembra che il numero di scuole e di istituzioni che forniscono lauree costituisca una vera e propria barriera al sovraffollamento. Confrontate questo con l'ingegneria del software, o con i campi legati all'IT in generale. La gente ora pensa che qualsiasi adolescente con un po' di tenacia possa unirsi a un campo di addestramento alla codifica e diventare immediatamente ingegneri del software. La barriera percepita per entrare è molto più bassa nel mondo digitale. Ma questo è per lo più un fantasma. Lasciami provare a spiegare perché.

2 - Immagina che gli ospedali possano assumere medici auto-formati. Immaginate che ci siano campi di addestramento alla medicina che insegnino "Come fare diagnosi in 6 settimane". Pensi che non staremmo parlando di "ci saranno troppi medici? Questo cambierebbe davvero l'industria o costringerebbe solo gli ospedali e le cliniche a impiegare una procedura di controllo più rigorosa? Alla fine il mercato separerebbe i buoni medici dai cattivi medici. Perché alla fine un medico che conosce abbastanza la biologia, l'anatomia, l'epidemiologia, si comporterà molto meglio di un medico 'boot camp' la cui abilità primaria è navigare su WebMD e memorizzare i farmaci che corrispondono alle diagnosi su un sistema automatizzato.

3 - La distinzione che sto cercando di illustrare qui è che l'ingegneria del software è più della codifica, anche la programmazione. L'abilità di codifica è uno strumento, un facilitatore usato dall'ingegnere. L'abilità critica necessaria per diventare un ingegnere del software di successo è il pensiero analitico. Senza il pensiero analitico non è possibile tradurre i problemi del mondo reale in problemi computazionali. E questa traduzione è la parte fondamentale per diventare un ingegnere del software di successo. Non viviamo nel mondo isolato del silicio. Tutto quello che facciamo è essenzialmente tradurre un problema analogico e in carne ed ossa (quale pagina mostrare ad un cliente dopo, quali risposte mostrare agli utenti di Quora, ecc. La conoscenza dei linguaggi di programmazione e la codifica sono solo strumenti che usiamo in questo processo.

4 -La meccanica della codifica non è così difficile. Infatti è molto più facile che imparare una nuova lingua (molte meno eccezioni e sfumature. Provate a imparare a parlare francese, o arabo, o coreano in un mese). Questa è la parte più facile dell'ingegneria del software e chiunque possa finire la scuola superiore può impararla. Le parti più difficili, l'intuizione del dominio (hai una buona conoscenza dei bisogni specifici o peculiari del dominio di business in cui stai lavorando?), il pensiero algoritmico (questo non è l'equivalente di memorizzare gli algoritmi più usati), e soprattutto il pensiero analitico sono molto più difficili da insegnare. La conoscenza del dominio viene con l'esperienza, ma si tratta soprattutto di mostrare un interesse genuino nel campo. I fondamenti del pensiero algoritmico e del ragionamento analitico possono essere appresi da esperti, ma alla fine è determinato dalla tua capacità intellettuale. Si può allenare, si può affinare, e non importa quanto duramente si lavora si può non diventare il top class in queste abilità. E anche i migliori con il più alto potenziale intellettuale hanno bisogno di praticare e allenarsi molto duramente per utilizzare queste abilità in modo magistrale. Così, i veri risolutori di problemi rimarranno una merce scarsa nonostante una pletora di classi di codifica, campi di avvio alla codifica, accademie online ecc.