it-swarm.it

Materie CS che un laureando deve conoscere

Al college, non sono mai stato interessato alla teoria. Non l'ho mai letto. Non importa quanto ci provassi, non ero in grado di leggere cose e non sapevo cosa stesse realmente accadendo praticamente. Come ad esempio, nel mio corso sulla teoria degli automi, il mio professore mi ha detto tutto ciò che è probabilmente correlato all'aspetto matematico di esso, ma nemmeno una volta ha menzionato dove sarebbe stato usato praticamente. Questo è solo un esempio.

Sono riuscito a passare il mio college e anche internato con una società, dove ho fatto un progetto e per fortuna non si sono preoccupati dei miei voti, dato che erano al di sopra della media.

Ora, sono interessato a sapere quali argomenti uno studente CS deve assolutamente e positivamente conoscere? Soggetti che possono avere rilevanza nel settore. Questo perché ho un po 'di tempo libero tra le mani e mi aiuterebbe a conoscerli meglio.

Quali sono i tuoi suggerimenti? Come per uno, gli algoritmi sono un argomento.

34
Karl

Che ci crediate o no, una delle cose che si sono rivelate di importanza cruciale per me nella vita successiva è stata la costruzione del compilatore. Non è la versione moderna di Namby-Pamby che usa Lex e Yacc, questo è per i manichini.

REAL REALIZZAZIONE del compilatore in cui si scrive da zero il proprio scanner e parser di simboli.

Questo è qualcosa che pensavo non avrei mai più usato. Ma negli ultimi 20 anni quel corso ha dimostrato il suo peso in oro 4 volte. Per ogni elaboratore di comandi che ho dovuto scrivere, ogni scanner di messaggi in arrivo, ogni dispatcher di utenti, ogni interprete di script ha usato i principi di quel corso. Fallo in questo modo e la vita è dolce, chiara e semplice. E ho anche dato tutte le informazioni a un collega che non l'aveva fatto: doveva effettivamente scrivere un compilatore per una macchina astratta. Che potrei aggiungere ha avuto molto successo commerciale.

Se dovessi salire e ringraziare un docente del corso universitario in una qualsiasi materia, sarebbe questo. Senza quello sarei passato ma le mie soluzioni sarebbero state molto più brutte.

(E prima che qualcuno salti in piedi e dica "beh, avresti potuto usare Lex e yacc ..." la risposta è, forse - dipende molto dal sistema. In alcuni casi i linguaggi di programmazione non erano C (es. PL/M e Ada), in alcuni casi non erano disponibili per la piattaforma Lex o Yacc prontamente disponibili. Conoscere le basi significa che una soluzione è a portata di mano invece di stringere la mano cercando di capire come piegare qualche strumento per adattarsi al problema.)

42
quickly_now
  1. Strutture dati/algoritmi, in particolare i grafici. La quantità di situazioni del mondo reale in cui sono riuscito a utilizzare algoritmi relativi ai grafici è stata una sorpresa per me. Concentrati sulla conoscenza delle caratteristiche di quando una struttura di dati o un algoritmo è appropriato. Essere in grado di vedere un problema e sapere ad esempio di utilizzare la programmazione dinamica/algoritmo goloso è importante e può farti risparmiare un sacco di tempo.

  2. Conoscenza operativa della complessità computazionale. Non devi sapere qual è il limite inferiore del radix sort ma sapere come capire quale sia il tempo di esecuzione peggiore di qualcosa che scrivi è importante, specialmente per i progetti con prestazioni critiche.

  3. O.S. concetti. Gestione della memoria, Scheduler, ecc. Ogni sviluppatore dovrebbe davvero avere una solida conoscenza dei sistemi operativi dato che il codice che scrivi interagisce costantemente con esso.

  4. Netsec. Ho incontrato pochissimi sviluppatori che hanno una solida conoscenza dei problemi di sicurezza di base con lo sviluppo (buffer overflow, xss, SQLI, ecc.). Questo è davvero un must se vuoi avere successo nel settore. È fantastico se riesci a scrivere la prossima cosa importante, ma non avrai molti utenti a lungo se non proteggi i loro dati.

  5. Paradigmi di programmazione. Conoscere le caratteristiche e le differenze tra programmazione OO/funzionale/procedurale. Una delle migliori lezioni di laurea che abbia mai avuto è stata la scrittura di semplici 20 interpreti di istruzioni per fortan, schema, prologo, ecc. Nelle stesse lingue. Solo l'esposizione stessa può davvero aiutarti a comprendere i concetti fondamentali dello sviluppo del software.

