Perché una laurea in informatica è importante per un programmatore professionista? [chiuso]


63

Ho una laurea in informatica. È stato fantastico aprire porte, trovare lavoro. Per quanto mi aiuti nel campo professionale della programmazione C #. NET (la piattaforma e il linguaggio più popolari nell'area in cui lavoro, se non tutti gli Stati Uniti con le mani sul sistema operativo più popolare al mondo) non è molto utile. Perché pensi che ti aiuti come programmatore nella tua carriera professionale (fuori dagli algoritmi di prims per impressionare alcuni intervistatori)?

Nell'adattamento mondiale di oggi, una mente veloce, una forte comunicazione, OO e abilità di progettazione fondamentali consentono a uno sviluppatore di scrivere software che un cliente accetterà. Queste abilità vengono scremate solo nel programma CS. Nella mia mente, leggere un libro C # di 500 pagine di Wrox offre un set di competenze molto più utilizzabile rispetto a 4 anni dei corsi di scienze matematiche comp sci. Molti non sono d'accordo. Quindi, perché conta una laurea in informatica?


59
"L'informatica non riguarda più i computer di quanto l'astronomia riguardi i telescopi". - Edsger Dijkstra
Eric Lippert,

4
La memorizzazione non è sufficiente. Ci vuole educazione per sapere come usare Reg Ex e l'esperienza per sapere quando usarlo. Includerei la lettura di libri come parte dell'educazione. L'esperienza lavorativa raramente ti incoraggia a fare le cose nel modo giusto.
Zachary Scott,

10
Importa quando non ne hai uno
Aditya P

2
Ho avuto anche un 2,8, abbastanza nella media. Ma ci hanno insegnato principalmente C / Java e alcune cose web, niente C #. Comunque penso che CS sia la "prossima cosa migliore", perché i programmi CS 4 anni non sono esattamente facili e dimostra che puoi lavorare sodo per ottenere la laurea. Perché importa comunque? ti dà il lavoro!

1
@ luis.espinal Metto in dubbio quelle statistiche. Dubito che il 70% di tutto il codice sia in C (pensa a tutti i silenziosi Fortran, COBOL, PL1 e Rexx che ticchettano felici). Una pluralità, certamente, ma una grande maggioranza, sono scettico. Esistono molti dispositivi incorporati, ma il numero di dispositivi incorporati non dice nulla sulla fonte originale. Una volta che è scritto per il primo dispositivo specifico, è generalmente buono per tutti i dispositivi successivi dello stesso; e presumibilmente, molto viene riutilizzato per derivati ​​stretti, sia nella stessa linea di una revisione successiva, sia in una linea diversa dalla stessa famiglia di prodotti.
Giustino,

Risposte:


133

Perché una laurea in informatica ?:

  • Ho lavorato con uno sviluppatore che ha archiviato migliaia di elementi in una HashTable e poi ha solo ripetuto i valori. Non ha mai avuto accesso tramite un hash. Ovviamente non sapeva come funzionasse una HashTable o perché ne avresti usata una - una laurea in CS potrebbe aiutarti.
  • Quando si lavora con espressioni regolari, sembra più facile per le persone che sono esposte alla teoria degli automi di base e ai linguaggi formali ragionare su ciò che sta succedendo e risolvere i problemi delle loro espressioni - una laurea in CS potrebbe aiutare in questo.
  • Uno sviluppatore appena uscito dalla scuola potrebbe essere in grado di scomporre immediatamente i problemi in varie mentalità di paradigma (OO, funzionale, logico), mentre un nuovo sviluppatore non laureato ha bisogno di esperienza prima di poter fare lo stesso.
  • Le scuole insegnano la complessità computazionale. Gli sviluppatori non laureati possono sentire ciò che è meglio, ma a volte una comprensione formale è piacevole, specialmente quando si spiegano i risultati a un collega.
  • Una laurea offre un'introduzione a molti modelli della macchina: hardware, sistema operativo, strutture dati comuni, rete, macchine virtuali. Con questi modelli nella parte posteriore della tua mente, è più facile sviluppare un sospetto in cui un problema vive quando qualcosa va storto. Ancora una volta, gli sviluppatori non laureati costruiscono gli stessi modelli ma ci vuole tempo.
  • La guida di esperti attraverso qualsiasi disciplina può aiutare lo studente a evitare vicoli ciechi e argomenti persi. Leggere è fantastico ma non può sostituire un grande insegnante.

Questo non vuol dire che è necessario un diploma CS per essere un grande sviluppatore. Quasi. Alcuni dei migliori sviluppatori con cui ho lavorato non hanno alcun titolo. Una laurea ti dà un inizio di corsa. Quando ti laurei, hai (si spera) scritto una buona quantità di codice in varie lingue e ambienti per risolvere molti tipi di problemi. Questo ti mette sulla buona strada per le 10.000 ore richieste per essere un esperto.

Un secondo vantaggio è che mostra ai datori di lavoro che sei in grado di impegnarti in un obiettivo a lungo termine e di riuscire. In molte aziende, credo che sia più importante di quello che hai imparato.


4
+1 - Questo ha senso. La guida di esperti probabilmente mi ha aiutato in modi che non riconosco. Mi chiedo ancora se 4 anni di istruzione generale superano 4 anni di esperienza nel settore, supponendo che entrambi gli sviluppatori siano ugualmente motivati ​​ad apprendere. C'è un certo livello di disciplina che sento di non avere prima della laurea, che sicuramente conta qualcosa.
P.Brian.Mackey,

4
Imparare la terminologia corretta e passare molto tempo con altre persone imparando lo stesso materiale sono anche vantaggi che accompagnano quel costoso pezzo di carta.
sal

65
D'altra parte, ho visto persone con una laurea che ancora falliscono nella maggior parte di questa lista :)
Joel Gauvreau

