Informatica VS Ingegneria del software: quale major è meglio per te?

Ciao a tutti! Mi chiamo YK e attualmente gestisco CS Dojo, un canale YouTube per l'educazione alla programmazione con oltre 200.000 abbonati. In precedenza ero anche uno sviluppatore di software presso Google.

Due delle domande più comuni che il mio pubblico mi fa sono:

"Qual è la differenza tra le major di informatica e ingegneria del software?"

E…

"Devo scegliere Informatica o Ingegneria del software se voglio diventare un ingegnere del software?"

In questo articolo, risponderò a questa domanda e ti fornirò la mia rapida analisi su queste major.

Una rapida panoramica di queste due major

  • L'informatica è lo studio del funzionamento dei computer, principalmente dal punto di vista teorico e matematico.
  • Dovresti scegliere Informatica se ti piacciono la matematica, la logica o se vuoi entrare in un campo specializzato in CS come l'intelligenza artificiale, l'apprendimento automatico, la sicurezza o la grafica.
  • L'ingegneria del software è lo studio di come vengono costruiti i sistemi software, inclusi argomenti come la gestione del progetto, la garanzia della qualità e il test del software.
  • Dovresti scegliere Ingegneria del software se sei più interessato all'approccio pratico e se vuoi conoscere il ciclo di vita complessivo di come il software viene costruito e mantenuto.
  • Sia l'informatica che l'ingegneria del software insegnano i fondamenti della programmazione e dell'informatica, quindi puoi scegliere uno dei due per diventare uno sviluppatore di software.

Per comprendere la differenza tra le major di informatica e ingegneria del software, diamo un'occhiata al loro rispettivo curriculum presso l'Università di Waterloo in Canada.

Ho scelto l'Università di Waterloo per questo perché ha uno dei migliori programmi di informatica del Nord America.

Prospettive di lavoro

Confrontiamo prima i tipi di lavoro e stage che puoi ottenere attraverso ciascun programma.

Per fortuna, il sito web dell'Università di Waterloo fornisce diversi esempi.

Per ogni major, ecco alcuni dei titoli che gli alumni hanno e dove lavorano:

Informatica

  • Web Developer / Architect, The Steele Group
  • Programmatore, Harry Rosen Inc.
  • Sviluppatore mobile / cloud, Clearbridge Associates Limited
  • Ingegneria del software, General Dynamics Canada
  • Ingegneria dello sviluppo software, Microsoft
  • Ingegnere Agile, Pivotal Labs
  • Analista aziendale, Canadian Tire Corporation
  • Developer Advocate, Google
  • Product Manager, Dropbox

Ingegneria software

  • Sviluppatore di software, Tagged Inc
  • Sviluppatore software, IBM Canada
  • Software Manager, Arius Software Corporation
  • Ingegnere del software, VistaPrint USA
  • Ingegnere del software, Harris Corporation
  • Sviluppatore software, Accenture Inc.
  • Technical Product Manager - Progettazione e sviluppo software, NexJ Systems Inc
  • Consulente, PureFacts Financial Solutions
  • Consulente per l'implementazione, Desire2Learn

Come puoi vedere, non c'è un'enorme differenza tra i tipi di lavoro che puoi ottenere.

Il lavoro più comune che i laureati ottengono dopo aver conseguito la laurea in Informatica o Ingegneria del software è Software Developer o Software Engineer.

Ci sono anche altre opzioni correlate, come Product Manager, QA Analyst e Technology Consultant. Le tue opzioni dipenderanno dalle tue abilità specifiche.

Corsi del primo anno:

Diamo ora un'occhiata ai corsi richiesti da ogni programma. Confrontiamo prima alcuni dei corsi che dovresti seguire nel tuo primo anno.

Informatica

  • CS 135 - Progettazione di programmi funzionali
  • CS 136 - Progettazione di algoritmi e astrazione dei dati
  • MATEMATICA 135 - Algebra
  • MATEMATICA 136 - Algebra lineare 1
  • MATEMATICA 137 - Calcolo 1
  • MATEMATICA 138 - Calcolo 2
  • Più alcuni elettivi

