Quali tipi di lavori di sviluppo richiedono la conoscenza di concetti avanzati? [chiuso]

6

Quando ero all'università, partecipavo a un concorso di programmazione; i problemi si sono rivelati estremamente difficili e noiosi e hanno richiesto conoscenze precedenti su un particolare insieme di problemi, ad es. teoria dei grafi, algebra.

Il nostro team ha fallito completamente in questa competizione, senza risolvere alcun problema.

Dopo essermi laureato e aver ottenuto il mio primo lavoro come programmatore, le mie attività quotidiane hanno ruotato intorno alla logica del business e non hanno nulla a che fare con i problemi difficili che ho incontrato all'università. La maggior parte dei calcoli riguarda la matematica e nulla più; inoltre, abbiamo solo bisogno di un database generale e una buona conoscenza della progettazione del database.

Quali tipi di lavoro richiedono conoscenze su questi problemi avanzati che ho incontrato all'università?

    
posta lamwaiman1988 11.10.2011 - 09:09
fonte

6 risposte

7

Bene, sto scrivendo software "scientifico", quindi ovviamente uso un sacco di + - * /, spesso funzioni dalla libreria matematica standard, e talvolta anche librerie matematiche più avanzate come LAPACK. Sì, sapere che alcuni calcoli sono utili.

Ma: ancora, il 90% del tempo passa a qualcos'altro: cercare di capire gli utenti e le loro esigenze, capire come rendere intuitiva l'interfaccia utente e il flusso di lavoro, lavorando su tutti i tipi di bug e problemi che non hanno assolutamente nulla a che fare con algoritmi scientifici o qualcosa di sexy: perché l'adattatore firewire danneggia in modo casuale i dati quando abbiamo chipset x e controller grafico (!) e Windows XP SP II OEM, ma ora con qualsiasi altra combinazione? Questo utente dice che i caratteri sono troppo piccoli, questo altro utente dice che i caratteri sono inutilmente grandi - beh, forse dovremmo renderli regolabili, tranne che oops, il nostro layout della finestra si è rotto.

Per essere onesti, non ho mai avuto bisogno di alcuna teoria dei grafi. Lo spirito della notazione Big O è buono da conoscere e riconoscere che i problemi in virgola mobile sono obbligatori, ma a parte questo, è meglio provare (prototipare) l'algoritmo e misurarlo piuttosto che provare un'analisi meticolosa su carta. Praticamente tutti i problemi algebrici risolvibili sono stati risolti in pacchetti di librerie matematiche off-the-shelf, quindi perché dovrei sapere come implementarli? Tutto quello che devo sapere è che si tratta di una scatola nera, ho messo qualcosa dentro e ne ho ricavato qualcosa, e non dimentico che ci sono dei limiti, quindi controlla sempre che l'output abbia un senso e, se necessario, trovi i casi limite in cui non riesce. Ancora una volta, con la prototipazione. (Se vuoi sembrare più scientifico, chiamalo "simulazione".)

Ciò che è essenziale è la capacità di trovare ciò che è già stato fatto e capire come utilizzarlo, invece di perdere tempo a reinventare soluzioni a problemi che sono già stati adeguatamente risolti . Rimani sulle spalle dei giganti, pensa bene e prova le cose .

Aggiunta: naturalmente sono prevenuto nei confronti di ciò che faccio (come tutti noi), quindi non credetemi. Secondo l'utente SK-logic nel commento qui sotto, le seguenti posizioni richiedono la conoscenza di concetti teorici avanzati: game dev. , ingegneria grafica dev. (CAD / CAE / ...), compilatori, matematica finacial (alta freq. Trading e simili), motori di database, logica aziendale complessa (ad es. Logistica), AI e PNL (machine learning, ecc.) E molti molti di più.

    
risposta data 11.10.2011 - 12:36
fonte
4

Saluta la programmazione aziendale, in cui la tua giornata trascorre a rattoppare varie librerie, classi e pezzi di codice già esistenti. Generalmente si basa su qualcosa che esiste già, invece di qualcosa di nuovo.

    
risposta data 11.10.2011 - 14:20
fonte
2

Bene, ci sono molti lavori che richiedono probabilmente una matematica complessa: la programmazione dei giochi, l'analisi dei mercati finanziari e la ricerca scientifica sono tutti prontamente in mente. Chissà quanto sono complessi gli algoritmi di ricerca di Google? Ma hai ragione a dire che ti stai aprendo a molte possibilità più se puoi analizzare un modello aziendale di base dell'industria manifatturiera e tradurlo in codice.

Non penso che il punto di un concorso di programmazione universitaria sia quello di trovare la persona che ha più probabilità di ottenere un lavoro abbastanza decente da programmare per sempre. Lo scopo di questi concorsi è divertirsi sbandando l'un l'altro e possibilmente coinvolgere altre persone nella programmazione e forse (se sei davvero fortunato) identificare qualcuno con abilità speciali.

In tale contesto, la modellazione di ordini di acquisto, contratti, clienti, componenti e prodotti non sarà realmente efficace come modellare il movimento 3D di uno space shuttle o, meglio ancora, di Superman.

    
risposta data 11.10.2011 - 09:30
fonte
1

In realtà, si scrive codice usando questo sempre. L'allocazione di memoria, il DB, le raccolte o qualsiasi altra lib che usi probabilmente già lo fa.

Ma, come hai detto tu, la maggior parte dei programmatori fallisce (come hai fatto tu) miseramente su questi compiti, quindi il sistema è progettato per astrarre tutte queste cose.

Ad un certo punto o in un altro, verrai imitato da software scadente o dovrai capire queste regole. Perché l'astrazione perde sempre ad un certo punto.

    
risposta data 11.10.2011 - 09:29
fonte
1

Sì, hai ragione. La maggior parte delle volte implementa la logica di business piuttosto che implementare alcuni algoritmi. Raramente abbiamo l'opportunità di implementare / codificare un algoritmo per risolvere il problema aziendale poiché la maggior parte del lavoro è già stata eseguita sotto forma di librerie.

Ci sono alcuni lavori che hanno ancora bisogno di una persona acuta in algoritmi come il trading ad alta frequenza algoritmico in tempo reale o qualche avvio che fanno software di ottimizzazione del percorso del bus ecc.

    
risposta data 11.10.2011 - 15:52
fonte
0

A mio parere, a volte non si tratta di quanto sia complicato o utile un problema mentre si è all'università, ma piuttosto il modo in cui ci si avvicina. Si tratta di cercare una risposta che richieda creatività e (a volte) un pensiero fuori dagli schemi. Prima ci si abitua a questo, meglio è. Andate all'università e studiate tutti i tipi di cose che dimenticherete quasi il giorno in cui li avete passati, ma ciò che rimane è la vostra capacità di adattarsi a una varietà di cose e questo alla fine (sempre secondo me) vi farà diventare uno sviluppatore migliore.

Mi piace darmi di volta in volta delle sfide solo per farmi andare ...

    
risposta data 11.10.2011 - 16:01
fonte

Leggi altre domande sui tag