1
Accidenti potrebbero aver sentito parlare anche della teoria dei grafi. Ciò potrebbe rendere un po 'più semplice il partizionamento di applicazioni in client e server, reti, DAG e alberi.
Tim Williscroft,

3
@JustinC - La tua affermazione "i titolari di titoli di studio tendono a difenderli per qualsiasi motivo perché li hanno" è uno dei motivi fondamentali per cui ho posto la domanda. Ho visto in prima persona questa cieca difesa irrazionale. È vero anche il contrario.
P.Brian.Mackey,

87

Tra 40 anni, mi aspetto che .NET e C # non siano altro che una grave pila di codice legacy su sistemi operativi obsoleti.

Ma i concetti fondamentali dell'informatica saranno altrettanto vivaci come quando Shannon, von Neumann, Knuth, Dijkstra, Hoare e gli altri li hanno scavati fuori dalla logica formale e dalla matematica ... oltre 40 anni fa.


28
+1 - molto vero, ma tra 40 anni non me ne frega niente.
P.Brian.Mackey,

3
@ P.Brian.Mackey: Immagino che tra 10 anni C # sarà in viaggio, e tra 20, sarà più un ricordo, e tra 30 anni, richiederà archeologi di vecchio codice dai capelli grigi . Le persone che si legano a un determinato set di strumenti si nascondono. Ho avuto la fortuna di leggere vecchi documenti sul software di sistema tra la fine degli anni '70 e l'inizio degli anni '80. Di questi sistemi software, pochissimi sono nel radar di oggi. Forse 1 o 2 (Unix e Lisp). Sebbene la base di installazione di oggi sia più ampia, mi aspetto che accada qualcosa di simile.
Paul Nathan,

4
@ P.Brian.Mackey Di 'quello che vuoi, ma ho intenzione di continuare a calciare tra 40 e 80 anni anche se avrò voce in capitolo.
Matthew Scharley,

2
@Paul Nathan: Per approfondire il tuo punto, alcune delle basi fondamentali della programmazione provengono dagli anni '30 (ad esempio, en.wikipedia.org/wiki/Church%E2%80%93Turing_thesis ). Mi chiedo se / come scriveremo il codice tra 80 anni :)
phooji

3
@phooji (carica "legacy-c-sharp-routines" ...): P
Segna C

37

Uso quasi tutto il CS che ho studiato a scuola (*) ogni singolo giorno nel mio lavoro. Se vuoi lavorare nella progettazione del linguaggio di programmazione, nell'ottimizzazione dei motori di ricerca, nell'analisi quantistica o in qualsiasi campo simile, suppongo che potresti farlo senza una laurea pertinente, ma sembra che ci siano moltissime cose da imparare sul lavoro. Non sono particolarmente istruito vista la mia linea di lavoro; molti dei miei colleghi hanno dottorati in informatica e molti di loro sono stati professori di CS.

Ottenere la mia laurea ne è valsa la pena per me; ha pagato per sé molte, molte volte sia in dollari che in soddisfazione.

Detto questo, capisco perfettamente il tuo punto. La maggior parte delle persone che programmano i computer hanno lavori che non richiedono una laurea in CS; richiedono, per esempio, un solido background a livello di comunità universitaria nella programmazione pratica e tenere il passo con le attuali tendenze del settore. E va bene. Non hai bisogno di una laurea in biologia marina per gestire un negozio di acquari di successo e penso che i negozi di acquari siano fantastici. Ma è terribilmente difficile trovare lavoro a Woods Hole se tutto quello che sai fare è allevare pesci rossi.


(*) Ho una laurea in matematica applicata e informatica presso Waterloo.


4
Ricordo che uno dei miei professori di CS disse qualcosa secondo cui solo il 2% di voi avrebbe effettivamente trovato un lavoro in cui affrontare i principi dell'informatica su base regolare .
terra rossa

15
@el fusore: effettivamente; ora, una domanda interessante che è forse fondamentale per questa discussione è lo scopo dell'istruzione superiore semplicemente quello di allenarsi per un determinato lavoro? Non credo che lo sia. Le università non sono scuole professionali; la loro funzione è quella di creare conoscenza attraverso la ricerca ed esporre gli studenti a quell'universo di conoscenza. Il fatto che ciò possa dare agli studenti capacità di lavoro mi sembra un effetto collaterale piuttosto che un obiettivo. A Waterloo ci è stato esplicitamente detto che ci avrebbero insegnato la teoria, non la pratica.
Eric Lippert,

1
La creazione di ricerche originali in un ambiente collegiale, tuttavia, in generale e indipendentemente dal programma, avviene raramente prima di superare il periodo di formazione chiamato programma di laurea. La ricerca avviene prima, ma generalmente lo studio di materiale veramente nuovo è riservato a coloro che seguono un master o un programma di dottorato. In altre parole, sei spesso allontanato dalla scoperta, ma verso un rafforzamento di ciò che è già noto. La ricerca universitaria riguarda più il processo di ricerca che la crescita di un particolare corpus di conoscenze. La ricerca privata ha un obiettivo diverso.
Giustino,

1
Il giorno in cui i migliori lavori non richiedono più una laurea è il giorno in cui le università non hanno più gli studenti a sostenere i loro programmi.
P.Brian.Mackey il

quanto spesso usa Anders;)
Matthew Whited,

22

È importante perché la tecnologia non rimane statica. L'informatica è la base di tutta la tecnologia digitale. La maggior parte dei programmatori autodidatti dura esattamente un ciclo tecnologico perché manca i fondamenti per sopravvivere a un grande cambiamento di paradigma. Certo, ci sono eccezioni alla regola, ma una solida base nell'informatica aumenta notevolmente le probabilità di sopravvivere a un grande cambiamento di paradigma.


4
Non sapevo cosa fosse un po 'twiddler fino a quando non ho letto Coders At Work . Immagino che tu sia sopravvissuto a un cambio di paradigma o due e parli per esperienza. :)
Dave Neeley,

