It is one of the classic CS textbooks still used by Berkeley (CS61A) and MIT (not sure) intro CS courses. Its not trivial stuff. While it wont teach you obscure data structures like ropes, it will expose you to a wide variety of topics including but not limited to: functional programming, lambda calculus, OOP, logic programming, client/server programming, non deterministic programming, streams as data, the meta-circular evaluator, lazy evaluation, and concurrency. I had a fairly strong CS background before taking CS61A at Berkeley, but this book (thanks to Scheme) taught me how beautiful computer science can be. Now working in Java is a complete turn off ;)
Start here, follow the topics you have not tried yet: http://www.tuxradar.com/practicalphp
What's the best way to learn all the stuff I missed by not going to school?
how can I get a job that is asking for engineers to apply?
You need skills that those engineers have.
You don't need to go to school to master the data structures and algorithms, for reference there are bunch of university resources available, and there are lot of implemented code for us to checkout. Refer links others have suggested here. Give some time to learn these advance topics.
Edit: added few lines
I meant it more as, trying to get work in Ruby, or Objective-C makes me feel lesser of a developer, as IF I was a copy and paste coder.
The short of it though is to study the same stuff. There is a lot that a CS background will fill in for you which you won't tend to learn on the job.
I'm trying to learn the basics of a new language every week for 6 months. Then I'm going to focus on the ones I like best and dedicate a few months to learning the ins and outs of each language.
Thanks for your reply!