Ingegneria software

  • CS 137 - Principi di programmazione
  • CS 138 - Astrazione e implementazione dei dati
  • MATEMATICA 115 - Algebra lineare per l'ingegneria
  • MATEMATICA 117 - Calcolo 1 per l'ingegneria
  • MATEMATICA 119 - Calcolo 2 per l'ingegneria
  • MATEMATICA 135 - Algebra per la matematica con lode
  • ECE 105 - Fisica dell'ingegneria elettrica 1
  • ECE 106 - Elettricità e magnetismo
  • ECE 124 - Circuiti e sistemi digitali
  • ECE 140 - Circuiti lineari
  • SE 101 - Metodi di ingegneria del software

Come puoi vedere, anche i corsi del primo anno sono abbastanza simili. Entrambi coprono alcuni corsi fondamentali di informatica e alcuni corsi di matematica in algebra lineare e calcolo.

L'unica grande differenza è che l'ingegneria del software ha componenti aggiuntivi per la fisica e l'ingegneria elettrica, mentre l'informatica ha alcuni altri elettivi.

Corsi dopo il primo anno:

E i corsi obbligatori ed opzionali dopo il primo anno? Diamo un'occhiata a diversi esempi qui:

Informatica:

  • MATEMATICA 239 Introduzione alla Combinatoria
  • STAT 230 Probabilità
  • STAT 231 Statistiche
  • CS 240 Strutture dati e gestione dei dati
  • CS 241 Fondamenti di programmi sequenziali
  • Logica e calcolo CS 245
  • CS 246 Sviluppo software orientato agli oggetti <- non richiesto per le major di ingegneria del software
  • Organizzazione e progettazione del computer CS 251
  • Algoritmi CS 341
  • Sistemi operativi CS 350
  • Inoltre, diversi elettivi di informatica

Ingegneria software:

  • CHE 102 Chimica per ingegneri
  • Computer digitali ECE 222 (include linguaggio assembly)
  • Reti di computer ECE 358
  • MATH 213 Matematica avanzata per ingegneri del software
  • MATEMATICA 239 Introduzione alla Combinatoria
  • STAT 206 Statistiche per l'ingegneria del software
  • MSCI 261 Engineering Economics: Financial Management for Engineers
  • CS 241 Fondamenti di programmi sequenziali
  • CS 240 Strutture dati e gestione dei dati
  • Principi di ingegneria del software CS 247 <- non richiesto per le major di informatica
  • Algoritmi CS 341
  • Interfacce utente CS 349 <- non richiesto per le major di informatica
  • CS 343 Programmazione simultanea e parallela <- non richiesta per le major in informatica
  • CS 348 Introduzione alla gestione del database
  • SE 212 Logica e calcolo
  • Sistemi operativi SE 350
  • SE 465 Test del software e garanzia della qualità
  • SE 464 Progettazione software e architetture
  • SE 463 Specifiche e analisi dei requisiti software
  • Progetto SE 490 Design
  • Inoltre, alcuni elettivi di informatica e ingegneria elettrica

Ti ho dato molte informazioni da digerire qui. Ma ecco il mio riassunto:

Quando si tratta di requisiti in matematica e statistica, informatica e ingegneria del software sono quasi identici. Coprono calcolo combinatorio, probabilità e statistica.

Anche i requisiti fondamentali dell'informatica sono simili, spaziando su algoritmi, strutture di dati e sistemi operativi.

La differenza fondamentale è che:

  • L'ingegneria del software ha più requisiti in ingegneria elettrica e fondamenti di ingegneria del software, come test del software, progettazione e specifica dei requisiti software.
  • L'informatica consente più elettivi nei corsi di informatica di livello superiore. Puoi scegliere tra un'ampia gamma di argomenti come sicurezza, fondamenti di ingegneria del software, visione artificiale, apprendimento automatico e gestione di database.

Quindi, quale maggiore dovresti scegliere?