3
Non sono d'accordo. È facile accedere alle risorse che insegnano i concetti fondamentali online (ed è gratificante ottenere la capacità di trovarli da soli). Ad esempio, Academearearth.org/subjects/computer-science è un buon punto di partenza. Informazioni dettagliate sui nuovi modelli architettonici sono disponibili gratuitamente per lo studio, consultare chromium.org/developers/design-documents/… . Spesso, i materiali online disponibili gratuitamente sono molto meglio e più aggiornati di quanto ci si aspetterebbe da un college locale.
Evan Plaice,

13
Penso che tu l'abbia esattamente indietro. Un programmatore non ha mai finito di imparare. I programmatori autodidatti hanno dimostrato la loro capacità di acquisire conoscenze senza la necessità di impostazione formale, scadenze imposte esternamente, ecc. Che è esattamente ciò di cui si ha bisogno per sopravvivere ai cambiamenti del mercato.
Fango

2
(cont) Se stai parlando del cambio di paradigma del software ... Quale cambio di paradigma? OOP non è esattamente nuovo, né la programmazione funzionale. I database sono in circolazione da molto tempo. I numeri in virgola mobile sono stati standardizzati dal 1985 (IEEE 754). L'unico grande cambiamento che vedo è il passaggio a sistemi di elaborazione distributiva (sistemi enormemente collegati in rete che si espandono rispetto a su e programmi che sfruttano molte piattaforme hardware di base) e il passaggio a un set di caratteri internazionali standardizzato (UTF-8); entrambi non sono veramente coperti in compsci.
Evan Plaice,

2
@Mud ed Evan: immagino che ti sia sfuggita la parte "Certo, ci sono delle eccezioni per governare" del mio post. Presumo che entrambi siete giovani e liberi. Quella dinamica cambierà con l'età. Sono stato nel campo per oltre trenta anni. Ho visto molti programmatori autodidatti esplodere dopo che lo stress di crescere una famiglia è entrato in scena e la quantità di tempo che uno deve imparare i fondamenti sui propri approcci zero. Mi piacerebbe avere questa stessa conversazione quando entrambi raggiungerete i 40 anni.
Bit-twiddler,

14

Dipende da cosa vuoi fare. Se il tuo obiettivo è principalmente quello di programmare software aziendali in generale, in cui il problema aziendale e i problemi di gestione della complessità pratica sono la parte difficile, allora sì, una laurea in CS non aiuterà molto. Se, tuttavia, il tuo obiettivo è programmare cose in cui la difficoltà principale è dal punto di vista tecnico, allora un grado CS è più utile. (Anche se non ho una laurea in CS, quindi mi sento un grande ipocrita nel dirlo, quindi sentiti libero di aggiungere "o autoapprendimento nelle materie CS".)

Sono sicuro che ci sono molti programmatori là fuori che sono bravi a gestire la complessità, a programmare in generale e a risolvere i problemi aziendali comuni, ma sarebbero assolutamente persi se si chiedesse loro di scrivere un allocatore di memoria, una libreria di parallelismo o un libreria di raccolte, o un sistema operativo, o un compilatore, ecc. Sono sicuro che esiste anche l'opposto in misura decente. Entrambi hanno il loro posto e meritano rispetto, ma una laurea in CS aiuta molto di più dal punto di vista tecnico.


Perché? CS si occupa di risolvere i problemi complessi, qualunque sia la natura di un problema. CS dovrebbe essere utile anche se non stai programmando nulla - è un discendente di una cibernetica dimenticata ma ancora essenziale.
SK-logic

12

Non credo che una laurea in CS sia un indicatore assoluto che una persona sia un buon sviluppatore di software. In effetti, ho iniziato la mia carriera come programmatore con una laurea in matematica, ma con una forte propensione per la CS (matematica e CS erano integrate nel mio programma di studio). Penso che ci siano due ragioni per cui è importante, nel complesso.

1 - Perché gli ingegneri non sono il front-end per il reclutamento

Le persone delle risorse umane lo sono. E mentre immagino molte persone che alzano gli occhi, dico "meno male!" Cosa c'è di più importante: lasciare che gli ingegneri facciano cose (o rompano cose) o che le facciano smistare migliaia di curriculum e fare migliaia di interviste?

Pertanto, abbiamo risorse umane e risorse umane che selezionano i candidati fino a quando non arriviamo a un gruppo chiave che può essere selezionato dagli ingegneri. Le persone delle risorse umane hanno imparato nel tempo che avere una laurea in CS è un indicatore piuttosto forte del fatto che il candidato sappia qualcosa sullo sviluppo di software. Speriamo anche che sappiano che scrivere software per 20 anni è un buon indicatore del fatto che il candidato può scrivere software.

2 - Perché avere una sorta di sistema sull'apprendimento di CS è meglio di niente

CS è un campo enorme con molte cose da sapere. E sta cambiando continuamente. In questi giorni, posso tranquillamente affermare che il 75% dei corsi nei miei studi universitari è diventato irrilevante per la mia carriera. E che i corsi del mio maestro di 5 anni fa si stanno rapidamente deprezzando. Ma quando ho iniziato, ero contento di aver pagato una grande istituzione per insegnarmi qualcosa sull'organizzazione dei computer, le reti, il buon processo di ingegneria del software, la progettazione orientata agli oggetti, i compilatori e la sintassi / semantica di un importante linguaggio di programmazione che era attualmente commercializzabile.

E sono stato contento che fosse in un ambiente in cui qualcuno mi è stato pagato per spiegarmi le cose quando il progetto libro / sito Web / giro non era innegabilmente ovvio.

Ed ero contento di avere accesso a un laboratorio in cui la salute del computer e la SDE non erano il mio problema: potevo più o meno bloccare e concentrarmi su una piccola parte del problema piuttosto che dover anche riparare tutti gli strumenti necessari per risolvere il problema.