37
Kurtis

Soddisfare i requisiti di laurea non è necessariamente sufficiente per essere il miglior informatico che puoi essere. Per un tipico curriculum universitario, ecco le prime dieci cose che dovresti essere sicuro di imparare:

  1. Le basi dell'economia - Un corso introduttivo che copre argomenti come complementi e sostituti è vitale per lavorare nella grande economia, o semplicemente semplicemente capendolo. Mentre il concetto di un bene Giffen non ti aiuterà necessariamente, conoscere esternalità lo farà. Potrebbe anche aiutarti ad apprezzare che più situazioni sono vantaggiose per te di quanto tu possa immaginare.

  2. Come scrivere una prova - Tutti i maggiori di informatica dovrebbero sapere come scrivere una prova. E la matematica discreta, mentre fa parte di una colazione ben bilanciata, non conta. [L'induzione è solo una tecnica di dimostrazione e puoi cavartela senza sapere molto sulle prove.] Per scrivere prove è necessario un corso di algebra o di analisi reale. E per algebra intendo la teoria dei gruppi o l'algebra astratta, non il corso che hai seguito al liceo. Per il massimo beneficio, prendi algebra e analisi reale nello stesso termine.

    Perché è essenziale scrivere prove? Perché è programmazione! Pensa a quando hai imparato a programmare per la prima volta: se un'attività richiedesse un if e un ciclo, potresti non avere intuito su dove metterli in relazione tra loro. Ma ora lo stesso compito sarebbe del tutto naturale. Scrivere una prova è molto simile. C'è una serie di trucchi che impari e una volta imparati le cose sembrano piuttosto diverse.

  3. Come scrivere - Le abilità comunicative scritte sono essenziali, sia che tu lavori nel settore o nel mondo accademico. È meglio se riesci a trovare un corso di meccanica e non un corso di scrittura che tratta effettivamente un argomento diverso. Cioè, molte scuole cercheranno di rendere i corsi di scrittura più pertinenti o interessanti rendendolo su un argomento speciale. Prova ad andare per la versione "noiosa" del corso.

  4. Probabilità e statistiche - Ci sono alcune cose che raccoglierai correttamente seguendo un corso. Insieme ai requisiti principali di CS (che dovrebbero fornire matematica discreta, calcolo a variabile singola e variabile multipla e algebra lineare) e algebra e/o analisi reali, la raccolta di statistiche fornirà probabilmente un minore in matematica. L'apprendimento delle statistiche può aiutarti a lavorare con altri scienziati sui loro progetti.

  5. L'argomento caldo attuale - Nei decenni precedenti, potrebbe essere stato un database o una programmazione orientata agli oggetti. Oggi potrebbe essere la programmazione web o l'architettura orientata ai servizi. Qualunque sia la moda attuale, assicurati di seguire un corso. Se non altro per vedere di cosa parla la moda.

  6. Il problema di arresto - La maggior parte dei problemi non può essere risolta dalle macchine. Questa è un'idea abbastanza profonda che la nostra cultura ha assorbito così bene da non sembrare più scioccante. Lo stesso vale per la radio, Goedel e la bomba atomica; non è stato fino all'arte postmoderna e alla guerra fredda che abbiamo potuto affrontare ancora una volta questi concetti. Tuttavia, un corso di teoria della calcolabilità può re-sensibilizzarti a questa prova piuttosto sorprendente.

  7. Programmazione funzionale pura - Molto probabilmente non passerai alla programmazione funzionale pura, a meno che tu non faccia ricerca o lavori per poche aziende selezionate, ma sapendo ti aiuterà a essere un programmatore migliore. Il motivo è che imparerai molte nuove forme di astrazione e concetti come numeri e continuazioni e monadi della Chiesa e, sì, ricorsione, e questi strumenti possono essere applicati anche al tuo prossimo Java.

  8. P e NP - OK, questo è già sul tuo percorso critico, ma attenzione comunque. Vuoi essere sicuro di poter correggere qualcuno quando chiamano erroneamente NP "non polinomiale". Come se!

  9. Gli argomenti del corso che sicuramente odierai - Potrebbe trattarsi di un corso CS che trovi troppo basso, troppo teorico o un corso non CS che trovi troppo discutibile, troppo duro o troppo noioso. Se un corso come questo sembra essere un problema per te e ti ritrovi a spiegare agli altri perché sei così felice di non dover seguire così e così, dovrebbe dirti che imparerai molto seguendo il corso! Forse non imparerai i materiali del corso, ma imparerai a conoscere i tuoi limiti e forse di più sulle giustificazioni che fai a te stesso. [Suggerimento: di solito sono deboli.]

  10. Il corso non CS che sicuramente amerai - Alla fine, dovresti divertirti. Questo è il corso di cui probabilmente otterrai il minimo, ma seguilo comunque. Fallo una volta. Se ti piacciono molti corsi, allora buon per te, ma assicurati che non interferisca con il resto dei corsi in questo elenco.

Il mio approccio qui è stato pratico, basato su corsi che puoi effettivamente seguire. E mi sono concentrato su obiettivi di apprendimento che probabilmente verranno appresi. Nota: questa risposta è stata adattata da un mio post sul blog su Dieci cose che ogni studente di informatica dovrebbe imparare .

21
Macneil

Dopo aver parlato con un paio di rappresentanti dell'azienda e amici che hanno avuto molte interviste:

  • Banche dati
  • OOP
  • Algoritmi
  • Strutture dati

tendono ad essere "mosti" per i nuovi assunti (o come hanno detto, corsi "altamente raccomandati").

Altri corsi che possono essere utili sono sicurezza informatica, assemblaggio e architettura della macchina. Molti dei miei professori mi hanno consigliato anche un corso di compilazione. Inoltre, se hai tempo, consiglio vivamente corsi di matematica come la teoria dei grafi, la matematica discreta e la combinatoria. Apprendi molte abilità di ragionamento in quelle classi su cui la maggior parte dei corsi CS sorprende, ma finisci per essere molto utile quando scrivi programmi molto complessi.

Spero che aiuti!

8
K-RAN

Dipende in gran parte da ciò che si prevede di fare con il grado. Sembra che la maggior parte delle major CS finiscano per essere ingegneri del software di qualche tipo. Con questo in mente, non sono davvero sicuro del motivo per cui più persone non si occupano solo di ingegneria del software. Ho il sospetto che non ci siano abbastanza programmi di ingegneria del software disponibili soprattutto nelle istituzioni pubbliche.

Vengo da un terreno incastonato. Ogni singola persona con cui lavoro aveva una laurea EE o una laurea CE e questo è in parte dovuto al fatto che quando i "vecchi" quando andavano al college non c'erano molti programmi CE disponibili. Quindi, è abbastanza ovvio che se si desidera lavorare nel campo incorporato è auspicabile uno sfondo hardware.

Indipendentemente dal campo in cui vuoi lavorare, credo che ogni programmatore dovrebbe seguire un corso di programmazione di assemblaggio. Non potresti mai utilizzarlo, ma insegnerà esattamente cosa sta accadendo a livello di processore durante una chiamata di funzione, come vengono gestiti gli interrupt, come è strutturata la memoria o come vengono utilizzate le diverse modalità di indirizzamento. Credo che tutto ciò ti renderà un programmatore migliore.

Inoltre, anche se potrebbe non essere evidente, alcuni di questi sono tutti argomenti importanti quando si considerano Strutture dati e algoritmi per una piattaforma specifica.

6
Pemdas

Ci sono 2 modi per rispondere alla tua domanda. Lasciami provare entrambi. Il primo modo è guardare le cose da un potenziale punto di vista del mercato del lavoro, capacità di codifica ecc. Quindi ecco la mia lista:

  1. Struttura dati
  2. Algorithm Analysis
  3. Programmazione orientata agli oggetti
  4. O un corso specifico in C++ o Java
  5. Sistemi operativi
  6. Progettazione dell'interfaccia utente
  7. Programmazione parallela

Il secondo modo è guardare le cose da una prospettiva un po 'astratta, e chissà, potrebbe essere anche un po' filosofico. L'elenco che segue potrebbe non avere le competenze più richieste dal mercato del lavoro, ma sono abbastanza sicuro che quando uscirai da questi corsi avresti un apprezzamento più profondo dell'arte dello sviluppo del software.

  1. Teoria del linguaggio finito e degli automi
  2. Costruzione del compilatore
  3. Teoria dei grafi
  4. Intelligenza artificiale
5
Fanatic23

Aggiungerei anche le pratiche di ingegneria del software o di progettazione all'elenco, sebbene il loro contenuto sia generalmente raccolto dagli studenti del settore.

Inoltre, secondo me (non supportato da molta esperienza), le aziende non vogliono davvero la maggior parte delle cose teoriche insegnate in corsi come database ecc., Vogliono che le persone capiscano e siano in grado di usare queste cose.

EDIT: A causa del downvote, ho voglia di spiegare la mia risposta. Sono uno studente di informatica dell'ultimo anno e la mia esperienza si basa sul mio tirocinio e colloqui di lavoro con aziende leader del settore. Nella mia esperienza, alle persone viene raramente richiesto di utilizzare algoritmi complicati o di codificare strutture di dati molto complicate nelle interviste o nei lavori.

Più utile se è possibile creare e utilizzare database, utilizzare il controllo del codice sorgente, sapere come eseguire correttamente il debug, sapere come utilizzare i modelli di progettazione, ecc. Tuttavia, come ho già detto, queste competenze sono generalmente acquisite nel settore e non coperte dai corsi. Le pratiche di ingegneria/progettazione del software implicano in genere la costruzione di un progetto di medie dimensioni, molto utile per apprendere tutte queste abilità.

2
apoorv020

Ci sono molti corsi importanti, a seconda della direzione in cui stai pianificando di andare. Tuttavia, supponendo che tu possa programmare del tutto, il corso più importante deve essere:

  • Strutture dati e algoritmi

    Praticamente tutto ciò che riguarda l'informatica torna alla gestione dei dati tramite algoritmi. Presta particolare attenzione agli array e agli hashtable, poiché sono di gran lunga le strutture di dati più utili di uso comune, ma gli elenchi e gli alberi e i grafici (beh, gli elenchi sono tipi limitati di alberi e gli alberi sono tipi limitati di grafici) anche essere importante. Inoltre, comprendere gli algoritmi è vitale per produrre codice che non sia terribile. (Altrimenti farai cose terribili, come usare una O (n3) algoritmo in cui una O (n logn) lo farà.) Se la tua laurea in CS non ha un obbligatorio DS + Un corso su di esso, non è CS. O ingegneria del software. O anche solo la programmazione.

A parte questo, il corso che ho trovato più utile nel corso degli anni in più campi è stato:

  • Concorrenza

    Ci sono molti aspetti della concorrenza, ma mi aspetto una comprensione della differenza tra memoria condivisa e passaggio di messaggi. Vorrei anche che ci fosse una forte copertura delle strategie di blocco (mutex, semafori, ecc.) E delle transazioni.

    Questo è vitale per comprendere la parallelizzazione, ovviamente, ma è anche fondamentale per qualsiasi cosa distribuita (ad esempio, scrivere un servizio esposto a Internet, anche se è a thread singolo poiché i client saranno comunque asincroni). Comprendo che è utile anche per scrivere giochi (che in genere sono multithreading) e lavorare con dispositivi integrati.

A parte questo, penso che sia nel miglior interesse della maggior parte dei laureandi che siano esposti al maggior numero possibile di idee diverse. Molti linguaggi di programmazione e paradigmi. Molte aree di applicazione diverse. Una quantità ragionevole di matematica (di nuovo, perché è utile così spesso) e anche una certa esposizione a fattori umani e psicologia (perché qualsiasi software che interagisce con gli utenti ha a che fare con le persone). Dopo tutto, non sai mai esattamente cosa farai in futuro, quindi pianificare la flessibilità è un'ottima strategia di vita.

2
Donal Fellows

Cose che ho imparato al college e che uso ogni giorno:

  • Metodologia di progettazione orientata agli oggetti
  • Modelli di progettazione
  • Espressioni regolari
  • Algoritmi e analisi di base
  • Strutture dati

Vorrei aver seguito un corso di database. (Mi sono preso abbastanza da sopravvivere da quando mi sono laureato, ma vorrei sapere di più.) Vorrei anche insegnare il controllo della versione: è onnipresente, estremamente utile ed è stato completamente ignorato nel curriculum della mia scuola.

Ho dovuto seguire diversi corsi di matematica. Non uso il calcolo da quando mi sono laureato. Vorrei seguire un corso di statistica. (Ancora una volta, ho preso abbastanza da sopravvivere dalla laurea, ma vorrei sapere di più.)

Oltre il dipartimento CS, segui un corso di scrittura. Buone capacità comunicative scritte sono essenziali per il successo.

2
pwc

Quando ero al college c'erano alcuni argomenti per i quali non riuscivo a vedere un uso nella mia vita reale e a volte quell'intuizione è stata dimostrata giusta (i metodi formali sono davvero pratici solo per problemi banali nella maggior parte dei casi) e altre volte è stato del tutto sbagliato (la notazione Big-O è molto utile) quindi immagino nel complesso che il mio io più giovane fosse in parte giusto.

Se vuoi prepararti per il mondo reale, oltre alle cose che @ K-Ran raccomanda sopra, ti suggerisco di leggere Codice completo e di usarlo come base per una ricerca più approfondita su qualsiasi argomento che trovi difficile o non ti senti sufficientemente coperto.

1
glenatron

Come qualcuno che intervista regolarmente i candidati per la programmazione di lavori e qualcuno che dopo essere stato nel settore per 12+ anni si sente ragionevolmente realizzato, suggerirei quanto segue

  • Database Design & SQL: è sorprendente il numero di programmatori che non conoscono l'SQL semplice e quelli con buone capacità SQL sono inestimabili. Essere in grado di progettare un buon database potrebbe non essere utile in una società che ha una struttura di database impostata, per start-up e aziende in fase di cambiamento, è DEVE!
  • Modelli di progettazione. Ti aiuteranno semplicemente a prendere decisioni migliori sul buon design
  • OOP: Questo è di solito un pre-req per la maggior parte dei corsi, ma aiuterà.
  • Algoritmi: poiché così poche persone sanno cos'è la ricorsione, figuriamoci capire quando potrebbe salvare un sacco di codice complesso
  • Strutture di dati: la maggior parte delle lingue moderne si occupano di queste cose per te, ma capirle è la chiave per una buona progettazione.

Quindi, qualche lavoro extra curriculare, leggi:

  • Libri con certificazione. Spesso ti insegnano il tipo di sintassi e gli operatori sottostanti. È molto più importante SAPERE perché stai facendo qualcosa, piuttosto che "perché funziona", che è così banale.
1
Codemwnci

È DIPENDE , non esiste una risposta valida per questa domanda.

Il programmatore è un mondo generale per identificare qualcuno che scrive software per computer.

Ora, là fuori c'è un software di ogni tipo. Ad esempio, usando Wikipedia come fonte di generalizzazione possiamo incontrare grande generalizzazione :

  • programmazione del sistema
  • software di programmazione
  • software applicativo

Nel primo campo la programmazione del sistema sviluppa driver di dispositivo, sistema operativo, server, quindi ad esempio puoi seguire un corso di sistema operativo.

ma che dire del software di programmazione ? qui come ha scritto wikipedia puoi codificare compilatori, debugger, interpreti, linker, editor di testi, quindi può essere utile un corso di automazione di teoria, teoria del linguaggio, linguaggio e compilatori.

Non possiamo parlare di software applicativo di alcun tipo:
- videogiochi: algebra, fisica, corsi orientati agli oggetti?
- software matematico: corsi di matematica?
- editing di immagini: corsi di matematica, fisica, algoritmi?
- automazione industriale: matematica, fisica, algoritmo, corsi robotici?
- software medico: biologia, medicina, che altro corso?
- molte cose qui: molti corsi qui.

Come puoi vedere, c'è molto che puoi seguire e diventerà utile per il tuo lavoro.

Nella mia esperienza, sono un ingegnere del software di sistema e software applicativo nel campo sicurezza (vuoi seguire un corso di sicurezza?), A partire da un po ' Molto esperienza nella programmazione Sto diventando sempre più interessante negli algoritmi e nel sistema distribuito e ancora una volta mi sento a disagio nella semplicità dell'applicazione generale che ho scritto (sniffer, sistema di rilevamento delle intrusioni di rete, dissettore e rivelatore di protocollo, ecc.).

Come hai imparato acutamente in informatica teorica! hai seguito questo corso? : P

Hai imparato, ad esempio, che tutto il linguaggio del computer può essere inserito in una serie di funzioni matematiche calcolabili e, ad esempio, se la tua esperienza prende il mio stesso percorso, presto ti sentirai a disagio in questa piccola serie di calcoli e come me puoi iniziare a vedere come si sta sviluppando il software non è così accattivante e sorprendente perché lo stesso DESIGN PATTERN ritorna di nuovo (hai seguito corsi di design pattern?) e ad esempio puoi iniziare a interessarti maggiormente del PERCHÉ e COME il linguaggio può essere tradotto in funzione matematica e iniziare a impara che il linguaggio del computer non è così complesso! ad esempio potresti presto essere più sorpreso della persona e della psicologia e puoi ottenere più interesse a riguardo e diventare un buon project manager! hai seguito i corsi sul ciclo di vita del software?

Allora, qual è il corso MUST-HAVE nella tua carriera in CS?

Ti suggerisco di imparare tutto ciò che puoi imparare in tutti i campi, specialmente nel campo della teoria, perché in un campo di lavoro comune ti senti presto davvero annoiato dalla poca complessità che ti circonda e, diventando un lavoratore a tempo pieno, hai davvero meno tempo da imparare come funzionano davvero le cose e molto più tempo per vedere come le persone con una forte conoscenza teorica hanno proiettato le cose per funzionare e ti danno la possibilità di programmare per ottenere cibo a casa.

c'è un senso sbagliato della realtà nell'informatica. l'informatica, ad esempio, a volte è molto lontana dallo sviluppatore di software.

dai un'occhiata alla spiegazione di Wikipedia.

divertiti con la vita :)

