Roba che avresti dovuto imparare a scuola ma a cui non prestavi attenzione al momento [chiuso]


42

Questa domanda mi ha fatto pensare che ci fosse una domanda migliore da porre.

Cosa hai imparato a scuola di cui non ti importava in quel momento, ma che si è rivelato utile o che hai dovuto imparare di nuovo sul posto di lavoro perché ce l'avevi a scuola, ma non hai conservato le informazioni e ne avevi bisogno? (Intendo per lavori relativi al software.)

Penso che ciò potrebbe aiutare gli studenti universitari a identificare alcuni degli aspetti a cui dovrebbero prestare attenzione mentre sono a scuola.


16
Mi dispiace di non aver trascorso più tempo ad imparare le lingue parlate (mi è bastato 10-20 anni dopo per me), ma questo non è legato alla programmazione.
LennyProgrammers

Risposte:


36

La maggior parte degli sviluppatori che ho visto appena uscito dalla scuola non ha avuto molta esperienza con lo sviluppo di OO . Ne hanno sentito parlare, ma la maggior parte della cosa è semplicemente "mettere cose in classe".

A scuola ottieni molti esempi di auto e persone che possono essere inseriti nel framework OO. Questo ti insegna polimorfismo, sovraccarico e cose del genere. Piuttosto roba 'di base'. È bello sapere queste cose e come funzionano, ma non ho mai avuto un esempio di un uso nel mondo reale per questo. Penso che sia importante mostrare agli studenti alcuni scenari del mondo reale in cui viene utilizzato un po 'di design.