E mentre i corsi non hanno insegnato esplicitamente una buona comunicazione, penso che l'unico modo in cui puoi davvero imparare sia lavorando in team - che è una parte importante di molte istituzioni leader che offrono diplomi CS.

E un programma con feedback frequenti (es. Voti ed esami) che mi ha fatto sapere se ho davvero capito cosa mi era stato insegnato.

Queste cose si combinano nella mia mente per valere più di qualsiasi libro sull'argomento, ma non è certo l'essere tutto, fine a tutto. Ci sono certamente cose che non mi dispiacerebbe vedere migliorare le istituzioni di istruzione superiore e penso che circa 10 anni dopo la laurea, il grado che hai ricevuto in origine è meno importante del lavoro svolto da allora.


12

Per me, il motivo è che so che hanno seguito alcuni percorsi difficili e non si sono arresi. Alcuni corsi come Compilatori, Data Struct, Discrete Math (e altri) tendevano a eliminare molte persone dai programmi CS. Avere una laurea in CS significa che hai lavorato sodo e pagato un prezzo (lunghe notti per far funzionare i programmi), piuttosto che uscire per divertimento.


+1 - lol, non posso discutere molto con questo. Tuttavia, ho adorato la matematica discreta. Aveva un grande professore che ha fatto molte impressioni su Yoda.
P.Brian.Mackey,

10

Per me è una questione di mentalità .

La tua mentalità definisce come affrontare un determinato problema e ti consente di considerare una gamma più ampia di opportunità rispetto a quelle non istruite nei concetti.

Un esempio tipico è il problema "Venditore ambulante" in cui sai che 1) è NP-completo per la versione generale, quindi devi provare tutte le possibilità tranne 2) che se sai di più sul problema puoi approssimare all'interno di un certo limite o dire che sai che AC è sempre più lungo di AB + BC (che è vero per le distanze ma non per i prezzi) permettendoti di risolverlo in meno tempo.

Un altro esempio è l'analisi numerica, in cui è necessario sapere che per ridurre al minimo l'inaccuratezza numerica è necessario avvicinarsi ai calcoli in modo diverso dal modo matematicamente semplice. Ciò richiede conoscenze teoriche ed è improbabile che vengano raccolte sulla strada a meno che tu non ne sia stato esplicitamente morso.


9

Veramente? Wow.

Quindi mi stai dicendo che le abilità C # e OOP sono sufficienti e puoi escogitare il tuo algoritmo per l'ordinamento randomizzato e decifrare le sfumature più sottili di come affrontare i problemi completi NP nella vita reale?

C # e OOP vanno bene, ma se stai cercando di fare qualsiasi cosa che sia un progetto logico non banale, allora hai bisogno dei fondamenti dell'informatica in atto.

Amico, non saprai nemmeno quale contenitore C # usare se le tue strutture di dati o competenze di algoritmi non sono all'altezza.

Cresciamo, ora.


23
Facile, tigre.
whatsisname

23
"elaborare il proprio algoritmo per l'ordinamento randomizzato e decifrare le sfumature più sottili di come affrontare i problemi NP completi nella vita reale" ya non posso sottolineare abbastanza quanto del mio lavoro quotidiano nella vita reale è costituito da queste attività ... / sarcasmo
quentin-starin

4
Quello che sto dicendo è che il 95% delle persone con cui lavoro e con cui ho lavorato in passato trascorre quasi 0 tempo a elaborare algoritmi. Trascorro la maggior parte del mio tempo a rendere il codice più conciso e di facile lettura. Si dedica pochissimo tempo a "sfumature più sottili". In effetti, troverei interessante passare un po 'di tempo almeno a sistemare un flusso di lavoro su una lavagna ... qualcosa che ho fatto solo io. Discuti regolarmente NP completo con i tuoi colleghi? In quale linea di lavoro ti trovi dove devi scrivere ordinamenti personalizzati invece di implementare linguaggi di programmazione funzionali?
P.Brian.Mackey,

3
@ P.Brian.Mackey: lo sviluppo del software è una vera e propria professione. Quanti sviluppatori software lavorano per la tua organizzazione di età superiore ai 50 anni? Man mano che uno sviluppatore di software invecchia, una laurea in CS può fare la differenza tra avere un lavoro ed essere disoccupato. Mentre attualmente sono laureato e laureato in informatica, ho ricevuto la mia formazione iniziale in questo campo dalle scuole tecniche navali e DoD alla fine degli anni settanta. Tutti i ragazzi con cui ho prestato servizio che non si sono preoccupati di completare una laurea in CS dopo aver lasciato i militari non sono più sul campo.
bit-twiddler

7
Perché tutti sembrano accettare ciecamente il presupposto che è necessario un curriculum formale CS universitario per avere qualche conoscenza dei concetti CS? Forse è un fallimento del loro ragionamento deduttivo. Immagino che abbiano bisogno di più corsi CS.
Quentin-starin,

6

Suppongo che non ti sei davvero coinvolto troppo con la laurea, hai semplicemente preso quello che ti serviva e sei uscito, o sei andato in una scuola che guardava le major CS come "programmatori" e non "programmatori". Inoltre, alcune delle mie lezioni "CS" migliori / preferite sono quelle che - almeno nella mia Università - sono sotto il dipartimento di ingegneria elettrica. La mia esposizione a varie architetture e stili è stata sempre così importante e la mia laurea lo ha facilitato in un ambiente "controllato".

Classi che non sono solo algoritmi e lanugine carini:

  • I compilatori
  • Sistemi operativi
  • VHDL / Sistemi integrati
  • Assemblaggio e microcontroller
  • Ingegneria software

E infine una classe che mi ha spazzato via che era solo algoritmi e strutture di dati: l'intelligenza artificiale. Ci sono cose che passare attraverso il sistema universitario accelererà notevolmente nel processo di apprendimento e considererei ciò che è stato appreso prezioso per la ricerca di lavoro in un secondo momento.


