>It's certainly possible to obtain this knowledge on your own with serious self-study. But it's a hard route (albeit one getting easier thanks to Coursera et al.)
Now, what little math and theory I have learned, well, really, what anything I've learned... I've found that it's dramatically easier to learn from books than from a lecture. First, people talking? really, really slow. I ain't no speed-reader, but I can manage 400 words a minute, give or take, without skimming; of course, I can go much faster when I'm just skimming over the stuff I already know.
My usual strategy is to buy several books at the same level on the same subject; Preferably by very different authors. (I want at least one of the books to be a classic by the person who came up with the idea.) the idea being that each one is going to explain it in a slightly different way, and while I'm only going to retain a small portion of each book, well, books read fast, they don't cost much, and if I take away 10% of each book? I'm doing pretty okay.
(I mean, that said, my math and my theory is still pretty weak, compared to many of my educated peers who work at the same payscale, So I'm not saying my strategy is good or anything... it's just that I've never gotten much at all out of lectures. Payscale is also interesting... it seems to scale more with negotiation aggression than anything else.)
>Is theory actually useful? I would claim that it is, even for programmers doing CRUD apps and the like. Knowing the fundamental abstractions of computer science and the ways people have applied them in the past saves an enormous amount of needless reinvention. As a concrete example, parsing is a very well-studied problem in academia. But somebody without that background trying to write a parser will struggle far more than another familiar with CFGs or PEGs.
Why the fuck would you write your own parser for a CRUD app?
Seriously, that's whats wrong with the world.
I'm a SysAdmin. The way I see the industry? you hire a bunch of php monkeys to slap something together. customers don't like it. You pivot, come up with some other business idea, hire php monkeys to slap something together (usually using the same monkeys and the same code) you repeat until the market likes the output.
By this time? It's a giant hairball. It's disgusting. But you are getting users, and it's making money, so you've gotta scale.
Now, you could pay a bunch of 'real programmers' to write you something good, but that can take months or years even with competent management.
So what do you do? you hire someone like me. I show up and put a caching http proxy here, I put some indexes on the database server (and put it on a beefy server, and maybe even setup a read-only replica for the database) etc, etc.... i slap on duct tape until you get around to having a competent person re-write the whole mess. That's the "computer janitor" role.
So yeah. that's why I hate CRUD programmers trying to re-invent the fucking wheel. There are plenty of parsers out there. Use them.
This, this is why sysadmins hate NoSQL. seriously, in a few days I can make a crashy access db 1000x faster and more stable fairly easily by ODBCing the data out to a reasonable database. relational databases are incredibly easy to tune and improve, and I don't need to understand your giant PHP hairball that is full of global variables. USE A RDBMS. then you can do your job, and then if the thing takes off and you need to scale, I can come in and do mine.