Un'altra cosa che mi è sfuggita al college è l'uso (o l'uso improprio) di schemi di progettazione utilizzabili . Penso che in questi giorni gli schemi più importanti debbano essere introdotti da qualche parte alla fine del primo anno o all'inizio del secondo anno. Gli studenti dovrebbero familiarizzarsi con loro.

Scrivere codice pulito è qualcosa che non viene insegnato (abbastanza) a scuola. Potremmo fare un vero pasticcio del codice e ottenere comunque un A +. 'Se l'applicazione funziona, va bene.' era il motto. Gli studenti dovrebbero imparare a scrivere codice pulito e di alta qualità e essere ricompensati per questo, ciò significa anche refactoring e utilizzo degli schemi o delle migliori pratiche che hanno appreso.

Naturalmente gli studenti desiderosi hanno imparato da soli tutte queste cose, ma altri che non erano così desiderosi non lo hanno fatto. Questo potrebbe essere posto sotto una mancanza di motivazione, o semplicemente non sapevano dove o come guardare. Quando pagano molti soldi per una scuola, penso che dovrebbero davvero insegnarti queste cose semi-avanzate.

Inoltre, una buona scrittura (professionale) è un'abilità carente per la maggior parte delle persone. Peccato perché è molto importante nel mondo reale. La cosa più importante è riuscire a chiarirti nella tua lingua madre. Se non riesci a scrivere chiaramente nella tua lingua principale, è difficile comunicare in un'azienda.

Non so se puoi insegnare a qualcuno a scrivere a questa età, dovrebbero già avere familiarità con questa abilità. Si potrebbe ripetere le cose insegnate al liceo. Magari insegnare agli studenti come scrivere commenti e documentazione tecnica. Trovo ancora difficile scrivere documenti tecnici poiché nessuno sembra mai sapere come farlo, o quale sia il formato predefinito.


1
questa risposta non è all'OP ma al suo complemento: cosa avrebbero dovuto insegnarti meglio / più in profondità
davka

1
Lo scopo di una formazione universitaria è introdurre lo studente all'ampiezza di un campo. La specializzazione è ciò che si fa a livello di laurea. Mi aspetto che i candidati appena usciti dal college siano esperti in qualsiasi cosa. Mi aspetto che i neolaureati dispongano di una serie completa di concetti fondamentali che colmano il divario tra l'organizzazione dei computer e l'analisi dell'algoritmo di base. Non mi interessa se un candidato ha memorizzato i limiti asintotici di tutti gli algoritmi di ricerca e ordinamento. Preferisco un candidato in grado di accertare i limiti asintotici per un pezzo di codice del mondo reale.
bit-twiddler

3
Sono l'unico a rabbrividire quando 'impara' viene (erroneamente) usato invece di 'insegnare'?
dr-jan,

1
@ dr-jan: grazie per averlo segnalato. Modificato.
Jan_V,

1
A mio avviso, l'unico modo in cui si potrebbe insegnare una seria scrittura di software è quello di tenere corsi pluriennali in cui si affronta la propria faccia con i propri errori del passato.
Paul Nathan,

120

Ragazze. Puoi pensare che sto scherzando, ma non lo sono.

Non impazzire o altro, devi ancora imparare le cose accademiche. Ma devi anche passare un po 'di tempo a conoscere le persone, dalle persone intorno a te.

Ciò include la metà dell'umanità che ha interessi e atteggiamenti completamente diversi da te e dai tuoi amici, ma con i quali vorrai ancora andare d'accordo.


16
Vorrei poter dare più voti.
5

3
Trascorrere più tempo con persone che non studiano i computer in generale è una buona cosa (tm)
Rob Allen

16
Più di 48 persone che hanno votato a favore hanno semplicemente sospirato.
George

Altrimenti noto come "Utenti".
Gary Willoughby,

61

Sento che avrei dovuto mettere circa il 42% in più di energia nelle statistiche.


10
Mio fratello e io abbiamo detto a nostra madre l'anno scorso che avremmo voluto studiare più statistiche. Sono un esperto ed è un medico. Oh, e mia madre è un'insegnante di statistica ...
chrisaycock,

4
@davka: si presenta più spesso nei test, in particolare nei test delle prestazioni. Anche nell'analisi dei dati, che ho molti di questi giorni.
FrustratedWithFormsDesigner

4
@davka - Lavoro in una società basata sui dati e una buona analisi statistica sarebbe utile per gli sviluppatori per essere in grado di presentare i loro risultati sul "perché il codice x è meglio del codice y" o "sì, posso dimostrare che se mi permetti per investire 2 settimane per migliorare questa cosa, l'analisi statistica mostra che accelererà del x% '. Saper applicare tecniche statistiche per progettare i tuoi esperimenti è davvero l'obiettivo qui.
wkl,

3
Penso che ci sia una probabilità del 70 +/- 2% che avrei dovuto prendere le statistiche.
Zaccaria K

10
Il 60% delle volte funziona sempre.
Matteo Leggi il

51

Scrivere sarebbe uno dei più grandi per me. Non penso che questo sia limitato ai soli sviluppatori.


stack overflow e blog mi ha aiutato molto in questo.
Svish

36

Programmazione funzionale. All'epoca sembrava uno sciame di parentesi che non poteva fare nulla di utile. Ora che le espressioni lambda stanno trovando la loro strada in un uso diffuso, ho dovuto riqualificare il mio cervello per pensare in quel modo. Al college volevo solo portare LISP e Scheme il più lontano possibile nello specchietto retrovisore e non guardare mai indietro. Se avessi idea di quanto possano essere utili alcuni aspetti della programmazione funzionale, avrei prestato maggiore attenzione.


9
+1. Sono fermamente convinto che per qualcuno che non sappia programmare, la programmazione funzionale sia più facile da imparare rispetto alla programmazione imperativa, che la programmazione imperativa sia facile da imparare se si conosce la programmazione funzionale e che la programmazione funzionale sia difficile da imparare se si imparato prima la programmazione imperativa. Pertanto, ha senso non solo insegnare la programmazione funzionale, ma prima di tutto la tecnologia e, soprattutto , non farne un affare così grande ! Mi piace come SICP fa. Il primo incarico non appare fino a circa duecento pagine e non te ne accorgi nemmeno.
Jörg W Mittag,

1
+1. Lo schema mi ha spento i paradigmi funzionali per diversi anni al college, dato che avevo un background C e C ++ prima di seguire quel corso. Non l'ho elencato come qualcosa a cui sentivo di dover prestare maggiore attenzione perché durante il mio ultimo anno ho frequentato un corso di lingue, ho usato SML e mi sono davvero divertito, e mi è piaciuto anche Lisp. Probabilmente solo il prodotto di esperienze in tutto il college che mi rende molto più facile capire come usare quei paradigmi. Adesso mi sto anche insegnando alla Scala e mi diverto molto. : D
wkl

1
Sono generalmente d'accordo (più funzionale a scuola) ma è impossibile dimostrare che è più facile o più difficile imparare la programmazione funzionale in base allo stile che hai imparato per primo.
Kevin,

34

Espressioni regolari. Ricordo distintamente di averli fatti saltare al college. Sono stati indispensabili per il lavoro.


2
Le espressioni regolari dovrebbero essere utilizzate solo come scenario dell'ultimo caso
billy.bob

Sì! Ricordo di aver pensato a quanto l'ho odiato allora ... L'ho imparato per la lezione e me lo sono tolto dalla mente fino a quando non ne avevo più bisogno diversi anni dopo. Poi mi stavo maledicendo perché dovevo riapprenderlo.
BMW

4
@ m.edmondson, le espressioni regolari sono perfette per compiti semplici. Potresti fare qualcosa di sbagliato se li stai usando nel tuo codice (dopo tutto, analizzare i combinatori è molto meglio), ma per la tua tipica ricerca e sostituzione in un editor di testo vanno bene.
SK-logic

3
Le espressioni regolari sono un ottimo strumento per l'uso sulla riga di comando e in potenti editor come vim o emacs. Non solo per l'uso nel codice.
Stephen Paulger,

1
@ m.edmonson, no - le espressioni regolari sono strumenti fantastici che dovrebbero essere scelti per primi ! Per quelle situazioni in cui si applicano - sapere quando non lo fanno è dove è richiesta esperienza.

33

Viene presa la mia risposta preferita (statistiche), quindi fornirò la mia seconda risposta preferita. Notazione Big-O e conoscenza dell'efficienza di vari algoritmi chiave. Per me è meno un'arma segreta delle statistiche, ma è comunque molto preziosa.


2
Forse non sto scrivendo cose abbastanza complesse, ma l'unica volta che ho dovuto conoscere Big O è stato durante un'intervista in una società tecnologica di fascia alta. Quindi, mentre l'ho imparato 20 anni fa, dal momento che non lo uso ma una volta ogni 10 anni circa non me lo ricordo.
Bill Leeper

2
@ bill-leeper: la mia esperienza è che Big-O non è qualcosa che usi tutti i giorni, ma è qualcosa che, quando sai, ogni tanto ti aiuta a capire un problema che non sapevi di avere, o altrimenti non avrebbe capito. Se non lo conosci, non hai mai queste intuizioni e non sai cosa ti stai perdendo.
btilly

1
@bill, big-O è solo un modo formalizzato per dire che devi stare attento a quanti loop metti dentro un altro quando devi ridimensionare. La maggior parte dei programmatori impara in un modo o nell'altro senza conoscere il nome formale.

23

Vorrei aver ascoltato ciò che il mio insegnante mi ha detto quando avevo 14 anni. Purtroppo non posso dirti di cosa si trattasse, perché non ho ascoltato.


21

Deve essere il corso sulla lingua finita e la teoria degli automi.

Ho pensato che fosse troppo teorico, fino a quando il mio lavoro mi ha richiesto di fare un compilatore di linguaggio specifico per il dominio da zero.


4
Whoa. Cosa fai esattamente ? Se non ti dispiace chiederti =)
fouronnes