Qual è la tua definizione di "programmatore" e "programmatore"? Per me, questi possono essere gli stessi e sono in contrasto con "informatico".
Segna C

Il programmatore scrive solo il codice, non necessariamente pensa a diversi paradigmi di progettazione o processi di pensiero che sono applicabili per rendere il codice migliore. I programmatori in realtà pensano al codice che scrivono e si avvicinano da una prospettiva dall'alto verso il basso anziché dalla prima prospettiva dal basso verso l'alto.
Jeff Langemeier,

Qual è la tua definizione di "codice scimmia" e "programmatore"? Il programmatore può pensare a modi per risolvere il problema che il denaro in codice non può ...
Coyote21

La passione non viene premiata da una laurea. Fa solo parte di chi sei.
P.Brian.Mackey,

@ P.Brian A volte capita proprio così che la tua passione assegni una laurea, ed è ulteriormente stimolata dal conseguimento di tale laurea.
Jeff Langemeier,

4

La mia opinione è che, a meno che non si stia candidando per posizioni "Informatica", qualsiasi grado che implichi un focus sulle competenze informatiche è praticamente equivalente.

In effetti, molti dei programmatori che conosco si sono laureati in una disciplina completamente diversa. I migliori programmatori che conosco hanno una laurea in ingegneria civile, linguistica, economia e finanza.

Alla fine, una volta che hai esperienza, la tua laurea diventa un test pass-fail per un recruiter. Cioè, a meno che tu non l'abbia ottenuto da una scuola impressionante o un diploma post-laurea, non importa molto quale fosse il tuo maggiore.


Uno dei migliori programmatori è un economista che lavora esclusivamente in Excel / VBA e R. Ha fatto cose straordinarie in Excel.
sal

@sal Scrivere cose in Excel e R non richiede un diploma CS. Scrivere Excel o R molto probabilmente lo farebbe.
Alnitak,

@alnitak - Scrivere Excel o R non richiede neanche un diploma CS. Questo è un po 'il punto della mia risposta e di quella di
Sal

@JohnFX: Mi sono laureato con il massimo dei voti in latino in uno dei venti migliori programmi CS negli Stati Uniti, e quella credenziale da sola mi fa passare la porta (tengo anche un MSCS di un'altra scuola rispettabile). Ho iniziato sul campo come arruolato operatore di computer e programmatore appena uscito dal liceo. Ho ricevuto la mia formazione iniziale sui sistemi informatici e lo sviluppo software dalla Marina degli Stati Uniti e dalla National Security Agency; quindi, ho lavorato sul campo senza un BSCS per un certo numero di anni. Tutto quello che posso dire è che era letteralmente come i cieli separati quando ho completato il mio BSCS.
bit-twiddler,

@ bit-twiddler - è pensato per supportare o confutare la mia risposta? Sembra che supporti la mia ultima affermazione che conta se hai un diploma post-laurea o un grande nome di scuola superiore.
JohnFx

4

per me e molti dei miei colleghi non ha (nessuno di noi ha avuto lauree CS)



3

Ho una laurea in informatica. È stato fantastico aprire porte, trovare lavoro. Per quanto mi aiuti nel campo professionale della programmazione C #. NET (la piattaforma e il linguaggio più popolari nell'area in cui lavoro, se non tutti gli Stati Uniti con le mani sul sistema operativo più popolare al mondo ) non è molto utile.

Il 70% + di codice è scritto in C (poiché ci sono più dispositivi integrati rispetto alle applicazioni di alto livello). Secondo ricerche di lavoro popolari come i dadi o l'indice TIOBE, Java è il linguaggio di programmazione più popolare per l'azienda (in quanto vi sono più server back-end Unix / Linux rispetto ai server Windows). Ci sono più smartphone e tablet (la piattaforma informatica di il futuro) con alcune varianti di Linux o Mac OS rispetto a Windows, programmate su qualsiasi cosa tranne C # o .NET.

Guarda il tuo router a casa, guarda il tuo cellulare, guarda il computer dentro la tua auto, guarda il microonde eccentrico a casa, i controller all'interno del tuo sistema A / C domestico, dentro il tuo telefono e il tuo fax di lavoro e stampante / scanner. Guarda il numero di apparecchi computerizzati (che superano in numero i sistemi Windows.)

Pensi che siano programmati in C #?

Se credi davvero che .NET o C # siano le piattaforme più popolari al mondo, potresti voler tornare alla tua scuola CS e chiedere un rimborso.

Perché pensi che ti aiuti come programmatore nella tua carriera professionale (fuori dagli algoritmi di prims per impressionare alcuni intervistatori)?

Forse perché nella programmazione c'è molto di più che fare pagine Web dinamiche con sviluppo di base e applicazioni aziendali? Per questo non hai nemmeno bisogno di una laurea, basta un AA - lo so perché ho iniziato la mia carriera di programmatore con un diploma AA e lentamente ma sicuramente ho lavorato per un CS e poi ho lavorato attraverso la scuola di specializzazione mentre lavoravo a tempo pieno come sviluppatore .

C'è sviluppo incorporato, c'è sviluppo di driver di dispositivo, c'è sviluppo di sistemi operativi, c'è sviluppo di algoritmi, segnali, comunicazioni, protocolli di rete, sviluppo di motori di database, sviluppo di filesystem, elaborazione distribuita, compilatori. Non ricerca, ma lavoro effettivo in organizzazioni a scopo di lucro. Escludendo il talento naturale, in genere non si può hackerarlo in nessuno di questi campi industriali senza un livello CS (a volte nemmeno con un grado BS).

Una persona che ottiene una laurea in CS e presta attenzione ad esso lo sa. Come mai non lo fai?

Nell'adattamento mondiale di oggi, una mente veloce, una forte comunicazione, OO e abilità di progettazione fondamentali consentono a uno sviluppatore di scrivere software che un cliente accetterà.

OO è nato a causa di CS. E la maggior parte delle persone che pensano di fare OO non possono nemmeno fare un buon lavoro. Basta guardare fuori e guardare lo stato scadente del software (in particolare in Java e .NET, per non parlare di PHP.) Un solido background CS (o una laurea in una sorta di ingegneria) non garantisce una buona comprensione del 100% di OO e capacità analitiche, ma in genere aiuta. OTH, non avere un background CS di base è in genere una bandiera rossa quando si tratta di OO e abilità analitiche. Abbiamo abbastanza prove empiriche nel settore per sostenere questa affermazione.

Queste abilità vengono scremate solo nel programma CS.

A seconda del programma CS e in base allo studente. Almeno per me, ho visto molti buoni corsi di progettazione, analisi OO, strumenti e pratiche commerciali, abbiamo tenuto corsi congiunti con aziende e stage locali, progetti e ricerche finanziati dalle aziende, scrittura tecnica, tu lo chiami. Spiacenti, non posso mettere in relazione o comprendere questa affermazione.

Nella mia mente, leggere un libro C # di 500 pagine di Wrox offre un set di competenze molto più utilizzabile rispetto a 4 anni dei corsi di scienze matematiche comp sci.

Ancora una volta, a seconda del lavoro che fai. Anche nell'azienda, ho usato il mio CS per sistemare le cose o migliorare. Tutto ciò che coinvolge modellazione, architettura, elaborazione distribuita, sicurezza e alte prestazioni, elevata disponibilità e tolleranza agli errori. Ho imparato tutta quella roba in CS.

Non c'è niente di sbagliato con l'utilizzo di un libro Wrox per ottenere un contesto specifico , specifici per la tecnologia set di abilità. Lo faccio anch'io. Ma il mio background CS mi dà il contesto su cui lavorare. Senza il mio background CS, tutto ciò che sarei in grado di fare sarebbe programmare, programmare (che è tutto ciò che potrei fare quando avessi un diploma AA solo all'inizio della mia carriera.)

