Qual è il futuro dell’ingegneria del software?

Ciao! Lasciatemi iniziare dicendo che non posso sapere quale sarà il futuro. Ma, come CEO di una rete di sviluppatori di software, parte del mio lavoro è identificare le tendenze in crescita nel settore. Posso quindi assicurarmi di avere le competenze nella nostra rete di sviluppatori per tenere il passo con la domanda. In altre parole: Penso spesso a questo genere di cose!

Quindi mi sento qualificato nel discutere quali competenze dovreste imparare per rendere la vostra carriera nell'ingegneria del software a prova di futuro.

Prima di esaminare queste tendenze, lasciatemi parlare rapidamente delle principali lingue che appariranno in questa risposta. Mentre c'è un naturale flusso e riflusso delle lingue (alcune svaniranno e altre appariranno). Capire cosa è di tendenza è la chiave se si vuole pensare a lungo termine.

Le vecchie competenze, come HTML e CSS, non stanno andando via presto, ma stanno diventando mercificate. Ci sono molti sviluppatori là fuori che possono fare un buon lavoro scrivendo HTML. Quindi, anche se c'è poca possibilità che diventi defunto da un giorno all'altro, la concorrenza ha fatto scendere i prezzi.

Alla Scalable Path, lavoriamo con migliaia di sviluppatori, e i ruoli più difficili da riempire sono spesso per tecnologie nuove e di tendenza, perché spesso ci sono poche persone con queste competenze e ancora meno che possono dimostrare di avere esperienza commerciale in esse. Quindi è questa carenza che fa salire il prezzo di queste competenze.

Abbiamo sempre assunto sviluppatori con conoscenza di questo linguaggio. Credo che la sua quota di mercato aumenterà sicuramente nella prossima metà del decennio. C'è così tanto slancio qui che anche se la marea cambia, i sistemi legacy significano che JavaScript sarà ancora dominante tra cinque anni.

I framework basati su JavaScript sono anche, logicamente, molto popolari. Avere esperienza in uno di questi potrebbe raddoppiare la vostra tariffa oraria. Eppure molti sviluppatori sono preoccupati di spendere tempo per imparare un nuovo framework nel caso in cui non sia ampiamente adottato a livello commerciale. Mentre c'è un rischio qui - Ember, per esempio, sembra essere caduto in disgrazia - il tuo tempo è tutt'altro che sprecato. I framework tendono ad evolversi iterativamente e impararne uno nuovo non è un impegno drastico.

Python è decisamente in crescita e lo è stato per anni. È un linguaggio popolare per l'apprendimento automatico, AI e IoT. Ha preso il posto di R come linguaggio principale per la ricerca scientifica qualche anno fa e sta andando di bene in meglio. Grazie alla sua flessibilità e velocità, mi aspetto che diventi uno dei linguaggi in più rapida crescita nei prossimi anni. Una delle aree in cui Python viene usato è l'Internet delle cose. Quindi diamo un'occhiata veloce a questo.

Essere fluenti in Python e JavaScript vi preparerà per quasi tutte le tendenze che discuterò di seguito. Ma quando ci sarà bisogno di un altro linguaggio lo menzionerò.

Guardiamo alcune delle tendenze che saranno alimentate dagli ingegneri del software:

L'intelligenza artificiale: AI sta diventando un termine generico (come lo è stato "algoritmo" negli ultimi anni), ma l'uso eccessivo (e spesso impreciso) del termine non significa che il suo impatto non sia reale! Sto anche raggruppando l'apprendimento automatico sotto questa voce, in quanto è semplicemente un modo di realizzare l'AI.

L'intelligenza artificiale continuerà ad alimentare a goccia a goccia tutto ciò che facciamo. Un'area che mi affascina è il modo in cui è probabile che diventi abbastanza brava da poter "parlare" di un'idea di design vagamente definita a uno strumento UI, ed esso genererà le schermate finte progettate da quelle richieste.

Cosa si dovrebbe imparare per sviluppare AI:

  • Python
  • R
  • Lisp
  • Prolog
  • Java

Realtà aumentata: Parlando dello spazio UX/UI, questo è stato effettivamente statico per molto tempo. Dalla rivoluzione dei touchscreen in realtà. Il prossimo futuro dovrebbe essere affascinante per i designer di interfacce utente, dato che l'AR sta navigando con successo nel passaggio dalla fantascienza alla realtà. Questo sta accadendo in parte perché i costi stanno scendendo. Il che è generalmente un segno che siamo vicini ad un'ampia adozione. È probabile che vedremo il mobile adottare l'AR sempre di più - le due cose si intrecciano così naturalmente. Questo è il motivo per cui vedo l'AR diventare più popolare davanti alla VR (vedi la prossima sezione) - gli utenti finali non hanno bisogno di nuove tecnologie. Questo e sia Apple che Google hanno rilasciato i loro sviluppatori AR.