Penso che dipenda principalmente dalle tue preferenze. In breve:

  • Dovresti scegliere Informatica se ti piacciono la matematica, la logica o se vuoi entrare in un campo specializzato in CS come l'intelligenza artificiale, l'apprendimento automatico, la sicurezza o la grafica.
  • Dovresti scegliere Ingegneria del software se sei più interessato all'approccio pratico e se vuoi conoscere il ciclo di vita complessivo di come il software viene costruito e mantenuto.

Ma aspetta, qual è allora? Quale importante è meglio se vuoi essere un ingegnere del software?

Ecco la mia opinione. In questa particolare università (University of Waterloo), con questo particolare insieme di requisiti del programma, Computer Science è una specializzazione migliore se vuoi essere un ingegnere del software.

Solo per semplicità, supponiamo che tu stia sperando di ottenere uno dei lavori più remunerativi (~ $ 100.000 USD / anno) come ingegnere del software in Nord America. Questi lavori sono in genere presso grandi società di software (si pensi a Microsoft, Google, Amazon, ecc.) O in aziende di medie dimensioni e ad alta crescita (si pensi a Dropbox, Lyft, Snapchat, Pinterest, ecc.).

In genere, ciò che cercano in un candidato ingegnere del software è la capacità di scrivere codice solido e costruire progetti interessanti, così come i fondamenti dell'informatica tra cui strutture di dati e algoritmi.

Penso che il modo migliore per coltivare questo set di abilità sia imparare rapidamente i fondamenti dell'informatica e dedicare il proprio tempo alla risoluzione di problemi e alla scrittura di codice.

Sulla base del curriculum per Ingegneria del software e in base a quanto gli studenti di ingegneria tendono ad essere impegnati in generale, penso che sarebbe più difficile farlo con Ingegneria del software che con Informatica.

Un altro vantaggio di questo particolare programma di informatica è che consente più elettivi di informatica. Anche questo è fantastico perché a seconda di ciò che è richiesto nel mercato del lavoro, sarai in grado di adattare i tuoi corsi. Ad esempio, se lo sviluppo di app per dispositivi mobili è richiesto, puoi scoprirlo. E se il calcolo parallelo è richiesto, puoi invece concentrarti su quello.

Sono sicuro che ci sono alcuni vantaggi nell'apprendimento dei fondamenti dell'ingegneria del software (gestione del progetto, progettazione, test, ecc.). Ma personalmente preferirei la flessibilità su un insieme predefinito di abilità. Ecco perché penso che l'Informatica sia una specializzazione migliore per diventare un ingegnere del software con questo particolare curriculum.

Ovviamente questa è solo la mia opinione, e questa è solo un'università in particolare. Mi piacerebbe conoscere la tua opinione e come è stata la tua esperienza se ti sei laureato in Informatica o Ingegneria del software. Per favore fatemelo sapere in un commento qui sotto.

Alcune note

Nota 1: università diverse hanno requisiti diversi per queste due major. Questo articolo dovrebbe essere un buon punto di partenza, ma dovresti comunque dare un'occhiata ai requisiti del programma dell'università che ti interessa frequentare.

Nota 2: alcune università non hanno nemmeno una specializzazione in Ingegneria del software. Ad esempio, l'Università della British Columbia a Vancouver ha una laurea in informatica e ingegneria informatica, ma non in ingegneria del software. Ma hanno una concentrazione di ingegneria del software all'interno del loro programma di informatica, così come in ingegneria informatica.

Se l'università a cui sei interessato non ha una specializzazione in Ingegneria del software, andrei con Computer Science se vuoi diventare uno sviluppatore di software. L'ingegneria informatica è più focalizzata sull'hardware rispetto all'informatica o all'ingegneria del software, quindi è meno direttamente correlata al lavoro di uno sviluppatore di software tipico.

Ed ecco le principali fonti che ho usato:

  • Informatica a Waterloo
  • Software Engineering presso Waterloo

Grazie per la lettura e in bocca al lupo per aver scelto un'università e il tuo maggiore! ?