Molti non sono d'accordo.

Sorprendente, non lo è.

Quindi, perché conta una laurea in informatica?

Chi pensi che crei motori di database google, hadoop, cassandra o ad alte prestazioni? Chi pensi che scriva il kernel del sistema operativo Windows? Chi pensi programma gli amati strumenti che usi per fare il tuo sviluppo C #.

Una cosa di cui sono sicuro è che gli strumenti che usi per fare lo sviluppo di C #, dietro c'è un ragazzo CS.

Se hai bisogno di una laurea in CS o meno dipende dal tipo di lavoro che svolgi, dal tipo di lavoro che desideri svolgere, dal tipo di lavoro che sei in grado di svolgere.

C'è molto lavoro nell'impresa e nello sviluppo web che non richiede una laurea in CS. Lo concedo. So anche che il mondo della programmazione è molto più ampio di quei soli due campi, con molti campi (molti dei quali in realtà) che richiedono un grado CS o più.

Hai una laurea in CS, come non sai che è un mistero.


TIOBE è una schifezza per determinare quanto viene usato un linguaggio di programmazione. È una misura della popolarità di una determinata lingua su Internet (in termini di numero di riferimenti), non in termini di righe di codice scritte.
Billy ONeal,

A causa della sua variabilità specifica del linguaggio, i LOC sono irrilevanti in tutti i linguaggi di programmazione e pertanto non possono essere utilizzati per misurare l'utilizzo del linguaggio di programmazione in tutti i settori. E la popolarità delle ricerche linguistiche su Internet funge da proxy parziale per la profondità e l'interesse dell'uso (o mancanza di ciò) ... se si è consapevoli dell'inevitabile pregiudizio. Di per sé, ** l'indice TIOBE non significa nulla - solo un pazzo potrebbe pensare diversamente; e solo uno sciocco potrebbe pensare che quello che sto affermando.
luis.espinal

Se assunto in aggiunta ad altri indicatori (come ricerche di lavoro e sviluppo del tipo di prodotto), aiuta a stimare le tendenze nell'uso della tecnologia. In altre parole, è utile o inutile a seconda di cosa lo usi, come lo usi e con quali altri indicatori si combina.
luis.espinal