Cosa si dovrebbe imparare per sviluppare AR:

  • ARCore framework con Java
  • ARKit Framework con Swift o Objective-C

VR: Mentre non stiamo ancora vedendo molti progetti VR, è, senza dubbio, un settore affascinante. Se prende piede tra il grande pubblico, questa tecnologia potrebbe guidare alcuni cambiamenti selvaggiamente innovativi nella nostra vita quotidiana. Prevedere tali cambiamenti è irto di difficoltà, naturalmente. Come l'AR, non possiamo immaginare dove ci porterà, né sappiamo se/come maturerà. Quello che sappiamo è che inizierà con le cuffie. Ora più leggere nel peso e più basse nel costo (meno di 200 dollari), le cuffie hanno un prezzo per diventare mainstream. Con l'ipotesi che non subiscano lo stesso destino dei Google Glass, potremmo essere solo a pochi anni di distanza da cambiamenti sociali simili a quelli portati dall'iPhone/app store.

Cosa dovresti imparare per sviluppare VR:

  • JavaScript
  • Java
  • C++
  • C#

IoT sta solo iniziando a entrare nel linguaggio comune. Mira a creare una rete di dispositivi connessi, dai portachiavi agli elettrodomestici, che raccolgono e analizzano i dati in modo da comportarsi in modo più intelligente. Nest è un esempio comune di un dispositivo IoT. Il roll-out è stato più lento del previsto a causa di problemi con la commercializzazione dei dati IoT. Ma quando questi ostacoli saranno superati, mi aspetto di vedere la tecnologia usata in molti modi simili a Jetsons. For example:

  • Doors that recognize you and unock
  • Fridges that order your favorite food before you run out, or encourage you to eat healthier.
  • Gardens that water themselves
  • Devices that won’t let you forget them

The 1st gen devices like Alexa are going to evolve and become ubiquitous. But they will certainly extend beyond the home into:

  • Cars
  • Cities and Public Spaces
  • Healthcare

It’s definitely a growing sector. We don’t see many IoT projects yet. I think this is because a lot of it is sitting within Google and Amazon and there is little startup work out there.

What you should learn to develop AoT:

  • Python
  • JavaScript

Blockchain: Whether or not you buy into the long-term blockchain and crypto space, there is no denying it is a huge and growing sector. You just need to look at the $100 million VC’s just pumped into CoinBase to know there are a lot more developer roles in this area. Questo è, senza dubbio, lo spazio in più rapida crescita per noi.

Cosa dovresti imparare per sviluppare sulla Blockchain:

  • Python
  • C++
  • JavaScript
  • Solidity

Non tutti i cambiamenti saranno visibili come AR e VR però. Molta della 'magia' avverrà dietro le quinte.

Big Data: Non è tutto Python e JavaScript. Un'altra carenza di competenze riguarda gli sviluppatori Hadoop. Ancora una volta questo è dovuto al rapido aumento della domanda. Il che a sua volta indica che giocherà un ruolo importante nei prossimi anni. È strettamente legato all'aumento delle tendenze di analisi dei grandi dati. Le aziende vorranno analizzare di più e analizzare più velocemente. Quindi queste tendenze continueranno a crescere, dato che praticamente tutto ciò di cui sto discutendo in questa risposta sta cercando di raccogliere e analizzare i dati per vendere meglio i propri beni e servizi.

Sviluppatori quantistici: Anche se affascinante, è improbabile che lo sviluppo nel mondo dell'informatica quantistica si traduca in molti ruoli per "sviluppatori di algoritmi quantistici" nel breve termine. Detto questo, sia Google che IBM credono di raggiungere la pietra miliare della "supremazia quantistica" quest'anno. Questo è il punto in cui un computer quantistico elabora un algoritmo che un computer tradizionale non potrebbe fare nell'arco di una vita umana. Quanto tempo ci vorrà per colmare il divario tra questo risultato e la piena correzione degli errori è ancora molto incerto.

Spero che questa risposta vi aiuti a vedere le tendenze nell'ingegneria del software, che è una grande guida per seguire il cambiamento evolutivo nell'industria.