

Ask HN: How much theoretical computer science do you directly use in your work? - karamazov

Do you regularly implement van Emde Boas trees and analyze the big O runtime of your algorithms?  Have you ever saved the day by applying a highly theoretical result?  Or do you find theory largely unhelpful?<p>Some context: as a mathematician transitioning into programming, I find it easiest to pick up the theoretical side of computer science, but I don't know how useful this will ultimately be. It seems like most problems, even performance-sensitive problems, are best solved by standard techniques, or clever memory management, rather than theory.
======
kellros
I reckon that's a good question to ask. In my personal experience - very
rarely, only in cases when building reusable components or working directly
with hardware.

The truth is the answer will depend entirely upon which field of programming
you are working in.

Most programmers are building stuff for clients (like websites, software etc.)
wherein programming is just a minor part of the process.

Also, most of the programmers I've spoken to rarely use any computer science
theory because of the state of RAD - mostly everything is already implemented,
tested and optimized.

Sounds to me like you would be more suited towards the engineering side of
things rather than traditional 'software' development.

I'd say you'd be pretty well suited to game development which usually involves
a lot of math and physics as well as optimizing. Anything hardware related
should probably fit your aforementioned requirements.

------
semisight
I've found that programming can be as theoretical as you make it, when you do
it as a hobby. Professionally, you may have to look a bit harder. Most
"standard" coding that I've done involves finding the right library and wiring
together with another, and then building the application between the two.

As always, your milage may vary. Speed is still a very real concern,
especially in fields like data analysis. And even wiring libraries together
you may find that eventually you may have to write your own implementation of
something theory based.

------
ig1
When I was working in finance I probably used most of the stuff I learnt from
undergrad CS (concurrency theory, network protocols, information theory,
complexity theory). It's not often I had to do stuff that pushed at the edge
of CS (except maybe with lock-free algo design where industry is ahead of
academia) but I'd often need to use my CS training to figure out clever ways
to apply standard techniques.

In the startup world I've not used my CS knowledge as much, but am starting to
do some data-mining stuff which is more theory heavy.