Il mio punto è che sembra che tu stia usando quell'indice per fare una dichiarazione sull'uso di un linguaggio di programmazione, che non è ciò che quell'indice misura. Ho sbagliato a dire quando ho detto LoC scritto - ma non c'è un buon modo di dire "quantità di codice scritto" che è ciò che intendevo dire. TIOBE è un concorso di popolarità, e in quella gara Java spazzerà via tutti gli altri fintanto che sarà la linqua franca dei corsi di programmazione introduttiva. (Non perché ciò significhi che gli studenti non sanno nient'altro; ma perché gli studenti sono di solito più rumorosi dei professionisti. (Vale a dire i tuoi veramente)
Billy ONeal

1

Ci sono alcune nozioni di base che ricordo di aver visto nei miei corsi CS che sono state abbastanza utili a volte. Il processo Waterfall e i suoi passaggi sono stati qualcosa che ho usato ripetutamente nella mia carriera con alcune variazioni per Agile in cui non è altrettanto rigido nei passaggi ma gli stessi passaggi ci sono.

Talvolta possono essere utili anche le capacità di problem solving e varie euristiche algoritmiche. C'è qualcosa da dire per i benefici indiretti di un grado CS. Ad esempio, imparare a giustificare una risposta per dimostrare perché qualcosa è corretto è solo una delle poche competenze che ho affinato all'università, ma non sono sicuro di quanto sia ovvio che questo sarebbe un vantaggio alla fine del programma.


1

Concordo con Thorbjørn Ravn Andersen riguardo alla mentalità. Questa è la cosa principale che sviluppi con un buon curriculum CS.

Fondamentalmente si tratta di capire cose come strutture di dati e algoritmi. Non che non puoi impararlo da solo, ma un buon curriculum CS fornirà una migliore esposizione.


Ci sono altre materie che solo CS e specialisti in ingegneria informatica tendono ad apprendere come l'organizzazione dei computer e l'architettura dei computer. Imparare a costruire computer dalla logica sequenziale e combinatoria rende uno sviluppatore di software migliore perché fornisce una visione di ciò che sta realmente accadendo all'interno di un computer. Inoltre, i primi programmatori a lavorare con un nuovo processore devono comprendere concetti quali memoria e I / O gerarchici, pipeline, cache associative a blocchi di blocchi, unità di controllo (microcodificate e cablate) e la differenza tra elaborazione scalare e vettoriale.
twiddler

In che modo lo studio collegiale di CS fornirà una migliore esposizione rispetto a un laboratorio in cui conta davvero con un mentore qualificato che sa non solo come dovrebbe funzionare e come funziona effettivamente?
Giustino, il

@bit concordato. Sì, la mia risposta è piuttosto disinvolta. Doveva essere così per un motivo.
George Marian,

@justin Non sono abbastanza sicuro di quello che stai cercando di dire. Quanti programmatori lavorano in un laboratorio, figuriamoci con tutor qualificati?
George Marian,

@JustinC: si impara come funzionano le cose in un laboratorio (livello tecnico). Si impara perché le cose funzionano nei corsi di architettura e organizzazione informatica di livello superiore (livello tecnico). Se acquisti un paio di libri di testo universitari di livello superiore sull'architettura e l'organizzazione dei computer, vedrai cosa intendo.
bit-twiddler,

1

scrittura

Nello sviluppo del software aziendale, è fondamentale poter scrivere codice e scrivere . Con questo intendo dire: scrivere e-mail, segnalazioni di bug, documenti tecnici, ecc. Sia la scrittura che la codifica richiedono la chiarezza del pensiero e l'economia dell'espressione appropriata.

Tra 2 sviluppatori di software, la mia scommessa è che quello con una laurea in CS da una solida università (un forte programma CS e requisiti elettivi nelle discipline umanistiche) ha entrambe le competenze. (È vero, questa non è una garanzia: le persone delle discipline umanistiche possono essere grandi programmatori e scrittori di alto livello; molti laureati in CS sono macchine di codifica che non possono scrivere, e così via.)

Lettura

Un mio mentore ha affermato di poter giudicare gli sviluppatori in base a ciò che leggono. Il post originale menziona i libri WROX. Secondo me, qualcuno con una laurea in CS è più propenso a cercare tali libri IT professionali ed essere in grado di usarli in modo efficace. Se uno può gestire CLR , allora può gestire "Professional C #".

Matematica

La matematica sviluppa logica, prove, rigore, ecc. E l'effetto collaterale è che aiuta la scrittura. Sebbene la maggior parte dell'IT aziendale non richieda abilità matematiche intense, la persona con una laurea in CS la avrà quando necessario. Questo è un modo molto migliore per vivere la vita piuttosto che vivere senza di essa e chiedersi cosa ti sei perso a scuola.


1

Immagino che dipenda davvero dalla qualità del programma CS che hai passato. So cosa intendi, la maggior parte del codice che scrivo su base giornaliera è solo VB.Net standard, recupera i dati da SQL Server, inseriscili nel modulo, salvali nel database, crea dei report. Lavare, risciacquare, ripetere. (Molto noioso a volte) Il programma CS che ho seguito, oltre a coprire la teoria e le conoscenze fondamentali, ha insegnato molte cose pratiche. Abbiamo coperto aree come la progettazione di software, la progettazione di database e la gestione di progetti. L'apprendimento dei linguaggi di programmazione è stata la parte facile, il design e la metodologia di creazione di sistemi software sono stati ciò che ho tolto dalla mia esperienza universitaria. Ci hanno dato progetti basati sul problema del mondo reale, a volte persino progettando sistemi software per altri dipartimenti del campus.

Come programmatori abbiamo ovviamente la capacità di apprendere da soli, è una necessità nel nostro campo. Devo dire che sono molto contento di aver seguito il programma CS. I miei professori sono stati fantastici e mi hanno insegnato un bel po '. I miei compagni di classe erano persone molto divertenti e ci siamo divertiti molto nel laboratorio informatico. A dire il vero, un po 'mi mancano quei giorni ......


1

È tutto nella capacità di vivere per procura.

Se salti la laurea, probabilmente dovrai imparare le lezioni in un modo molto personale (noto anche come difficile). La mancanza di una laurea non significa che prenderai la strada più difficile dell'apprendimento attraverso prove ed errori; tuttavia, il grado ti garantisce l'esposizione a una cassa del tesoro di conoscenze precedentemente acquisite che altri dovevano guadagnare a tarda notte, frustrate sessioni di programmazione e in generale "farlo nel modo più duro".

La persona veramente eccellente non scarterà ciò che gli altri hanno scoperto essere vero, ma invece lo sfiderà fino a quando non conosceranno i limiti della conoscenza, quindi giocherà con il "sistema" di idee appena acquisite fino a quando non lo realizzeranno. È in piedi sulle spalle di coloro che sono venuti prima e vive le soluzioni degli anni passati senza doverle riscoprire.

Naturalmente, una persona con una laurea in informatica non è sempre il candidato migliore. Ci sono quegli individui unici che sono stati condotti al flusso ma (per qualche strana ragione) si rifiutano di berne.


0

Sono un 21enne che ha appena finito un corso di laurea in CS. Sento che per quanto tu sia bravo nella programmazione, se sei un laureato in CS, sarai già esposto a vari campi. Quindi, se vuoi imparare cose nuove, non aver paura di esplorare anche se è irrilevante . Se sei un esperto in una tecnologia o un linguaggio di programmazione, bene. Ma non penso che sarai avventuroso e disposto a esaminare altre tecnologie. Ecco come ti sporchi (e anche veloce). Non rimuginerai che ciò che esplori sarà irrilevante poiché non ti aiuterà a guadagnare denaro. (Hai già studiato molte cose irrilevanti nel tuo CS UG;)).
È la passione in CS che hai dopo la laurea che ti rende un professionista del software.
Qualcuno è d'accordo?