i miei 2 centesimi.

scusa per il mio inglese davvero pessimo.

1
boos

Penso che dovresti studiare quanto segue:

Sistema operativo: - Anche se potrebbe non essere necessario che funzioni come programmatore, ma vale la pena sapere come funziona un sistema operativo e ci si aspetta da un laureato in CS. Qualsiasi buon libro può aiutare.

OOP: - Questo è pane e burro. Un obbligo. Libri se vuoi chiedere: Il tuo primo libro dovrebbe essere: - prima testa OOAD, quindi puoi scegliere il libro di Grady Booch e Ivar Jacobson

Strutture dati e algoritmi: - Molto importante per sviluppare il pensiero logico e la mentalità.

Per me questo è abbastanza. Non è mai troppo tardi. :)

1
Abhi

Vengo a questo da una prospettiva leggermente diversa in quanto non mi sono laureato in CS, mi sono laureato in ingegneria elettronica (con un minore nel mondo degli affari).

Sulla base di ciò, penso che un elenco di cose che devi capisci è relativamente breve poiché io (e molti altri non laureati in CS) sopravvivo felicemente senza sapere nulla sulla progettazione del compilatore o simili.

Cosa direi di aver scoperto che trovo utile:

  • Progettazione RDBMS - Gli RDBMS si trovano dietro la maggior parte dei sistemi e dei siti e dovresti capire almeno le basi di ciò che sta succedendo (ho imparato questo sul lavoro).
  • Progettazione dell'interfaccia utente di base: tutti i migliori programmatori con cui ho lavorato potrebbero produrre un'applicazione utilizzabile che non era brutta da morire. Tranne uno, ma è l'eccezione che dimostra la regola.
  • Qualche programmazione di base - e intendo di base. Ho imparato un po 'di C (per l'elaborazione di immagini e sistemi integrati), un po' di linguaggio di assemblaggio (che avevo dimenticato a poche settimane dal completamento del corso) e un po 'di Pascal (un corso di informatica di base era standard per tutti gli ingegneri). Durante l'intervista sono sbalordito dal fatto che pochi laureati in CS possano davvero programmare in qualche modo le organizzazioni commerciali considererebbero utili, quindi non mi aspetto molto, ma mi aspetto che conoscano le basi.
  • Logica: l'ho imparato attraverso l'elettronica digitale, i matematici attraverso la teoria, i laureati in CS attraverso la programmazione, ma per quanto tu lo impari, dovresti avere una buona comprensione di ciò che ne deriva.
  • Abilità comunicative - Ho fatto un paio di corsi all'università al di fuori della mia attuale laurea, abilità di presentazione e assertività. Molto buon senso, ma non fa mai male sentirsi dire cose sensate un paio di volte.
  • Le basi del business e della contabilità. Alcuni programmatori si comportano come se non importasse, ma secondo me è importante per chiunque lavori in un'azienda: ecco come funziona il gioco e controllerà la tua vita, quindi perché non dovresti sapere almeno i rudimenti di come e perché accadono le cose?