1
@otibom: lavoro con i semiconduttori e ha i suoi linguaggi specifici di dominio con requisiti di prestazioni ragionevolmente rigorosi.
Fanatic23

18

Direi C, così come UNIX. Anche se ho imparato UNIX subito dopo il college, credo che avrei beneficiato di essere più radicato con UNIX e C in precedenza.


UNIX? Viene ancora insegnato nei college?
apoorv020,

1
Dovrebbe essere ... o bene, più simile a Linux. Qualsiasi programmatore dovrebbe conoscere un po 'di bash (o un'altra shell).
Per Wiklander,

17
  • Intelligenza artificiale / Data mining - ho seguito la lezione, ero annoiato, anni dopo sto imparando da solo argomenti come l'intelligenza collettiva. L'analisi di grandi quantità di dati è molto importante nel mio lavoro e in quelli precedenti.
  • Teoria / progettazione del database - Ancora una volta, ho preso la lezione, ero annoiato, quindi ho imparato cose sui database da solo
  • Solo matematica di alto livello e interessanti tecniche matematiche in generale - ho preso 4 classi di calcolo, algebra lineare, statistica, probabilità, discrete ... ma sentivo che avrei dovuto anche fare:
    • Metodi numerici
    • Metodi statistici avanzati, anche cose come le catene di Markov - ancora una volta, legate all'analisi di grandi insiemi di dati
  • Interazione uomo-computer: a scuola non pensavo che ciò fosse in alcun modo utile a quello che avrei fatto nel mio lavoro (mi piaceva lavorare a basso livello o dietro le quinte), ma in qualsiasi lavoro che ho svolto, l'usabilità a volte è stata al centro dell'attenzione.
  • Una seconda lingua: ho sempre avuto un dono per le lingue, ma al college non ho preso una lingua e trovo difficile provare a insegnarmi il giapponese.

