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ù.