E se hai la possibilità di imparare qualcosa sulla gestione dei progetti, non ti farebbe davvero male, ma in molti casi è stato insegnato abbastanza male all'università ed è qualcosa che imparerai un po 'sul lavoro semplicemente lavorando sui progetti.

1
Jon Hopkins

Senza dubbio la prima cosa in cui gli studenti CS dovrebbero essere fluenti è l'inglese.

Senza una comprensione dell'inglese sia parlato che scritto, sarai per sempre in svantaggio.

Guarda la miriade di domande che arrivano sui siti Stack. Troppi di questi sono difficili da decifrare. Alcune persone usano un mix di l33t, messaggi di testo (non sono sicuro del termine corretto). Altri fanno una dichiarazione e semplicemente aggiungono un punto interrogativo mentre mancano importanti piccoli pensieri come verbi o aggettivi.

Se non riesci a comunicare, non sarai in grado di farti capire, e tanto meno di capire cosa dicono gli altri.

Tutto il resto sono solo dettagli. Se riesci a comunicare, hai un'intelligenza almeno nella media e puoi capire cosa leggi, anche tu puoi avere una programmazione di carriera di successo.

1
NotMe

Aggiungerei anche alcuni corsi di base di Risorse umane/Psicologia all'elenco.

Potrebbe sembrare un'aggiunta strana, ma parte del lavoro professionale è imparare a vendere te stesso e negoziare. Entrare nella tua prima "vera" intervista senza una solida conoscenza delle motivazioni del drone delle risorse umane è una ricetta per il disastro e probabilmente si concluderà con lo studente incastrato in uno stipendio basso.

Conosci il tuo nemico in modo da poterti proteggere.

0
Peter Bernier