13

Scrittura tecnica. Trascorro molto tempo a scrivere requisiti, a comunicare con clienti e collaboratori. Questa è un'area in cui ho avuto un corso di un'ora di credito al College. L'unica altra classe che mi ha davvero aiutato nella mia carriera è stata un'altra lezione di 1 ora di credito. Quello era nella programmazione C. Il resto, sebbene interessante e probabilmente aiutato le mie capacità analitiche complessive, non è stato davvero un beneficio diretto per la mia carriera.

Concesso che sono andato a scuola 20 anni fa e C era considerato all'avanguardia nel dipartimento di ingegneria elettrica. La gente del CS stava facendo alcune cose con Lisp e C ++ ma probabilmente non era così tanto OO come spero stia succedendo con i laureati di oggi.


11

Documenti di progettazione

Ho sempre pensato che fosse qualcun altro a creare queste cose o che fossero solo semplici documenti. Non sono affatto semplici e il mio team è abbastanza piccolo da fare i miei documenti di progettazione.


qualcun altro le scriverà se non sono bravo, come piace a me.
Kevin,

10

Seconda lingua straniera. Russo nel mio caso. Molti libri, risorse e altro in questa lingua particolare nel mio spazio circostante.


@FrustratedWithFormsDesigner sì adesso, ma quando ero bambino ... :)
lfx

Ho studiato personalmente il francese e il tedesco e ho trascorso un po 'di tempo in Germania. È qualcosa che tutti dovrebbero provare.
Ken

12
Veramente? Risorse relative alla programmazione in russo? Sono un madrelingua russo, ma non lo uso quasi mai quando cerco cose sulla programmazione. Il più delle volte, digitare una query inglese in Google mi dà una risposta. Inoltre, i libri tecnici in russo sono spesso traduzioni pessime dall'inglese.
Dima

@Dima, qual è la situazione al giorno d'oggi non lo so, ma quando ero in collage ea scuola, tutti gli insegnanti lo dicevano.
Lfx

3
@FrustratedWithFormsDesigner: che ci crederò. C'è sicuramente molto materiale relativo alla matematica in russo. Ma se stai parlando di argomenti relativi al computer, allora è meglio conoscere l'inglese.
Dima,

8

Dal lato CS delle cose:

  • Design dell'interfaccia utente
  • analisi
  • Controllo versione
  • Concorrenza

Dalla categoria tutto:

  • Scrittura tecnica
  • Comunicazione vocale
  • Abilità di stima del tempo

+1 per test e controllo versione. Scherzi a parte, abbiamo sentito molto che i test erano molto importanti ... non ho mai imparato davvero come ... (e non è stata colpa nostra. Non abbiamo mai avuto nulla a riguardo)
Svish

7

Vector matematica e calcolo. Li avevo, ma i miei prof erano terribili e in realtà non insegnavano le materie. Ma come qualcuno che è fortemente nella programmazione grafica ... una migliore base matematica vettoriale avrebbe aiutato.


7

Ovviamente, storia e letteratura. Il problema è spesso, la scuola non li rende interessanti.


Quando imparano quelli come scolaretti a casa, possono essere molto più interessanti.
Matthew Rodatus,