1
Non puoi dare per scontato che qualcuno non sia interessato a "esaminare altre tecnologie" solo perché non ha una laurea in CS. Questo è un errore.
Steven Striga,

0

Beh, quando sono entrato in CS, ho pensato che wow, sono davvero bravo come sono e non ho intenzione di imparare nulla qui ... Dopo 5 anni, ho imparato a lavorare solo come una squadra, e alcune cose dall'ingegneria che mi separa da qualcuno che può scrivere solo codice e da qualcuno che può pensare a quello che fa prima di scrivere un codice, in breve, mi ha insegnato a pensare prima ancora di scrivere una sola lettera nel mio editor di testo o ide.


0

Per ottenere un lavoro usando un linguaggio open source non significa squat. La maggior parte delle aziende recluta in base all'abilità piuttosto che alle qualifiche e alle lingue come PHP hanno una reputazione di hobbista che menziona il fatto che le persone possono avere talento senza aver mai studiato CS. L'unica volta che ti aiuta se stai ottenendo un lavoro usando i linguaggi .Net poiché la maggior parte degli hobbisti non vorrà sborsare migliaia per una licenza solo per fare casino nei fine settimana, quindi qualcuno che cerca un primo lavoro in C # probabilmente avrà solo 2-3 anni di esperienza.

Naturalmente l'esperienza commerciale è davvero preziosa in quanto dimostra la tua capacità di fornire un codice di qualità alle scadenze.

In conclusione, ti dà interviste per lavorare con lingue non di provenienza aperta.


0

Una laurea presso il Collegue o l'Università, significa che hai studiato e hai una certa conoscenza della CS, alcune cose di base necessarie per un lavoro nel mondo reale, anche se devi imparare altre cose da solo.

Inoltre, quando un recruiter IT deve trovare un Soft. Dev. E 500 candidati inviano il loro curriculum e devono intervistarne almeno 50, avendo una laurea sul tuo curriculum, aiuta sia il reclutatore, sia le tue possibilità di essere assunto.

(da uno sviluppatore di software che ha studiato alcuni HHRR)


0

Probabilmente questo non aiuta molto, ma ora che ho imparato l'assemblaggio e tutte le conoscenze coinvolte, mi sento un programmatore più completo e sono sicuro che succederà di nuovo quando andrò all'università. Voglio dire, uso principalmente C o VB, non ho bisogno di sapere che cosa è uno stato di attesa per fare i miei programmi, ma so semplicemente che cosa sta succedendo dietro il mio codice è fantastico! E la conoscenza ti aiuta a scrivere codice migliore, più veloce e più gestibile. A mio avviso, una laurea in informatica fornisce esattamente le conoscenze necessarie per scrivere un ottimo codice.


0

l'ingegneria del software oggi è una scienza sperimentale non matematica applicata.

Lauree informatiche enfatizzano gli algoritmi, quanto del tuo lavoro quotidiano comporta l'implementazione o persino l'uso di nuovi algoritmi e strutture di dati?

Quanto comporta affrontare strati di quadri e le astrazioni che perdono? Quanto sta cercando di determinare cosa fa effettivamente qualche API - piuttosto che cosa implicano i documenti? Quanto costa testare e decidere come testare?

Per tutto ciò che una laurea in fisica o chimica è un allenamento molto migliore rispetto alla memorizzazione di Knuth


0

È importante perché i recruiter hanno un indicatore del fatto che non sei completamente all'oscuro di ciò che dovresti fare, ma non implica necessariamente che tu sappia davvero cosa stai facendo o che lo stai facendo in un modo tecnicamente conveniente.

Ci sono persone brillanti con lauree che adorano ciò che stanno facendo e sono davvero bravi programmatori e ci sono anche idioti con lauree che sono davvero cattivi programmatori e non conoscono nemmeno alcuni fondamenti. Ci sono persone brillanti senza lauree che possono sviluppare qualsiasi cosa (software aziendale / compilatori / un sistema operativo) e ci sono idioti senza lauree che non sanno usare correttamente una tabella hash.


0

Assolutamente corretto, la laurea in informatica non ha molta importanza; ecco perché l'unica scelta dovrebbe essere quella di ottenere una laurea in ingegneria.

Nell'intervista a candidati con background diversi, l'unica caratteristica che si distingue per quei candidati che non avevano una laurea è questa: mancanza di capacità di comunicazione tecnica e mancanza di disciplina. Questi sono tratti fondamentali appresi quando si ottiene una laurea in scienze (direi ancora di più con una laurea in ingegneria).

Con la maggior parte delle cose uguali (e una singola serie di interviste spesso presenta candidati "circa uguali"), assumerei la persona con laurea in ingegneria prima, la laurea in informatica secondo, e la terza senza laurea. Tuttavia, ci sono modi per rendere le cose molto ineguali nel confronto, in modo che chiunque possa battere anche quelli con un grado di pedigree - ma questa è una domanda separata non è vero?


-1

Per un programmatore ... non molto (a parte forse aprire le porte alle interviste, come hai detto).

Per un lavoro CS (ricerca, analisi algoritmica, linguaggio formale e progettazione). È improbabile che tu impari queste cose in qualsiasi altro programma non matematico.

// Disclaimer: la mia laurea è in informatica, quindi ho dovuto tornare indietro per tutti quegli altri corsi per svolgere nel mio campo di lavoro.


-1

Ho una laurea in informatica. Ciò che mi ha aiutato a ottenere il mio primo ruolo nel computer è stato il fatto che l'anno 3 è stato un tirocinio come amministratore IT. Raccomando schemi di tirocinio nell'ambito dell'istruzione.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.