- Understand time & space complexity
- Security & Encryption
- Concurrency & why ACID transactions are hard
That will save you from most of the most embarrassing and costly mistakes of programmers without a formal education.I've actually worked at a company that wasted millions on a fruitless project because management didn't understand basic automata theory:
- Finite State Machines / Regular Expressions
- Stack Machines / Context Free Grammars
- Turing Machines / Anything Computable
I've been thinking of doing a presentation: Everything I still actually use from my CS education in less than an hour. (It will take you a bit longer to study and really absorb, but it will probably take a lot less than 4 years of college and cost much less.)EDIT: Another good thing to study, though I'm not sure if there's a good single source: Why distributed systems are Hard and why distributed transactions are Really Hard. I really didn't care for the teaching style of the professor who staked out that whole area as "turf" so none of my materials were particularly memorable or good, but the information was valuable.