6

Elettronica

A scuola non avevo molte cose legate al software . Ah, l'informatica, ma l'ho cancellato. :) Ma è stato facile da imparare in seguito. Considerando che l'elettronica, spesso non capisco. Microcontrollori, PWM, GPIO - wtf? Vorrei capire le cose.


Ho preso l'elettronica al liceo (equivalente in Europa) perché non c'era una scelta IT "pura". Sono contento ancora oggi di non sapere solo come usare i computer e l'hardware periferico, ma anche come funzionano.
Vincent Vancalbergh,

5

Rete / elaborazione distribuita . La programmazione non è una sfida, ma i prerequisiti nell'architettura attuale sono una conoscenza approfondita dei concetti distribuiti.

Un corso dettagliato è stato offerto come un elettivo, ma ha dovuto scegliere tra questo e AI: quindi, non è davvero un rimpianto.


5

Modelli di progettazione: il modo in cui sono stati presentati non ti ha detto quanto siano utili, da allora ho letto un paio di libri su di essi e penso che siano incredibilmente utili.


Questo mi infastidisce in generale sulla programmazione della formazione, siamo accettabili nello spiegare il come ma non il perché. E nessun buon esempio pratico. Questo è il motivo per cui abbiamo peole usando le tecniche indossate per il problema, scelgono la prima che si presenta a loro che funzionerà senza la consapevolezza di dire che questa altra tecnica è migliore per questo particolare problema.
HLGEM

4

Unix, Shellscripting, C. Ha avuto la possibilità di impararlo bene a scuola, ma ha dovuto farlo più tardi nel lavoro.


4

Roba non informatica:
Personalmente, vorrei avere una lingua madre come la maggior parte delle persone normali qui intorno. Con ciò intendo dire che la maggior parte delle persone è nata parlando una lingua principale e forse ne ha scelta un'altra o due in seguito. In questa situazione, le lingue aggiuntive di solito non compromettono la lingua madre perché hai già una solida base che comprende il parlato, la scrittura e l'ascolto. Sono cresciuto parlando, scrivendo e ascoltando contemporaneamente tre lingue distinte. Anche se ho sempre fatto bene nelle lezioni di lingua sia a scuola che al college, vorrei avere una completa padronanza della lingua UNICA. Questo mi porta a pensare un po 'per una frazione di secondo prima di formulare una risposta. Alcuni lo notano e concludono che sono troppo timido (il che non è sbagliato in una certa misura).


4

Economia. Può essere noioso (e un po 'crudele), ma è comunque l'unico che è veramente essenziale in questa società. Successivamente, le statistiche.


4

Penso che le tre classi che mi hanno permesso di capire meglio come funzionano i computer nell'esecuzione del software (che questa comprensione consente una programmazione più ottimale) erano:

Compilatori di sistemi operativi in ​​linguaggio assembly

È forse molto facile pensare che queste lezioni non siano altrettanto utili se non si intraprende una carriera specificamente focalizzata su una di queste cose, ma anche se si è uno sviluppatore web e non si utilizza direttamente nessuna di queste sarebbe comunque estremamente utile codificare in modo efficace.


3

Ci sono circa una dozzina di lezioni che vorrei aver frequentato al college ma non l'ho fatto. Principalmente non CS. Fotografia, General Chem, più scrittura!


3

È divertente il numero di persone che dicono arti liberali: ero un grande specialista in scienze cognitive (Filosofia / CompSci / Anatomia) ... Alla fine sono passato a Filosofia / CompSci con un pesante minore in inglese (avrei potuto ottenere un BA, ma non mi sono preoccupato di prendere i 101 che avevo saltato).

Mi ci vorrebbe una settimana di storie per raccontarti di tutte le schifezze che ho ricevuto dai miei colleghi CS per aver preso quei corsi di arti liberali. Non importa che una mezza dozzina di classi in logica facessero di più per la mia programmazione di qualsiasi quantità di calcolo. Non importa che tutti i miei migliori corsi di AI fossero corsi di filosofia. Indipendentemente dal fatto che ci fossero delle ragazze da brividi nelle mie lezioni di inglese. No no, ero una specie di poser poco seria per seguire quei corsi.

Prendi il cuore però. Almeno non devi spiegare la tua istruzione ogni volta che qualcuno guarda il tuo curriculum.


Potresti spiegare cosa intendevi con "i miei migliori corsi di IA erano corsi di filosofia"?
Segna C

@mark: "Cognitive Science", che era il mio maggiore originale, non è altro che AI, e in gran parte costituito da filosofia. Esistono due tipi di filosofia: analitica e continentale. Tutta quella stupida merda è continentale. Analitica è logica, ingranaggio. sci, linguistica e merda del genere.
Satanicpuppy

+1: Come filosofo maggiore ho preso una lezione chiamata Filosofia della mente. Questa classe era essenzialmente dedicata alle macchine di Turing. Il mio consulente di filosofia era uno specialista in scienze universitarie e il mio consulente CS aveva effettivamente conseguito il dottorato in filosofia.
Morgan Herlocker,

+ 1: "non devi spiegare la tua educazione". Ed eccomi lì, pensando che le cose fossero diverse negli Stati Uniti / nel Regno Unito ... So esattamente cosa intendi.
Raveline

3

Equazioni quadratiche e trigonometria.

Molto importante nella scrittura di software per le discipline ingegneristiche tradizionali.


Non calcola .... dal momento che la maggior parte dei bravi programmatori sono ingegneri, perché qualcuno che si sente carente delle proprie abilità aritmetiche di base sta scrivendo software per discipline ingegneristiche quando ci sono un sacco di ingegneri che capiscono la matematica, la fisica e l'informatica ?
Ben Voigt

@ Ben. Che ci crediate o no ... MOLTE persone sono riuscite a entrare nello sviluppo del software e non hanno una formazione formale. Questo è probabilmente prima del "tuo tempo". Essendo uno di loro .. Sono riuscito a impararlo, ma sarebbe stato molto più facile se avessi prestato attenzione a scuola.
angryITguy

Nel caso in cui non fosse ovvio, sto sostenendo che il software di ingegneria sia scritto da ingegneri che non sono addestrati nello sviluppo del software. L'ingegneria del software non è difficile da imparare se sei stato addestrato a pensare logicamente. OTOH che impara a risolvere automaticamente i problemi di ingegneria, se mancano tali abilità matematiche di base come le equazioni quadratiche, sarà quasi impossibile.
Ben Voigt

@ Ben. Quelli che mancano di abilità di "matematica di base" sono ora chiamati consulenti sui social media e stanno facendo molto di più che ingegneri.
angryITguy

@guilio: rispettosamente non sono d'accordo. Ci sono alcuni ingegneri nella parte superiore che fanno una folle somma di denaro (in genere li chiamiamo "inventori", ma hanno usato le capacità ingegneristiche per progettare il prodotto). Poi c'è un piccolo gruppo di consulenti dei media più ricercati. Quindi il resto degli ingegneri competenti, sotto di loro gli ingegneri incompetenti e i consulenti dei media, si mescolano. E tutti loro fanno più del tuo laureato medio con una laurea in matematica che insegna equazioni quadratiche al prossimo raccolto di ingegneri.
Ben Voigt,

1

Ya, non ho prestato molta attenzione ai compilatori come avrei dovuto.


1

CS / Matematica: più logica, algebra, teoria delle categorie. Cose più fondamentali e meno applicate: capire bene le cose applicate quando si conoscono bene i fondamenti è molto più facile viceversa e più fruttuoso.

(Avevo A in statistica ma ci è voluto molto tempo per collegarlo a reali esigenze di programmazione, ho dimenticato molto.)

"Studi umanistici": linguaggio naturale, scrittura, formulazione, comprensione e comprensione. Non sembra importante finché non ti unisci a una squadra di più di 2-3 colleghi hacker, cioè nella cosiddetta "vita reale".


1

Computer Graphics (rendering 3d in opengl / directx)

Onestamente mi interessava molto, ma ero così impegnato che non avrei potuto dedicare il tempo che mi sarebbe piaciuto. È diventato un lavoro ingrato anziché un hobby. Penso che dovrei prendere un libro su di esso per farmi interessare di nuovo.

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.